fix(jcs): enforce fail-closed RFC 8785 canonicalization - #253
fix(jcs): enforce fail-closed RFC 8785 canonicalization#253Deleted user (ghost) wants to merge 7 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
aegisomega | f768914 | Commit Preview URL Branch Preview URL |
Aug 01 2026, 12:37 AM |
|
Deployment failed with the following error: Learn More: https://vercel.com/tariks-projects-e9198507?upgradeToPro=build-rate-limit |
Exact-head admission status and compatibility boundaryCurrent snapshot (2026-08-01):
Compatibility audit findings so far:
Remaining admission conditions:
Status: CONDITIONALLY ADMISSIBLE SECURITY REPAIR; KEEP DRAFT UNTIL CALLER COMPATIBILITY IS CLOSED. No merge authorization. |
Admission status correction — caller compatibility is now a hard blockerThe fail-closed JCS implementation itself remains functionally supported by the exact-head gate set already recorded for Confirmed incompatible callers on the current PR head:
These are not JCS defects. They are pre-existing caller-contract violations exposed by the corrected integrity boundary. Their required classification is Current surface classifications:
Required closure before admission:
Therefore the current classification is: BLOCKED ON CALLER COMPATIBILITY — KEEP DRAFT — NO MERGE AUTHORITY The existing exact-head evidence remains valid only for |
|
Downstream dependency recorded: PR #258 imports |
Purpose
Close a concrete canonicalization soundness gap on current
main@0bdffe75b56e5cd27c0632e1ba166620da327494.The existing serializer was labeled RFC 8785 but diverged at security-critical boundaries:
BigIntwas silently converted into a quoted decimal string;undefinedobject properties disappeared;These behaviors can produce a commitment for data that is not valid ordinary JSON/JCS input, or produce a commitment that differs from a compliant implementation.
Changes
BigInt,undefined, functions and symbols rather than changing/omitting their type;Evidence produced in this session
Targeted TypeScript transpilation: PASS.
Targeted runtime checks against the branch implementation: PASS for:
A full repository clone/test run could not be executed in the current sandbox because outbound DNS resolution for
github.comwas unavailable. Exact-head GitHub Actions remain mandatory before admission.Generated provenance boundary
.claude.jsonwas changed by the repository's branch-provenance automation (source_ref/parent_state_hash). It was not manually edited as part of the JCS implementation. Treat it as a generated artifact and verify it through its canonical generator/gate.Authority boundary
action_required, skipped, absent or non-executed checks are not evidence of a pass.Reconciliation relation
This PR is a narrow implementation repair against the canonicalization boundary and should be recorded under issue #246 as:
VERIFIES: RFC 8785 canonical byte semantics;SUPERSEDES: implicit BigInt-to-string canonicalization behavior;CONFLICTS_WITH: callers that pass non-JSON runtime values directly into the integrity boundary.