Skip to content

Promote main to release - #2648

Merged
copse-release-bot[bot] merged 43 commits into
releasefrom
main
Sep 10, 2026
Merged

Promote main to release#2648
copse-release-bot[bot] merged 43 commits into
releasefrom
main

Conversation

@copse-release-bot

Copy link
Copy Markdown
Contributor

Daily automated promotion of main to the release-ready release branch.

The repository ruleset requires the full CI Passed gate. This PR will
merge automatically when that gate is green; failures leave it open
until the underlying issue is fixed on main.

claude and others added 30 commits September 9, 2026 04:03
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
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
jonathanKingston and others added 13 commits September 10, 2026 00:29
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>
@copse-release-bot
copse-release-bot Bot merged commit c505f86 into release Sep 10, 2026
42 of 43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants