## Thinking Path
> - Paperclip uses a frozen pnpm lockfile to create the same dependency
graph for each build.
> - The Claude local adapter now uses
`@agentclientprotocol/claude-agent-acp` version 0.73.0.
> - The root patch configuration contains a patch for version 0.73.0.
> - The committed lockfile did not contain the matching patch record.
> - A frozen install rejected this mismatch and stopped the master
deployment.
> - This pull request regenerates only `pnpm-lock.yaml` from the current
master manifests.
> - The change makes the frozen install valid again.
## Linked Issues or Issue Description
Refs #12730
**What happened?**
The master lockfile did not match the current patched dependency
configuration.
**Expected behavior**
The frozen install must accept the lockfile on master.
**Steps to reproduce**
1. Extract a clean archive of master.
2. Run `NODE_ENV=development CI=true pnpm install --frozen-lockfile
--force`.
3. Observe that pnpm rejects the stale lockfile.
**Paperclip version or commit**
`b1f4910ee57789c7045705a38c31ca34704f3575`
**Deployment mode**
Self-hosted server.
**Installation method**
Built from source with pnpm.
## What Changed
- Added the patch record for
`@agentclientprotocol/claude-agent-acp@0.73.0`.
- Updated the Claude local adapter lock entry to version 0.73.0.
- Added the matching transitive Claude agent SDK lock entries.
## Verification
- `git diff --check` passes.
- A clean archive of commit `236767cdd1832575fe93ea50f50df2890fb2bf1f`
accepts the frozen lockfile.
- `NODE_ENV=development CI=true pnpm install --frozen-lockfile --force`
completes with exit code 0 in that archive.
- Latest-head GitHub checks are green (32/32 success, neutral, or
skipped).
- Greptile passed the same head at 5/5 with zero unresolved threads.
## Risks
- Risk is low because pnpm generated the only changed file.
- The lockfile now records the dependency version that the manifests
already require.
## Model Used
OpenAI Codex with a GPT-5 family model produced this change. The runtime
does not expose the exact deployment ID or context size. The model used
high reasoning and shell 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 the available 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 linked the related public pull request with `Refs #`
- [x] I have not referenced internal or instance-local Paperclip issues
or links
- [x] My branch name describes the change and contains no internal
Paperclip ticket id
- [x] I have run the required local verification and it passes
- [x] Tests do not need source changes for this generated lockfile
correction
- [x] Documentation does not need changes because behavior and commands
are unchanged
- [x] I have considered and documented the risks above
- [x] All Paperclip CI gates are green
- [x] Greptile has no open P2 findings, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before merge
Co-authored-by: lockfile-bot <lockfile-bot@users.noreply.github.com>
Co-authored-by: Paperclip <noreply@paperclip.ing>
## 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>