Version. 0.1 · Date. 2026-08-12 · Author. Claude Code (drafting, from the E0128 walk Finding 3) / Marvin Percival (approving).
Target. /Users/dunin7/loomworks-engine (surface renders whatever title carries — Step 1 verifies no surface change is needed). Baseline. Engine cd91176. CC confirms at Step 0.
Companion to. inspection-briefs/loomworks-e0128-walk-findings-v0_1 Finding 3 (record da86274); the batch filing's item 2.
Charter. Autonomous regime. Status. DRAFT — awaiting the gate. Do not execute.
The two-faced item, as one fix. Derivation alone leaves candidates untitled; titling candidates alone inherits the truncation. A fix covers both or it isn't the fix:
_create_engagement insert/promote — E0128/E0129 are NULL-titled by construction).what_the_work_is — derive_title_from_seed's truncation).
A. Face 1 — candidates are named when their seed lands. Wherever a candidate acquires a seed (the brief-path draft; door 3's seed/extract; the Phase 40 draft path — Step 1 enumerates the sites against code, the fifth-wrong-premise check), the same derivation writes the candidate's title (COALESCE-guarded so an operator-supplied name always wins, matching the promote branch's discipline). A candidate is never NULL-titled once it has a seed to be named from. Pre-seed candidates (door 3's seedless draft-candidate row, before upload) remain untitled for that window only — named at extract, the first moment a name is derivable; Step 1 verifies the window's surfaces say "Untitled" gracefully rather than blank.
B. Face 2 — derivation produces a label, not a description. derive_title_from_seed currently ships the leading what_the_work_is text with an ellipsis. It becomes a deterministic clause extraction: the operator-supplied name when present (unchanged, first); else the first sentence of what_the_work_is clipped at a clause boundary (comma/dash/semicolon) within a word-boundary budget (~60 chars, no mid-word cuts, ellipsis only when a clause was actually cut). No LLM — a deterministic function stays testable and free. Flagged for the Operator at the gate, not decided here: if model-derived names are wanted (a real "title" rather than a better clip), that is an LLM-seam design with cost and drift questions — a different CR; this one makes the deterministic derivation honest about being a label.
C. Backfill, scoped narrowly and named: existing NULL-titled candidates (E0128, E0129, any others found at Step 1) get the Face-1 derivation applied once, by migration or script — candidates only, never retitling committed engagements (their titles, however imperfect, are in use; E0089's improvement applies only if it is re-derived, which this CR does not do — face 2 governs new derivations).
title — face 1 populates them for candidates with no surface change (Step 1 verifies).
derive_title_from_seed: clause-boundary cases (sentence, comma-clause, word-boundary budget, no mid-word cut, ellipsis-only-when-cut, operator-name-wins). Face 1: each enumerated seed-landing site writes the title; the COALESCE guard; the pre-seed window. Backfill: NULL-titled candidates named, committed rows untouched. Existing title/creation suites re-run (B-68 item B's tests included).
Kind A expected, and named: title derivation READS the seed (what_the_work_is) at draft/extract time and stops at the engagement row — a computed signal that stops at a boundary. If the seed later moves (B-69's standing question), the title does not follow it; that is today's promote-time behavior too, now merely earlier. Recorded per the verbatim heading discipline; checked at Step 1.
| Step | What | Mode |
|---|---|---|
| 0 | Pre-flight — baseline, clean tree. | Auto |
| 1 | Enumerate the seed-landing sites against code; verify surface reads; tests written, observed failing. | Auto |
| 2 | Derivation rewrite; site wiring; backfill. | Auto |
| 3 | Full suite; ruff; mypy (verdicts in full); migration/script up-down or idempotence check. | Auto |
| 4 | Eye-test: a fresh conversational candidate carries a clause-label title through candidacy; E0128/E0129 named post-backfill; E0089 unchanged. | Auto |
| A | Checkpoint. | Checkpoint |
| 5 | Tag cr-2026-209-title-both-faces; push; watch the run. | Auto |
Execute CR-2026-209 v0.1 at change-requests/cr-2026-209-loomworks-
title-both-faces-v0_1.md in loomworks-record. Engine repo. Confirm CR
number and baseline first.
§0: both faces in one fix — candidates named when their seed lands;
derivation produces a clause label, not the description. Step 1's
site enumeration is the fifth-wrong-premise check; run it before the
wiring. Backfill candidates only — never retitle committed
engagements.
DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-209 — titles, both faces — v0.1 — 2026-08-12 Named when nameable; a label, not a description.