Skip to content

Integration batch F (#1360, #1366, #1368, #1391, #1394, #1400) - #1415

Merged
Juliusolsson05 merged 41 commits into
mainfrom
integration/batch-2026-09-27-f
Sep 27, 2026
Merged

Juliusolsson05 merged 41 commits into
mainfrom
integration/batch-2026-09-27-f

Conversation

@Juliusolsson05

@Juliusolsson05 Juliusolsson05 commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

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

Every member has GATE PASS (--member). package-lock.json and useIpcSubscriptions.ts auto-merged cleanly between members; CI npm ci plus the quality-gate validate 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 22:26
#1322's quality-gate failed on DOM-event tests (the real-xterm wheel boundary,
keybinding recorder clicks/focus, pane resume), all under happy-dom, which it
moves 20.9.0 -> 20.14.5. This takes its other 20 bumps and holds happy-dom so
the compatible ones can land; the happy-dom move needs its own look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
opencode-headless#17 (f566ab9), agent-transcript-parser#39 (68dbfff),
claude-code-headless#65 (728cb49), codex-headless#61 (b225d45): each package's
main is exactly its grouped Dependabot merge on top of the pointer main pins,
so this bump carries dev-dependency updates only (postcss/fast-uri security
updates, vitest coverage, tsx, react, undici-types).

The lockfile is resynced because the file: deps embed the package trees. Its
large deletion is a dedupe: the parser's nested vitest family and tsx existed
only because its old ranges did not match the root's hoisted versions; the
bumped ranges now do, so npm hoists them.

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

