Commit Graph

4199 Commits

Author SHA1 Message Date
Dotta 571ce024bf chore(runner): refresh verified provider lock 2026-09-03 05:44:48 -05:00
Dotta 93f82b6b2e fix(runner): admit recovered ACPX provider ownership 2026-09-03 05:43:19 -05:00
Dotta 65c204f060 fix(runner): keep stopped provider checkpoint closed 2026-09-03 05:27:04 -05:00
Dotta a55b6e6409 fix(runner): detect active ACPX turns on close 2026-09-03 05:20:03 -05:00
Dotta a418938524 test(runner): await active suspension state 2026-09-03 05:11:55 -05:00
Dotta 2cf19a8de0 fix(runner): settle parked provider before suspend 2026-09-03 05:04:41 -05:00
Dotta f810246e8b test(runner): allow formatted patch keys 2026-09-03 04:54:27 -05:00
Dotta c0af2eb0e0 fix(runner): reuse qualified provider Node 2026-09-03 04:48:12 -05:00
Dotta ac2b98eea8 fix(runner): settle provider turn before suspend 2026-09-03 04:41:50 -05:00
Dotta fb40d8a307 fix(runner): remove provider pack install hook 2026-09-03 04:39:09 -05:00
Dotta 43558e7783 fix(runner): replay durable attachment outcome 2026-09-03 04:23:40 -05:00
Dotta 620bb16f3b fix(runner): restore ACPX run attachment 2026-09-03 03:55:06 -05:00
Dotta c284b092b7 Revert "build(runner): lock qualified provider runtimes"
This reverts commit 04843cce97.
2026-09-03 03:42:35 -05:00
Dotta 04843cce97 build(runner): lock qualified provider runtimes 2026-09-03 03:41:45 -05:00
Dotta 6e9bb95202 fix(runner): prove original ACPX provider exit 2026-09-03 03:38:16 -05:00
Dotta 848b8296d0 fix(runner): bind provider model before terminal 2026-09-03 03:27:49 -05:00
Dotta 7462d142dd Merge remote-tracking branch 'origin/master' into fix/runner-paid-matrix-integrity
* origin/master:
  fix(runner): retain aborted admission cleanup (#12755)

# Conflicts:
#	packages/paperclip-runner/src/drivers/acpx/runtime-host.test.ts
2026-09-03 03:26:17 -05:00
Dotta f1d9206c4a
fix(runner): retain aborted admission cleanup (#12755)
## Thinking Path

> - Paperclip manages AI agents and their work.
> - The runner starts ACPX sessions and controls their resources.
> - An aborted admission can leave sandbox preparation active after the
opening promise rejects.
> - Test teardown can then remove the sandbox directory before that work
ends.
> - This pull request retains and observes each unfinished admission
stage.
> - The change gives runtime resources and temporary directories one
deterministic cleanup owner.

## Linked Issues or Issue Description

**What happened?**

Under full test load, an aborted admission test can end before sandbox
preparation settles. Test teardown then removes the temporary session
directory. The active preparation can report an unhandled `ENOENT`
error.

**Expected behavior**

An aborted admission must observe and retain all active preparation
work. Test teardown must wait until that work settles.

**Steps to reproduce**

1. Run the complete `@paperclipai/paperclip-runner` test suite under CI
load.
2. Abort runtime admission during credential or sandbox preparation.
3. Observe an intermittent test timeout or an unhandled
missing-directory error.

**Paperclip version or commit**

The failure occurred on a branch based on commit `b1f4910ee`. This fix
is based on current `master` commit `4d30efa8e`.

**Deployment mode**

The failure occurred in GitHub Actions on a source build.

## What Changed

- Retain each unfinished abortable admission stage in the global
runtime-host cleanup set.
- Notify the embedding lifecycle when an aborted stage needs deferred
cleanup.
- Make test teardown abort and await all active opening and cleanup
promises before directory removal.
- Replace time-based stage detection with exact deferred stage signals.
- Add a deterministic regression test for an abort during sandbox
preparation.

## Verification

- Ran the focused runtime-host file in 20 separate processes. All 20
runs passed without an unhandled error.
- Ran `pnpm --filter @paperclipai/paperclip-runner exec vitest run
src/drivers/acpx/runtime-host.test.ts` after the rebase. All 27 tests
passed.
- Ran `pnpm --filter @paperclipai/paperclip-runner check:all` after the
rebase. The full command passed.
- The final TypeScript test stage passed 127 files and 1,490 tests. All
Rust checks, tests, and parity checks passed.
- Greptile reviewed two heads. The final review is 5/5 with no open
comments.
- All latest-head CI and security checks passed. One unrelated workspace
test passed on its permitted rerun.

## Risks

- Risk is low. An aborted stage now delays final runtime-host cleanup
until its active operation settles.
- A stage that never settles can delay embedding shutdown. The existing
stage operations have bounded or controlled owners.
- The regression test holds sandbox preparation and confirms the new
cleanup order.

> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.

## Model Used

OpenAI Codex with GPT-5 assisted this change. The environment did not
provide the exact deployment ID or context size. The model used
reasoning, shell tools, code editing, and test execution.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-03 03:20:54 -05:00
Dotta 1f5e252238 docs(runner): clarify qualified model boundary 2026-09-03 03:17:48 -05:00
Dotta cbfb4f1bef fix(runner): select qualified ACP model alias 2026-09-03 03:17:13 -05:00
Dotta f5af8b2482 fix(runner): mirror qualified Claude runtime 2026-09-03 03:09:50 -05:00
Dotta a44cae61e1 ci(runner): retry Chromium installation 2026-09-03 03:08:31 -05:00
Dotta 9cad01d1cf fix(runner): prove ACPX replacement cleanup 2026-09-03 03:07:47 -05:00
Dotta ff4c29af92 fix(runner): retain qualified runtime target 2026-09-03 03:00:27 -05:00
Dotta 65692699cb Revert "ci(runner): move paid matrix to AWS fleet"
This reverts commit cfa4e2fbac.
2026-09-03 02:58:48 -05:00
Dotta cb9f13e6df Merge branch 'master' of https://github.com/paperclipai/paperclip into fix/runner-paid-matrix-integrity
* 'master' of https://github.com/paperclipai/paperclip:
  feat(ui): refine streamlined task experience (#12748)
  feat(ui): refine streamlined workspace surfaces (#12747)
  feat(ui): add streamlined navigation foundation (#12746)
2026-09-03 02:56:24 -05:00
Dotta e9f6a8ae3c fix(runner): pin Claude native runtime 2026-09-03 02:55:40 -05:00
Dotta cfa4e2fbac ci(runner): move paid matrix to AWS fleet 2026-09-03 02:52:14 -05:00
Dotta 40830f61e8 fix(runner): resolve exported ACP package manifests 2026-09-03 02:52:10 -05:00
Dotta d8ab1f0f3b fix(runner): qualify Claude ACP dependencies 2026-09-03 02:48:39 -05:00
Dotta 3a615a4743 test(runner): bound ACPX admission wait on CI 2026-09-03 02:39:50 -05:00
Dotta 439419debb test(runner): emit terminal text before finish 2026-09-03 02:32:37 -05:00
scotttong 4d30efa8e3
feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
Dotta c7731dc7dc fix(runner): align Codex ACPX admission digest 2026-09-03 02:20:11 -05:00
Dotta a9c5d81af6 fix(runner): align patched ACPX profile identity 2026-09-03 02:11:42 -05:00
Dotta edc5f3bc3e fix(runner): keep provider assets out of host resolution 2026-09-03 02:05:22 -05:00
scotttong b1f4910ee5
feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
scotttong 597fd63b61
feat(ui): add streamlined navigation foundation (#12746) 2026-09-02 23:55:43 -07:00
Dotta 2abaf1f3ad fix(runner): separate Codex approvals from questions 2026-09-03 01:53:21 -05:00
Dotta 6d199c4c61 test(runner): spell out terminal result fixture 2026-09-03 01:51:54 -05:00
Dotta 60c0c57638 chore(deps): leave lock refresh to PR policy 2026-09-03 01:49:55 -05:00
Dotta 3be5f48053 fix(runner): preserve OpenCode terminal results 2026-09-03 01:49:00 -05:00
Dotta 3d8720c16f fix(runner): restore rooted ACPX package resolution 2026-09-03 01:45:52 -05:00
Dotta 6f0614ec74 fix(runner): restore providers before terminal cleanup 2026-09-03 01:10:06 -05:00
Dotta 0485678d17 fix(runner): close provider launch trust gaps 2026-09-03 00:59:12 -05:00
Dotta 1cbd8ae541 fix(runner): align Codex ACPX auth isolation 2026-09-03 00:48:38 -05:00
Dotta b546d40322 chore(deps): leave lock refresh to PR policy 2026-09-03 00:20:44 -05:00
Dotta 34e52d370b fix(runner): isolate ACPX Codex shell state 2026-09-03 00:19:52 -05:00
Dotta 79daaaf9e0 fix(deps): restore Claude ACP lock entry 2026-09-03 00:18:59 -05:00
Dotta 5e3a9b50d9 test(runner): acknowledge terminal result delivery 2026-09-03 00:01:17 -05:00