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

CR-2026-211 — Checkpoint A — v0.1

Date. 2026-08-14 · CR. change-requests/cr-2026-211-loomworks-converse-error-truth-v0_1. State. Built and tested. HALTED before tag and push, per the Checkpoint A instruction. Surface main local commit 8871997 (NOT pushed; no tag), built at 00ed2f2 — exactly the CR's stated baseline, tree clean. Engine untouched (no prerequisite, as scoped). CR-2026-210 holds behind this per the ranking.

What is built

Step 1's probe earned its keep — a second observed-not-assumed correction in this item's own arc

The CR anticipated verifying the proxy's engine-down status rather than assuming it, and the probe (dev server pointed at a dead upstream) found the scoping's row-2 assumption wrong: the Next rewrite answers a dead engine with 500 and NO content-type (empty body) — not 502. An engine unhandled 500 arrives as text/plain with the constant body. The two are therefore distinguishable — dead upstream = 500 with detail === undefined; engine bug = a response with a body — and the helper branches on exactly that. The 502/503/504 arm is kept (true if any proxy layer ever emits them). This is the B-96 arc's second correction-by-observation (after the 503-no_credential one), recorded here so the pattern is visible: both of this item's stated mechanisms were wrong until observed.

Tests — each observed failing first

12 new tests across three files, all observed failing before the helper existed (collection-level for the helper units; assertion-level available for the sites). Helper units: all three true branches AND the false branches, including the future-engine-error string detail rendering. Site tests: the hook (real helper via importActual, mocked sendConverse) and ChatView (driven through the real api() with fetch spies carrying the observed wire shapes — the engine's text/plain 500 and a thrown fetch). The guard both ways: the unreachability sentence does NOT render for reached-server failures, and DOES render for a thrown fetch — the true branch is pinned, which is what makes this a confinement rather than a deletion. Suite 792/792; tsc clean.

Step 4 — the live true-branch eye-test, as ordered: what I saw

Mechanism: a kill-able local relay (127.0.0.1:8998 → engine :8000) with a dev server pointed through it — so the engine could "go down" under a live page without touching production. Sequence, observed:

  1. E0027 loaded with the engine reachable (composer present, page healthy).
  2. The relay killed — the engine gone behind the rewrite, page still live.
  3. A turn sent: "are you there?" — the Operator bubble rendered, and beneath it: "Couldn't reach the Companion. Try again in a moment." — the sentence, in the one state where it is earned. The honest-ignorance generic did NOT render (asserted in the same pass). Screenshot kept and mirrored: cr-2026-211-eyetest-true-branch.png. (Incidentally observed: the Memory room's own fetch failed honestly alongside — "Couldn't load this room." — and the page rendered newest-first with the composer at top, CR-2026-208's default doing its job on the no-preference account.)
  4. Cleanup: relay and dev server stopped; zero turns persisted (the send never reached the engine — nothing to clean).

For the completion record, per the Operator's instructions at approval

  1. The correction stands as part of the finding, not beside it: the 503 no_credential example was wrong; the route composes a 200 around key absence; the class survived on the corrected members (the 500-bug and the 422-surface-bug) — and the ranking was re-justified on the corrected facts rather than carried on the original claim. That is the difference between a correction and a patch.
  2. The sentence's real shape is its own category: sometimes true, sometimes false, indistinguishably. The passkey sentence had one true case it never showed; this one had true cases shown alongside false ones — harder to notice precisely because it isn't always wrong. Pinning the true branch in tests is what makes the fix a confinement rather than a deletion.

seed-mutability

Kind C as expected: surface error-rendering only; nothing reads or writes the seed. Null finding recorded as an entry.

What Step 5 awaits

Tag; push 8871997; watch the run; redeploy; post-deploy smoke on the conversation surface.


DUNIN7 — Done In Seven LLC — Miami, Florida — CR-2026-211 Checkpoint A — v0.1 — 2026-08-14 The sentence keeps its true branches and loses its false ones — observed live, in the one state where it is earned.