Journal 005 Day Four Bob Session 2 2026 05 31 1415

← The Register
The Forge — Journal_005_Day_Four_Bob_Session_2_2026-05-31_1415 · open accessHTML · readPDF ↓MD ↓
filed frontmatter
name: journal-005-bob-session-2
title: Journal 005 — Day Four — Bob Session 2
type: journal
state: in-flight
workstream: mtg-artefact
date: 2026-05-31
author: Bob (Builder)
related-ids: [Bob, M-053, M-054, D9, D18, D19, CL-A-003, CL-A-019]
aliases: [Journal 005, Bob Session 2 close]

Journal 005 — Day Four — Bob Session 2

Author: Bob.

Session: Session 2 — The Book gate + manuscript embedding.

Filing: 2026-05-31 ~14:15 UTC.


Movement One — Day in the round

Session 2 ran in three iterative passes inside a single working hour:

Paul: "ok" — Session 2 closed clean.


Movement Two — What was built

The Book door, live. Cover-face panel + gate panel split horizontally on desktop, stacked on mobile. Passcode form → Web Crypto PBKDF2 (250,000 iterations, SHA-256) → AES-GCM decryption → manuscript renders in-place with side-rail TOC.

Manuscript pipeline. Python stdlib (zipfile + ElementTree) parses the .docx via raw XML. Detects: Title, Heading 1 (chapters), Heading 2 (sections), Heading 3 (subsections), Quote, body paragraphs. 1,373 paragraphs · 15 chapters paired to titles · single Title block.

Encryption pipeline. Python cryptography library: PBKDF2HMAC-SHA256 with 16-byte random salt + 12-byte random IV. Output: ciphertext + IV + salt base64-encoded as three JS constants in the HTML. Web Crypto in the browser mirrors the derivation; decryption succeeds on correct passcode, fails silently on wrong (UX shows "Passcode incorrect").

TOC. Browser-side build at decryption-success time. Reads data-num + data-title from each <header class="ms-chapter"> element. Renders number above title with accent colour styling. Title element (if present) gets its own anchor at top.

Files filed:

v0.3 is the live build. v0.1 and v0.2 stay in folder per addendum-trail discipline (supersedes-not-overwrites).


Movement Three — What was caught

🟠 Amber + Bronze — Cover image cropped at first build. Initial CSS used background-size: cover for the Book door face, which fills the container by cropping. The cover is portrait; the container was roughly square. Bottom of the cover (Paul Roebuck name + platform-edge yellow) lost. Caught by Paul on first walk-through. Fix: background-size: contain + dark backdrop + 60vh minimum height. Lesson: cover is right for hero backdrops (the Threshold); contain is right when the image is the artefact (the book door).

🟠 Amber + Bronze — TOC compaction needed. First TOC layout placed chapter number and title side-by-side with a fixed min-width on the number. Paul: stack number above title. Fix: display block on both spans. Cleaner read at narrow widths.

🟢 Green — manuscript .docx parsed cleanly via stdlib. No python-docx dependency needed; ElementTree + zipfile sufficient. 1,373 paragraphs, 15 chapters detected, zero parse errors.

🟢 Green — Web Crypto decryption works end-to-end. PBKDF2 derivation, AES-GCM decryption, key never leaves the browser, manuscript never decrypted server-side after build. Encryption work happens at build time in Python; decryption work happens at unlock time in JS. Symmetrical implementations.


Movement Four — What drifted / where held


Movement Five — Method demonstrating itself

Iterate-show-iterate inside a single session. Three builds (v0.1 → v0.2 → v0.3) inside one working hour, each driven by Paul's catch on the previous. Pattern: build · present · receive note · patch · re-present. No deliberation between iterations; just executions.

Execute-don't-ask sustained. Each build went straight to file + present. No "should I do this?" questions. Paul's "nod", "looking very good", "ok" — three ratifications that drove three builds.

CL-A-003 v7 landed cleanly. Bob's strawman v0 carried the CL-A-003 TODO marker in the Ticker. Paul ratified v7 wording in two words ("i like v7 - go with v7"). v0.1 rendered the locked form in the Ticker. Routing discipline closed the loop in one round trip.

Calibration-what-matters held. The 5.80 MB file size never surfaced as a flag. The cropped cover surfaced as one. The Method's flag-protocol calibration is working: load-bearing visual problem → caught; technical micro → silent.

Voice-preservation operated on the chapter naming. Paul's docx uses "CHAPTER ONE" in caps. Bob initially rendered as-is. Paul's instruction "One instead of chapter one" is the editorial register he wants. Patched at the build level — clean source-of-truth in the docx remains untouched; presentation register in the HTML matches Paul's intent.


Movement Six — Continuous improvement (five homes)


Decisions held

Next move

Session 3 — The Documents door + six drawers. Drawer 1 ("Its My Turn Journal") and Drawer 3 ("Working With Paul Roebuck Calibration Brief") files confirmed in /AddedFiles/. Other drawer contents come from spec § C against artefact folder root.

Holding for Paul's nod to Session 3.


Bob's note: Session 2 closes clean. The book opens; the manuscript reads; the TOC navigates. Three iterations inside an hour. The Method's iterate-show pattern is working at the build layer the same way it worked at the manuscript layer.

Bob · 2026-05-31 14:15 UTC

#state/in-flight #workstream/mtg-artefact #type/journal #bob

SHaDS™ · SHaDSy™ · Additional Intelligence™ · Paul Roebuck IP, 2026.
The Tomb Map →