Commit Graph
141 Commits
Author SHA1 Message Date
DottaandPaperclip 986f8cc534 Verify Cursor child usage lifecycle and fence profile v9
Mark missing and invalid child run ordinals as partial observations. Exercise the pinned vendor child construction and reuse methods on all three platforms and regenerate the Cursor-only execution identity.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 05:33:44 -05:00
DottaandPaperclip e95e28d9c8 Preserve partial Cursor native usage diagnostics and version ACP profiles
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 05:12:44 -05:00
DottaandPaperclip 654ec2a9cc Fix Copilot materialization rollback and cover replay identity
Roll back only files and directories created by a failed materialization. Cover partial writes, retry, foreign entries, and session replay isolation. Refresh the Copilot v7 source binding.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 02:55:29 -05:00
DottaandPaperclip 913f374191 Preserve native Copilot assistant message identities
Verify and extract the pinned Copilot distribution, preserve native message IDs on the ordered ACP stream, and bind the guarded distribution to profile v7. Keep interim messages separate from final output.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 02:55:29 -05:00
DottaandPaperclip 770dc88a11 Bind Cursor plan waits to the native tool lifecycle
Carry the admitted native plan parent tool into canonical request identity and require its exact successful durable lifecycle before passive settlement. Preserve historical committed Cursor6 waits while versioning new admission to Cursor7.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 01:56:28 -05:00
DottaandPaperclip 8b6136bf66 test(runner): align native selector fixture with Pi profile v9
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 21:40:17 -05:00
DottaandPaperclip 285073afe0 fix(runner): settle ACPX cancellation after verified retirement
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 21:40:17 -05:00
DottaandPaperclip baf70bf186 Refresh Pi backend test fixture to current candidate identity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 17:18:14 -05:00
DottaandPaperclip 633ce41aa7 fix(runner): admit the exact Pi profile 8 native identity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:30:28 -05:00
DottaandPaperclip a97b626081 fix(runner): preserve Pi native assistant boundaries and notices
Pin Pi profile 8 to native message provenance, preserve explicit empty starts and ends, and keep replay/history and native notices out of final assistant aggregation. Validate fresh, warm and loaded SDK sessions and exact native closure bytes.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:30:28 -05:00
DottaandPaperclip 5013666821 fix(runner): bind Cursor mode across Rust session recovery
Require explicit Cursor modes, preserve them through open and checkpoints, and reject mode drift. Bind the current Cursor v5 identity while rejecting historical v4.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:24:09 -05:00
DottaandPaperclip c73e26107f fix(copilot): bind profile v5 to the final ACPX patch
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:13:35 -05:00
DottaandPaperclip 482471f0c1 Merge reviewed shared ACP input and continuation fixes
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/runner-acp-inputs:
  fix(runner): refresh settled ACPX run grants during authenticated attachment
  fix(runner): align editable draft bounds with Unicode schema lengths
  fix(ui): preserve canonical drafts in classic question cards
  Keep the legacy question fixture payload type-safe
2026-09-29 12:40:14 -05:00
DottaandPaperclip 3a12ec4bef fix(runner): refresh settled ACPX run grants during authenticated attachment
Keep provider, session and semantic runtime context identities immutable while allowing registered per-run roots, MCP binding and current instructions to refresh on a new authenticated run. Reject same-run mutations and retain settlement gates with safe diagnostic reasons.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:39:25 -05:00
DottaandPaperclip 4f9506072c fix(runner): align editable draft bounds with Unicode schema lengths
Count initialText Unicode code points consistently in TypeScript, Zod, JSON Schema and Rust. Keep submitted-answer UTF-16 limits unchanged, with mixed BMP and astral boundary tests inside the wire byte cap.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:39:25 -05:00
DottaandPaperclip 0121d05458 fix(runner): refresh settled ACPX run grants during authenticated attachment
Keep provider, session and semantic runtime context identities immutable while allowing registered per-run roots, MCP binding and current instructions to refresh on a new authenticated run. Reject same-run mutations and retain settlement gates with safe diagnostic reasons.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:31:28 -05:00
DottaandPaperclip 7bd453d33d Integrate Pi v7 native tool and input contracts
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* commit '72ded1794':
  test(runner): distinguish Pi blank transport from form support
  fix(runner): admit Pi MCP names and bound native questions
