DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path session-handoffs/loomworks-session-handoff-2026-05-29-composer-upload-port-v0_2.md

Loomworks — Session Handoff 2026-05-29 — Composer Upload Port v0.2

Version. 0.2 Date. 2026-05-29 Status. Working draft. Closes the composer-upload-port work (item 3) and the 2026-05-28/29 arc. v0.2 corrects an omission in v0.1's tracked-item list and points at the research arc that followed the arc's close.


Plain-language summary

This document closes the composer-upload-port work (item 3) and records the five-item-arc final state. v0.2 changes from v0.1: it restores the conftest finding (§15.2's open structural item) to the tracked follow-up list — v0.1's five-item framing dropped it — and adds a pointer to the source-identification / FORAY research arc that began after this arc closed. No build state changed between v0.1 and v0.2; this is a record-accuracy correction.

The headline result is unchanged: item 3 — file upload through the in-engagement composer — is complete and verified live on both surfaces. Shape 2 (a shared upload hook both surfaces consume), five build steps plus one gap-closing test, frontend behaviour preserved and proven. Before the build, the session paid down record debt (queued-directions §15.3 filed; the Phase 60 manifest mislabel corrected). The decision recorded is that item 3 is done; what carries forward is the tracked follow-up list (now complete) and the research arc's grounding note.


The five-item list — final state

The list from the 2026-05-28 evening handoff, closed:

  1. Configuration-drift remediation — closed (engine b793aef, 427c446). Prior session.
  2. Test-override audit — closed (engine d5d57ee). Prior session.
  3. File upload through the in-engagement composer — complete this session. Shape 2; built, tested, verified live on both surfaces.
  4. Route-redisposition finding — resolved into queued-directions §15.1 third action (v0.21 methodology candidate). No build action.
  5. Operator real-passkey registration (dev RP-ID) — tracked, deferred (§13.3). Not sequenced. Unchanged.

Numbering note (corrected in v0.2). The 2026-05-28-evening handoff framed the open list as four items, bundling two methodology candidates — route-redisposition (§15.1) and the suite-wide conftest fixture (§15.2) — together under its "Item 4." v0.1 of this handoff renumbered to five (item 4 = route-redisposition alone, item 5 = passkey) and in doing so dropped the conftest finding from the numbered list entirely. The conftest finding is a real, tracked, open structural item (§15.2) and is restored to the follow-up list below. Both methodology candidates travel together into the v0.21 methodology consolidation whenever that consolidation happens; neither is build work.

What shipped — item 3

Shape 2: the upload orchestration (formerly inlined in ChatView's handleUpload) extracted into a shared, turn-type-agnostic hook (src/hooks/useEngagementUpload.ts) consumed by both ChatView and CenterPane. The composer's upload goes direct to the engine (/engagements/{id}/uploads) via the existing postUpload — the Operator Layer has no backend tier. Draft persistence was added to CenterPane in the same arc (parity with ChatView). Build steps, each its own commit: Step 1 d67173c (extract hook, ChatView consumes), Step 2 002be2e (CenterPane draft persistence), Step 3 74e1d26 (mount affordance, remove disabled placeholder), Step 4 2e938a7 (consolidated tests), 401 gap-closer c2ca4db. Final code head c2ca4db; 399 tests; typecheck and lint at baseline.

Live verification (both surfaces, 2026-05-29): CenterPane — live affordance, single/multi/folder upload, typed-text-plus-file as two preserved turns, draft persistence survives navigation and clears on commit, both extract and fallback paths. ChatView regression check — single upload works unchanged. ChatView's refactored path is unbroken.

Record work pushed before the build

Tracked follow-ups — none blocking

  1. v0.43 manifest HTML companion — pending. Manifest landed Markdown-only; HTML companion deferred (no Markdown-to-HTML render specialist; queued-directions §3.3). The .md is canonical.
  2. Composer onClarificationPick not wired. On CenterPane an upload that returns a clarification card renders it, but its buttons have no wired action (no chip-to-reconverse path like ChatView's). Observed live. Small follow-up; the manual-content fallback works.
  3. CR v0.1 placement never landed. Only CR v0.2 is in the record. Harmless (v0.2 supersedes v0.1), noted.
  4. Engine extraction coverage for .json / .html. Engine extracts .md, images, and others, but not .json/.html, which fall back to manual-content. Engine work (upload-facility-extension, queued-directions §4), not a frontend defect. Surfaced clearly by live testing.
  5. Record-site static-asset MIME error. record.dunin7.com/operations/discipline-mechanisms/ editor page serves editor.js/site.css as text/html. Record-site serving issue, unrelated to this work.
  6. Conftest finding (§15.2 open structural item) — restored in v0.2. The suite-wide tests/conftest.py api_client fixture overrides get_db_session with a yield-only session carrying no commit/rollback envelope; ~85 test files inherit it. Same structural shape that hid the upload-handler transaction bug, but not currently hiding an active bug; left unchanged deliberately (mechanically applying the production envelope would break tests asserting same-session reads of uncommitted writes). The methodology candidate: a suite-wide override diverging from the production envelope is a standing bug-hiding surface even when no bug is present; remediation is a finer instrument (per-test envelope opt-in, or commit-on-clean-yield plus a lint), not a mechanical change. Travels with the route-redisposition candidate into the v0.21 methodology consolidation.
  7. ChatView upload 401-silent test — closed this session (c2ca4db); listed for completeness. Was a pre-existing coverage gap, now covered.

The larger open engine item

Assertion-grain gap (queued-directions §15.3). Upload writes a UploadEventReceived Memory event with full provenance but drafts no individually-affirmable Assertions (assertions_drafted hardcoded empty; no downstream promoter). Upload content is searchable and provenance-attributable but does not reach the assertion grain the rest of Memory operates on. Independent of item 3; present on the path ChatView used before this work; a real engine work item, unsequenced. This is "Memory-completion item B" in the research arc below.

Research arc that followed (new in v0.2)

After item 3 closed, the session opened a strategic/foundational inquiry that is mid-arc, not closed — a fuller handoff will be written when it closes. What happened so far, and where it lives:

Record-consolidation pass (new in v0.2)

This v0.2, plus: queued-directions bumped v0.21 → v0.22 (folding the §15.1-resolved edits already committed at 7f0d6c0, with a changelog entry); the FORAY grounding note filed in foray-reference/ or investigations/. Spec v0.5 (correcting three stale upload-in-flight lines in §10/§11/§13) remains deferred as its own absorption pass.

Repository heads

| Repository | Head | State | |---|---|---| | Engine (loomworks-engine) | d5d57ee | Unchanged this session. | | Operator Layer (loomworks) | c2ca4db | Composer upload port; pushed; tag composer-upload-port-v0_1. | | Record (loomworks-record) | (batch) | v0.21→v0.22 bump, this handoff v0.2, FORAY grounding note — landing in the consolidation batch. v0.1 handoff and CR v0.2 already pushed (aac6564). |


Changelog

v0.1 (2026-05-29). Initial close handoff for the composer-upload-port arc.

v0.2 (2026-05-29). Restored the conftest finding (§15.2) to the tracked follow-up list (v0.1's five-item framing had dropped it). Added the research-arc pointer (Memory-completion direction, roles research, FORAY grounding note) and the record-consolidation-pass note. No build state changed.


DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks Session Handoff — Composer Upload Port — v0.2 — 2026-05-29