You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The conformance suite tests providers only — run_conformance (contextgraph-conformance/src/lib.rs:75) drives a provider through handshake/query/shutdown. But read the conformance tables in docs/protocol-surface.md: the highest-stakes rules bind the host:
C1/C2 — the host MUST NOT auto-enable egress providers or transmit payloads pre-consent
C4 — the host's HTTP transport MUST force egress
B2 — the host MUST drop and loudly report budget liars
H3 — version mismatch MUST be a named error, never a hang
R3 — frame content MUST be treated as untrusted data, never instructions
Today, "conformant host" means "is contextgraph-host, or trusted to behave like it" — which is precisely the self-attestation model the project rejects for providers (docs/protocol-advantages.md §6: "Documentation is advisory; conformance is verifiable"). The moment a second host exists (a TypeScript agent embedding CGP, say), there is no way to verify it honors the consent gate — and the consent gate is the security story.
Proposal
Grow contextgraph-conformance a host harness: an adversarial reference provider (extending the --misbehave machinery) that the host-under-test is pointed at, plus a scripted scenario runner that asserts observable host behavior:
Consent (C1/C2): harness declares egress: true; asserts no query envelope ever arrives before the scenario grants consent. The observable is on the provider side — the harness records what reached it, which is the only trustworthy witness that the payload never left. — landed in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60
This directly serves the GOVERNANCE.md freeze criterion ("checks are agreed to fully enforce the documented conformance requirements" — impossible while host-binding rules have no check) and makes multi-host adoption safe.
Acceptance criteria
contextgraph-conformance exposes a host-harness mode (contextgraph-inspect --as-provider or a library API) — landed in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60 as run_host_conformance plus a contextgraph-inspect host --json subcommand. The --as-provider framing was superseded: the harness drives adversarial providers in process rather than inverting the CLI, which is what makes the "no envelope ever arrived" observation trustworthy.
Scenarios for C1/C2, B2, H3, crash isolation, with per-check evidence strings — six checks landed in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60 (B2, B4, C1/C2, C6, F5-bytes, R3-delimiting), each asserting the host catches a bad provider and accepts a good one. H3 version-rejection and crash-isolation are the two survivors — this issue is now exactly those.
Problem
The conformance suite tests providers only —
run_conformance(contextgraph-conformance/src/lib.rs:75) drives a provider through handshake/query/shutdown. But read the conformance tables indocs/protocol-surface.md: the highest-stakes rules bind the host:Today, "conformant host" means "is
contextgraph-host, or trusted to behave like it" — which is precisely the self-attestation model the project rejects for providers (docs/protocol-advantages.md§6: "Documentation is advisory; conformance is verifiable"). The moment a second host exists (a TypeScript agent embedding CGP, say), there is no way to verify it honors the consent gate — and the consent gate is the security story.Proposal
Grow
contextgraph-conformancea host harness: an adversarial reference provider (extending the--misbehavemachinery) that the host-under-test is pointed at, plus a scripted scenario runner that asserts observable host behavior:egress: true; asserts no query envelope ever arrives before the scenario grants consent. The observable is on the provider side — the harness records what reached it, which is the only trustworthy witness that the payload never left. — landed in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60contextgraph/2.0; assert a named error, no hang (bounded by timeout). — still missingThis directly serves the
GOVERNANCE.mdfreeze criterion ("checks are agreed to fully enforce the documented conformance requirements" — impossible while host-binding rules have no check) and makes multi-host adoption safe.Acceptance criteria
contextgraph-conformanceexposes a host-harness mode (contextgraph-inspect --as-provideror a library API) — landed in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60 asrun_host_conformanceplus acontextgraph-inspect host --jsonsubcommand. The--as-providerframing was superseded: the harness drives adversarial providers in process rather than inverting the CLI, which is what makes the "no envelope ever arrived" observation trustworthy.contextgraph-hostitself runs green in CI — the reference host proves its own claims — landed in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60 (host-conformance.sh, wired into the workflow)