Skip to content

Release Braid through a locked tagged-Git contract - #93

Merged
srinji-kaggss merged 1 commit into
mainfrom
feat/hermetic-braid-release-probe
Aug 30, 2026
Merged

srinji-kaggss merged 1 commit into
mainfrom
feat/hermetic-braid-release-probe

Conversation

@srinji-kaggss

Copy link
Copy Markdown
Owner

Braid's stable cross-repository boundary is now an immutable, locked Git contract rather than a sibling checkout convention.

Gap

The old registry export was stale, internal manifests did not consistently carry version-plus-path publication metadata, and there was no gate proving that an empty consumer could resolve the Braid family from one immutable source revision. That made path topology part of the supply chain and left the intended crate ownership graph unenforced at distribution time.

Fix

  • Defines the stable contract set in release/contract-v0.toml: braid-capability, braid-ir, braid-verify, braid-vocab-cms, and braid-vocab-web, all at 0.1.0 with Rust 1.98.
  • Keeps Flow/material/DSL APIs outside this stable boundary while [P0.1 AMENDMENT] Collapse v0 interop to Read | Write; keep Justified as a loud future gate #63 remains unresolved; the implementation is explicit instead of silently freezing the proposed Read/Write seam.
  • Gives every internal Braid edge one workspace-owned version-plus-path declaration and removes package-local sibling-path spellings.
  • Adds braid-registry-export plus scripts/braid-registry-export-check.sh; the gate regenerates the 1,058-byte CMS registry twice, compares exact bytes, and checks the pinned BLAKE3 CID.
  • Adds a committed external consumer manifest and lock template with exact registry checksums. scripts/braid-release-probe.sh builds it from one Git URL and one 40-hex revision, refuses path dependencies and unresolved template tokens, then verifies the pinned registry/capsule CIDs and receives Verdict::Admit.
  • Runs both positive and negative release probes in local CI and GitHub CI. The negative case proves a malformed revision is refused.
  • Documents two-phase promotion and non-destructive rollback. A release is advertised only after the merged GitHub commit passes the remote consumer probe; tags are immutable and never reused.

Rejected alternative: publish every workspace crate as one surface now. That would turn the unresolved #63 material-effect proposal into a de facto compatibility promise and recreate the authority slop this contract is meant to stop.

Regression proof

  • Full local CI: 31/31 lanes green.
  • Owned dependency gate: 12 semantic approvals, every authored external edge owned.
  • Registry export: 1,058 bytes; SHA-256 1fac13b0e2798ef3540052a1e9ce0468b3c0fc943d6beb472494554edc1c98e5.
  • Locked consumer: registry CID afaa7dcc9ab2f7d1530da72306c7d821c573f8aa9eda2b5c6e463f121f634acd; capsule CID ccedc469e6b0513720969ce1a4f169f53365eeadbc853042c411b44c1f15b71f; verdict admit.
  • Exact local SHA: 1a52e0098e9c378ec47f43c4e15647cb05121823.
  • Receipt: /Users/srinji/wwfd/state/local-ci-receipt.json.

Advances #75.

Still not done: GitHub checks must pass, the PR must merge, and the clean consumer probe must be repeated against the immutable GitHub merge commit before any tag is promoted. Crates.io publication is deliberately not performed by this PR.

@srinji-kaggss
srinji-kaggss merged commit df45d01 into main Aug 30, 2026
15 checks passed
@srinji-kaggss
srinji-kaggss deleted the feat/hermetic-braid-release-probe branch August 30, 2026 18:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant