Skip to content

docs: publish the Tandem protocol dossier and enable the public site - #13

Merged
bitcoinuniverseadmin merged 2 commits into
mainfrom
docs/tandem-developer-documentation-20260901
Sep 1, 2026
Merged

bitcoinuniverseadmin merged 2 commits into
mainfrom
docs/tandem-developer-documentation-20260901

Conversation

@bitcoinuniverseadmin

Copy link
Copy Markdown
Collaborator

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.

Page Covers
docs/protocol.html Plain-language introduction, the five places a pair must match, the object model
docs/specification.html The normative rules restated as numbered, citable ids, each traced to a tandem.md section
docs/guide.html Seven worked examples using only values from golden.json
docs/pair-check.html An in-browser pairing verifier
docs/indexing.html Block scope, confirmation provenance, reorganization, mempool, two-pipeline agreement
docs/schemas.html All three published JSON Schemas, field by field
docs/vectors.html The golden corpus, all 31 validation cases, every root and the formula that reproduces it
docs/verifier.html The independent Rust implementation, what it proves and what it does not
docs/conformance.html The conformance claim, available evidence, an ordered 39-step build checklist
docs/considerations.html Protected properties, the risks pairing adds, limitations, changelog

The interactive tool

docs/pair-check.html takes 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 against vectors/generated/golden.json on 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.md 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. 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_hash and 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.mjs passes on all 58 files
  • validate-manifest.mjs docs.manifest.json passes
  • Every published root, preimage, Merkle level, identity derivation, and carrier derivation was recomputed independently before being written down
  • The tool was exercised in a real browser: matching pair, mismatched pair, and malformed half all produce the correct rule and reason
  • No em dash anywhere; the forbidden word is gone from prose across the tree

What 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

Bitcoin Universe Admin and others added 2 commits September 1, 2026 12:14
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
bitcoinuniverseadmin merged commit 693a9f1 into main Sep 1, 2026
1 check failed
@bitcoinuniverseadmin
bitcoinuniverseadmin deleted the docs/tandem-developer-documentation-20260901 branch September 1, 2026 12:54
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