Commit Graph
208 Commits
Author SHA1 Message Date
Dotta 76e591ab04 fix(runner): bound Pi cold session admission at sixty seconds 2026-10-02 10:08:39 -05:00
DottaandPaperclip 7b3731fbe6 docs: align rich ACP matrix with Pi profile 13 evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 06:52:15 -05:00
DottaandPaperclip 1554ca396f docs: record Pi 1.0 paid qualification checkpoint
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 06:46:52 -05:00
DottaandPaperclip eac5064321 fix(runner): refresh shared ACP identity and Pi mode fixtures
Preserve the historical Copilot declaration, version the pending identity for shared transport changes, and bind Pi admission fixtures to explicit reasoning mode.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 04:06:31 -05:00
DottaandPaperclip f5c5fde380 Bind Pi 1.0 reasoning modes through rich ACP and recovery
Require explicit native-effective thinking modes, reject drift across reconnects, and retain observed settings in qualification artifacts. Version the profile and pinned wrapper closure for the new contract.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 03:21:26 -05:00
DottaandPaperclip c3d4677807 docs: record Pi 1.0 installation and Intel qualification gates
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 00:13:03 -05:00
DottaandPaperclip f96195a7a6 feat(runner): import verified Linux companions for normal Pi execution
Add explicit public CLI setup and full async source/profile/byte admission for an operator-pinned Linux companion. Preserve existing remote integrity checks and explicit overrides.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 00:09:04 -05:00
DottaandPaperclip c27bbcee25 fix(runner): provision pinned Pi in published server installs
Add explicit host-only setup, verify the public server vendor layout, and route readiness through the packaged runner boundary. Preserve exact Pi closure and normal-mode admission checks.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-01 22:45:01 -05:00
DottaandPaperclip 9d83e06b85 fix(runner): preserve Pi 1.0 serialized RPC events
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-01 22:03:21 -05:00
DottaandPaperclip 2d60b454a7 feat(runner): upgrade closed Pi runtime to 1.0 profile 11
Preserve structural system messages without assistant attribution, disable native cache warming, and require queued continuation acknowledgements. Pin the complete upstream 1.0 dependency closure and retain historical profile evidence.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-01 15:16:41 -05:00
Dotta f6406e7e55 Merge frozen master into the rich ACP production candidate
Preserve incremental Codex checkpoints and ACP unchanged-directory ownership as separate warm-session paths. Combine cancellation commit fencing, terminal outcome recovery, and both native fixture catalogs. Keep all candidate qualification states and provider profile identities unchanged.

Validation: 629 controller unit checks, 5 heartbeat cancellation checks, 210 runner/profile/sidecar checks, 44 catalog checks; token gates, Rust source formatting, and generated protocol manifest pass. Database tests and builds intentionally deferred. Source-aliased no-emit checking is blocked only by the borrowed ACPX SessionRecord declaration lacking the already-patched cursor_prompt_usage field.
2026-10-01 10:41:38 -05:00
Dotta 22c78242a4 fix(runner): require receiver acknowledgment for semantic receipt 2026-10-01 00:14:49 -05:00
DottaandPaperclip 2e4e06d7f0 fix(runner): commit receipts only for admitted sidecar frames
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 23:34:59 -05:00
Dotta 3665daf9dc fix(runner): bind normalized semantic receipt inputs 2026-09-30 23:28:02 -05:00
DottaandPaperclip a06fa49483 chore(runner): integrate pending v10 correlation for qualification only
Preserve both reviewed source and historical qualification evidence. CI-only branch; do not merge.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 22:14:15 -05:00
DottaandPaperclip 041d84760f fix(runner): align Cursor control IDs and retain native receipt evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 22:11:14 -05:00
DottaandPaperclip 8ec354f609 test(runner): consume ordered permission notifications in forwarding fixture
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 21:57:02 -05:00
DottaandPaperclip e5ef415eef fix(runner): version rich tool correlation profiles
Bind Cursor permission identity and Copilot semantic receipt sources across TypeScript, native admission, provider packaging, and recovery. Preserve historical v9 fixtures and pending qualification status.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 21:54:21 -05:00
DottaandPaperclip 2ea54f2c3f fix(runner): bind transitive Copilot permission policy sources
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 20:11:36 -05:00
DottaandPaperclip eeb48425ee fix(runner): bind transitive Copilot permission policy sources
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 20:09:09 -05:00
DottaandPaperclip fcf1866928 fix(runner): bind Copilot permission grants to visible targets
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 19:59:38 -05:00
DottaandPaperclip 03090216b7 fix(runner): bind Copilot permission grants to visible targets
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 19:54:27 -05:00
Dotta 22ded968dd docs(runner): correct denial settlement evidence limits 2026-09-30 11:33:55 -05:00
Dotta d8dfacff88 docs(runner): update qualification evidence and remaining gates 2026-09-30 10:57:10 -05:00
DottaandPaperclip 024776da24 docs(runner): clarify historical Cursor usage evidence limits
Avoid inferring that a captured paid attempt emitted the notice lost by the old recorder.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 10:35:36 -05:00
DottaandPaperclip 653bf7c37d fix(runner): retain bounded Cursor diagnostics in eval evidence
Validate the Cursor notice and active session/turn before retaining its closed observation fields. Preserve unknown token usage and cost, including malformed or stale diagnostics.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 10:35:36 -05:00
Dotta 5c69b69ef2 Integrate Cursor child counter provenance
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* commit '986f8cc5344107cc199c69e0581cba5401c54282':
  Verify Cursor child usage lifecycle and fence profile v9

