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]
Author: Bob.
Session: Session 2 — The Book gate + manuscript embedding.
Filing: 2026-05-31 ~14:15 UTC.
Session 2 ran in three iterative passes inside a single working hour:
contain + dark backdrop. "CHAPTER " prefix stripped programmatically. TOC restructured to stacked.Paul: "ok" — Session 2 closed clean.
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:
The_Study_v0.1_book-gate_2026-05-31_1348.html (5.80 MB) — first build.The_Study_v0.2_book-gate_2026-05-31_1353.html (5.80 MB) — chapter title in TOC.The_Study_v0.3_book-gate_2026-05-31_1410.html (5.80 MB) — cover fix + "One" + TOC stack.v0.3 is the live build. v0.1 and v0.2 stay in folder per addendum-trail discipline (supersedes-not-overwrites).
🟠 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.
mindthegap. Paul's call to keep or change before publish; rebuild is 30 seconds with any new word. Held for Paul.h1.ms-title at top; gets a TOC entry. If Paul wants a different opening (e.g. front matter, dedication, copyright) it'll need different docx structure or build-time logic.<p> elements. Reads fine but isn't visually distinguished. Worth Paul's eye on first walkthrough.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.
feedback_image_sizing_modes.mtg_manuscript_chapter_convention.mindthegap for now. Paul's call before publish.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