VendorSdkLinkedtopology.compose.vendor-sdkA model-vendor SDK or second outbound model path raises VendorSdkLinked in the dependency audit. The error names the crate and dependency. | A crate declares a model-vendor SDK, or a second outbound path to a model exists. | topology.compose.vendor-sdktopology.compose.vendor-sdkA model-vendor SDK or second outbound model path raises VendorSdkLinked in the dependency audit. The error names the crate and dependency. |
ScriptRuntimeLinkedtopology.compose.script-runtimeA JavaScript runtime linked into any profile raises ScriptRuntimeLinked. The authoring surface is a build-time compiler emitting a serialized, content-hashed plan. | A script-language runtime links into a profile. | topology.compose.script-runtimetopology.compose.script-runtimeA JavaScript runtime linked into any profile raises ScriptRuntimeLinked. The authoring surface is a build-time compiler emitting a serialized, content-hashed plan. |
CrateMapDrifttopology.package.crate-map-driftAn unmapped crates/ package or crate-map count differing from the ## Shapes tree raises CrateMapDrift. The error names the package or both counts. | A workspace crate is missing from the crate tree, or the crate-map count disagrees with it. | topology.package.crate-map-drifttopology.package.crate-map-driftAn unmapped crates/ package or crate-map count differing from the ## Shapes tree raises CrateMapDrift. The error names the package or both counts. |
DomainCrateImpuritytopology.package.domain-impurityAn async runtime, component host, HTTP client or columnar-format implementation in contextful-core raises DomainCrateImpurity. The error names the dependency and enabling feature. | The domain crate declares an async runtime, component host, HTTP client or columnar-format implementation. | topology.package.domain-impuritytopology.package.domain-impurityAn async runtime, component host, HTTP client or columnar-format implementation in contextful-core raises DomainCrateImpurity. The error names the dependency and enabling feature. |
TopologyDependencyInversiontopology.package.dependency-directionA dependency edge from contextful-core toward an adapter crate raises TopologyDependencyInversion, naming both crates and the manifest line. | A dependency edge runs from the domain crate toward an adapter crate. | topology.package.dependency-directiontopology.package.dependency-directionA dependency edge from contextful-core toward an adapter crate raises TopologyDependencyInversion, naming both crates and the manifest line. |
ProfileRoleLeaktopology.package.profile-leakA dependency outside a profile's role raises ProfileRoleLeak, naming the profile and dependency path. Disallowed dependencies include component hosts, execution or evaluation in edge/control; SQL in control; build tooling in any profile. | A profile resolves a component host, the SQL engine or build tooling its role excludes. | topology.package.profile-leaktopology.package.profile-leakA dependency outside a profile's role raises ProfileRoleLeak, naming the profile and dependency path. Disallowed dependencies include component hosts, execution or evaluation in edge/control; SQL in control; build tooling in any profile. |
ProfileCapabilityAbsenttopology.package.capability-absentA subcommand requiring an unlinked capability raises ProfileCapabilityAbsent, naming the subcommand and profile. The command performs no action. A subcommand absent from every profile is a usage error. | A subcommand reaches a capability the build’s profile does not link. | topology.package.capability-absenttopology.package.capability-absentA subcommand requiring an unlinked capability raises ProfileCapabilityAbsent, naming the subcommand and profile. The command performs no action. A subcommand absent from every profile is a usage error. |
ComponentHostMissingtopology.package.host-missingDispatching a component connector without a component host raises ComponentHostMissing, naming the connector and profile. No similarly named native source substitutes. | A component connector is dispatched on a profile linking no component host. | topology.package.host-missingtopology.package.host-missingDispatching a component connector without a component host raises ComponentHostMissing, naming the connector and profile. No similarly named native source substitutes. |
ProfileDependencyLeaktopology.package.crdt-leakThe CRDT library in the resolved dependency graph of the edge or full profile raises ProfileDependencyLeak, naming the profile and the path that pulled it. A daemon or replica reads materialized text. | The CRDT library appears in the edge or full profile’s dependency graph. | topology.package.crdt-leaktopology.package.crdt-leakThe CRDT library in the resolved dependency graph of the edge or full profile raises ProfileDependencyLeak, naming the profile and the path that pulled it. A daemon or replica reads materialized text. |
StoreWriteLinksEnginetopology.package.store-write-engine-freeWithout read, contextful-context excludes duckdb, libduckdb-sys, libsqlite3-sys, async runtimes, HTTP and TLS from normal dependencies on every target. A dependency reaching these raises StoreWriteLinksEngine, naming the package and path. | The store adapter without its read feature resolves the embedded SQL engine, SQLite, an async runtime or an HTTP or TLS stack. | topology.package.store-write-engine-freetopology.package.store-write-engine-freeWithout read, contextful-context excludes duckdb, libduckdb-sys, libsqlite3-sys, async runtimes, HTTP and TLS from normal dependencies on every target. A dependency reaching these raises StoreWriteLinksEngine, naming the package and path. |
TransportStackLinkedtopology.package.transport-optionalWithout transport-ureq, contextful-outbound excludes ureq, hyper, reqwest, rustls and curl from normal dependencies. A dependency reaching these raises TransportStackLinked, naming the dependency path. | The mediated-request crate without its transport feature resolves an HTTP stack. | topology.package.transport-optionaltopology.package.transport-optionalWithout transport-ureq, contextful-outbound excludes ureq, hyper, reqwest, rustls and curl from normal dependencies. A dependency reaching these raises TransportStackLinked, naming the dependency path. |
DecodeLinksNetworktopology.package.decode-network-freecontextful-decode reaching contextful-outbound, ureq, hyper, reqwest, rustls, curl or tokio through a normal dependency raises DecodeLinksNetwork, naming the path that pulled it. | The record-decoder package resolves the mediated-request crate or a network stack. | topology.package.decode-network-freetopology.package.decode-network-freecontextful-decode reaching contextful-outbound, ureq, hyper, reqwest, rustls, curl or tokio through a normal dependency raises DecodeLinksNetwork, naming the path that pulled it. |
ExchangeDependencyLeaktopology.package.exchange-optionalcontextful-policy links the external-assertion stack, jsonwebtoken and rsa, only under its non-default exchange feature, which only the binary may enable, and only alongside wiring surface. Another crates/ package whose resolved graph reaches either raises ExchangeDependencyLeak, naming the path. | A package other than the binary resolves the external-assertion stack in its own dependency graph. | topology.package.exchange-optionaltopology.package.exchange-optionalcontextful-policy links the external-assertion stack, jsonwebtoken and rsa, only under its non-default exchange feature, which only the binary may enable, and only alongside wiring surface. Another crates/ package whose resolved graph reaches either raises ExchangeDependencyLeak, naming the path. |
SqliteLinkForcedtopology.package.sqlite-adaptercontextful-sqlite alone declares the SQLite binding as a normal dependency and enables no link feature itself; only contextful-cli turns on its bundled feature. Any other normal-dependency declaration or enablement raises SqliteLinkForced, naming the manifest line. | A package other than the SQLite adapter declares the binding as a normal dependency, or one other than the binary chooses the SQLite build. | topology.package.sqlite-adaptertopology.package.sqlite-adaptercontextful-sqlite alone declares the SQLite binding as a normal dependency and enables no link feature itself; only contextful-cli turns on its bundled feature. Any other normal-dependency declaration or enablement raises SqliteLinkForced, naming the manifest line. |
SyncStackLinkedtopology.package.s3-sync-optionalWithout s3-sync, contextful-sync excludes ureq, hyper, reqwest, rustls and curl from normal dependencies. A dependency reaching these raises SyncStackLinked, naming the dependency path. | The sync package without its S3 feature resolves an HTTP stack. | topology.package.s3-sync-optionaltopology.package.s3-sync-optionalWithout s3-sync, contextful-sync excludes ureq, hyper, reqwest, rustls and curl from normal dependencies. A dependency reaching these raises SyncStackLinked, naming the dependency path. |
StoreLinksSqlitetopology.package.store-sqlite-freecontextful-context reaching libsqlite3-sys through a normal dependency, with its default features, on any target, raises StoreLinksSqlite, naming the path that pulled it. | The store adapter resolves the SQLite link package through a normal dependency, on any target. | topology.package.store-sqlite-freetopology.package.store-sqlite-freecontextful-context reaching libsqlite3-sys through a normal dependency, with its default features, on any target, raises StoreLinksSqlite, naming the path that pulled it. |
TargetShapeUnsupportedtopology.deploy.unsupported-shapeA target profile claiming a shape its provider does not provide raises TargetShapeUnsupported, naming the shape and the missing primitive. | A target profile claims a shape its provider’s primitives do not express. | topology.deploy.unsupported-shapetopology.deploy.unsupported-shapeA target profile claiming a shape its provider does not provide raises TargetShapeUnsupported, naming the shape and the missing primitive. |
ParityDivergencetopology.deploy.parity-divergenceA byte difference from the reference output raises ParityDivergence, naming the target, the table and the first differing part. | A target’s table parts differ byte-wise from the reference target’s. | topology.deploy.parity-divergencetopology.deploy.parity-divergenceA byte difference from the reference output raises ParityDivergence, naming the target, the table and the first differing part. |
HostnamePostureMismatchtopology.publish-hostname.posture-mismatchAn unreachable hostname or response outside its declared access policy raises HostnamePostureMismatch, naming the hostname, policy and observed response. contextful-ci deploy probe exits nonzero. | An anonymous probe’s answer disagrees with the hostname’s declared gate, or the hostname is unreachable. | topology.publish-hostname.posture-mismatchtopology.publish-hostname.posture-mismatchAn unreachable hostname or response outside its declared access policy raises HostnamePostureMismatch, naming the hostname, policy and observed response. contextful-ci deploy probe exits nonzero. |
ProbeTableDrifttopology.publish-hostname.probe-tableBefore probing hostnames, the deploy tool compares descriptor and probe-table entries. An entry missing from either set raises ProbeTableDrift, naming the hostname and missing side. | The probe table and the descriptor set name different hostname-and-gate pairs. | topology.publish-hostname.probe-tabletopology.publish-hostname.probe-tableBefore probing hostnames, the deploy tool compares descriptor and probe-table entries. An entry missing from either set raises ProbeTableDrift, naming the hostname and missing side. |
ProbeSetEmptytopology.publish-hostname.empty-probeAn absent descriptor directory, absent probe table or empty hostname set raises ProbeSetEmpty, naming the path. A passing probe checks at least one hostname. | A probe with no descriptor directory, no probe table or no declared hostname. | topology.publish-hostname.empty-probetopology.publish-hostname.empty-probeAn absent descriptor directory, absent probe table or empty hostname set raises ProbeSetEmpty, naming the path. A passing probe checks at least one hostname. |
DescriptorUnknownFieldtopology.publish-hostname.unknown-fieldAn unmodelled descriptor property raises DescriptorUnknownField, naming the key and contract version. The decoder rejects the descriptor. | A descriptor carries a key its contract version does not model. | topology.publish-hostname.unknown-fieldtopology.publish-hostname.unknown-fieldAn unmodelled descriptor property raises DescriptorUnknownField, naming the key and contract version. The decoder rejects the descriptor. |
GatewayUnconfiguredtopology.publish-hostname.unconfigured-gatewayA gateway with no store configuration answers 503 on every route and raises GatewayUnconfigured. | A gateway holding no store configuration. | topology.publish-hostname.unconfigured-gatewaytopology.publish-hostname.unconfigured-gatewayA gateway with no store configuration answers 503 on every route and raises GatewayUnconfigured. |
IssuerKeyUnusabletopology.publish-hostname.issuer-keyThe HTTP server requires a verification key that resolves and parses. An unusable key raises IssuerKeyUnusable, naming the input, and prevents startup. The server generates no replacement key. | A verification key that does not resolve or does not parse at engine start. | topology.publish-hostname.issuer-keytopology.publish-hostname.issuer-keyThe HTTP server requires a verification key that resolves and parses. An unusable key raises IssuerKeyUnusable, naming the input, and prevents startup. The server generates no replacement key. |
DatabaseTransportUnprotectedtopology.coordinate.postgres-transportBeyond loopback or Unix sockets, PostgreSQL requires TLS with WebPKI roots and hostname verification. Disabling TLS there raises DatabaseTransportUnprotected before DNS resolution. Preferred TLS mode permits no plaintext fallback there. | A remote PostgreSQL connection disables authenticated TLS. | topology.coordinate.postgres-transporttopology.coordinate.postgres-transportBeyond loopback or Unix sockets, PostgreSQL requires TLS with WebPKI roots and hostname verification. Disabling TLS there raises DatabaseTransportUnprotected before DNS resolution. Preferred TLS mode permits no plaintext fallback there. |
DatabaseCaBundleUnreadabletopology.coordinate.postgres-ca-unreadableAn sslrootcert path that is unreadable or holds no certificate raises DatabaseCaBundleUnreadable, naming the path, before connecting. | A PostgreSQL sslrootcert path is unreadable or holds no certificate. | topology.coordinate.postgres-ca-unreadabletopology.coordinate.postgres-ca-unreadableAn sslrootcert path that is unreadable or holds no certificate raises DatabaseCaBundleUnreadable, naming the path, before connecting. |