mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-29 12:59:13 +01:00
<!-- entire-trail-link-start --> https://entire.com/gh/paperclipai/-/trails/207/changes/paperclip/207 <!-- entire-trail-link-end --> ## Thinking Path > - Paperclip manages AI agents and their work. > - The native Runner prepares selected skills, instructions, and provider storage. > - Repeated preparation imports the company skill inventory and rebuilds Claude storage. > - Execution environments can already maintain prepared resources. > - This pull request lets them reuse account storage while Core keeps execution policy. > - New retry runs resolve current skills and keep the failed attempt's history. ## Linked Issues or Issue Description **What existing behavior does this improve?** Native Runner preparation and retry skill selection. **Current behavior** Explicit installed selections still trigger company inventory reconciliation. Plugin preparation receives account identity only on warm transitions. Claude's isolated mode requires a session-specific configuration directory. **Proposed behavior** Skip inventory imports when explicit selections are installed, while retaining current authorization and version resolution. Send account identity on initial preparation. Allow an execution environment to provide persistent Claude storage without enabling preconfigured permission behavior. A new retry resolves current skill assignments. **Reason and benefit** Remove repeated preparation work without adding environment-specific policy to Core. Related: #13984 describes a similar storage-lifetime problem in the separate claude_local adapter; this PR does not change that adapter. ## What Changed - Derive Claude’s configuration path from the single authoritative prepared-storage input; separately supplied CLAUDE_CONFIG_DIR values are overridden. - Add an explicit prepared Claude storage binding, forward it to the sidecar, and retain recovery and provider lifetime fencing. - Refresh Core-owned Claude settings after acquiring the lifetime lease. Reuse environment-prepared skills. - Reuse installed explicit skill selections and preserve missing-selection initialization and current access checks. - Reserve the prepared-home marker for environment provisioning; task overrides are rejected and configured bindings are stripped before native launch. - Clear inherited skill selection snapshots on new retries. Keep admitted execution recovery and failed attempt metadata. ## Verification - Current single-input follow-up `8dbc2f6ec`: 154 focused Runner checks pass with one existing skip; four Grok identity checks and four Pi packaged-probe checks pass. Shared immutable source identities advance to Grok10/Pi32/Copilot74. All56 current-head CI checks pass (four intentionally skipped); standard and enhanced reviews are both5/5 with no unresolved threads. - Focused Runner sandbox tests: 29 passed. Focused environment tests: 16 passed. - company-skills-empty-runtime: 10 passed. - Plugin Runner and runtime selection database tests were attempted. Local execution is blocked because embedded PostgreSQL cannot load libzstd.1.dylib; these checks remain for CI. - New database regressions cover installed-selection reuse, initial account preparation, and retry snapshot removal. - Prepared-home trust-boundary regressions: 4 targeted checks passed (task schema, all env binding scopes, native executor). - Focused Pi public-install probe checks: 4 passed. The build smoke probe now asserts the current Pi 32 profile and exact digest. - CI found and fixed retry-context TypeScript inference, stale Pi identity fixtures, Docker source identity inputs, and the skill-observability test’s old assumption that every selection imports inventory. Cold and reused selection coverage remain. - CI chat shard 2 initially failed three GitHub/Discord idle-database assertions. An unchanged-head rerun passed; the original cause remains unexplained. - Runtime head `f5b53679a` passes all 56 current CI checks (four jobs intentionally skipped), including the full build/public-install probe, TypeScript, Rust, Runner and server matrices. Greptile is 5/5 with no unresolved review threads. - The requested enhanced review scored 5/5 on `f5b53679a`, with one nonblocking documentation request. Documentation follow-up `1ac5d26a8` adds only the documented existing ownership/0700 requirement; the thread is resolved and all 56 current-head checks pass (four intentionally skipped). The subsequent single-input runtime follow-up8dbc2f6ec repeated the complete CI → standard5/5 → enhanced5/5 cycle successfully. - Broader verification is delegated to GitHub CI as requested. The initial policy check rejected a generated lockfile repair; that change was removed because Core CI already resolves stale importer entries. ## Risks Prepared storage must be provisioned by the execution environment before launch. It is not credential isolation. Core replaces managed Claude settings under the existing provider lease. No new per-run harness homes are created by this option. New retries may select a newer skill version; recovery of an already admitted provider execution keeps its saved input. ## Model Used OpenAI Codex, GPT-6 family, with reasoning and tool use. The exact model revision is not exposed in this session. ## 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 related context above - [x] I have described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links - [x] My branch name describes the change - [x] I have run focused local tests; database and full verification remain for CI as explained above - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation - [x] I have considered and documented risks - [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>
65 lines
2.6 KiB
Plaintext
65 lines
2.6 KiB
Plaintext
.git
|
|
.github
|
|
.paperclip
|
|
.pnpm-store
|
|
node_modules
|
|
**/node_modules
|
|
coverage
|
|
data
|
|
tmp
|
|
*.log
|
|
packages/paperclip-runner/dist
|
|
packages/paperclip-runner/runner/target
|
|
packages/paperclip-runner/devtools
|
|
packages/paperclip-runner/docs
|
|
packages/paperclip-runner/examples
|
|
packages/paperclip-runner/test
|
|
packages/paperclip-runner/test-fixtures
|
|
packages/paperclip-runner/test-support
|
|
packages/paperclip-runner/**/*.md
|
|
packages/paperclip-runner/**/*.spec.ts
|
|
packages/paperclip-runner/**/*.spec.tsx
|
|
packages/paperclip-runner/**/*.test.cjs
|
|
packages/paperclip-runner/**/*.test.cts
|
|
packages/paperclip-runner/**/*.test.js
|
|
packages/paperclip-runner/**/*.test.jsx
|
|
packages/paperclip-runner/**/*.test.mjs
|
|
packages/paperclip-runner/**/*.test.mts
|
|
packages/paperclip-runner/**/*.test.ts
|
|
packages/paperclip-runner/**/*.test.tsx
|
|
packages/paperclip-runner/runner/crates/*/tests
|
|
packages/paperclip-runner/scripts/*-smoke.mjs
|
|
# Exceptions (last match wins): the image build re-runs the runner's
|
|
# generated-file drift checks, so their committed outputs and inputs must
|
|
# survive the slimming above. 2026-09-04: the *.md rule stripped the
|
|
# committed capability contract out of the context and every image build
|
|
# on master failed its drift check — .github/docker-context-checks.Dockerfile
|
|
# now guards this in PR CI.
|
|
!packages/paperclip-runner/generated/**
|
|
# ACPX generation verifies these immutable release attestations as build inputs.
|
|
# Keep current declarations and historical identities while excluding other development fixtures.
|
|
!packages/paperclip-runner/test
|
|
packages/paperclip-runner/test/**
|
|
!packages/paperclip-runner/test/fixtures
|
|
packages/paperclip-runner/test/fixtures/**
|
|
!packages/paperclip-runner/test/fixtures/*-profile-v*-identity.json
|
|
!packages/paperclip-runner/test-fixtures
|
|
packages/paperclip-runner/test-fixtures/**
|
|
!packages/paperclip-runner/test-fixtures/pi-acp
|
|
packages/paperclip-runner/test-fixtures/pi-acp/**
|
|
!packages/paperclip-runner/test-fixtures/pi-acp/profile-v*-identity.json
|
|
!packages/paperclip-runner/docs/capability-contract.md
|
|
# check:runner-workflow-traceability access()es every regression test the
|
|
# stress-traceability spec names — those are src/**/*.test.ts files, so
|
|
# they must survive the *.test.ts rule above.
|
|
!packages/paperclip-runner/src/**/*.test.ts
|
|
!packages/paperclip-runner/src/**/*.test.tsx
|
|
|
|
packages/grok-acp/bin
|
|
|
|
# The Copilot build-time identity gate reads these sanitized source declarations.
|
|
# Grok's source identity is also an input to the image profile drift check.
|
|
# Images build their pinned Copilot assets instead of copying host binaries.
|
|
/packages/paperclip-runner/provider-assets/
|
|
/server/provider-assets/
|