mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-03 01:14:48 +01:00
## Thinking Path > - Paperclip manages agent work and its budgets. > - Product E2E campaigns must explain each model request and attempt. > - The current completion gate also requires complete operating-cost evidence. > - Long-lived observability and storage charges can block a campaign after its model receipts are complete. > - An operator can now choose model-request readiness in a retained allowance. > - The report keeps full accounting, operating holds and model readiness separate. ## Linked Issues or Issue Description Refs #17889, #17523, #17452. **What happened?** A hosted campaign could pass both product cases and retain complete model receipts, yet fail readiness because operating charges were unresolved. **Expected behavior** An explicit model-readiness policy permits complete model receipts to qualify a run. Unknown operating charges stay visible and reserved. Missing model receipts and budget violations still block qualification. **Steps to reproduce** Use a campaign with four unresolved operating reservations and one completed model request. The regression checks readiness before and after the final model receipt, then checks an operating overrun. The default policy retains the original full-accounting gate. ## What Changed - Add the explicit `accountingReadiness: "model_requests"` allowance policy. Bind it into operating-bound configuration when present. - Derive a model subtotal and receipt-coverage projection from the retained journal. Show it beside full accounting and retained holds. - Use the selected readiness policy in scheduled finalization. Keep product, cleanup, feedback, trace and budget checks. - Refresh two existing eval prerequisites found by the full unit suite: the active Copilot image identity and the model-account catalog mapping. - Document the policy and its limit: it does not certify a full-lifecycle operating-cost ceiling. ## Verification - Regression failed on the old implementation with `Invalid operating overhead fields` and passed after the change. - Focused accounting/operations/finalization checks: 54 tests passed before the final policy assertions. - Existing image/catalog failures reproduced, then their 12 checks passed after the metadata repairs. - Product E2E unit suite: 4,360 passed and 2 skipped, plus 137 Node checks. Product E2E and workspace typechecks and workspace build passed. - Review regressions: 35 focused accounting/finalization checks passed on4aeb8bd65c, including the optional-policy hash and the scheduled consumer. - Full local server tests encountered embedded PostgreSQL bootstrap failures; retained output is not a passing full-suite claim. Hosted CI remains required. - Final head4aeb8bd65c: all 57 check runs pass or are skipped, the legacy security status passes, both reviews are 5/5 and no review threads remain open. - No paid campaign or schedule activation is claimed by this PR. ## Risks The opt-in policy permits readiness while operating costs remain unreconciled. The report retains full-accounting status and all holds. The gateway still reserves requests inside the same total allowance. This is an admission limit, not a vendor invoice guarantee. The omitted policy keeps existing behavior. Old journals remain unchanged. ## Model Used OpenAI Codex, GPT-6 family, with reasoning, repository inspection and code execution. The exact serving model ID and context window are not exposed to 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>
76 lines
3.6 KiB
YAML
76 lines
3.6 KiB
YAML
# yaml-language-server: $schema=./catalog.schema.json
|
|
# Planning scenarios; not registered executions or evidence of a pass.
|
|
schema_version: 1
|
|
feature: runs-adapters
|
|
status: planned
|
|
scenarios:
|
|
- id: runs-adapters.list-model-options
|
|
capabilities:
|
|
- runs-adapters/availability
|
|
- runs-adapters/model-accounts
|
|
context: >-
|
|
The company has admitted model discovery and configured coding accounts; some adapter
|
|
inventories remain board-only.
|
|
query: >-
|
|
What coding models can Morgan use with our current accounts?
|
|
expected_outcome: >-
|
|
The agent presents options supported by current authorized discovery and states any
|
|
account or environment restriction. It separates model availability from a valid account
|
|
binding. It does not promise every public vendor model is installed or ready, nor expose
|
|
hidden account credentials.
|
|
- id: runs-adapters.validate-hire
|
|
capabilities:
|
|
- runs-adapters/validation
|
|
- agents/hire
|
|
context: >-
|
|
Morgan was created with an eligible account, but the target runtime returns an
|
|
authentication failure during validation.
|
|
query: >-
|
|
Check that Morgan can actually start before I give them work.
|
|
expected_outcome: >-
|
|
The allowed validation runs against Morgan's selected configuration and reports the
|
|
specific failure with a repair path. Chat distinguishes a saved profile from a working
|
|
execution. It does not repeatedly start paid work or silently switch accounts to make the
|
|
check look successful.
|
|
- id: runs-adapters.inspect-failed-run
|
|
capabilities:
|
|
- runs-adapters/runs
|
|
- activity/runs
|
|
context: >-
|
|
The website task has one failed run and one later successful run; the caller can read run
|
|
diagnostics.
|
|
query: >-
|
|
What happened on the failed website attempt?
|
|
expected_outcome: >-
|
|
The answer identifies the failed run, its observed error and available output or cost
|
|
evidence, with source links. It distinguishes observed failure from a suspected cause and
|
|
preserves the original failure despite the later success. Missing logs or cost data are
|
|
described as unavailable rather than zero.
|
|
- id: runs-adapters.reset-session
|
|
capabilities:
|
|
- runs-adapters/session
|
|
context: >-
|
|
Morgan has an existing session; resetting it requires the person's board control.
|
|
query: >-
|
|
Give Morgan a fresh session without losing the task history.
|
|
expected_outcome: >-
|
|
The agent directs the person to the supported session reset control and explains the
|
|
difference between runtime context and durable task history. After the human action,
|
|
future execution starts with the intended fresh context while prior comments and artifacts
|
|
remain readable. The agent does not erase work to simulate a reset.
|
|
- id: runs-adapters.upgrade-runner
|
|
capabilities:
|
|
- runs-adapters/validation
|
|
- runs-adapters/session
|
|
- agents/instructions
|
|
context: >-
|
|
Morgan is an existing legacy Claude agent on a qualified target with compatible saved
|
|
settings; conversion is a supported human configuration action.
|
|
query: >-
|
|
Move Morgan to Paperclip Runner and keep the same model and instructions.
|
|
expected_outcome: >-
|
|
The person reaches the supported upgrade action, which preserves compatible harness,
|
|
model, bindings, instructions and history. Unsupported settings produce an actionable
|
|
error without partial saved conversion. Future runs use a fresh supported session; chat
|
|
does not equate conversion with a successful live run.
|