DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path phases/companion-surface-phase1/loomworks-companion-surface-phase1-completion-record-v0_1.html

DUNIN7 · Loomworks · Completion Record

Companion surface Phase 1

Record version. v0.1
Date. 2026-06-26
Change Request. CR-2026-125 — Companion surface Phase 1 — v0.1
Status. Executed on branch cr-2026-125-companion-surface-phase1 (off bafdb07) through Step 6; Vitest green at every step; next build compiles clean; both guards green. NOT pushed — halt before push, awaiting Operator authorization.
Executing agent. Claude Code on DUNIN7-M4.
Operator. Marvin Percival.
Grounded by. CR-2026-125 v0.1 + Step-0 findings; the merged Engine focus capability (loomworks-engine cfeebd0 — CR-2026-123 + CR-2026-124).

Plain-language summary

The Engine already knew "where you are" — say "open Goosey" and your unqualified commands land in Goosey — but the screen showed none of it. This wires the two together: a top-bar chip reads here: 7 · Goosey · E0007 (your number · name · E-label, never the UUID); clicking a project opens it and sets focus as one act; saying "open X" / "close" moves focus and the chip follows. Built template-clean — every colour a design token, every brand word in strings.ts — with a guard test that fails the build if a guarded file introduces a raw colour or hardcoded brand word. The shared top bar (TopBar) was tokenized too, because the chip lives in it and a template's top bar must be swappable.

What shipped (per-step commits; Vitest green at each)

Branch off main bafdb07. Not pushed. Frontend-only; no Engine change.

CommitStepChange
9b795ee0Archive CR as branch base (baseline bafdb07, Vitest 470/62).
2b52d2d1me-current-engagement.ts adapter — GET/PUT focus; typed SetFocusResult (404→not_found, 409→ambiguous, 401→unauthorized); vocab-wall allowlisted.
fdeb5a02CurrentEngagementProvider — GET-on-mount; setFocus/clearFocus refetch on ok (GET-on-change); mounted in layout inside AuthProvider.
346ba753Tokenize TopBar — 4 alpha-modifier conversions + 2 new tokens (--color-vellum-soft, --color-gold) wired into @theme; both surfaces verified; Tailwind v4 compiles every class.
263ee4f4FocusChip (here: N·Name·E####, hidden off-focus, never UUID) + unified open (focus-set beside router.push, non-blocking) + FOCUS strings.
a7d659a5Spoken open/close wired (useRefreshFocusOnIntent on the converse surfaces) + template-cleanliness guard.

Vitest: 470 → 479 → 484 → 489 → 494 → 498 passed / 69 files, 0 failed. next build compiles clean (TypeScript + Tailwind; all 18 routes prerender). No schema/Engine change.

Settlements + as-built deltas (recorded, not smoothed)

Step 6 walk → coverage

Walk stepCovered by
1 — click → navigates AND chip shows here: N·Name·E####UnifiedOpen.test (push + focus PUT); FocusChip.test (labels)
2 — "open Goosey" → chip updatesRefreshFocusOnIntent.test (open intent refetches focus)
3 — unqualified command lands in focusEngine-side (CR-2026-123/124, merged + DB-walked); frontend reflects via provider
4 — "open <duplicate>" → candidates; focus unchangedme-current-engagement.test (409→ambiguous); CurrentEngagementProvider.test (ambiguous leaves focus)
5 — "open <nonexistent>" → not-found; focus unchangedme-current-engagement.test (404→not_found)
6 — "close" → chip clears; next unqualified → asksFocusChip.test (close→clear); CurrentEngagementProvider.test; Engine asks (CR-2026-124)
7 — guards green; TopBar unchanged both surfacestemplate-clean + vocabulary-wall green; next build compiles; TopBar 0 hex/rgba; both surface suites green

TopBar render-identical: the alpha conversions are mathematically exact and the two new tokens resolve to the exact original hex; Tailwind v4.3.1 compiles every class (verified by direct compile, not trusted). Manual pixel-diff on a running app is the one check not automatable in jsdom; the math + compile make it identical by construction.

Open after this record

Halt before push — Operator authorization required

The branch (6 commits, 9b795ee..a7d659a) is not pushed. On review and explicit authorization, merge to main and push.

State at completion