🔧 Auto-commit from sysupdate on 2026-06-02 09:21
This commit is contained in:
@@ -3742,3 +3742,64 @@ The ELEVATED Stage F item is done and live. Commit **`e1d0f12`** on `feat/compas
|
||||
**Returns:** R1 — asserted a font license from memory, not from the file; corrected by reading COPYING (the steward's "how do people use these as emoji?" re-grounded the whole question — symbol/design free, only font software licensed). R2 — honest restraint held (drawn hand named as the weak mark, not oversold). **Discipline:** render-and-look (Chrome-headless → Read PNG, on my own SVGs and the candidates) + measure-the-real-font (Apple Symbols proportions, Garamond coverage) instead of guessing.
|
||||
|
||||
**Follow-on (minor, deferred):** `aria-label`-per-link a11y on the compass (links now rest on `title`; SVG is `aria-hidden`) — on the spec accessibility audit list, not blocking. Reusable method recorded: fontTools extraction from EB Garamond for any typographic sigil; fontforge for Type1 (URW base-35).
|
||||
|
||||
---
|
||||
|
||||
## 2026-05-28 (evening) → 2026-05-29 — vignette spec landed (jurist pass) + code-represents-spec audit + Hakyll north-star
|
||||
|
||||
*(Tracker was current through 2026-05-26; this catches up the 2026-05-28 evening + 2026-05-29 arc. Per-session detail in the session memory files.)*
|
||||
|
||||
**2026-05-28 (evening)** — content-types.yml generator landed (`a9dc188`); vignette spec revision brief drafted (`438ee03`, Shape C: Claude Code as Phase-α engine, /vignette skill as codified discipline, interface contract as α→ω bridge). Detail: `session-2026-05-28-evening-arc-stage-f-vignette-scoping.md`.
|
||||
|
||||
**2026-05-29** — Vignette spec open questions settled (`drafts/vignette-decisions-settled-2026-05-29.md`, `d2ca4b0`): dark mode **mode-aware / genome-mode-independent** · reduced-motion **breath-stops** · cycle-end **hold-at-endpoint** · keep **Phase α/ω**. **Jurist revision landed canonical** at `vignette-specification.md` (`c52fb69`) — sharpened the dwell-test (first prototype = mandatory Claude.app pass, against *unfelt* error), the transition trigger (+ L1-stability precondition), the cycle-end clamp (enforces the luminance palette bound), and surfaced the Phase-1 **orientation-preserving luminance** constraint (a dark-mode bug invisible to visual review — must be tested against semantic orientation, not "does it look right").
|
||||
|
||||
Steward reframed sequencing: **audits before the vignette build** (completion + Alexandrian idiom + do-once; Phase 1 is audit-insulated but the deeper reasons hold). **code-represents-spec audit** run (spine = content-typology §5 Code Binding Contract; `_audits/code-represents-spec-audit-2026-05-29.md`, `b15684a`) — §5 largely honored; **two gaps**: clause-2 gloss listing glyph drift FIXED (`164d8c3` ✎→¶; root cause "declared twice" → Hakyll audit), clause-3 silent wildcard fallback → **ships-with-Stage-G** (the spec's own deferred enforcement). Clauses 1/4/5/6/7 pass; 8/9 forward-looking (eligibility machine-verified vs §2). **No spec-gaps → Stage G promotion unblocked.** `content/chamber/**` recorded as intentional v1-legacy (the deferred presentable-cluster to-do), out of clause-1 scope.
|
||||
|
||||
**Hakyll north-star** written (`drafts/the-hakyll-north-star-2026-05-29.md`, `d714a11`) — sibling to scss-cascade-north-star, child of the-tree. The build **reads** content-types.yml as single source rather than re-encoding it: add a type = add a YAML row. Centerpiece = collapse the ~12 near-identical listing `create` blocks into one generator over the table; single-source class→glyph; case-statements → table lookups (unknown = build error). This is where code-represents-spec **clauses 2 & 3 get their durable, structural cure**. CLAUDE.md Hakyll version corrected `4.16.2.1` → `4.16.6.0` (`7bc2a8a`; resolver-pinned note added).
|
||||
|
||||
**State:** ARC `main` @ `7bc2a8a`, **8 ahead of origin** (local-only by directive). **Stage F remaining:** the two Alexandrian audits (Hakyll-simplicity + SCSS-cascade, both north-stars ready) → then the plan to complete the composition work + write/test the vignette system (Phase 1 insulated, post-audits) → **Stage G** (jurist → content-typology OPERATIVE, fed by the code-represents-spec gap-map) closes. **Pulling thread: run the two audits tomorrow.**
|
||||
|
||||
---
|
||||
|
||||
## 2026-05-30 — Both Stage-F audits run; three reconciles; the Stage-F-closing plan (vignette → F+1)
|
||||
|
||||
**Both Alexandrian audits written** — gap-maps (verified/inferred per finding; cleanup/table-truthful-first; execution *staged*, not paper-committed). Commit `d230ab1`.
|
||||
- **SCSS-cascade** (`_audits/scss-cascade-audit-2026-05-30.md`): diagnosis = partials cut by *page-area*, the dream wants *scale* → `_utilities` dissolves, `_post`/`_base` split, `_layout`/`_navigation` reclaim, `_syntax` rises, `_dark` mostly-vestigial, `_chamber` quarantines (block 2). **Steward decoupled lean vs clear:** cleanup makes it *lean*; re-partition makes it *clear* (line-neutral, source-order risk). Execution = cleanup-first (committed) → **re-read gate** → re-partition (empirical, conditional).
|
||||
- **Hakyll-simplicity** (`_audits/hakyll-simplicity-audit-2026-05-30.md`): **FEASIBILITY GATE CONFIRMED** against unpacked 4.16.6.0 source (`create`/`match :: … -> Rules () -> Rules ()`; `Rules` is a monad; `preprocess :: IO a -> Rules a`; codebase already parses YAML). 11 near-identical listing blocks → one generator over content-types.yml. Found a dead disabled-glyph system still in `postCtx`, and table-vs-build drift (§4D).
|
||||
|
||||
**Three reconciles (drift the audits surfaced):**
|
||||
- **Compass surfacing** (`ab89d65`): §2 marked dream/heteronym/hommage/reverie `governed-but-unsurfaced` while the build (live `create` blocks) + corpus (1 instance each) had them surfaced. Steward confirmed + ruled **reverie = surfaced**. Fixed §2 → `surfaced` (tombeau stays — no instance); regenerated YAML; `content-types-check` green; diff scoped to the 4 fields. §VI/cross-spec count (now 13 + Annals) → Stage G.
|
||||
- **`titleClasses` → user-visible `[FIX]`** (`dea751a`): `showTitle` (post.html `<h1>`) gated on `{essay,meditation,chamber}` while 10 types are `title_display: shown` → gloss/readings/dream/heteronym/hommage/reverie rendered **title-less, against spec**. Expanded to the shown-set (stopgap; durable = table-driven lookup in the generator). Verified via `rebuild-local` (six regained `<h1 post-title>`; not-shown types unchanged). Third clause-2-family instance.
|
||||
- **ADR-006 stage tracker** (`990c67d`) — see the rule below.
|
||||
|
||||
**⚠ THE STAGE-E FIASCO → STANDING ANTI-DRIFT RULE.** Steward caught me repeatedly invoking "Stage E discipline." Verified: **Stage E was closed + MERGED** (`c480b09` "peer-spec propagation" → `2a2c195` "hardening" → `558f9f3` "post-Stage-E live state") — but **ADR-006's stage tracker was frozen at authoring-time** (only Stage A ✓ DONE; closing line still "Stage B begins next session"). A *record* gap, not a work gap; my hedge had anchored on the stale 2026-05-19 audit-delta snapshot. Reconciled by adding a dated stage-status block to **ADR-006 Part 5**. **RULE (now standing): ADR-006 Part 5 is the *canonical* stage tracker; this file mirrors it; when a stage closes, update BOTH in the same move.** Also corrected the mislabel — the "regenerate spec+YAML together" rule is the *matrix-as-canonical / YAML-as-shadow invariant* (ADR Part 4, permanent), **not** Stage E.
|
||||
|
||||
**Stage-F-closing plan** (`drafts/stage-f-closing-plan-2026-05-30.md`). Two steward decisions: **vignette Phase 1 → F+1** (not part of closing F); **§II.d marginalia render = SCSS not site.hs** (rides `:has()`, already in use → folds into the SCSS track). Collapses to **two tracks + quick wins**: Phase 0 (titleClasses [FIX] ✓; SCSS RETIRE) · Phase 1 SCSS cascade (incl. the `:has()` marginalia-composition gate) · Phase 2 Hakyll build (table-driven lookups; retire dead glyph; the generator) → **F closes** → Stage G (jurist) → F+1 (vignette). **Marginalia scoped:** current grid is unconditional (empty asymmetric = the "unearned gloss-form"); fix = gate on `:has(marginalia)`, symmetric by default; the §II.d double-center concern is spec-deferred (out of scope).
|
||||
|
||||
**CANONICAL STAGE STATUS (mirror of ADR-006 Part 5, as of 2026-05-31):** **A–E DONE + merged · F in final items** — Phase-1 SCSS cleanup DONE (2026-05-31); remaining = Phase-2 Hakyll generator **· M (mode modernization) pulled forward from F+1** (between F and the full re-partition) **· full re-partition** now follows M (theme-free ground) **· G pending** (jurist promotion; carries the §VI count). Macro-sequence: F Phase-2 → M → re-partition → G → F+1 vignette. *Keep this line in step with ADR-006 Part 5 — the anti-drift rule above.*
|
||||
|
||||
**State (midday):** ARC `main` local-only (was 8 ahead; +`d230ab1` audits · `ab89d65` surfacing · `990c67d` ADR reconcile · `dea751a` titleClasses fix · `90802a6` plan).
|
||||
|
||||
**Afternoon (same session):** Phase 0 **RETIRE** (`5f4c27e` — ~190 dead SCSS lines: voice colours/$enable/metadata/15 mixins; **byte-identical CSS**, zero render) → Phase 1 **DEDUPE** (`dfff604` blockquote/enfilade/small-caps, per-selector-diff verified) + **small-caps drift fix** (`192423e` — one small-caps, footer font-variant→SC face) + **token rename** (`9156522` — `$sidenote-size`→`$marginalia-register-size` to `_variables`). Then **MODE-MECHANISM MODERNIZATION DECIDED** (`4e4f700`; `drafts/mode-mechanism-modernization-2026-05-30.md`) — the thing the steward had circled: **drop the toggle, adopt the system** via `color-scheme`+`light-dark()` (pure CSS, zero JS, no FOUC), **+P3 wide-gamut +`prefers-contrast`**; principle = *honor the reader's environment, never ask them to re-declare it* (the font-size-percentage posture generalized); **founds the vignette (F+1)**; **SHELVES the dark→var MIGRATE** (superseded — light-dark deletes `_dark`+scattered blocks wholesale). **10 commits; ARC `main` 19 ahead, local-only, clean; nothing deployed.** **Revised pulling thread: Phase 1 FIX** (`:has()` marginalia-render gate + §I.h blockquote fix + stale compass `@extend`s + compass a11y) → re-read gate → Stage F closes (all theme-independent; mode rework is F+1).
|
||||
|
||||
## 2026-05-31 — Phase-1 FIX items landed + mode modernization PULLED FORWARD (Stage M)
|
||||
|
||||
**Session shape:** woke into the confirmed Phase-1-FIX pulling thread; closed all of it; steward then decided to pull the mode modernization forward. **4 commits, ARC `main` ahead 23, local-only, clean, nothing deployed.**
|
||||
|
||||
**Committed (all verified; gate+glimpse+compass-a11y confirmed on the steward's physical phone, a11y via VoiceOver):**
|
||||
- `b228f47` — removed stray `_layout.scss.bak` (240 dead lines, 11 months old in live tree).
|
||||
- `913aaea` — **§II.d `:has()` marginalia-render gate** (the substantial Phase-1 FIX). Grid renders only when a piece carries marginalia; no-marginalia pieces compose **symmetric, body centred at 38rem** (spec L260 read verbatim — NOT 720px; `.page-content`'s 720 was the wrong fallback). Symmetric base + `:has()`-gated grid (wins by specificity) + glimpse guard (`max-width:none`). Verified desktop + phone.
|
||||
- `f390b5d` — **glimpse phone full-bleed fix** (pre-existing LIVE bug; steward confirmed on phone). Root cause = TWO clips on the `100vw`+negative-margin burst at ≤767px: the parent `<figure>` (`overflow-x:auto` → clip+scroll) AND `.wrapper/.page-content/main` (`overflow-x:hidden` → clip). **Both must open together** (figure-only=padded; wrapper-only=padded+scroll), scoped `body.glimpse-page` + `.glimpse figure`. Took 3 attempts — two wrong diagnoses first (reasoned from a comment; then asserted the wrapper was the sole clip) before reading the full ancestor chain. Lesson reinforced thrice this session: **read rendered output / full DOM chain before asserting a CSS causal mechanism.**
|
||||
- `02393bc` — **compass §3F + §3G** (one commit; two concerns entangled in `_compass.scss`). §3F: removed the dead `.path-*` `@extend .current` block (all 7 inert — Jekyll-era mechanism; body class is now `<class>-page`; `/archive/` `/chamber/` hrefs themselves stale; verified via git pickaxe + built HTML). §3G: compass a11y — visually-hidden real text node (`.compass-label` via the preserved `@mixin visually-hidden`) per point. **Chose visually-hidden text over `aria-label`** for durability: translatable (ARC multilingual), survives CSS-off, native-semantic.
|
||||
|
||||
**§I.h blockquote:** deferred to ride Stage M (steward 2026-05-31, Option B) — its clean form is the consolidated single source after `_dark.scss` is gone; doing it now = a `_dark` edit deleted weeks later (anti-do-once).
|
||||
|
||||
**⚠ THE BIG DECISION — MODE MODERNIZATION PULLED FORWARD (Stage M).** Steward chose to do the mode work **now**, not at the start of F+1. This **resolves a contradiction the closing plan carried**: §5b said modernization should precede the re-partition (so it doesn't arrange soon-deleted SCSS), but §6 listed the full re-partition as a *Stage-F* closer while modernization sat in *F+1* — the re-partition couldn't both close F and follow an F+1 step. Pulling modernization forward (Stage M, between F and the re-partition) fixes it: theme layer deleted first, re-partition + F+1 vignette built on theme-free ground **once** (do-once). **Full re-partition is no longer a Stage-F deliverable** — it follows M. **Plan amended this session** across all three records (anti-drift rule): `stage-f-closing-plan-2026-05-30.md` (new §5c + §6 revised), ADR-006 Part 5 F-line, this tracker. Scope surveyed (bounded): ~12 tokens → `light-dark()`; `_dark.scss` (146 lines) deleted; exactly 7 scattered `[data-theme="dark"]` blocks folded in; toggle+JS removed. Staged M(a) structural core → M(b) P3 (steward has M1 Air + iPhone, both P3) → M(c) `prefers-contrast`.
|
||||
|
||||
**Process note (contamination/flakiness):** the tool-output channel flaked intermittently this session; early on I **confabulated unread spec + SCSS content over empty tool returns twice** (caught + discarded + re-read from verified output). Plus the glimpse double-mis-diagnosis. Through-line discipline: read the actual rendered/built artifact; an empty tool return is not a read; verify a CSS causal story against the DOM before asserting it.
|
||||
|
||||
**Pulling thread → Stage M(a) fresh next session** (the structural core: `light-dark()` migration + delete `_dark`/7 blocks/toggle; both-mode verify by OS-appearance toggle on real devices). Then re-partition, then G, then F+1 vignette.
|
||||
|
||||
**Literal question for next session:** start M(a) by migrating the `main.scss` token block to `light-dark()` first (then delete `_dark` + the 7 scattered blocks + toggle, verify both modes), or inventory all 7 scattered blocks' non-flip dark choices *first* so none is lost in the fold? And: M(a) as one commit or split (token-migration / delete-dark-layer / remove-toggle-JS)?
|
||||
|
||||
**Standing flag:** the glimpse fix corrects a **live reader-facing bug** still on the deployed site (every glimpse, every phone) — committed but not deployed. Whenever the steward next deploys, that one has real urgency. Deploy remains the steward's deliberate act; ARC `main` is 23 ahead, local-only.
|
||||
|
||||
Reference in New Issue
Block a user