Refuted Deepening Candidates
The architecture-deepening ideas that were checked and ruled out, voided by later work, or superseded by a larger migration — recorded so no survey re-raises them
The architecture-deepening register (a plan kept from 2026-07-29 to
2026-09-12) is retired. Its open candidates are Backlog tasks labelled
deepening; its one open owner question, the three incompatible
handle-collision policies, is the Backlog decision decision-1; its landed
candidates are recorded in the decision pages they produced. This page keeps
the rest: every idea the register cleared, voided or superseded. An
architecture survey that turns one of these up again must cite this page and
say what has changed, or drop it.
In plain terms: this is the list of tidy-ups we looked at and decided not to do, with the reason for each — so the next reviewer does not spend a day rediscovering the same dead end.
Cleared on the evidence — the friction was not there
Checked by the 2026-08-08 survey at 2d88fac unless a later date is given.
convex/seed.ts(since moved toconvex/folio/seed.ts) as a fourth block-version payload builder — it routes throughprojectMvpBlockVersionPayload, the one projector candidate 3 landed on 2026-08-06;toStoredDisplayis a deep single-purpose adapter with a stated end-of-life.convex/internalRefs.tsas shallow ceremony — deleting it scatters fourteen path strings and their arg types across callers, and the file says why it exists. Its untyped return was candidate 15, landed 2026-08-09.convex/blockAgentContract.ts(424 lines, since removed) as an over-trigger file — pure, single-purpose, covered by a 571-line sibling test;foldBlockAgentOutcomeandproposalReplyIsSafeare deep. Not a file-size case.readOrderedModuleRowsas a third module-read path — it is already the shared reader for both thread queries, which diverge for a reason written at the call site.canvas/v2/pending-turns.tsmodule-level mutable state (since removed) — intentional external store foruseSyncExternalStore, with a test-reset hook and its own node test.- The route's nine block handlers as a consolidation — deleting them moves two ambient facts to the caller rather than concentrating anything, and each carries a distinct refusal or toast policy under One Block Notification Channel.
resolveBlockNamesingle-sourcing — already one definition (after8b80a97) with seven backend and three frontend consumers.- Format and parse of the pipe syntax as duplicated (candidate 11's
survey, 2026-08-09) — every
convex/call site imported from the thensrc/lib, since removed;toDisplayValueis the only value-display projection and is deep. The adapter coverage gap it did find is closed by a compile-time exhaustive-key alarm overSnapshotFieldinto-field-entries.ts. - The three per-tier palette adapters as one adapter (proposed and refuted
the same day, 2026-08-24) —
block-card-palette.ts,module-card-palette.tsanddocument-folio-palette.tstotal 159 lines against a 531-line sharedstack-palette.ts, and none holds a state-precedence rule; the one ladder isresolveStackPaintStatein the shared file. Consolidating further would add the tier axis that The Folio Tiers Share Parts, Not a Recipe forbids. - Cutting
drafting-editor.tsxfurther after candidate 18 (re-grilled 2026-08-16) — superseded by owner ruling 2026-09-28 (GB-84): the cards now read one named Interface,CanvasCardContext(model/canvas-card-context.ts), so moving them no longer restates the editor's surface as a props contract;renderBlockandrenderModuleareCanvasBlockCardandCanvasModuleCard, and the file left the tolerated outliers. The refutation as recorded:renderBlockandrenderModulebind the editor's own selection, capability, panel and edit state to one card; moving either restates that surface as a large props contract and fails the deletion test. The file is a named tolerated outlier in File Size, reduced since by extraction (GB-84) and not by splitting.
Void — the code they described was deleted
All four went with 9821c7b ("retire anchor ordering machinery"), verified
2026-08-06 and again 2026-08-08. Ordering is order.position at both tiers.
- Candidate 1's deferred
flow.afterbackfill — nothing left to backfill;flow.aftersurvives only in comments. The envelope itself is Block Edits Run Inside One Envelope. - Candidate 1's rename-sweep deletion — the lazy migration it would have retired is gone with the machinery.
addDataBlockorders twice —sortModulesByFlowno longer exists.readModuleAfter×4 consolidation —readModuleAfter,orderBlocksByFlowAfter,sortModulesByFlowandresolveFlowAfterreturn zero matches acrossconvex/andsrc/. Nobody should design this.dataSchemaFieldsneeds direct tests (candidate 11, item 3) — no longer exported; reachable only throughinterviewContext's own Interface, which is the test surface.
Superseded — a larger migration owns the seam
- Candidate 8, who owns snapshot lookup (Backlog task GB-56, closed
2026-09-12) — superseded by GB-152 Phase 2a: the unified read layer
(
convex/folio/reads.ts,snapshot.ts,schedule.ts,versionReads.ts, onmainsince6a8b70b) is the one owner overfolios, and the legacy readers this candidate argued over are deleted at Phase 5. Do not deepen the legacy seam. - Candidate 21, the storage half (per-tier Convex verbs repeated across
storage) — superseded by GB-152 Phase 2b if 2b is built as one mutation per
catalogue row against
folios. The menu and arrangement half landed 2026-08-16 as Folio Operations Resolve Once. Reopen only if 2b is built verb-for-verb. - Candidate 28, one
foliostable — it is GB-152; the register only ever held a cross-reference. The design lives with that task and its plan.
Where the rest went
- Landed candidates (1–7, 9–16, 18–20, 22–27) are recorded in the decision pages above plus The Three Selection Cells Are Not Duplicates, Component File Partitions Must Preserve Locality and Folio About Is Schema-Bound YAML; the rest were code-only extractions whose landing commits are in Git history.
- Candidate 17,
module-card.tsx(GB-74) — closed 2026-09-12: the file is 442 lines, under the trigger, after GB-168's promotions and theFolioCardActionsslot. - Candidate 19,
block-fields-view.tsx(666 lines) — the one open file-size trigger, carried as a Backlog task labelleddeepeningunder File Size. - Small-consolidations batch — the handle-collision item is Backlog
decision
decision-1; the field-type vocabulary,SnapshotFieldmirror and re-export shim items are open only as evidence for a future survey and are not filed as work until one re-verifies them against the tree.
Proposals Wait for an Explicit Accept
Owner ruling 2026-10-07 — nothing Goldie proposes applies until the Builder accepts it; a new proposal joins the queue instead of accepting the one already open; each step is decided on its own from a resolution bar above Goldie's composer, kept in step with the review gutter.
Root Documents Are Created Through an Interim Browser Door
Until sign-in exists, New document creates a document for this browser through one narrow bootstrap that mints the document, its sealed v1, its live head and a session bound to it in one transaction. Anyone with the app open can create documents, which is the posture the recent list already has. This is a temporary door that sign-in replaces.