From 94715c21f6fdb1e4c4a43437fecbe2c7eb472d00 Mon Sep 17 00:00:00 2001 From: sovereign Date: Thu, 18 Dec 2025 00:16:50 +0000 Subject: [PATCH] ci: lock EventEnvelope byte contract --- .github/workflows/freeze-envelope.yml | 15 +++++++++++++++ COOLING_CHECKLIST.md | 5 +++++ 2 files changed, 20 insertions(+) create mode 100644 .github/workflows/freeze-envelope.yml diff --git a/.github/workflows/freeze-envelope.yml b/.github/workflows/freeze-envelope.yml new file mode 100644 index 0000000..fea1da7 --- /dev/null +++ b/.github/workflows/freeze-envelope.yml @@ -0,0 +1,15 @@ +name: Freeze Envelope Byte Contract + +on: + push: + pull_request: + +jobs: + freeze-envelope: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - name: Assert EventEnvelope byte contract + run: cargo test -p vaultmesh-command-center test_event_envelope_canonicalization_bytes + diff --git a/COOLING_CHECKLIST.md b/COOLING_CHECKLIST.md index e12332e..b0e08ad 100644 --- a/COOLING_CHECKLIST.md +++ b/COOLING_CHECKLIST.md @@ -2,3 +2,8 @@ For the next 30 days, treat these as frozen invariants: do not change `EventEnvelope` `format`/`schema` semantics, do not reorder top-level envelope fields, do not change timestamp precision (UTC `Z`, seconds-only), do not change payload key-sorting rules (objects sorted recursively; arrays preserve order), do not change the JSONL newline byte contract (one LF per line), and do not silently change hash algorithms when/if leaf hashing is introduced—only evolve via an explicit schema/version bump. +No envelope changes without: a payload schema bump, a full replay audit rerun, and a new freeze tag. + +Freeze tag: `v0.8-freeze-envelope-v0` currently exists locally; when ready to publish, push it (and the commit) with: +- `git push origin 1830e0f:main` +- `git push origin v0.8-freeze-envelope-v0`