# Validation receipt — Hash-Chained Journal

25 October 2026. Private source-complete teaching package. No encoded video, external ledger deployment, blockchain operation or independently authenticated source is claimed.

- Python 3.11.3: seven behavioral suites passed, covering all 49 independently materialized complete outputs, literal primitive/group bytes, exact correction membership, detachment, pinned historical helper and native digest refusal.
- Strict TypeScript/native WebCrypto: all 49 entire outputs equal independent expectations and Python. Unavailable cryptography is indeterminate without a partial commitment. Python's native hashlib ValueError/RuntimeError paths now map to that outcome; a regression patches the primitive itself. Unexpected TypeError still raises.
- Root literal vectors: scoped genesis 0556493a8c0203ca969f4005d8007cebbe1594dab31fafebec95d30270db5bfc; G byte lengths 408/424/829; three groups/four journals; final 8af37be6b7835169129ae57b561d98c0fe36e231921c76029f5aff8c9540beea. Display prefixes never replace full digest comparisons.
- Actual Chrome/Playwright lab: 12 scenarios match entire fixture outputs; canonical genesis/three-group/binding walkthrough has four steps after genesis; three input-parameter changes, pause/reset cancellation, keyboard and reduced-motion one-step behavior passed.
- Widths 390/768/1440: no page overflow and visible controls at least 44px. Both SVGs passed text bounds; Mermaid rendered. Console/page errors: 0. Actual pixels inspected: 390px full correction view, both SVGs and Mermaid; no clipped text or correction/sequence ambiguity.
- Source metadata in the lab and the browser receipt match the canonical TypeScript core and helper hashes. Compiled lab temporary directories were removed after checked-boundary cleanup. The existing root test runner uses its declared .tmp/d30-hash-ts compile directory.
- Structural topic/playground validators are rerun after final receipts/metadata; these provide layout/package gates, not cryptographic certification.

Source SHA256:

| File | Digest |
|---|---|
| Python hash_chain.py | `043cde0ad21bdabcb9b2aebdd3fd54ad892504da43f8591458744b3c99ced62d` |
| TypeScript hash-chain.ts | `1b1f45ea67b544e1ecf4012dc0f8004c86f94e37198b691cdd046c7c79429886` |
| Pinned Python history_validation.py | `68c1732c77ca72b502db43d5f94659c31e630776805424bdb8ce9ba8f76a2b16` |
| Pinned TypeScript history-validation.ts | `7f6292ae8ba374475c2955c65b3af0ce542f2ae8c9c281e70d6df9fe0208c317` |

Public receipts: [kernel tests](test-results.json), [browser QA](browser-qa.json), [strict contract](DATA-CONTRACT.md), [pinned validator provenance](history-validator-provenance.json), [canonical input](canonical-input.json), [full output](canonical-output.json). Raw screenshots/runnable browser QA remain in the canonical tests directory.

Limits: source head and expected commitment independence are trusted host preconditions, not facts authenticated by receipt labels. Pass is bounded correspondence, not economic correctness, signer trust, current external anchoring or financial finality. Historical account status is not revalidated as current posting policy. The 240-scalar integrity reason bound is a narrower export profile and never authorizes truncation. NIST public vectors support informal checking; no CAVP/FIPS certification is claimed. The current FIPS 180-4 page's 2023 revision planning note is not described as withdrawal.
