Repository navigation
feat(uuid-v8): shared Rust generator for ADR-008 profiles T and C (P1) - #1245
Merged
Merged
Conversation
tools/uuid-v8 (crate estate-uuid-v8, MPL-2.0): the Rust member of the "shared profile T and C generators per estate language" in ADR-008 P1, producing the same ids as scripts/uuid-v8.js. - profile_t(): library v7 with the version nibble set to 8 (the only bit operation ADR-008 permits); strictly increasing within a process. - profile_c(domain, name) / profile_c_bytes(): bytes 0..15 of SHA-256(domain ":" name), version 8, variant 10; domain is non-empty printable ASCII without ':' (same rule as uuid-v8.js). - from_deed_body("domain:name"): splits on the first ':'. - from_v7(id): the P2 alias, flipping only the version nibble. - uuid-v8 binary with uuid-v8.js's interface and exit codes. Tests: cargo test checks profile C against vectors from the independent sha256sum oracle of scripts/tests/bun/uuid-v8-gen-test.sh (a variant-mask mutant fails two of them), plus T layout/order/timestamp, from_v7 and the domain rules. scripts/tests/rust/uuid-v8-rs-test.sh runs the binary against the same oracle, against uuid-v8.js (bun) and through check-uuid-v8.sh --strict: 20/20 locally. Both run in deed-conformance.yml; no new actions, so actions.lock is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Contributor
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
⛔ Files ignored due to path filters: 1
📒 Files selected for processing: 6
✨ Finishing Touches: 💡 1
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Contributor
K9 contract conformancerun https://github.com/hyperpolymath/standards/actions/runs/38538027495 K9 normative contract typecheckK9 contract self-testK9 conformance fixturesK9 corpus conformance (L2) |
|
hyperpolymath
marked this pull request as ready for review
October 14, 2026 08:59
Contributor
|
❌ Failed to create Coding Agent finishing-touch task. Please try again. |
Contributor
|
❌ Failed to create Coding Agent finishing-touch task. Please try again. |
Contributor
|
Add Carrot credits or activate Agent usage billing to use Autofix |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Adds
tools/uuid-v8(crateestate-uuid-v8, MPL-2.0). It is the Rust member of ADR-008 phase P1, "shared profile T and C generators per estate language", and produces the same ids asscripts/uuid-v8.js. It unblocks the per-repo UUID v8 migration (P3) for the estate's Rust repositories, starting with echidna, echidnabot and proof-burrower, whoseids.rsmodules still mint v7 ids and bare-JCS v8 content ids.What it provides
profile_t(): a library v7 with the version nibble set to 8, the only bit operation ADR-008 permits. It is strictly increasing within a process.profile_c(domain, name)/profile_c_bytes(domain, bytes): bytes 0..15 of SHA-256(domain ":" name), with version 8 and variant 10. The domain rule is the same as inuuid-v8.js: non-empty printable ASCII without:.from_deed_body("domain:name"): profile C from a deed#u8body, split on the first:.from_v7(id): the P2 alias, flipping only the version nibble.uuid-v8binary with the same interface and exit codes asuuid-v8.js.Consumers pin it as a git dependency:
estate-uuid-v8 = { git = "https://github.com/hyperpolymath/standards", rev = "<commit>" }.Tests
cargo test:sha256sumoracle inscripts/tests/bun/uuid-v8-gen-test.sh, not from this code;from_v7, and the domain rules with planted negatives.scripts/tests/rust/uuid-v8-rs-test.shruns the binary three ways:uuid-v8.js, when bun is present;check-uuid-v8.sh --strict.Locally:
Both commands run in
deed-conformance.ymlbeside the bun generator test, with new path triggers fortools/uuid-v8/**andscripts/tests/rust/**. No new actions are used, soactions.lockis unchanged.Not in this PR
AGENTS.md§5e" for batch caps, butAGENTS.adochere has no §5e.🤖 Generated with Claude Code
https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Generated by Claude Code