DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path change-requests/cr-2026-141-upload-card-reload-v0_1.html

CR-2026-141 — Upload Result Card Survives Reload

Version. 0.1  ·  Date. 2026-07-03
Status. Drafted, not staged for build. Number 141 confirmed free at staging (highest prior: CR-2026-140). Base: engine main @ 0002335, OL main @ 342b9bc. No build yet.
Repos. loomworks-engine, loomworks.
Diagnosed via. Code inspection following CR-2026-140's live discrepancy report (this session).

What this fixes

CR-2026-140 added a file-type badge and View action to the chat upload-confirmation bubble (UploadResultCard). This only renders in the same browser session, immediately after upload — it never survives a page reload. UploadResultCard renders from turn.uploadResults, populated only by the live optimistic-send path. toDisplayTurns(), which rebuilds turns from reloaded history, has no handling for uploadResults at all — the whole card never mounts on reload, leaving only plain text.

Fix

Extend structured_data's union (currently HeldItemsStructuredData and MatchedFilesStructuredData, CR-2026-138) with a third variant, UploadResultsStructuredData. Populate it at the upload endpoint's turn-persistence call site — currently entirely separate from converse.py's step 7, where CR-2026-138's mechanism lives. toDisplayTurns() gains a case for the new variant, rebuilding uploadResults from reloaded history the same way it already rebuilds heldItems/matchedFiles.

Seed check

No conflict. Reinforces the seed's Memory commitment — accumulates with provenance, reliably recallable — the same reasoning that grounded CR-2026-138.

Verification requirement

Must be tested with a real page reload, not just same-session state — the exact gap CR-2026-140's own verification missed. Verification must use a synthetic engagement created and destroyed for this purpose only, never a real engagement (E0060, E0007, E0030, or the shared E0006 test fixture).

Out of scope

No change to HeldCard/SettledCard/MatchedFilesInline (already correct, CR-2026-138/139). No change to the badge/View logic itself, which is correct — only the data path that should feed it after reload.

DUNIN7 — Done In Seven LLC — Miami, Florida · Loomworks — CR-2026-141 — Upload Result Card Survives Reload — v0.1 — 2026-07-03