2026-09-29 12:13:58 -05:00
DottaandPaperclip c5a4714add feat(runner): preserve editable question defaults through explicit response
Carry bounded text-only initialText through ACP normalization, Rust durable validation, shared contracts and the question UI. Saved edits and explicit clears survive reload. Preserve canonical submitted text while retaining legacy custom-answer normalization and existing validation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:07:19 -05:00
DottaandPaperclip 012aa52c77 feat(runner): preserve editable question defaults through explicit response
Carry bounded text-only initialText through ACP normalization, Rust durable validation, shared contracts and the question UI. Saved edits and explicit clears survive reload. Preserve canonical submitted text while retaining legacy custom-answer normalization and existing validation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:06:48 -05:00
DottaandPaperclip bb00c85b69 fix(runner): admit Pi MCP names and bound native questions
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 12:00:42 -05:00
DottaandPaperclip 23614d28c8 merge: integrate reviewed Copilot and Cursor runtime repairs into Pi
Preserve Pi v6 and bounded startup pools, admit current Cursor and Copilot v4 identities, and combine additive Product flows and catalog assertions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:33:28 -05:00
DottaandPaperclip 95dfde7c5c Merge current Cursor ACP runtime into Copilot v4
Preserve both profile-specific guards and complete terminal diagnostics; bind Copilot v4 to the regenerated ACPX patch.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:28:38 -05:00
DottaandPaperclip 62e642590f Bind Cursor instructions to native rules and gate every ACP connection
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:24:48 -05:00
DottaandPaperclip 2ff6a8efea fix(copilot): refresh instructions under provider lifetime ownership
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:17:22 -05:00
DottaandPaperclip 0f33a9080a fix(copilot): deliver native instructions with v4 session identity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 11:12:26 -05:00
DottaandPaperclip edf14a067e Admit the verified Pi v6 identity in Rust
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:10:36 -05:00
Dotta 6766b9128e Merge branch 'codex/runner-copilot-acp' into codex/runner-pi-acp
* codex/runner-copilot-acp:
  Admit the verified Copilot v3 identity in Rust
  Admit the verified Cursor v3 identity in Rust
  Admit current ACP profiles and verify cross-language pin agreement
  Follow current Copilot profile identity in native installation admission
  Preserve authoritative Copilot guard errors for pending ACP requests
  Preserve Copilot policy rejection codes across sidecar transport
  Bind Copilot v3 identity to native detached-work admission
  Deny native Copilot detached work before permission dispatch
  Prove Cursor SDK interactions and retain profile v3 build evidence
  Bind Daytona image identity to Cursor isolation patch
  Retain Copilot detached-command early completion regression
  Prove Copilot permission recovery after provider death without replay

# Conflicts:
#	packages/paperclip-runner/src/drivers/acpx/qualified-profiles.ts
2026-09-29 10:10:17 -05:00
DottaandPaperclip 3d0c45920c Admit the verified Copilot v3 identity in Rust
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:09:15 -05:00
DottaandPaperclip 70d9fc4bee Admit the verified Cursor v3 identity in Rust
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:08:55 -05:00
Dotta 550801f956 Merge branch 'codex/runner-cursor-acp' into codex/runner-copilot-acp
* codex/runner-cursor-acp:
  Admit the verified Cursor v3 identity in Rust
  Admit current ACP profiles and verify cross-language pin agreement
  Prove Cursor SDK interactions and retain profile v3 build evidence
