commit ff5be52a3f2ef254c8cfb6fd8dbc778e5ac2edde
parent ecc096ccc5f507f7342acc5f9a688f7278f4d48b
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Wed, 26 Aug 2026 17:36:27 -0400
plans: record the collision the move created
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat:
2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/plans/STATE.md b/plans/STATE.md
@@ -159,8 +159,9 @@ nothing renders.
### 2026-08-26 (evening) — editor IA slice 3: an operation's settings are on its page
-Three commits: `9515083` (the plan, with the two uncommitted doc files), `f14ceb5` (the
-seams), `43bb519` (the move). The as-shipped record is in `editor-operations-ia.md`
+Five commits: `9515083` (the plan, with the two uncommitted doc files), `f14ceb5` (the
+seams), `43bb519` (the move), `b303817` (copy, the `/settings` pointer, docs) and `7c34bc5`
+(the one collision the move created — see 6 below). The as-shipped record is in `editor-operations-ia.md`
("Slice 3, as shipped") and the new file paths are in `FACTS.md` under the seams census;
this entry is the decisions.
@@ -186,10 +187,22 @@ this entry is the decisions.
new `operation-settings.spec.ts` also proves structurally what the markers used to buy:
saving the diarization form beside the lane form leaves `backfill.enabled` alone. 7/7.
+6. **Moving a component moves its SENTENCES into someone else's selectors.** The lane form's
+ paragraph still said "…so it lives with the plan it produces", and `The plan` is the
+ heading of the sweep console now directly above it inside the same `section[data-lane]`.
+ `backfill.spec.ts:484` scopes `getByText("The plan")` there and `getByText` matches
+ substrings, so it resolved to two elements. Reworded, with a comment marking the phrase
+ off-limits in that file. (The same commit keys the two server-built settings slots: an
+ element created in a Server Component and rendered by a client component warns on React's
+ dev key validation, naming a render method that did not create it.)
+
Verified: tsc in all six packages, `common` 828/828, editor units 85/85, the new spec 7/7,
and a fixture check of every operation page (digest → one form; diarization and both
attribution pages → operation form then lane form; download/transcode/transcription → none;
-`/settings` down to its four remaining fieldsets and one `<form>`).
+`/settings` down to its four remaining fieldsets and one `<form>`, carrying the pointer).
+The affected e2e specs ran twice: 104/107 then, after the fix, 28/28 on the three that had
+failed — two of those three (`auto-subs-replace.spec.ts:394`, `cadence-ui.spec.ts:212`) were
+timeouts and passed on a re-run untouched.
Deliberately not done: the three other file-local `Field` copies; `WorkersField` (slice 8);
the pause trio (slice 7); `/actionable` (slice 4). No persisted key or field `name` changed,
diff --git a/plans/editor-operations-ia.md b/plans/editor-operations-ia.md
@@ -252,8 +252,18 @@ id set the runner has no parameter for).
## Slice 3, as shipped
-Three commits, `9515083` (the plan) → `f14ceb5` (the seams) → `43bb519` (the move), plus the
-copy and doc pass. The plan is [`editor-ia-slice-3.md`](editor-ia-slice-3.md).
+Five commits: `9515083` (the plan) → `f14ceb5` (the seams) → `43bb519` (the move) →
+`b303817` (copy, the `/settings` pointer, docs) → `7c34bc5` (one collision the move created).
+The plan is [`editor-ia-slice-3.md`](editor-ia-slice-3.md).
+
+**The one thing the move broke, and it is worth knowing why.** Putting a form inside
+`section[data-lane]` puts its PROSE in that section's scope too. The lane form's paragraph
+still said "…so it lives with the plan it produces", and `The plan` is the heading of the
+sweep console now sitting directly above it — `backfill.spec.ts:484` scopes
+`getByText("The plan")` to that section, `getByText` matches substrings, and two matches is a
+strict-mode violation rather than a near miss. Moving a component moves its sentences into
+someone else's selectors; the file now carries a comment saying that phrase is off-limits
+there.
**The markers were the whole deletion.** Each of the four blocks in `saveSettingsAction` was
gated on a hidden `<input name="*FormPresent">`, and every one existed for a single reason: an