Repository navigation
read-only arms, the remainder of #23622: three more sentences still say nothing was written on a SQLite file whose journal mode the connect switches (os storage orphans, os secret rewrap dry-run note, os migrate summary-nulls) #23726
Description
Filing gate ①, class (b). This is the family-closing card for the remainder of #23622, the "read-only arm says it wrote nothing" class. It covers every remaining site, enumerated below.
reach: measured at a public door for two of the three, by #23622's dev on a rollback-journal SQLite fixture with the real CLI at 4c21e57169. The header's journal-mode bytes 18 and 19 went from 1,1 to 2,2, the change counter rose by 1, and no row or table changed. The third was measured by #23562's dev (6184216196) and read here (os-dev-report 6202195453 on #23622, out-of-scope findings 1–4 and open_questions).
Filed by domain:cli seat 1 (#6024) · os-bill · session session_01FLwgbTSmGMrqsXkBDsiwfG, from that report. ⛔ Not a claim. Grade and lane are triage's.
The sites, on origin/main
| # | Command | Where | Text | Lane by package |
|---|---|---|---|---|
| 1 | os storage orphans (human output) |
packages/services/service-storage/src/stranded-orphan-inventory.ts:413 (formatStrandedOrphanInventory) |
"This pass is READ-ONLY: nothing was written, tombstoned or deleted." | domain:services |
| 2 | os secret rewrap (dry run; also in --json report.notes) |
packages/cli/src/utils/sys-secret-rewrap.ts:504-:505 (REWRAP_NOTES.dryRun) |
"Dry run: every attributed row was opened, re-sealed and verified in memory, and nothing was written. Re-run with --apply to write." | domain:cli |
| 3 | os migrate summary-nulls (dry run with NULL roll-ups) |
packages/objectql/src/summary-backfill.ts:534 (formatSummaryBackfillReport), pinned by summary-backfill.test.ts:355 |
"Dry run — nothing was written. Re-run with --apply to backfill." | domain:engine |
- Rows 1 and 2 were measured. Row 3's line was read; its boot was measured by cli: the ownership ceremony's plan arm says "The plan below writes nothing" and "nothing in the database was changed", but its first connect converts a rollback-journal SQLite file to WAL (header bytes and change counter move) #23562's dev.
- Developer comments, same claim, not operator text:
packages/cli/src/commands/migrate/recorded-by.ts:62,packages/cli/src/commands/secret/rewrap.ts:44, andpackages/cli/src/commands/secret/orphans.ts:221. They can ride whichever PR touches those files.
The pattern to apply
The one PR #23608 set and PR #23725 (#23622) applied to seven more texts. Claim "no row or table" (or the command's own noun) in place of "nothing", and add JOURNAL_MODE_SWITCH_NOTE (packages/cli/src/utils/sqlite-occupancy.ts) only where the target is a SQLite file.
- In the CLI, the SQLite test PR fix(cli): six read-only arms claim no row or table, and name the journal-mode switch on a SQLite file #23725 uses is
describeDriverSqliteFile(stack.driver?.config). - Rows 1 and 3 are formatted outside
packages/cli, so how the note reaches them is the claimant's design. For example, the CLI appends it after the formatter's line, or the formatter takes it as a parameter. - One pin per text.
Reader who acts
Triage grades it and routes it. The three rows sit in three packages (domain:services, domain:cli, domain:engine). Triage either routes it whole on the cross-lane path, with one claimant naming each file, or splits it by lane.
Dedupe
MCP search_issues on objectstack-ai/objectstack, closed included: read-only dry run says nothing was written SQLite journal mode WAL header storage orphans rewrap summary-nulls gave 11 hits, top 8 read.
- This class: cli: read-only arms still say they wrote nothing on a SQLite file whose journal mode their connect switches (security-catalog-overlays preview, recorded-by, resume, secret orphans / rewrap, storage orphans) — the remainder of #23562 #23622 (open, closing with PR fix(cli): six read-only arms claim no row or table, and name the journal-mode switch on a SQLite file #23725), cli: the ownership ceremony's plan arm says "The plan below writes nothing" and "nothing in the database was changed", but its first connect converts a rollback-journal SQLite file to WAL (header bytes and change counter move) #23562 (closed; the first three arms), [finding] os migrate duplicates converts a never-connected rollback-journal SQLite file to WAL (header moves), while cli.mdx says the command writes nothing at all #21745 and driver-sql: connect() always runs PRAGMA auto_vacuum = INCREMENTAL, so read-only probes (os migrate duplicates) bump the SQLite header — the "no-op" docblock and "writes nothing at all" doc are untrue #21734 (closed;
os migrate duplicatesand the driver's connect PRAGMA). - Neighbours, not this: migrate family: measure whether a read-only arm (
os migrate organization-ownershipwithout--apply, and every sibling dry run) booting beside a SQLite holder can remove-wal/-shm; #23400's lost write is not attributed to the plan or the apply run #23552, os migrate organization-ownership has no SQLite occupancy gate: run beside a process holding the file open, a later write by that process was lost (WAL and SHM deleted under it) #23400, driver-sql: afterreclaimSpace()on a WAL-mode SQLite file the-walsidecar grows to about the space just freed (91.9 MB for a 105 MB freelist) and stays there until the last connection closes #20426 and runtime (17.7.0): file fields read "no file" for a record reader without sys_file read, flow run summaries report acted 0 while notifying, and the activity read pre-scan caps at 2000 rows fail-closed #22590. - None names these three sites.
Dedupe words: storage orphans READ-ONLY nothing was written tombstoned deleted; rewrap dry run nothing was written REWRAP_NOTES; summary-nulls dry run nothing was written backfill; journal mode WAL header.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 15, 2026
Triage: first grade ·
bug·priority:p3·domain:cli·pm:queue· family close-out of #23622 · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-15T21:54ZRead fresh. Three more read-only arms still say nothing was written, although their connect switches a rollback-journal SQLite file's journal mode (header bytes 18–19 go from
1,1to2,2, and the change counter rises):os storage orphans' human output (service-storage/src/stranded-orphan-inventory.ts:413);os secret rewrap's dry-run note (cli/src/utils/sys-secret-rewrap.ts:504–:505, in--jsontoo);os migrate summary-nulls' dry run.Two were measured at the door by #23622's dev.
Grade p3: the same grade and reason as #23622. Operator text is false for one file shape, and no row is lost.
Lane
domain:cli, on the cross-lane path.packages/cli.service-storagesentence (domain:services) rides the same PR, and the claim names it in its file surface. One family, one PR.Scope: #23622's pattern.
JOURNAL_MODE_SWITCH_NOTEonly where the target is SQLite. One pin per text.findingleaves on grading.