Repository navigation
docs: publish the Tandem protocol dossier and enable the public site - #13
Merged
bitcoinuniverseadmin merged 2 commits intoSep 1, 2026
Merged
Conversation
Tandem is one Bitcoin-native object controlled by a matched pair of keys. The repository already published the frozen specification, three schemas, and a golden corpus, but nothing explained them or let a reader check them. This adds a ten-page dossier under docs/ built entirely on the repository's own artifacts: - protocol.html, the plain-language introduction and the five places a pair must match, each with the stable reason emitted when it fails - specification.html, the normative rules restated as numbered, citable ids (ID, REC, PAIR, OP, ST, INV, ROOT) with every rule traced to a tandem.md section - guide.html, seven worked examples using only values from golden.json - pair-check.html plus assets/pair-check.js, an in-browser pairing verifier that takes two candidate records or two candidate keys, names the rule and the stable reason behind each check, and self-tests against the published vectors on load - indexing.html, schemas.html, vectors.html, verifier.html, conformance.html, considerations.html Records one erratum. Section 13.2 states the event leaf preimage is 374 bytes with a 16-byte domain tag. The tag TANDEM/EVENT\0 is 13 bytes and every preimage published in vectors/generated/golden.json is 371 bytes, which the independent Rust verifier also asserts. The 358-byte field block in the same sentence is correct. The specification bytes are hash-pinned so this is documented rather than repaired, and the tool measures it in the browser. Also: - adds llms.txt, robots.txt, sitemap.xml, and sitemap-index.xml - extends scripts/verify-public.mjs with dossier and site-file checks, so the new pages are held to the same accessibility, CSP, and boundary standard, and the pair check script is checked for transmission primitives - widens the local dev server CSP from connect-src 'none' to 'self' so the tool can read the published vectors it verifies - replaces the forbidden word in prose across the tree, keeping the frozen EXITED_NONCANONICAL and TERMINAL_NONCANONICAL protocol identifiers, and repairs a broken auto-substitution in docs/integrations.md - corrects five security-advisory links to the current organization name - lengthens the thin homepage meta description No protocol artifact is touched. tandem.md, release/spec.json, the three schemas, and both vector files keep their exact bytes and digests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Points lastVerified at the commit that introduced the dossier, so the portal records the exact tree that was checked. Validated against the shared docs.manifest schema. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bitcoinuniverseadmin
deleted the
docs/tandem-developer-documentation-20260901
branch
September 1, 2026 12:54
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.
What this adds
A ten-page protocol dossier under
docs/, built entirely on this repository's own frozen artifacts, plus the site-level files the estate expects.docs/protocol.htmldocs/specification.htmltandem.mdsectiondocs/guide.htmlgolden.jsondocs/pair-check.htmldocs/indexing.htmldocs/schemas.htmldocs/vectors.htmldocs/verifier.htmldocs/conformance.htmldocs/considerations.htmlThe interactive tool
docs/pair-check.htmltakes two candidate records, or two candidate keys, and reports which numbered rule each check maps to and the stable reason code a real parser would emit. It is driven by the repository's own rules and it self-tests againstvectors/generated/golden.jsonon load: 16 checks covering all five marker encodings, both identity derivations, the carrier derivation, every published preimage, both Merkle roots, and the pre-INIT state root.It is client-side only. Nothing typed into it is transmitted. Its content security policy allows connections only to this origin, and the only request it makes is a read of the published corpus.
One erratum, documented not repaired
tandem.mdsection 13.2 states the event leaf preimage is 374 bytes with a 16-byte domain tag. The tagTANDEM/EVENT\0is 13 bytes, and every preimage published invectors/generated/golden.jsonis 371 bytes. The independent Rust verifier asserts 371 at the same point. The 358-byte field block stated in the same sentence is correct.Both implementations and the frozen vectors agree with each other and disagree with the prose sentence. The specification bytes are hash-pinned, so correcting them in place would change
spec_hashand therefore the protocol identity. It is recorded as erratum 1 on the specification page and the tool measures it live in the browser.Verification
node scripts/verify-public.mjspasses on all 58 filesvalidate-manifest.mjs docs.manifest.jsonpassesWhat is not touched
tandem.md,release/spec.json, the three schemas, and both vector files keep their exact bytes and digests.🤖 Generated with Claude Code