Skip to content

Document the decision not to unify settlement/1's hash with this spec's canonical form - #26

Merged
AgenteLabs merged 1 commit into
mainfrom
claude/settlement-anchor-crossref
Nov 3, 2026
Merged

AgenteLabs merged 1 commit into
mainfrom
claude/settlement-anchor-crossref

Conversation

@AgenteLabs

Copy link
Copy Markdown
Owner

What this is

Phase 2 of the estate's one-tree-explorer roadmap found that a single Flashy Gold ledger entry has two independent proof mechanisms over the same row: this spec's canonical() (consumed by ClaimYour.Gold's day-commitment) and flashynetwork.com's settlement/1 leaf (a different, JSON-encoded, millisecond-precision pre-image over the same six fields).

No code changes here. This PR documents, in CLAUDE.md, the decision examined and rejected: unifying the two hash functions. Two independent divergences (pipe-joined vs. JSON, seconds vs. milliseconds precision) mean doing so would be a breaking migration — flashynetwork's transparency log already holds 12,000+ sealed leaves reproducible only from its current pre-image — applied one hop downstream of this spec's own append-once-sealing discipline. The two mechanisms also answer different questions by design (a day-batched sorted-set vs. a running per-entry log), the same reasoning Flashy Rails' own settlement log already applied to not reusing this sorted-set construction.

The two consuming repositories (ClaimYour.Gold, flashy-network) ship a one-hop URL cross-reference instead, keyed by the id both already share — see their companion PRs.

Verification

Baseline and after (no code change): npm run typecheck clean, npm run test — 28 test files / 295 tests passing, unchanged.


Generated by Claude Code

Phase 2 of the estate's one-tree roadmap found that a single ledger entry
now has two independent proof mechanisms over the same row: this spec's
canonical() (consumed by ClaimYour.Gold's day-commitment) and
flashynetwork.com's settlement/1 leaf. Checked whether to unify them onto
one hash and decided not to: the two pre-images already diverge (encoding
and timestamp precision), and flashynetwork's committed transparency log
holds 12,000+ leaves sealed under its own pre-image that changing this spec
to match would retroactively break. The two also answer different
questions (a day-batched set vs. a running per-entry log) for the same
reason Flashy Rails' own settlement log does not reuse this sorted-set
construction. No code changes here — this records that the alternative was
examined, not skipped, and names the cross-reference the two consuming
repositories ship instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cmdsrm66fKc3D9dNwqPL64

Copy link
Copy Markdown
Owner Author

CI red on Dependency audit — not this PR's

npm audit --audit-level=high reports 15 vulnerabilities (14 moderate, 1 high), all in devDependencies (vitest/@vitest/mocker, the eslint/@typescript-eslint chain via minimatch, vite) — none in a production dependency.

This PR is doc-only (CLAUDE.md, no code), and package.json/package-lock.json are byte-identical to origin/main — confirmed with git diff origin/main -- package.json package-lock.json, no output. The same audit would fail identically on main right now, since the dependency tree this PR ships is the dependency tree already there.

Nothing to fix from this PR. Flagging per the repo's own npm audit fix/--force output for whoever owns dependency bumps here — --force on the eslint chain is a breaking change the audit output names itself.


Generated by Claude Code


Generated by Claude Code

@AgenteLabs
AgenteLabs marked this pull request as ready for review November 3, 2026 15:24
@AgenteLabs
AgenteLabs merged commit 31d7be8 into main Nov 3, 2026
11 of 12 checks passed
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.

2 participants