2026-09-29 10:08:55 -05:00
DottaandPaperclip 7668cd822d Preserve Copilot policy rejection codes across sidecar transport
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 10:00:20 -05:00
DottaandPaperclip 5df684f182 Integrate final rich ACP foundation for production qualification
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/runner-copilot-acp:
  fix(runner): stop settlement publication after persistence failure
  feat(agents): persist agent files across tasks without revision history (#14420)
  test(runner): synchronize recovered ACP fixture cleanup
  fix(runner): persist ACP response settlement across crashes
  feat(storage): add plain directory sync with conflict preflight (#14416)
  fix: retry sandbox ACP input delivery after gateway failures (#14485)
  fix: retain project defaults in partial workspace overrides (#14502)
  test: control Telegram subscription retry timing (#14501)
  fix: retain diagnostic reasons for native runner failures (#14481)
  fix: prevent run identity locks from blocking audit checks (#14478)
  fix: preserve company context across browser hot reload (#14482)
  feat(ui): improve task composer controls and pending input (#14322)
  Improve task artifacts with rich cards and editable stories (#14469)
2026-09-29 09:33:14 -05:00
DottaandPaperclip 9b3c53923c fix(runner): stop settlement publication after persistence failure
Publish staged ACP resolutions only after their atomic state write succeeds. Latch persistence failures across commands, polls, retained event drains and acknowledgements; stop owned processes without overwriting uncertain snapshots. Cover failed rename and post-rename writes, mixed requests, acknowledgement failure and indeterminate command replay.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:27:09 -05:00
DottaandPaperclip 2bf24873d9 test(runner): synchronize recovered ACP fixture cleanup
Parallel fake sidecars share lifetime-fence ports. Bound cleanup retries to the exact quorum rejection and assert the persisted uncertainty flag before and after proof. Preserve every crash, settlement, and no-replay assertion.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:18:03 -05:00
DottaandPaperclip 060099f7b8 fix(runner): persist ACP response settlement across crashes
Record successful response delivery in the durable provider outbox before retiring the pending request. Preserve settlement across restart without replaying provider responses. Disable automatic issue lookups in provider decision documents.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 08:03:38 -05:00
DottaandPaperclip aec26ad83f fix(runner): pin patched Undici and Node in Pi profile v5
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 17:33:50 -05:00
DottaandPaperclip ff2cacc757 test(runner): refresh the Pi native backend profile fixture
Match the verified v4 Pi command digest in native provider selector and recovery coverage.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 17:09:17 -05:00
DottaandPaperclip a05c4ee3b0 fix(runner): scope Pi tool identities to native model iterations
Preserve exact delivery retries while separating reused native IDs across warm prompts. Add pinned SDK ordering, real semantic bridge, lifecycle and history regressions, and bump the verified Pi profile to v4.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 17:09:12 -05:00
DottaandPaperclip e35b11db21 Integrate MCP write-boundary repair for real Pi plan qualification
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/runner-copilot-acp:
  Preserve MCP tool display identity in native ACP events
2026-09-28 16:37:51 -05:00
DottaandPaperclip 5aa02662b3 Preserve MCP tool display identity in native ACP events
Parse ACP MCP namespace and tool names consistently with the TypeScript projection so persisted plan writes anchor to their actual tool boundary. Keep authority and raw argument handling unchanged.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 16:34:34 -05:00
DottaandPaperclip 06cf356a8b Preserve Pi validation failures and structured Bash output
Bump the immutable Pi profile to version 3 and reject prior warm snapshots. Bound and redact authenticated MCP validation errors while retaining failure status; preserve standard ACP tool values alongside terminal metadata.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 16:10:15 -05:00
DottaandPaperclip 6a5170b704 Use the Pi v2 identity in native control fixtures
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:14:57 -05:00
DottaandPaperclip e65b828648 Satisfy Pi distribution policy and refresh candidate fixtures
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:14:57 -05:00
DottaandPaperclip 89644566f6 Admit explicitly assigned Pi HTTPS tool gateways
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:14:57 -05:00
DottaandPaperclip 3c314413be Report Pi retry failure without claiming execution resumes
The actual patched wrapper now distinguishes successful, failed, and missing retry outcomes. Regressions fail on the previous wrapper and preserve terminal provider failure. Regenerate the wrapper, target closure and profile pins; the previous pack evidence remains historical until rebuilt after the foundation rebase.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:14:57 -05:00
DottaandPaperclip 60294a71ac Account pinned Pi compaction receipts and progress
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:14:57 -05:00
DottaandPaperclip 4b20957878 Merge public Grok packaging while preserving ACP candidate boundaries
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 15:03:59 -05:00
DottaandPaperclip c3b7e9ecd0 Merge explicit task context ownership while preserving candidate eval lanes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 14:55:20 -05:00
DottaandPaperclip 18e8c121d9 fix(runner): include Grok support in public installs with sandbox prerequisites (#14024)
## Thinking Path

> - Paperclip manages agents through a shared native runner.
> - Built-in harness support should ship with Paperclip's public
distribution.
> - Grok already speaks ACP; it does not require a new public bridge
package.
> - Sandbox provisioning owns the native executable and its pinned
version.
> - The runner must verify that prerequisite without downloading it
during npm installation.
> - This change separates built-in launcher identity from external
runtime identity.
> - Clean npm installation and live staging checks verify the
distribution boundary.

## Linked Issues or Issue Description

Refs #13882, #13973, #13977, #13979.

This follow-up now targets master after #13882 was squash-merged. It
replaces the private `@paperclipai/grok-acp` workspace package with
runner-owned assets. Current master is included so the branch also
contains the merged scheduler, complete-event capture, and durable
cleanup fixes.

## What Changed

- Ship Grok launcher and qualification metadata inside the runner's
compiled output and the public server's vendored runner tree.
- Remove the separate Grok npm package and all package-manager install
hooks for this runtime.
- Require the checksum-verified Grok Build 1.0.13 binary at
`/opt/paperclip/providers/grok/1.0.13/grok` in the selected execution
environment. Provision it explicitly in the Daytona image and CI setup.
- Keep native binaries outside the provider pack. Bind the built-in
launcher into the pack manifest.
- Preserve executable leases, descriptor-backed startup, credential
fences, permissions, and exact ACP model admission.
- Use `builtin:grok-acp` and `native:grok` as profile identities.
Historical package-profile sessions fail closed on resume rather than
being silently reinterpreted.
- Resolve built-in assets from the authenticated sidecar location,
including public server npm layouts. Keep the controller path out of
provider environments.
- Add clean npm tarball installation verification to the existing
trusted canary CI job and the admitted manual EC2 verification path. It
stages a unified release version and runs npm lifecycle scripts, then
verifies missing-prerequisite rejection and admission after separate
provisioning without credentials or inference.
- Include the controller-owned provider pack in stamped Cloud images.
Unstamped local images omit the pack and remain usable; remote ACPX
requires full source provenance.
- Correct CLI approval-page metadata for an already authenticated Cloud
board user; approval authorization remains unchanged.
- Honor explicit native-runner enablement in the Cloud agent picker and
direct setup page, keeping the flag disabled by default.
- Allow selecting the execution environment before connecting
credentials. Include Grok in the existing authenticated hello-probe
flow, targeting its pinned native prerequisite for runner setup.
- Recover an existing subscription sign-in conflict through an explicit
cancel-and-retry action, serialized after cancellation succeeds.
- Preserve the selected ACPX harness before normalizing config fields,
so new Grok agents use the Grok default model.
- Keep the credential-free Cloud provider pack root-owned and readable
after runtime UID remapping; verify manifest and referenced asset access
under an unrelated unprivileged UID during image builds.
- Archive prior failover backups alongside explicitly replaced harness
state, preserving evidence while preventing stale backups from blocking
a fresh replacement.
- Update Daytona image content inputs and contract tests for the
built-in assets and explicit provisioner.
- Document and regression-test the shared `approve-all` default for Grok
setup, saved configuration, and native execution. Explicitly saved
restrictions remain unchanged.

## Verification

Current merge-repair head `df09eb3e1a619430ad8419a0ee9aedd486689b05`
incorporates master `f1a394bd30cb56fb9e479f98b9f50176fe921858` after the
base PR was squash-merged. All 12 conflicts came from incoming files
identical to the tested pre-squash base. The final tree exactly matches
a three-way merge using that original base, preserving built-in Grok
distribution and removal of the obsolete private package. All 252
focused runner/UI tests, six npm-isolation tests, and token gates pass.
Fresh exact-head Greptile review is 5/5 with no outstanding findings;
security scans and EC2 native compilation pass. All current-head CI is
green: 56 successful checks/statuses and four intentional skips ([run
36468768035](https://github.com/paperclipai/paperclip/actions/runs/36468768035)).
The repository owner explicitly authorized bypassing code-owner approval
after all checks passed; no CI checks or repository protection settings
are bypassed or changed. The only remaining PR was removed from the
completed stack metadata to permit native auto-merge.

Earlier integration head `78cb306ecc41b5c96577c26c1d89153b0ef865a1`
includes master `3447609d2247e75e55d91493dda91a608364f672` (2026-09-28).
Two master advances during verification overlapped the eval catalog; the
final merge preserves Grok qualification, completion updates, and
bounded API-response reading in all 348 cells. All 77 focused
catalog/eval/workflow tests pass. Both native stack layers (#14397) are
mergeable, and both exact-head Greptile reviews are 5/5 with successful
security scans and no unresolved review threads. All current-head CI is
green: 56 successful checks/statuses and four intentional skips ([CI
attempts](https://github.com/paperclipai/paperclip/actions/runs/36447124691)).
The initial attempt lost two EC2 runners to shutdown signals and stalled
a third shard during dependency preparation; all three passed the
same-commit failed-job-only retry. Trunk code-owner requirements remain
enforced. The review summary’s non-blocking saved-asset offset
classification note concerns code already merged in #14301; those
runtime files are identical to master and outside this stack’s diff.
Historical live evidence below retains its original source revisions.
[Final public npm
verification](https://github.com/paperclipai/paperclip/actions/runs/36445542764)
passed on `76ea70cd4d13786a042af9df82f0fd7a8c85ae30`: 17 public
packages, an executed offline lifecycle sentinel, unchanged consumer
lock, built-in launcher, missing-prerequisite rejection, and verified
separately provisioned binary/command lease. Provisioning and cleanup
require no host privilege elevation; only the positive probe mounts the
temporary native binary read-only. The verifier is unchanged by the
final master merge. All six isolation tests and an offline npm smoke
test pass. The prior head had 56 green CI checks and a 5/5 review after
two unchanged tests timed out and passed a failed-job-only retry ([CI
attempts](https://github.com/paperclipai/paperclip/actions/runs/36444597313)).
All 56 recovery-display/lineage tests pass; re-review cleared the
already-covered missed-retry concern. Earlier EC2 failures remain
retained: [npm lockfile
rejection](https://github.com/paperclipai/paperclip/actions/runs/36436311203),
[missing compiler in the slim
image](https://github.com/paperclipai/paperclip/actions/runs/36440210984),
and the aggregate 15-minute test timeouts in those broad runs. Both
broad attempts passed typecheck, token gates, Product E2E type/unit
checks and build. The focused EC2 lane preserves the existing
trusted-actor and immutable-source gates.


Earlier documentation/test checkpoint
`ff244c4fd78a7ede5a3e00efe09f475f133ef33e` leaves runtime behavior
unchanged. 154 focused tests pass across configuration building, native
provider resolution, permission policy, credentials, UI configuration,
and new-agent setup (including both Grok auth modes); token gates pass.
All fresh CI is green for this head: 56 successful checks/statuses and
two intentional skips ([run
36367065119](https://github.com/paperclipai/paperclip/actions/runs/36367065119)).
Greptile is 5/5 with no new findings. Grok already inherits the shared
`approve-all` default, so unattended setup requires no manual permission
change.

Runtime head `bb5a9307991f1ac567b781970ef11b39d518e19b` fixes a final
staging continuation failure before provider startup: explicit
replacement archived the old harness but left its failover backups
active, which caused `runner_harness_state_mismatch`. The regression
fails before the fix and passes after it; all eight adjacent
recovery-safety cases also pass. Old backups remain inspectable inside
the continuity archive. All fresh CI is green at this head ([run
36360839248](https://github.com/paperclipai/paperclip/actions/runs/36360839248)),
with a 5/5 review. One unrelated Cursor test timed out in the initial
server shard; the same-commit failed-job rerun passed, and both attempts
are retained. Staging deployment is confirmed healthy on this revision.
The controller image is
`ghcr.io/paperclipai/paperclip@sha256:6ad91c487910ccd2596ff7aed0a3a3ea5233d12b51b83cd6e1402237749b9673`.
The final browser-created staging task passed on this exact revision
with API authentication: context read → structured human question →
controller restart → answer submission → same native provider session
resumed → document saved → task Done. The two turns took approximately
119s and 77s. The actual write receipt was applied, and the saved
document has exactly one revision containing the selected answer and
requested marker. Usage and cost were not reported. [Controller image
build](https://github.com/paperclipai/paperclip/actions/runs/36360889243).

- Previous integration head `a44f7dbb6b6f77cd9ed893756ca453307f281e5f`:
all CI green (53 successful checks/statuses, two intentional skips),
including repository typecheck/build/tests, native Runner tests, browser
shards, and canary installation checks. [CI run
36358672529](https://github.com/paperclipai/paperclip/actions/runs/36358672529).
Greptile is 5/5 with no unresolved findings.
- Focused checks cover Grok credentials, executable admission, launcher
assets, provider-pack paths/permissions, workflow contracts, setup
defaults, CLI authorization, and subscription conflict recovery. All 39
protocol definitions validate. Final integration checks pass 124
catalog/evidence/cache tests and nine project-form tests; token gates
pass. Some local dependency checks could not load the stale installed
dependency tree; the corresponding fresh EC2 checks pass.
- Clean public npm installation passed on EC2 at
`8b172ebcf8e02e30662d830c00f3961e3bd459ec` ([run
36164964900](https://github.com/paperclipai/paperclip/actions/runs/36164964900)):
17 unified-version packages, lifecycle scripts enabled, built-in
launcher present, no separate Grok package or npm-downloaded binary,
missing prerequisite rejected, separately provisioned native executable
and command lease verified. No credentials or inference were used.
Subsequent changes preserve this npm asset layout.
- The immutable Daytona prerequisite image is
`ghcr.io/paperclipai/paperclip-daytona-runner@sha256:98957d5be0ac774d086b6402b5849e8e6356fec70fb8c09fca6eb4ed6de918e0`,
built from `5a2db471f3ddabe77f9f80e76ed27f996cb97fba`. The previous
Cloud controller image was
`ghcr.io/paperclipai/paperclip@sha256:fd914e1ab1e45f741e8e078ff452d16f082d7ac05f9b4b3506d3a3c64150d204`,
built from `a44f7dbb6b6f77cd9ed893756ca453307f281e5f`; it is superseded
by the latest image above. Its EC2 build verified provider-pack access
under an unrelated unprivileged UID.
- Browser staging at `40f898bc4cba73c1dff4e6344a3983ba0fb247ef` passed
full Grok onboarding with the correct `grok-4.7` model, saved credential
delivery, and pinned Daytona execution. A browser-created task read
context and asked the structured human question. After a controller
restart, answering the persisted question resumed the same native
provider session, saved the requested document, and completed the task.
Actual tool outcomes and durable state agree: one question and one
document revision. The two successful turns took 42.7s and 63.1s; usage
and cost were not reported.
- Restricted policy returned the expected `approval_required` outcome.
Functional staging tests explicitly selected `approve-all`; controller
authorization and governed approvals remain enforced. Temporary board
CLI access was revoked and verified rejected (HTTP 401), and the
disposable onboarding agent was paused.

Failures remain retained: the pre-fix continuation failure (its task
remains blocked; the passing final task is fresh), the original Cloud
provider-pack permission failure, the expected restricted-policy denial,
the superseded npm staging failure, and an earlier monolithic CI
infrastructure timeout. Browser CI exposed a project alias/form race;
the final stack uses master's stronger draft-preservation fix and all
browser shards pass. Historical full subscription/API protocol and
Product rosters retain their original source revisions and do not
qualify this packaging revision. No local Docker or Rust build was used.

## Risks

The branch includes master’s draft-preservation fix for project URL
aliases. It keeps the same project’s edit form mounted and clears prior
data when the project or company changes.

Custom sandboxes and local execution hosts must provision the pinned
binary before Grok starts. Missing, changed, unsupported-platform, and
symlinked executables fail admission. The new builtin profile cannot
resume sessions created with the former private-package profile.
Existing Claude/Codex npm bridge profiles retain their package pins.
Grok restricted modes preserve the selected policy but cannot
automatically admit Paperclip calls: ACP permission metadata does not
independently bind tool authority, so those calls stop with
`approval_required`. New Grok configurations default to `approve-all`,
including API configurations that omit the mode. Existing explicitly
restricted configurations remain restricted; controller authorization
and governed approvals remain enforced.

## Model Used

OpenAI GPT-6 through Codex, with tool use and code execution. The exact
serving model identifier and context-window size are 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
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-28 14:54:44 -05:00
DottaandPaperclip 768c70f69d Merge mainline Grok runner support without losing rich ACP qualification
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-28 14:54:04 -05:00