DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path session-handoffs/cr-2026-212-checkpoint-a-v0_1.md

CR-2026-212 (v0.2) — Checkpoint A — v0.1

Date. 2026-08-14 · CR. change-requests/cr-2026-212-loomworks-findings-visible-and-answerable-v0_2 (the candidate-context-path version; v0.1 halted at Step 1, superseded by ruling). State. Built and tested, BOTH repos. HALTED before tag and push. Engine main local commit 3c925ba; surface main local commit 1073267 (neither pushed; no tags). Built at the exact v0.2 baselines (engine f011c80, surface a1deb86).

What is built

Face 1 (engine) — the candidate-context path. A candidate now HAS a Companion context: the seed resolved via candidate_seed_id (not the Engagement memory object, which doesn't exist until instantiate), the open-findings block (each finding's location_in_seed + the suggestion SENTENCE verbatim), a plain drafted-not-committed state line, and the capability-honest posture (state findings when asked what blocks commit; they are answered from the project's page; do not offer — face 2 is unbuilt). Door 3's pre-seed window keeps the historical no-context behavior (SeedNotFoundError still raised; converse's catch stays meaningful). Candidates gaining full seed context is the RULED consequence (v0.2 §0.7), not a side effect.

Wrinkle B — the ruled precedent held; the halt clause was not needed. The B-77 shape widened cleanly to both admin-log lineages: the context stamps engagement_state + a candidate_marker (seed max version, finding-event count, finding max object_version); candidate cache hits re-check the marker against the admin log; active entries pay nothing; commit invalidates naturally via the working-version bump.

Face 3 (surface) — the panel. Each open finding renders on the candidate page with its suggestion sentence, behind the banner's shared fence. Answerable free-text fields get a textarea + "Answer and re-review" → amend THEN induct (the flow fact, in code comments and pinned as an ordering test) → the panel re-renders what the cycle actually returned — the cycle note says so in words: "what remains above is what the review left open." Compound locations (observed live: "initial_contributors and initial_agents") render without an inline answer, honestly. Adapters (fetchSeedFindings, inductSeed) join amendCandidateSeed in door3.ts — the same seed-ceremony spine, one more caller.

Tests and gates

Engine: 7 new tests, 6 observed failing pre-change (the seventh is the preserved seedless-raise pin) — the suggestion sentence verbatim in context; the posture line; no block without findings; both marker lineages invalidate (a finding raise AND a seed amendment each reach a cached context); unchanged candidates keep the object-identity cache hit; active rows never enter the candidate branch. Full suite 3729 passed / 68 skipped; ruff clean; mypy at the 537 baseline exactly. Surface: 5 new panel tests (the sentence verbatim; the amend→induct ORDER; the still-open outcome rendered, no assumed close; the fence; the compound-location honesty); full suite 808/808; tsc clean.

Step 5 eye-tests — observed live

On a disposable draft-route candidate (E0132 — turn-less at creation; [B-93] routed around deliberately, again):

  1. The panel, live: 3 findings rendered with sentences; the success_conditions answer submitted; the wire showed POST /seed 200 then POST /seed/induct 200 — the flow fact in flight; cycle 2 returned; the panel showed 2 remaining and the honest cycle note. Screenshots kept.
  2. The Companion, sighted: asked "what is standing between this draft and making it official?" on E0132 — it described BOTH remaining findings accurately, pointed at the project page ("both need to be answered there"), and did not offer to close them. The posture holds in model prose. The blindness is over.
  3. E0128, render-only (the named criterion's pre-check): the panel renders its one finding — the full suggestion sentence, out from behind the route for the first time since Aug 12 — with the answer field beneath it. Screenshot mirrored: cr-2026-212-e0128-panel.png. E0128 untouched otherwise: its answer is the Operator's act.
  4. Cleanup: E0132's two converse turns deleted, then discard — which surfaced a SECOND discard blocker of [B-93]'s class, distinct from the first: host_account_current_engagement_id_fkey — the eye-test's page-landing had set the focus to E0132, and the discard endpoint cannot delete a row the focus points at. The suppression property's prediction ("the first fix expects to find more of its kind") arriving before the fix. Focus cleared manually; discard 204; zero residue. For the gate: fold into [B-93] as a second named FK, or file alongside — the Operator's call.

Also observed, not chased

E0128's conversation pane showed "Couldn't load earlier conversation. Try sending a new message." on the dev surface (history fetch failed for the Operator persona's minted session; the focus chip showed 19 turns). An honest error line, possibly dev-transient; recorded here rather than investigated mid-CR.

seed-mutability

Kind A as ruled (v0.2 §4): face 1 reads seed + findings into a prompt that stops at the boundary; face 3 writes only through the existing amendment ceremony with existing creator attribution. Null new-path finding recorded.

What Step 6 awaits

Tags both repos; push; watch both runs (engine runners: 35–45 min twice-precedented); redeploy engine + surface; the Operator's walk on E0128 — the sentence on their screen, then, if they choose, the answer in the panel and the finding's close, then the tap that was never the obstacle.


DUNIN7 — Done In Seven LLC — Miami, Florida — CR-2026-212 Checkpoint A — v0.1 — 2026-08-14 The candidate got a context; the context got the gate; the gate got a door. The Companion pointed at it, unprompted, on the first ask.