Promote main to release - #2648
Merged
Merged
Conversation
Records what the package extraction made possible and what still blocks a run continuing after the desktop disconnects. The runtime is already portable and unused: 17 of 476 non-test files in src/main import electron at runtime and none are on the agent, tool, hook, sandbox or thread-store path; headless-agent-host.ts runs the whole product loop with no renderer; verify-agent-path-import.mts enforces that with electron poisoned; and the Tauri sidecar already runs the main process as plain Node. The only non-test caller of runHeadlessAgent is a benchmark script. The plan's argument is that offloading is an ownership problem rather than a transport one. SSH already carries the tool layer, but the thread store's mutual exclusion is an in-process mutex, not a file lock, so a fenced per-thread writer lease has to come before any worker process. It sets out nine binding decisions and phases O0-O6 with exit gates, and names where it departs from the existing "provider keys never leave the desktop" line. Also corrects two plan statuses that no longer match main: - The headless automation contract module, its published JSON Schema and gen:headless-schema are on main; the doc still said they were only on a feature branch. - Deferred approvals D1 has landed (the defer outcome and its durable append-only queue); the index still listed D0 only. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011i4xR3bwms6hEJDdd449qo
main gained library-splits.md, the plan that owns the extraction this one builds on, so state the relationship instead of re-deriving it: - name library-splits.md as the parent, and say this plan is the product capability its client/server split unlocks rather than a second opinion on how the packages are cut - O0 now consumes step 9 (#2312, the versioned API protocol and ShellHost) instead of proposing its own worker entry mechanism; if #2312 lands first, O0 is a packaging step - reconcile the Electron measurement with the count library-splits.md uses: 30 of 476 non-test src/main files name electron, 13 for types only, so 17 import it at runtime Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011i4xR3bwms6hEJDdd449qo
main gained client-server-split.md, which promotes #2312 out of library-splits.md step 9 into its own Active plan with step 1 landed. Follow it: - O0 now consumes that plan rather than the library-splits step. Its step 4 produces copse-core, "a daemon with three front doors: Electron IPC, WebSocket, and the ACP agent server" — that daemon is this plan's worker, so O0 is its first remote consumer, adding only what a remote deployment needs that a local daemon does not: a sandbox-state handshake and the O1 lease - name both split plans as parents, and say this plan settles neither how the packages are cut nor how the protocol is versioned - re-measure against the rebased tree: the denominator moved to 479 non-test src/main files, while 30 named / 13 type-only / 17 runtime still hold Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011i4xR3bwms6hEJDdd449qo
main grew a non-test file in src/main, so the denominator is 480, not 479; 30 named / 13 type-only / 17 runtime are unchanged. Also tighten the "only non-test caller" line: verify-agent-path-import.mts imports runHeadlessAgent without calling it, purely to prove the graph loads under a poisoned electron, so autonomy-regression-agent.mts remains the only caller that actually drives a run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011i4xR3bwms6hEJDdd449qo
thread-in-container.md and src/main/services/container-runtime/ are on main now, and they falsify this plan's central qualification. It said "the runtime is portable and unused"; container-runtime/worker-entry.ts calls runHeadlessAgent inside a guest container, so main-process code drives the portable runtime off the desktop today. Reconciled rather than restated: - status is Proposed (partly overtaken): O0, O3 and O4 are delivered for a disposable local container, and the plan says so at each phase instead of describing them as unbuilt - O4 was delivered more strictly than proposed here — --network none plus a per-origin unix-socket broker is execution-runtime-security R3's broker-only egress, met for that runtime - O1/O2 are the half nothing has built, and are the same work as that plan's T2, which names the same lease mechanism; say so rather than duplicating it - the execution table gains a container column, including that the guest does not need the window but cannot be attached to - where the two disagree, the shipped prototype wins Also re-measure after 197 commits of main: 517 non-test src/main files, with 30 naming electron, 13 for types only, 17 at runtime. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011i4xR3bwms6hEJDdd449qo
Co-Authored-By: Copse
Resolve Markdown workspace links against the active thread execution root so untracked files in isolated checkouts open correctly. Add unit, protocol, and Electron visual coverage. Co-Authored-By: Copse <noreply@copse.dev> Copse-Models: gpt-6-astra
Co-Authored-By: Copse <noreply@openai.com> Copse-Models: GPT-6, GPT-5
## Summary - share the subscription-backed ACP frontier candidates between automatic best-value selection and the Settings value map - include GPT-6 Astra and every other scored model advertised by a recognized, enabled Codex ACP agent - apply plan pricing before equivalent routes are grouped, so an ACP plan route wins over a paid API or OpenRouter route for the same model - keep direct GPT API and OpenRouter routes priced normally ## Validation - pnpm run typecheck - focused unit suite: 106 tests passed - pnpm run build - focused Electron e2e: settings-usage-value-map.e2e.ts passed, with updated visual snapshots - pnpm run check: all pre-test gates passed; the sandboxed full-suite stage encountered unrelated loopback listen EPERM and missing rg environment failures Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com>
## Summary - render proposed image changes as before and after previews instead of binary text - preserve raster bytes across staging, approval, delete, and rename flows - add focused unit, renderer, and Electron visual coverage ## Testing - pnpm run typecheck - pnpm run build - pnpm test -- diff-queue local-workspace-fs image-path git-changes-pane-proposed-fetch - pnpm run test:e2e -- --spec tests/e2e/git-changes-image.e2e.ts - pnpm run check:e2e-syntax - pnpm run check: static gates passed; the broad unit phase cannot complete in the managed sandbox because loopback-listener tests fail with EPERM and leave network-sensitive workers running ## Visual evidence The focused Electron spec updates tests/e2e/screenshots/git-changes-image-proposed.png with the proposed before and after preview plus approval controls. --------- Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com> Co-authored-by: copse-release-bot[bot] <304038887+copse-release-bot[bot]@users.noreply.github.com> Co-authored-by: jonathanKingston <338988+jonathanKingston@users.noreply.github.com>
…oints Fix recovery checkpoints for sandboxed file edits
Keep authorized work moving across native and ACP prompts
…ffload-o6ejvb docs(plans): plan offloading the harness to another device
…ased-renders-can-yo-8c2cca docs: design sandboxed artifact image downloads
Pad expanded reasoning callouts
…links Error Viewing Added Changes
Move automation actions into project row menus
…ain-and-make-sure-a-90c855 Document And Interface Refinement
Stabilize live tool disclosures in threads
…-policy Enforce task network policy for browser previews
Bumps the electron group with 2 updates: [electron](https://github.com/electron/electron) and [electron-chromedriver](https://github.com/electron/chromedriver). Updates `electron` from 44.1.0 to 44.1.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/electron/electron/releases">electron's releases</a>.</em></p> <blockquote> <h2>electron v44.1.1</h2> <h1>Release Notes for v44.1.1</h1> <h2>Fixes</h2> <ul> <li>Fixed <code>chrome.tabs.query()</code> returning tab <code>url</code> and <code>title</code> to extensions without the <code>tabs</code> permission or host access, aligning with <code>tabs.get</code>. <a href="https://redirect.github.com/electron/electron/pull/53354">#53354</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/53355">42</a>, <a href="https://redirect.github.com/electron/electron/pull/53356">43</a>, <a href="https://redirect.github.com/electron/electron/pull/53353">45</a>)<!-- raw HTML omitted --></li> <li>Fixed a renderer crash when an array with a throwing property getter is passed across <code>contextBridge</code>, and several main/utility-process crashes when option objects passed to Electron APIs contain throwing accessors or Proxy traps. <a href="https://redirect.github.com/electron/electron/pull/53331">#53331</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/53329">42</a>, <a href="https://redirect.github.com/electron/electron/pull/53330">43</a>)<!-- raw HTML omitted --></li> <li>Fixed an intermittent crash at startup on Linux caused by a race between Pango and the main thread initializing fontconfig. <a href="https://redirect.github.com/electron/electron/pull/53340">#53340</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/53339">43</a>, <a href="https://redirect.github.com/electron/electron/pull/53338">45</a>)<!-- raw HTML omitted --></li> <li>Fixed an issue where an exception thrown by a property getter on an object passed through <code>contextBridge</code> was swallowed instead of being thrown back to the caller. <a href="https://redirect.github.com/electron/electron/pull/53335">#53335</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/53334">43</a>, <a href="https://redirect.github.com/electron/electron/pull/53297">45</a>)<!-- raw HTML omitted --></li> <li>Fixed main process crashes when navigating to <code>http://accessibility/</code> or <code>http://devtools/</code>, when an extension background page used <code>navigator.mediaDevices</code>, and when calling <code>SerialPort.forget()</code> for a disconnected device. <a href="https://redirect.github.com/electron/electron/pull/53333">#53333</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/53332">43</a>, <a href="https://redirect.github.com/electron/electron/pull/53325">45</a>)<!-- raw HTML omitted --></li> <li>Fixed the PDF viewer failing to save an edited PDF with <code>NotAllowedError: Third party iframes are not allowed to show a file picker</code>. <a href="https://redirect.github.com/electron/electron/pull/53328">#53328</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/53327">43</a>, <a href="https://redirect.github.com/electron/electron/pull/53326">45</a>)<!-- raw HTML omitted --></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/electron/electron/commit/f3ae30fab9aabfd445eedff4dd7a2f003eb1ff2f"><code>f3ae30f</code></a> fix: honor tabs permission for url and title in tabs.query results (<a href="https://redirect.github.com/electron/electron/issues/53354">#53354</a>)</li> <li><a href="https://github.com/electron/electron/commit/ac41df3d90f1973a5204ab8424c80849aca81ccc"><code>ac41df3</code></a> build: remove requirement of empty commit message body (<a href="https://redirect.github.com/electron/electron/issues/53347">#53347</a>)</li> <li><a href="https://github.com/electron/electron/commit/69a7216b42b7f6ecf0f2dbfdb13bbe35bc2bb20e"><code>69a7216</code></a> fix: propagate exceptions thrown by property getters on objects passed across...</li> <li><a href="https://github.com/electron/electron/commit/2d40a6ab5552caa89afb78bde4f0d8e7b946e28c"><code>2d40a6a</code></a> fix: initialize the system FontConfig before GTK starts on Linux (<a href="https://redirect.github.com/electron/electron/issues/53340">#53340</a>)</li> <li><a href="https://github.com/electron/electron/commit/28d2a9a3024b5178833d9eeef3e7fc287d5d3bf2"><code>28d2a9a</code></a> fix: main process crashes from WebUI host matching, worker AI bindings, exten...</li> <li><a href="https://github.com/electron/electron/commit/443d7b321e6a0cfd4d4aabb70f0e70192e94c10b"><code>443d7b3</code></a> fix: don't abort the process when a JS accessor throws during value conversio...</li> <li><a href="https://github.com/electron/electron/commit/a71b26bde67f927f909978d152214c816d9d7ddc"><code>a71b26b</code></a> fix: allow the PDF viewer to show a save file picker again (<a href="https://redirect.github.com/electron/electron/issues/53328">#53328</a>)</li> <li><a href="https://github.com/electron/electron/commit/9191e18d65b95ca0f1d8111c04ed22b81abf23a1"><code>9191e18</code></a> docs: require symbol-level attribution in the node upgrade skill (<a href="https://redirect.github.com/electron/electron/issues/53324">#53324</a>)</li> <li>See full diff in <a href="https://github.com/electron/electron/compare/v44.1.0...v44.1.1">compare view</a></li> </ul> </details> <br /> Updates `electron-chromedriver` from 44.1.0 to 44.1.1 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/electron/chromedriver/compare/v44.1.0...v44.1.1">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Supersedes #2642, which Dependabot closed and deleted while this repair was being validated.\n\nThis keeps the seven grouped dependency updates, resolves the new lint failures, rebases onto current main, upgrades Hono to 4.13.5 for both open Hono advisories, and applies the upstream-compatible adm-zip destination-symlink guard while no fixed npm release exists. A regression test covers sync, single-entry, and async extraction.\n\nValidation: full repository check (9,142 tests) and production build. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Daily automated promotion of
mainto the release-readyreleasebranch.The repository ruleset requires the full
CI Passedgate. This PR willmerge automatically when that gate is green; failures leave it open
until the underlying issue is fixed on
main.