docs: close the minor requirement gaps left open by the audit - #84
Merged
Conversation
Documentary consistency only — no design change. Closes the minor gaps the requirement re-audit left in the 'partial' requirements, by making mechanisms the spec already has explicit and reconciling two v1 limits. - §6.6 threat model: derive censorship/freeze resistance explicitly as a Requirement 3 property (permissionless publishing + self-publish, a censoring publisher collects nothing, no node can lock a wallet in; availability under the k-replication DA bound named as the one honest limit), and state the trust base is software + keys + Bitcoin — no trusted hardware / secure enclave / HSM / TEE. - §1.7.9: FRI is a transparent proof system — no trusted setup, ceremony, SRS/CRS, or toxic waste (Requirement 3's 'any setup procedure'). - §4.5: during emergency recovery the wallet hands the rebuilt node only the operational bundle; the seed and SPEND branch are re-derived wallet-side and never leave it (Requirement 5). - §1.2: note the custody trade-off of a platform-synced passkey seed source; strict custody SHOULD use a device-bound passkey or a BIP-39 mnemonic. - §5.6: an explorer MUST be self-hostable (was SHOULD) — aligns with §6.1 and Requirement 9. - §6.3: name the two node-switch residuals — the node-local best-effort grant revocation set (re-instruct on switch) and the abandoned node's retained operational bundle (a privacy residual, not lock-in or a custody break). - requirements.md clause 9: reconcile two v1 limits with the spec — the balance attestation is point-in-time as of the latest anchored state (§5.7), and a non-batched mint disclosure verifies against its recursive mint proof rather than an on-chain anchor (§3.10 mint-verified). - §6.5: clarify that an asset's name/decimals are IssuanceTerms display metadata, never on-chain (only name_hash/decimals bind into asset_id). Out of scope (design decisions, left open): publisher-identity linkage rotation (Req 2), an IssuanceTerms delivery channel (Req 8), the recipient-own-node DA edge (Req 6).
Contributor
Author
|
Ready for review. Two review passes (correctness/no-overreach + consistency in parallel each round); both clean on the first pass, so no rework was needed. Every added sentence was checked against the actual spec mechanism it claims (freeze resistance against §3.4 permissionless publishing + §6.3 no-lock-in, with the DA availability bound named honestly as the one limit; FRI transparency; the recovery custody actor; the two portability residuals against §5.2/§5.8), and the requirements.md clause-9 reconciliation was checked to align — not weaken — the requirement ("current balance" stays the goal; the #79 anchor note is untouched). The three design decisions remain explicitly out of scope. |
TaprootFreak
marked this pull request as ready for review
July 10, 2026 22:13
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.
Why
The requirement re-audit left seven requirements at partial — but all with minor, documentary gaps: mechanisms the spec already has, just never made explicit, plus two v1 limits where
requirements.mdand the spec had drifted. This closes those. No design change.What
Requirement 3 (Trustless) — the requirement names "freeze", "any setup procedure" and "trusted hardware" as parties/properties the spec never spelled out:
collects nothing,no node can lock a wallet in; availability under the k-replication DA bound named as the one honest limit), and state the trust base is software + keys + Bitcoin — no trusted hardware / secure enclave / HSM / TEE.Requirement 5 (Custody):
Requirement 9 (Selective disclosure):
mint-verified). "Current balance" stays the stated goal; the spec: close the remaining open design decisions #79 anchor note is untouched.Requirement 10 (Node portability):
Requirement 8 (Multi-asset):
name/decimalsare IssuanceTerms display metadata, never on-chain (onlyname_hash/decimalsbind intoasset_id).Explicitly out of scope (design decisions, left open)
Not documentary — these need a design decision and are not in this PR:
name/decimals(Req 8).Scope
19 lines in
specification.md, 1 clause inrequirements.md. Reviewed on two lenses (correctness/no-overreach + consistency) — both clean; no test vectors affected.