--- name: ARC apparatus refactor — todo list (2026-05-06) description: Tracks the multi-session refactor flowing from the universal dateline + photo-apparatus + three containment patterns spec consolidation (2026-05-06). Captures what was decided, what's done, what remains, and the location data the steward provided for the content audit. type: project originSessionId: 3bf7ae75-1138-4745-9024-0c40b3755ad3 permalink: claude-memory/project-arc-apparatus-refactor-todo-2026-05-06 --- # ARC apparatus refactor — todo list Spec foundation locked 2026-05-06 across §V (containment patterns), §VII (universal dateline + photo caption), and §V applicability table. Implementation is multi-session work; this list tracks state. ## Spec decisions locked (2026-05-06) - **Universal dateline** — every content type carries a dateline, including glimpses and photo essays - **Format**: `City, Country, Day Month Year` - Country always included (half-located is a lapse) - Local form preserved (Wien, Austria; Sevilla, Spain) - Day included - **Three containment patterns**: - Text-primary (essay, meditation, observation, fragment, chamber, lex, about): vessel applies (3-lane: left margin = register marks; body = body+dateline+sources; right margin = sidenotes) - Photo essay: vessel + .full-bleed image breakout; caption block at end of piece - Glimpse: no vessel, image at full register, caption beneath, dateline at piece end - **Caption (photo apparatus)** for glimpse + photo essay only: - Content: technical EXIF (ƒ-stop · shutter · focal length) + austere subject identification when needed for comprehension - Position: beneath image (glimpse) or end of piece (photo essay) - Italic, subordinate, baseline-aligned (Müller-Brockmann) - Test: helps viewer SEE, never tells them what to think - **Boundary rule**: if image's comprehension needs more than austere caption identification, the work is not a glimpse — reclassify to meditation or essay - **Container class name**: `.bears-apparatus` proposed (role-named, replaces `.has-margins`) Spec commits: `e42ae0c` (consolidation), `137ddd1` (dateline alignment fix) ## Done 2026-05-06 - ✅ §V applicability table extended (universal dateline; new Caption row; new Vessel row) - ✅ §V.b Containment patterns subsection added - ✅ §VII Dateline section revised (universal, format, alignment principle) - ✅ §VII Captions section revised (photo apparatus, two placements, EXIF + identification) - ✅ Dateline alignment fix: removed margin-auto + max-width centering hack from `.dateline`. On grid pages now aligns body-column-left via existing `> *` rule. (commit `137ddd1`) ## Remaining work — ordered by readiness ### Tier 1 — bounded SCSS + template work (~1-2 hours, ready) - [ ] **`.has-margins` → `.bears-apparatus` rename** - Rename selector across `_sidenotes.scss` (3 references) - Update spec implementation notes that reference `.has-margins` - Templates: apply `bears-apparatus` class to article elements based on content class (post.html, about-page.html, lex.html, sequence-index.html). Excluded for class=glimpse and class=photo-essay. - Investigation needed: Pandoc templating doesn't easily support negation; cleanest is a context variable from site.hs (`bears_apparatus = class != "glimpse" && class != "photo-essay"`) - [ ] **Extend §XII grid scope to observation/meditation/fragment** - Currently grid scopes only to `.post-content, article.essay, article.lex, article.about, .has-margins` - Per spec, observation/meditation/fragment should also bear the apparatus - Once `.bears-apparatus` rename lands, this becomes automatic (templates apply the class for all bearing types) - Visual change for these types: body-column-width instead of full-page-content-width — verify acceptable ### Tier 2 — content audit (~30-60 min once tooling ready) - [ ] **Add `location:` frontmatter to all text posts that lack it** Locations the steward has provided (canonical, use exactly): **Essays:** | Title | Location | |---|---| | The Death of a Hero | Seoul, Korea | | The Discovery of Matthieu Taliesin | Barcelona, Spain | | From Mushi-Ken to Morra – The Ritual of Choosing | Barcelona, Spain | | Vespers for the living | Cremona, Italy | **Observations:** - All Paris, France - Exception: 2024-01-11 → Chez Bourny, Champagnat, France **Glimpses:** - Locations extrapolated from titles (per steward's note) **After the Reply essays** — already have locations (Wien, Barcelona, etc.) - [ ] **Reformat existing datelines to new spec form** (City, Country, Day Month Year): - Existing pieces with location-but-no-country (e.g., "Wien" → "Wien, Austria") - Existing pieces with location-but-no-day (verify post.html template handles day-rendering correctly; some pieces may have only month-year in frontmatter) - [ ] **Update post.html template** to render dateline in canonical format (currently renders `$dateline_date$` — confirm the day component) ### Tier 3 — EXIF integration (investigation needed before scoping) - [ ] **Investigate EXIF reading at Hakyll build time** - Possible approaches: (a) `exiftool` preprocess emitting JSON → Hakyll context, (b) Haskell library called from site.hs, (c) manual frontmatter (least automated, most reliable) - Need: f-stop, shutter speed, focal length per image - Decision needed: does this happen for ALL images on the site, or only for glimpse/photo-essay content? - [ ] **Caption template** — once EXIF is available, render caption per spec: - Glimpse: beneath image (template includes after `` block) - Photo essay: collected at end of piece in Image-Apparatus block (parallel to §VII.b Sources) - [ ] **Content audit**: identify all glimpses + photo essays needing caption migration; verify EXIF data is intact in source images ### Tier 4 — verification (after each tier) - [ ] Visually verify dateline alignment across all six content types after each tier lands - [ ] After the Reply sequence — validated form, must remain unchanged visually - [ ] Death of a Hero — first individual-essay Sources instance (already shipped 2026-05-05); dateline must reformat to "Seoul, Korea, 5 March 2016" - [ ] At least one glimpse with caption (use Felsenreitschule as a candidate after EXIF tooling is ready) ## Open spec questions (note in §VII when decided) - [x] **Glimpse dateline alignment** — RESOLVED 2026-05-07. Locked as **centered** per Bringhurst's coherence principle (don't mix symmetric and asymmetric apparatus); follows the symmetric register the glimpse piece already establishes (full-bleed image + centered figcaption). Sourced in §VII Dateline Alignment subsection (AldineXXI-specification.md). First-instance verification on `2015-03-02-5e-arrondissement-paris-france`. - [ ] **ISO in caption EXIF** — currently spec says "judgement call, not default." Lock once first photo essay decides. - [ ] **Photo essay end-of-piece block name** — "Image apparatus" tentative. Lock with first instance. ## Notes for future sessions - Spec changes today were heavy — ~116 insertions in AldineXXI-specification.md (commit `e42ae0c`). The Pass 1 SCSS audit + spec consolidation + dateline fix were three substantial pieces of work. The refactor remaining is bounded but multi-session. - The .bears-apparatus rename is the gateway to making observation/meditation/fragment dateline alignment work. Until that rename lands, those types keep current visual behavior. - The EXIF investigation is the unknown-scope item. Treat it as its own session. - Cross-reference: `feedback-fittingness-as-refactor-test.md` (the elegance test for code) and `feedback-deploy-is-not-commit.md` (session-end discipline). ## Drift patterns to watch - *Structural-counter-as-health-signal*: a green build doesn't mean spec compliance. Verify visually on representative pages of each content type. - *Deploy ≠ commit*: every refactor pass ends with `git status` check and explicit commit before declaring done. - *Cosmetic refactor*: don't rename or restructure unless redundancy or unclarity is being removed. The fittingness test applies.