diff --git a/doc/plans/2026-10-12-claude-runner-default.md b/doc/plans/2026-10-12-claude-runner-default.md index 94da9af7ff6..d105fcb7b35 100644 --- a/doc/plans/2026-10-12-claude-runner-default.md +++ b/doc/plans/2026-10-12-claude-runner-default.md @@ -190,3 +190,73 @@ and [cloud image build](https://github.com/paperclipai/paperclip/actions/runs/38 retain source `557c3064a30779e86e1ae312eab3d1d42c3a8b8d`. Actual pack/image identity agreement remains required. Additional Claude defaults remain gated pending clean-install and execution evidence. No local Docker or Rust build. + +## Four-target packages and SSH launch repair — 2026-10-12 + +The frozen `557c3064a30779e86e1ae312eab3d1d42c3a8b8d` four-target +campaign above completed successfully, including all daemon producers, Linux +x64 public installation, both Mac consumers, and the native Linux ARM64 +consumer. Consumer reports record clean npm installation and zero provider +calls. The raw packaging manifest's `publicInstallationVerified: false` +precedes those consumer checks; it is not rewritten as execution evidence. + +The cloud image campaign succeeded with immutable image +`ghcr.io/paperclipai/paperclip-daytona-runner@sha256:d9dbda3a9435e3e555f431bdeb0ba22e1241ae9103184e6c1646a200e26423e1`. +Independent native/image Linux x64 manifest comparison matched pack +`sha256:97f44524d1b35ed6295c922f6b52ac376960213be0a0e09a3635c281db26aecf`, +Node `sha256:7fde7b8afa198da66257f42ee2001d874c7355631e6d1579a5fb5ef1f246df4c`, +and distribution `sha256:83aafb7d6c951c1fa31c0d8bbbfd32c39b4d265b01607cd566c55c8d9b4a6143`. +The installed ARM pack is +`sha256:51fe734d79211b474ee13f53080ac60f07cdc9315ebd33b703ecf4a7dc0f8ce1`. +The new existing-consumer Claude SDK admission hook passed 22 controls and a +real installed Mac no-prompt probe. The earlier frozen campaign predates this +hook; its Intel report does not certify that new hook ran. + +The isolated preview now uses the real 557 public package with two recorded +controller overlays: the narrow existing Claude ARM setup allowlist and the +shared SSH argument repair. Normal installed daemon/package resolution stays +in use. The source is not misrepresented as an unmodified installed package. +The user-directed remaining acceptance uses the API key in `~/.secrets`; +subscription follow-up remains unverified. + +ARM attempts `5ec7bc81-8023-4b5c-84c0-1886224ac4fa` and +`ebb8a76b-60d8-4881-a6ad-e60b6604ca9c` failed before provider startup. +The first lacked a remote WSS ingress URL. Qualification now uses the existing +explicit direct-WSS transport through a private TLS relay and authenticated SSH +reverse forwarding; both endpoints bind loopback, certificate validation stays +on, and protocol authentication is unchanged. The second exposed the first +causal launch error, `sh: 7: 1: parameter not set`: the shared SSH wrapper had +flattened `sh -c`, dropping positional arguments. Failed records and unknown +accounting holds remain intact; neither failure is reported as a successful +provider turn or zero-cost accounting completion. + +Protocol `b833c609cf2da1aacb6ab29d062e23bb1865624c` preserves argv, applies +environment assignments after `exec`, and validates environment names. +Six regression controls fail before and pass after; 51 shared/Codex controls +and adapter-utils typecheck pass. The authorized cloud host passed both +execFile and stdin/spawn paths with exact literal quoted arguments and zero +provider calls. Private proof: `/private/tmp/claude-ssh-no-provider-proof.json`; +installed overlay: `/private/tmp/claude-installed-557-ssh-overlay.json`. +Module SHA256 changed from +`0b89740ef859923d3bb9cdddc09a836eab8ff9296b986eaee68700f766ea5bae` to +`a7f3ec5effa48d05a8388d77d130449dba52f3693afd8bed04c16378a7c764ae`. + +The stack incorporates latest Codex composed source +`d3916151f65ca08904bda309474a35e4c48c54fe`. The authorized source-chat owner +will lift the identical shared SSH fix into prerequisite +[PR #16028](https://github.com/paperclipai/paperclip/pull/16028) before Codex; +our retained commit will coalesce on later reconciliation. That owner coordinates +normal squash merge order. No dependent PR or production deployment is performed +by this qualification session. + +The failed fresh ARM fixture now retains its complete $1 unknown reservation +under a reduced $1 cap and remains held. A new repaired ARM fixture has a $3 +cap; original $17, candidate $9, and local acceptance $16 caps remain. +Aggregate allocated cap is $46, reserving $4 for Linux x64, within the separate +$50 ceiling. Timer heartbeats and automatic paid retries remain disabled. +Known estimates remain $1.331719, excluding unknown charges. + +[Required cloud source checks](https://github.com/paperclipai/paperclip/actions/runs/38302321706) +passed authorization and await a build worker. Current-source full checks, +latest reviews, useful remote task/follow-up pairs, additional platform defaults, +and final package qualification remain gates. No local Docker or Rust build. diff --git a/maps/agent-access-map/agents.md b/maps/agent-access-map/agents.md index 46c3ee462a2..f579d431b41 100644 --- a/maps/agent-access-map/agents.md +++ b/maps/agent-access-map/agents.md @@ -21,6 +21,12 @@ API: `present` — representative operation IDs: Agent access: `partial` — Native hire_agent; REST / CLI agent; runtime inheritance for native hires. +Creation requests can use `runner: auto | paperclip | legacy`; the server resolves +and persists execution configuration. Claude Auto selects the native ACPX profile +on qualified Apple Silicon; saved runner/model/provider overrides survive edits +and approval activation. This selection does not grant connection access or +bypass hiring authorization. Source: [runner resolver](../../server/src/services/agent-runner-selection.ts). + Policy: Agent creation/configuration uses action grants, resource policies and change consent; some controls require a board actor. diff --git a/maps/agent-access-map/runs-adapters.md b/maps/agent-access-map/runs-adapters.md index bd2f509c545..de444886a96 100644 --- a/maps/agent-access-map/runs-adapters.md +++ b/maps/agent-access-map/runs-adapters.md @@ -32,6 +32,11 @@ credentials/run context; inspect its result and applicable persistence/attributi Assert the relevant denied actor, owner, company or mode from Policy. Review the remaining operations before qualifying the whole capability. +Runner discovery exposes `supportedRunners` and `defaultRunner`; it describes +qualified selection, not successful authentication or task execution. Native +Claude retains existing account grants and company/responsible-user boundaries. +Source: [adapter discovery](../../server/src/adapters/registry.ts). + Gaps: Raw instance adapter listing requires board, while company model discovery exists for eligible agents. diff --git a/maps/feature-map/agents.md b/maps/feature-map/agents.md index 673d7c45982..4f4e05529d7 100644 --- a/maps/feature-map/agents.md +++ b/maps/feature-map/agents.md @@ -39,6 +39,14 @@ Automated: [new agent page](../../ui/src/pages/NewAgent.test.tsx) and [configura Manual: Hire an agent with a distinct name and role. Complete any required approval, reload the roster, and open its configuration. Confirm manager, adapter, and model persisted; run a small task to prove execution readiness. +For Claude Code on Apple Silicon, submit without a runner override and inspect +saved configuration: `paperclip_runner`, `provider: acpx`, `acpxAgent: claude`, +and ordinary model `claude-opus-5-5`. The Advanced runner selector can explicitly +choose Legacy. Keep explicit model/account choices and saved runners on edits. +Verify useful output and a follow-up after a controller restart; setup success +alone does not establish session continuity. Additional target defaults remain +subject to their separate qualification gates. + The current hiring wizard assigns the first hire CEO and subsequent hires General reporting to the CEO. Change manager/role afterward through supported configuration. Process/HTTP agents can be created through API/CLI but are excluded diff --git a/maps/feature-map/runs-adapters.md b/maps/feature-map/runs-adapters.md index bec86d34f2c..738e7d4eb6b 100644 --- a/maps/feature-map/runs-adapters.md +++ b/maps/feature-map/runs-adapters.md @@ -31,6 +31,10 @@ Preconditions: follow the [baseline](./README.md#before-driving-a-journey). Reco Automated: [adapter validation routes](../../server/src/__tests__/agent-adapter-validation-routes.test.ts) and [model refresh](../../server/src/__tests__/adapter-model-refresh-routes.test.ts) cover server behavior. +Claude native setup uses the existing Anthropic API-key or subscription connection +flow. Record the selected account separately from successful execution; unavailable +models/authentication and unsupported Legacy-only options must fail visibly. + Manual: Select the intended adapter and account, refresh model choices, and run its environment test. Save, reload, then execute a small task. Repeat with a deliberately unavailable account and verify the failure remains visible. ### `run-history`