Skip to content

[codec][P1] Byte-identity must be a real CI gate + freeze golden vectors (D1) #16

@ignromanov

Description

@ignromanov

Re-audit 2026-05-29 (PR #7). The perpetuity guarantee (Rust↔TS byte-identity, schema v1 immutable) is not enforced by CI.

  • (a) cross-impl gate is a no-op by default: ts-rust-parity — the only job comparing Rust WASM output against the deployed vl/app TS reference — is gated behind vars.TS_RUST_PARITY_ENABLED (unset) at .github/workflows/ci.yml:63, and ci-gate scores skipped as PASS (ci.yml:143-145). So Rust↔TS byte-identity is verified by nothing in default CI; intra-repo jobs only prove self-consistency vs frozen vectors.
  • (b) golden vectors are not frozen: scripts/generate-vectors.ts:56 overwrites the committed vectors/v4-codec.json with no diff/equality gate, and the generator source has forked from the committed JSON.

Decision D1: frozen golden vectors become the self-contained cross-impl oracle (captured from the canonical TS reference at a pinned vl/app SHA); add a CI freeze-gate (generator diffs vs committed JSON, fails on mismatch); both Rust and TS assert against them; demote live vl/app parity to opt-in advisory.

Pre-publish blocker (not a merge blocker). Source: 43-agent audit, dimensions ci-gate + perpetuity-parity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions