DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path change-requests/cr-2026-208-loomworks-message-order-default-v0_1.md

DUNIN7-M4 — INFRASTRUCTURE CHANGE REQUEST

CR-2026-208 — Message order: newest-first with the composer at top, as the default; the composer moves with the order (v0.1)

Version. 0.1 · Date. 2026-08-12 · Author. Claude Code (drafting, from the E0128 walk re-scope) / Marvin Percival (approving). Target. /Users/dunin7/loomworks (surface only — the setting plumbing exists). Baseline. Surface 7ac3cb2. CC confirms at Step 0. Companion to. inspection-briefs/loomworks-e0128-walk-findings-v0_1 Finding 2 (record da86274); the batch filing's item 7 ruling. Charter. Autonomous regime. Status. DRAFT — awaiting the gate. Do not execute.


0. Settled — the Operator's ruling, 2026-08-12. Do not re-raise.

  1. Newest-first with the composer at top is the DEFAULT for everyone. Not an option. The current split (surface baseline oldest_first, engine default key newest_first) is a contradiction; making the ruled design optional would preserve the contradiction rather than resolve it.
  2. The toggle stays for people who prefer oldest-first.
  3. The composer moves with the order — top when newest-first, bottom when oldest-first — never fixed while the transcript flips around it (the "internally contradictory" state the batch filing named).
  4. Scope note from the re-scope: the persistence half is BUILT (conversation.message_order on /me/settings, written by the header toggle and tune_setting alike). This CR is the default flip + order-conditional composer placement, surface-side.

1. The changes

A. The default. ORDER_DEFAULT flips to "newest_first" — aligning the surface baseline with the engine-side default key value and the ruling. A stored preference still wins (the toggle's writes are untouched).

B. The composer moves. ConversationPane renders its composer/mic/attach/chips bar at the TOP of the pane when the effective order is newest_first and at the bottom for oldest_first. The scroll discipline already follows the order; the composer now does too. The mobile surface (MobileSurface) is Step 1's verification target — same rule wherever the pane renders.

C. Nothing else. No engine change; no new setting; the toggle's semantics, tune_setting's writes, and the orient catalog's description are untouched (Step 1 verifies the orient catalog's wording still describes reality — "currently newest first" already does).

2. Consequences named, so they are chosen

3. Tests — each observed failing first

ORDER_DEFAULT asserted newest_first; pane renders composer-first for newest_first and composer-last for oldest_first (DOM order asserted both ways — the oldest_first case is the fence that the toggle still means something); stored-preference override still read; toggle still writes. Existing order/scroll tests re-run.

4. seed-mutability impact

Kind C expected: a surface default and a layout rule. Checked at Step 1; a null finding is an entry.

5. Build steps

| Step | What | Mode | |---|---|---| | 0 | Pre-flight — baseline, clean tree. | Auto | | 1 | Verify pane/mobile render sites + chip/upload dependents + orient wording; tests written, observed failing. | Auto | | 2 | The flip + the conditional placement. | Auto | | 3 | vitest; tsc. | Auto | | 4 | Eye-test: fresh-preference view newest-first with composer at top; toggle to oldest-first → composer at bottom; preference survives reload. | Auto | | A | Checkpoint. | Checkpoint | | 5 | Push; watch the run; redeploy; post-deploy eye-test. | Auto |

6. Acceptance gate

  1. Default = newest-first with composer at top, live, for a no-preference account.
  2. The toggle still flips both transcript and composer; oldest-first preference persists.
  3. Suite green; tsc clean; run watched; redeployed; eye-tested.
  4. seed-mutability recorded.

7. Kickoff prompt


Execute CR-2026-208 v0.1 at change-requests/cr-2026-208-loomworks-
message-order-default-v0_1.md in loomworks-record. Surface repo only
(/Users/dunin7/loomworks — NOT loomworks-ui). Confirm baseline first.

§0: a default, not an option. The composer moves with the order.
The oldest_first DOM-order test is the fence that the toggle still
means something.

DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-208 — message order default — v0.1 — 2026-08-12 The transcript and the composer agree about where "newest" is.