Problem
The repository has no CI — .github/ contains issue templates and funding config, but no workflows/ directory. For a project whose core pitch is "conformance is a test you run in CI", the spec repo itself not running conformance in CI is a credibility gap, and every normative guarantee (schema ↔ types agreement, examples validity, the suite catching misbehavior) is currently re-verified only by hand.
Proposal
Add a GitHub Actions workflow running on every PR and push to main:
Rust jobs
Protocol witness jobs (the ones unique to this repo)
Site job
Acceptance criteria
Remaining scope (2026-07-26): the pipeline itself is complete — all four job groups run on every PR. What is missing is the gate: branch protection on main 404s and the active ruleset carries no required_status_checks, so every job above is advisory at merge time. Close this by adding required_status_checks naming the workflow's jobs, plus the README badge.
Problem
The repository has no CI —
.github/contains issue templates and funding config, but noworkflows/directory. For a project whose core pitch is "conformance is a test you run in CI", the spec repo itself not running conformance in CI is a credibility gap, and every normative guarantee (schema ↔ types agreement, examples validity, the suite catching misbehavior) is currently re-verified only by hand.Proposal
Add a GitHub Actions workflow running on every PR and push to
main:Rust jobs
cargo fmt --check— landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33cargo clippy --workspace --all-targets -- -D warnings— landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33cargo test --workspace— landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33rust-version = "1.90"toolchain, not just stable — landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33Protocol witness jobs (the ones unique to this repo)
contextgraph-inspectagainst the bundledcontextgraph-example-docsfixture — all 5 checks must pass. — landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33; the workflow also runs the host-conformance job added in Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60--misbehavemode and assert the matching check fails. The suite's claim that it "genuinely catches broken providers rather than rubber-stamping everything" (docs/protocol-advantages.md§6) becomes machine-verified on every PR. — landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33examples/reference-messages.jsonand every line ofexamples/full-stdio-session.ndjsonagainstschema/contextgraph-envelope.schema.json(schema/validate-examples.pyalready exists — wire it in). Additionally, round-trip the reference messages throughcontextgraph-typesserde in a Rust test so a drift between the Rust types and the JSON Schema turns a PR red instead of silently shipping two divergent sources of truth. — landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33Site job
pnpm buildinsite/so docs-site breakage is caught at PR time. — landed in ci(site): promote docs-site build to a hard gate #62 (promoted from advisory to a hard gate)Acceptance criteria
--misbehavedetection fails CI — landed in Pre-freeze normative sweep: SPEC.md, canonical token accounting, conformance that actually catches things #33mainrequires the workflowRemaining scope (2026-07-26): the pipeline itself is complete — all four job groups run on every PR. What is missing is the gate: branch protection on
main404s and the active ruleset carries norequired_status_checks, so every job above is advisory at merge time. Close this by addingrequired_status_checksnaming the workflow's jobs, plus the README badge.