feat: pin the reference-client conformance profile and canary vectors - #3
Open
CompleteDotTech wants to merge 1 commit into
Open
feat: pin the reference-client conformance profile and canary vectors#3CompleteDotTech wants to merge 1 commit into
CompleteDotTech wants to merge 1 commit into
Conversation
Issue OpenCoven#13 asks Psyche Build to prove itself as the first conforming Psyche reference client by pinning one immutable Psyche protocol artifact and failing on unknown majors, widening, stale correlation, ambiguous effects, and incompatible downgrades. The cross-repository mapping work is at Stage 0 in OpenCoven/psyche-build#253/#254; the protocol repo's contribution is the artifact the adapter pins. Publish that artifact: a reference-client profile manifest that freezes the v1 registry (sixteen kinds at major 1) and digest-pins six positive vectors (byte-exact copies of the proven canonical goldens) and eight denial vectors (single deliberate mutations), plus an enforcement test. The test rejects any byte of drift in the pinned profile or vectors, derives the expected registry from the code, proves every positive vector decodes, validates, round-trips canonically, and matches its declared persistability, and proves every denial vector is rejected with the declared quarantine class through the public RejectedDocument path. docs/REFERENCE-CLIENT.md records the pin, the canary design, the pinned adapter plan, and the current state of the issue. Signed-off-by: Timothy Wayne Gregg <5861166+CompleteDotTech@users.noreply.github.com>
CompleteDotTech
marked this pull request as ready for review
August 30, 2026 16:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Publish the pinned reference-client conformance artifact that issue OpenCoven#13 requires before Psyche Build can prove itself as the first conforming Psyche reference client, and record the adapter plan around it. This is the protocol repo's half of the "pinned conformance canary" delivery slice (cross-repository owner:
OpenCoven/psyche-build#201; product-side mapping is at Stage 0 inpsyche-build#253/#254). Slice 1 of the canary track — the artifact and its enforcement; Psyche Build adoption, lifecycle vectors, and the adapters remain (see below).The pinned artifact lives in
crates/psyche-core/tests/fixtures/reference-client/:profile.v1.json— the profile manifest: freezes the v1 registry (sixteen kinds at supported major 1) and digest-pins every vector with its class and expected outcome. Profile digestsha256:0d4851e449f622f2ec27a3c0ec68c42b295ad25dc68234b42643e292fd76a934.vectors/positive-*.json(6) — byte-exact copies of the proven canonical goldens (intent, graph node, surface event/effect, delivery, error envelope) that a reference client must accept, validate, and round-trip canonically (RFC 8785), with declared persistability (error envelopes are never persistable).vectors/denial-*.json(8) — single deliberate mutations a reference client must reject and quarantine, covering exactly the failure modes the issue names:psyche.intent.v2) and incompatible downgrade (psyche.intent.v0) →UnsupportedMajor;psyche.task.v1kind →UnknownSchema(product-local pane/worktree/tmux/provider IDs cannot become protocol identity);deny_unknown_fieldson a smuggled product-local ID) and stale correlation (effect moved, claimed digest did not) →InvalidShape;UnknownEnumValue;InvalidShapeat the strict-JSON boundary.crates/psyche-core/tests/reference_client_canary.rsenforces the pin: any byte of drift in the profile (pinned by thePROFILE_SHA256constant) or any vector (pinned inside the manifest) fails CI; the expected registry is derived from the code (RecordKind::ALLplus the non-persistable error kind) so the manifest cannot drift from the schema registry; each positive vector must decode, validate, round-trip canonically, and match its declared persistability; each denial vector must be rejected with its declared quarantine class through the publicRejectedDocumentpath, producing authentic quarantine input.docs/REFERENCE-CLIENT.mdrecords the canary design (including where restart and dispatch-ambiguity canaries map onto the existing C-S6/C-S11/crash suites), the pinned adapter plan for Psyche Build with the proposed record mapping and identity-boundary rules, the migration/rollback requirements, and the acceptance-criteria status.No existing behavior changes: the slice is additive (test artifact, enforcement test, docs). No new dependencies;
sha2,serde, andserde_jsonare alreadypsyche-coredependencies, soCargo.lockis unchanged.Issue
Refs OpenCoven#13. The issue stays open: acceptance criteria for Psyche Build CI adoption, the identity/lifecycle adapters, and the executable reference flow land in later slices tracked by
OpenCoven/psyche-build#201.Test plan
unwrap/expectoutside the file-level allow, no nonminimal booleans, deny-unknown-fields symmetry with the manifest).cargo fmt --all -- --check— deferred to CI (no Rust toolchain in the authoring environment).cargo clippy --workspace --all-targets -- -D warnings— deferred to CI.cargo test --workspace --locked(includes the newreference_client_canarytarget) — deferred to CI.cargo deny check licenses advisories bans sourcesand secret scan — deferred to CI (no dependency or manifest changes).