Skip to content

symfonic.capabilities.memory.procedure_create

procedure_create

Native draft creation through the deployment's shared procedural resource.

ProceduralCreateService

ProceduralCreateService(layer: Any)

Explicit-ID insert only; omitted IDs retain exact-owner store/dedup.

v11 differs from legacy POST: every tenant-global ID collision is a fixed owner-neutral 409, even for the same owner. Creation has draft intent only, never auto-approval. HTTP rejects terminal statuses, extra fields and invalid IDs (422); active journals refuse creation (503). Audits are best effort, matching native semantic create, and no legacy fallback is mounted.

Explicit public composition may use procedural_layer(InMemoryGraphBackend(), native_scopes=True) and a kind-aware MemoryScope. The same layer can supply ProceduralSkillsSource with NativeStorageScope.from_scope(scope): drafts remain hidden unless include_drafts=True explicitly previews them as untrusted prompt data. This narrow in-memory opt-in does not admit HTTP/scaffold v1 or PostgreSQL.

Source code in src/symfonic/capabilities/memory/procedure_create.py
def __init__(self, layer: Any):
    if getattr(layer, "supports_create_only_node", False) is not True or not callable(
        getattr(layer, "create_skill", None)
    ):
        raise ValueError("procedural creation requires an atomic create-only resource")
    self.layer = layer
    self._scrubber = CredentialScrubber(value_patterns=())