# Conflicts:
#	doc/architecture/runner-cursor-capabilities.md
2026-09-30 05:34:15 -05:00
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 b09e0a1967 Combine warm recovery and versioned ACP usage candidates
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 05:14:31 -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 3be4f778c6 fix(runner): fence warm directory successor ownership and recovery
Retain stable projectless scope, transfer collection to the exact successor lease, and preserve stopped remote files without restarting their sandbox. Validate complete remote directories and cover the composed DB/session lifecycle, retirement, and fresh preparation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 05:05:41 -05:00
DottaandPaperclip 8d8e57a58f docs(runner): record corrected plan and current qualification evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 04:04:26 -05:00
Dotta 3d21d375de Record current profile qualification and controller settlement fix 2026-09-30 02:56:03 -05:00
DottaandPaperclip 44e1b421cb Record Cursor plan correlation failure and reviewed profile7 candidates
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 ade7c83dbb Preserve committed Cursor plan waits across profile upgrades
Keep current profile qualification mandatory when first creating a wait. Recovery uses its scoped committed receipt to verify the entire original proof, so future catalog/settings changes cannot authorize task work. Cover actual persisted finalization, catalog drift, original-profile tampering, and document explicit user continuation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 01:56:28 -05:00
DottaandPaperclip aec34c693f Record final local verification and Copilot message identity candidate
Keep the failed full invocation and original paid cases explicit. Link the exact fixture corrections and independently reviewed v7 source proof.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 01:34:21 -05:00
DottaandPaperclip 6b1e96af0f Record Copilot command and message-boundary qualification limits
Retain the failed paid case and original proof gaps. Document the verified private dependency-lock overlay and bot-owned tracked lock restoration.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 01:02:34 -05:00
DottaandPaperclip 672555ffbc Record current rich ACP qualification evidence and capability gaps
Separate source415 and source81 controller evidence from the unchanged e822 runtime. Retain failed attempts, scope the native denial pass, document pending plan settlement and exact command correlation, and distinguish implemented Pi notices from remaining rich-field gaps.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-30 00:48:33 -05:00
DottaandPaperclip 951b06d08a fix(runner): fence warm ACPX owners on runtime contract changes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 21:40:17 -05:00
DottaandPaperclip 632e7c9802 docs(runner): record paid ACP qualification gaps
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 21:40:17 -05:00
DottaandPaperclip 5605c350b2 fix(runner): retain native Cursor mode in shared session checkpoints
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 19:59:27 -05:00
DottaandPaperclip 1778075155 fix(server): continue unfinished tasks after status replies (#14626)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Native runs report their task outcome through a structured finish
result.
> - A Board comment can permit a passive wait for the next response.
> - That exception accepted reports that also admitted blocking
unfinished work.
> - The task then stayed In Progress without a runner, and recovery
treated the wait as healthy.
> - This pull request rejects that contradiction and uses the existing
bounded continuation path.
> - Real wait conditions and protection against obsolete requests remain
in force.

## Linked Issues or Issue Description

**What happened?**

An agent answered a status inquiry with `yielded` and `response_wake`.
The same result listed blocking remaining work. The server accepted an
indefinite wait without a question, approval, dependency, or pause. No
further run was queued.

**Expected behavior**

Unfinished ordinary tasks must continue or have a recorded reason to
wait. A status reply alone must not suspend the work.

**Steps to reproduce**

1. Add a Board status inquiry to an unfinished assigned task.
2. Submit a successful native result with `yielded`, `response_wake`,
and `remainingWork[].blocksCompletion: true`.
3. Leave the task without any real wait condition.
4. Observe that the old policy preserves In Progress with no
continuation and suppresses recovery.

**Paperclip version or commit**

Reproduced in the native status policy at `da887ea3e`. The branch is
based on current master.

**Deployment mode**

Authenticated server with the native Paperclip Runner.

Related work: Refs #13338 (native response waits and recovery). Refs
#12071 (separate legacy recovery and retry-state work). This change
fixes the native unfinished-response-wait exception.

## What Changed

- Reject contradictory finish reports while the provider can still
correct them.
- Route accepted unfinished response waits through the existing
one-follow-up continuation budget. Repeated incomplete results create a
visible recovery action.
- Preserve questions, approvals, dependencies, pauses, conversation
lifecycles, and superseded Board requests.
- Recheck the current Board source in the decision transaction before
queuing repair.
- Let normal recovery reconsider old committed waits that report
blocking work and still have a current source.
- Add policy and database regression tests. Document the rule.

## Verification

- `pnpm exec vitest run
server/src/services/native-runtime/status-arbiter.test.ts
server/src/__tests__/heartbeat-process-recovery.test.ts
--no-file-parallelism`: 346 tests passed, no skips.
- `pnpm -r typecheck`: passed.
- `pnpm build`: passed.
- `git diff --check origin/master...HEAD`: passed.
- Final head `8f0824d9bb4d631f2347f8afffe5fff6d574cb69`: all CI checks
green (54 passed, 2 intentionally skipped), including all general tests,
serialized server suites, runner tests, eight E2E shards, and the canary
dry run.
- Greptile: 5/5 on the final head, with no unresolved review threads.
- The broad local `pnpm test:run` encountered an unrelated timing
failure in `workspace-runtime.test.ts` (waiting for managed process-tree
listeners). That test passed on an isolated rerun. The duplicate broad
run was stopped; the complete CI suite passed on the final commit.
- The transaction-race regression reproduced an obsolete continuation
before the fix. All 12 source-change cases now pass, covering passive
waits, corrective continuations, and exhausted-repair decisions.

## Risks

- Agents that previously parked unfinished ordinary tasks must now
continue or record an actual wait condition.
- Old contradictory waits become eligible for normal recovery. Existing
ownership, budget, pause, and supersession checks still apply.
- The rule uses the structured blocking-work flag. It does not infer
omitted work from prose.
- No schema, dependency, or UI change.

## Model Used

OpenAI GPT-6 through Codex, with reasoning, repository inspection, code
editing, and test execution. The session does not expose a more specific
deployment identifier or context-window size.

## 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-29 16:51:50 -05:00
DottaandPaperclip a9e6757255 docs(runner): separate revised candidates from historical paid evidence
Record Cursor5, Copilot5 and Pi8 deterministic validation, retain all earlier failures and identify fresh qualification gates.

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-29 16:41:43 -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 4af314a055 Admit and bind Cursor native session modes in profile v5
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:23:41 -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 651110d3a5 docs: retain Cursor continuation qualification outcomes
Record three passing workflows and the exact-response failure without promoting partial file success to qualification.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:08:50 -05:00
DottaandPaperclip 54dfc1bc8e fix(runner): preserve Copilot evidence in the direct driver
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-29 16:05:55 -05:00