workflow-mcp#67 (codex-sdk 0.154.0, MCP SDK 1.30.0, zod 4.6.5, acorn
8.18.0, ip-address 10.7.2). Lockfile resynced: the app's own hoisted
@modelcontextprotocol/sdk and zod move to 1.30.0 / 4.6.5 (within the
app's ^ ranges, now shared with the package), and 31 nested
workflow-mcp entries (rolldown wasm helpers) drop out.

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

Since code mode (0.144+) Codex runs commands and patches through
custom_tool_call(name="exec") scripts. The reader only knew function_call,
so a Codex child's timeline, shell_commands and file_changes were mostly
empty. The exec-script grammar moves from the renderer adapter to
src/shared/codex/execScript.ts so both read scripts the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ot a call (#1368 review c)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tem guards with recorded rows (#1368 review a, steering q83)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…emas under zod 4.6

Steering q84: #1366 hoists zod 4.6.5 (shared with workflow-mcp). Its
z.fromJSONSchema turns a recursive $ref property (every z.json() payload)
into a lazy schema whose input optionality reports optional, so McpServer's
tools/list dropped required: ['payload'] for ac_probe_echo while the
external Server still advertised it. Calls were still validated. The
descriptor's required lists are now re-imposed on every object it spells
out after conversion: a no-op on 4.4.3, a repair on 4.6.x.
externalControlMcp/tools.test.ts was red at 5f9bf30 with the PR's
installed versions and is green now, assertion unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…as the fallback (#1368 verification b)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…arse path (#1368)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ription; pin interpolation and nested calls (#1368 verification 2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xecuted: unknown (#1368 steering q86)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ries distinct (#1368 final check c)

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

Steering q92 / verification b of #1366: withDeclaredRequiredKeys only
recursed into bare objects. An optional or nullable nested object arrives
as ZodOptional / ZodNullable, and an array of objects as ZodArray, so
their required lists still vanished from the built-in tools/list under
zod 4.6 while the external Server kept them. Calls were validated either
way.

The walk now goes through those wrappers, cloning each with the repaired
inner schema so its own checks survive (an array's min/max). A new test
compares both real projections for an optional nested object and an
array of objects, and asserts that validation still rejects a missing
nested payload. It is red at d563b05, and removing either new branch
turns it red again.

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

Manager q92 asked for Optional/Nullable/Default. Probing zod 4.6.5 shows
z.fromJSONSchema turns a nullable object into ZodUnion[object, null]
paired with the schema's anyOf, not ZodNullable, and a defaulted one into
ZodDefault. The walk now repairs each union option against its anyOf
branch and goes through ZodDefault. The unreachable ZodNullable branch is
dropped. The projection test adds a nullable and a defaulted nested
object; removing the Default, Union or Array branch each turns it red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ithout duplicating it

#1290: the bootstrap-complete reconciler archived a still-open replayed
turn with a raw append while every other path replaces by turnId, so a
replayed turn already in history that reopened as currentTurn was held
twice (duplicate sem:T:i candidates and semantic-block:T:i keys). It now
uses appendSemanticHistory. Red before on the real subscription hub.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Verification b of #1366: a record of objects still lost the value
object's required list on the built-in side. z.fromJSONSchema turns a
record into ZodPipe(transform -> object whose catchall is the value
schema). The walk now repairs a pipe's output side and an object's
catchall against additionalProperties. The projection test adds a
record of objects; removing either new branch turns it red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n at bootstrap-complete

#1391 review a: a replayed turn_started reopens T empty; if replay quiets
before its content re-arrives, replacing by turnId swapped the full archived
T for the empty copy and the answer vanished from the feed.
archiveReplayedTurn keeps the archived row unless the replay copy renders at
least as much (text and blocks); still one row per turnId. Live fold paths
keep replace-by-id (a newer live copy is authoritative). Text and block rules
each pinned; red before on the reviewer's sequence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y copy replaces the archived turn

#1391 review a, round 2: a replay can reopen the same block EMPTY (block_started
then quiet before text_delta), so equal block counts still let an empty block
displace the archived answer. archiveReplayedTurn now compares renderable
size: turn text plus each block's text, thinking, tool input and tool
result. Each term, the equal-replaces rule and the reviewer's probe are
pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t shell (#1307)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…field (#1391 q93)

Three size proxies for 'the replay covers the archive' failed review. The
bootstrap path now merges: strings take the replay only when it extends
the archived value, objects merge per key, id lists union. Tests go through
the real ledger adapter, including both round-3 sequences and a mixed-progress case.

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eplay merge (#1391 review a round 4)

Keeping archived lifecycle values blocked a replay that completed a block or
tool the archive saw pending. status/messagePhase now rank, booleans OR, and
the derived in-progress tool lists are recomputed after the merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Juliusolsson05 and others added 11 commits September 27, 2026 03:06
 review a round 5, q95)

resultContent/resultIsError/resultAt and the tool's lookup state now come
together from the copy with the later resultAt (replay on a tie). Merged
field by field, an archived error followed by a corrected result painted the
success red.

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

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

useThemeSync selected the whole settings object and the slice re-applied
inside chrome-only toggles, so unrelated preferences rewrote the palette,
fired THEME_CHANGED_EVENT for every xterm/Monaco, and sent the full settings
over IPC. Measured on main: 2 applications per toggle, 1 per dispatch flag.
Now 0; theme edits still apply immediately and mirror once, with only the
theme keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, hydration and same-frame paint (#1400 review a)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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): 6 members, each GATE PASS in member mode at these heads: #1360 0b93bd7, #1366 33ebfba, #1368 84842dc, #1391 39c712b (manager-verified at the cap), #1394 2d20830, #1400 3831fc3. Base is 505efa6. Residuals are on each member's disposition. Merge waits on exact-head CI and a non-member merge-gate PASS.

@Juliusolsson05

Copy link
Copy Markdown
Owner Author

Pre-merge gate record (q105): merge-gate.sh agent-code 1415 --dry → GATE PASS #1415 (ef9a122, 0 behind main, checks green, reviews OK). Exact-head quality-gate and minimum-node-fixture-gate are SUCCESS. Merging.

@Juliusolsson05
Juliusolsson05 marked this pull request as ready for review September 27, 2026 12:33
@Juliusolsson05
Juliusolsson05 merged commit 5ebd245 into main Sep 27, 2026
2 checks passed
@Juliusolsson05
Juliusolsson05 deleted the integration/batch-2026-09-27-f branch September 27, 2026 12:33
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