Skip to content

Integration batch G (#1330, #1377, #1386, #1398, #1403) - #1422

Merged
Juliusolsson05 merged 34 commits into
mainfrom
integration/batch-2026-09-27-g
Sep 27, 2026
Merged

Juliusolsson05 merged 34 commits into
mainfrom
integration/batch-2026-09-27-g

Conversation

@Juliusolsson05

@Juliusolsson05 Juliusolsson05 commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Integration batch G (owner-approved merge mode). Built after git fetch from origin/main 5ebd245 (batch F); each member merged --no-ff; origin/main is an ancestor of the head.

Every member has GATE PASS (--member). codex renderer shapes.ts and rollout.ts auto-merged between members; CI validates the combination.
Merged after all pre-merge conditions were met: green CI on the exact head, the disposition comment, and a recorded non-member merge-gate PASS (see the gate-record comment).

🤖 Generated with Claude Code

Juliusolsson05 and others added 30 commits September 26, 2026 17:25
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oads on load (#1274)

The journal and payloads grew forever (129 MB after 22 days) and lived
whole in memory. On load, finished calls with no request key, not reused,
and older than 7 days are dropped in one atomic rewrite, then unreferenced
payloads are collected. Keyed calls (the dedupe ledger) are kept forever.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…arantine evidence (#1330 review)

Retention deleted evidence that is still asked for: unkeyed task origins
(operations.read went not_found), outcome_unknown and pending results,
and payloads an unaccepted recovery quarantine names. It also failed the
whole load when the rewrite failed. These are now retained roots, a
failed rewrite skips retention and GC, and the survivors are pinned.

Refs #1274

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ines, parses task steps (#1330 round 2)

A payload deletion failing after the rewrite made open() serve the old
rows and the next append corrupt the journal; a torn-tail quarantine was
never scanned, so its only-named payload was deleted; task steps were
detected by byte prefix. Rewritten rows are always served, every
unaccepted quarantine is evidence, and steps are parsed.

Refs #1274

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ions (#1107)

The remaining #1107 sites (lsp half landed in #1108):
- lazy-prose (#700): the first compile of the split Markdown chunk was
  measured by a 5 s findByText, the same number as Vitest's 5 s test
  default, so the useful "never appeared" message could not fire. The
  chunk is now imported in beforeAll (awaiting the import, not a timer);
  findByText measures only the render, with its default.
- terminalReplay: SessionManager's whole module graph and @xterm/headless
  were import()ed inside the test body against its 5 s budget. Static
  imports (vi.mock stays hoisted) move the load to collection.
- workflows/control.system: forks the BUILT workflow worker; without
  packages/workflow-mcp/dist it timed out after 5 s with no reason. A
  precondition now fails at once and says to build it.

Evidence: control on origin/main without dist: 5010 ms timeout; now 3 ms
with the build instruction; with dist built: passes in 380 ms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1330)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A compacted rollout line's payload has no type, so the mapper's early
return swallowed every one (about 1,500 local lines) and Codex compaction
never rendered. The dead branch also had two latent bugs. The boundary
had no timestamp, so it would sort to the bottom of the feed. And it
replayed replacement_history: the retained instructions and earlier
prompts, which repainted prompts already in the feed (17,326 of 20,343
sampled replacement messages).

Compaction is now handled before the type guard. It maps to a
timestamped boundary, plus the summary only when the CLI wrote a
readable message (older CLIs; 0.15x encrypts it). replacement_history is
never replayed, and the boundary no longer embeds the whole payload
(retained prompts plus a 13-23 KB encrypted blob) as compactMetadata,
which nothing reads.

Codex catalog entries are added for the durable boundary and summary.
The curated-fixture sweep now names system entries type:subtype like the
bundle sweep, which no curated fixture had exercised.

Fixes #1289

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ument the resumed-compaction gap

Review a of #1386: the agent read API counted the synthetic compaction
summary as a user message. The mapper comment claimed retained history is
always a duplicate; resumed rollouts that start with compacted are the
exception (follow-up #1393).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…smiss stack (#512)

States the q95 sequencing: no useKeybinds.ts edits until #1394 merges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e modals, unwired dismiss stack (#512)

- ui/layers.ts: every magic stacking band (pane overlay/takeover, pane dialog,
  in-surface popover, dialog, menu, toast, debug) is a named literal class;
  PANE_DIALOG_LAYERS is a view of it. Stale z-50 comments corrected.
- components/ui/side-panel.tsx: the docked panel shell for Git, Worktrees,
  Agent Status and the six debug panels; DebugPanelHeader gives the debug
  closes an accessible name.
- RemotePanel renders a Dialog, so it is registered with the modals.
- ui/dismissStack.ts: topmost-only Escape + anySurfaceOpen(), shipped
  unwired; useKeybinds.ts is untouched until #1394 merges (q95).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rows 6, 13)

saveSetupState assigned its cache before the write and never restored it, so a
failed write left main acting on an unsaved value until a restart reverted it.
The provider enablement and CLI update behaviour rows swallowed the rejection
(or showed raw IPC text); they now say, in fixed words, that nothing changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w c nit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, pin shell and layer values (#1398 review)

The dismiss stack's wiring contract was wrong (a capture-phase Escape pre-empts
two-phase inner handlers; effect order is not stacking order for nested
mounts). It returns with the useKeybinds wiring after #1394. Stacking between
dialogs is by open order, not registry order; the comments now say so. The
SidePanel test pins children and layout, and the layer test pins exact values.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ordinal (review b)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… a render band only (#1398 review b round 2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stbox (review)

Review of #1377 (a):
- preloading the Markdown chunk left the test unable to tell lazy from
  eager loading (an eager import passed); it now asserts the Suspense
  fallback on first render, which only a lazy boundary shows. The eager
  mutant fails.
- PathInput slept 100 ms against a 60 ms debounce; it now waits for the
  listbox itself (findByRole). A 150 ms debounce no longer fails it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… changes (#1403 review round 1)

Saves are update functions applied at write time to the last state known
on disk, so a failed save can neither linger in memory nor ride along with
a later write. Provider toggles update one key; a refresh failure after a
landed write no longer claims nothing changed; a rejected detection probe
no longer sticks in flight. SetupGate's write failures are said in fixed
words, the panel answer after the close.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…quarantine digests in GC (#1330 verification b)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tions accurately (#1398 review b round 3)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… fixed install text (#1403 verification)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uses unsaved probed paths (#1403 recheck)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Juliusolsson05 Juliusolsson05 added the type:chore Maintenance, deps, tests, docs label Sep 27, 2026
@Juliusolsson05

Copy link
Copy Markdown
Owner Author

Batch disposition (B6, pre-merge): members at GATE PASS (member mode): #1330 f68c8e2, #1377 66a4674, #1386 df5cd68, #1398 0ec09c1, #1403 6c27420. Base is 5ebd245. Residuals are on each member's disposition. Not included: #1376 (conflicts with main), #1392/#1406 (CI pending), #1413 (manager check pending), #1417/#1420 (held: q109/q110).

@Juliusolsson05

Copy link
Copy Markdown
Owner Author

Pre-merge gate record (q105): merge-gate.sh agent-code 1422 --dry → GATE PASS #1422 (1205a20, 0 behind main, checks green, reviews OK). Merging.

@Juliusolsson05
Juliusolsson05 marked this pull request as ready for review September 27, 2026 13:21
@Juliusolsson05
Juliusolsson05 merged commit 6938e61 into main Sep 27, 2026
2 checks passed
@Juliusolsson05
Juliusolsson05 deleted the integration/batch-2026-09-27-g branch September 27, 2026 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:chore Maintenance, deps, tests, docs

Projects

None yet

1 participant