Skip to content

[safer:implement-staff] Blind second encoder for the Phase 2A vector corpus #902

Description

@chughtapan

Parent: #888
Sibling: #896 (the corpus itself)
Modality: implement-staff

Why this is a separate sub-issue

docs/spec/wire-profile.md §12.2 requires the positive corpus be generated by two encoders that "do not share a CBOR, DER, COSE, or canonicalization implementation and do not read each other's output."

Choosing two different libraries satisfies the wording. It does not satisfy the purpose. The mechanism exists to catch misreadings of the catalog, and a single author cannot provide that: one person reads §5.4's DER rules once, forms one interpretation, and both encoders inherit it. Where the catalog is ambiguous, both sides agree, the bytes match, and the corpus certifies a shared misreading as correct.

That is this repository's recurring defect — a check that passes while inspecting nothing — in a new costume. Two authors who never see each other's code is the real version of the guarantee.

Terms, which are the entire value of this arrangement

  • Work only from docs/spec/wire-profile.md at origin/v2.
  • Do not read v2/testbed/src/vectors/. Do not read impl-896's branch or PR. Do not communicate with impl-896.
  • Choose CBOR, DER, and COSE implementations without knowing what the other side chose.
  • Emit the §12.2 positive vectors as lowercase hex, one record per structure, in a machine-comparable form.

Where this lands

Its own branch, its own directory. Do not add to v2/testbed/src/vectors/ — that is impl-896's tree, and a shared path would both break blindness and create a merge conflict. This is a verification instrument first and an artifact second; whether it folds into the corpus later is a decision after the comparison, not before.

What happens next

The orchestrator holds both outputs and compares bytes. Byte equality is the evidence §12.2 demands. Any disagreement is a candidate catalog defect, not a bug in either encoder — the chapter is explicit: "A constant absent from the catalog is a catalog defect, never an implementation choice." Disagreements route to architect-892, which holds the reasoning behind every assignment.

Note

The catalog was corrected at ad6c10e5 (PR #901) after two contradictions against frozen chapters were found by cold reading. Work from origin/v2, never from a cached or older copy.

Status

planning

Metadata

Metadata

Assignees

No one assigned

    Labels

    implementingAgent implementing codesafer:implement-staffsafer-by-default implement-staff modalityv2Aligned input to the v2 track

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions