diff --git a/doc/plans/2026-09-22-continuation-accounting-baseline.md b/doc/plans/2026-09-22-continuation-accounting-baseline.md index 99307b866d3..6c0b278354f 100644 --- a/doc/plans/2026-09-22-continuation-accounting-baseline.md +++ b/doc/plans/2026-09-22-continuation-accounting-baseline.md @@ -29,7 +29,7 @@ new paid productive cases use public questions and responses instead. | Repeated missing disposition | Existing repair episode unit/DB tests; complete sweep after exhaustion | Initial turn plus exactly two legacy repairs; visible board recovery, blocked task | | Comments/confident prose/tool calls without state change | Quiet/noisy exhausted repair and failure variants; native event replay | Quiet versus three distinct attributed misleading comments per run; no extra allowance | | Late approval/pause/spending/ownership gate | Second repair delayed, new gate, service restart, same debit; existing admission tests cover both runtimes | Approval created by first repair owns wait; acceptance causes one completion; Stop before second repair dispatch | -| Restart while a repair is scheduled | Durable episode/dispatch tests | Controller restart before delayed repair; identical run IDs and episode counters | +| Restart while a repair is scheduled | Actual delayed-retry promotion as well as the repair gate; retain episode and debit | Controller restart before delayed repair; identical run IDs and episode counters; fail with the persisted cancellation reason if promotion cancels it | | Duplicate/out-of-order handling | Concurrent retry/recovery tests and native consumed-repair replay with commentary/tool events | Exact run counts, document revisions and retained IDs; exhaustive races stay deterministic | | No reset after exhaustion; legitimate new request | Existing heartbeat exhausted failure versus actual new user request | No user message during exhaustion; a real approval resumes its owned path | | Missing or misleading evidence | Calibrated oracle rejects missing state, wrong documents, overwritten steps, fabricated progress, extra runs, lost receipts, decline, executed Stop | Every live result uses that oracle and existing screenshot/evidence/billing pipeline | @@ -64,3 +64,11 @@ spending gates and timing races use deterministic fixtures rather than artificia spending money or hoping for a real outage. The original native compatibility probes, blank-route reload finding and duplicate-response finding remain in the [retained backlog](2026-09-22-legacy-continuation-authority.md). + +## Recorded baseline + +The [measurement report](../../tests/lifecycle-baseline/CONTINUATION-ACCOUNTING-2026-09-22.md) +retains the deterministic inventory and each paid campaign without regrading. +The new suite exposes shared allowance accounting in both directions and a +delayed-repair promotion mismatch. These are production follow-ups; the test +slice leaves their intended-behavior assertions enabled and failing. diff --git a/doc/plans/2026-09-22-legacy-continuation-authority.md b/doc/plans/2026-09-22-legacy-continuation-authority.md index 9775f0df40a..6b7ce56343e 100644 --- a/doc/plans/2026-09-22-legacy-continuation-authority.md +++ b/doc/plans/2026-09-22-legacy-continuation-authority.md @@ -123,8 +123,8 @@ Keep this section even if this slice incidentally resolves some assertions. | Commentary counts as progress | 1 | Retain for progress-evidence audit; no comment-count budget resets in this slice | | Wording selects liveness versus handoff path in heartbeat | 1 | Retain separately in results; must be covered while closing the current shared authority boundary | | Native autonomous continuation compatibility probes | 2 | Replace with reachable public-contract tests; `same_agent` injection is not a current model-facing defect | -| Productive continuation versus repair/failure budgets | Coverage boundary | Separate audit after this slice; do not infer progress from text/event counts | -| Blank task route after reload | New live observation | Investigate browser bootstrap/rendering; seen after successful persisted lifecycle in both runtimes; campaigns 35744074887 and 35747200170 | +| Productive continuation versus repair/failure budgets | Three new findings | [Accounting baseline](2026-09-22-continuation-accounting-baseline.md) exposes delayed repair spending infrastructure allowance, infrastructure retries spending productive allowance, and delayed repair cancellation during promotion. Test-only slice; production fixes remain open | +| Blank task route after reload | Repeated live observation | Investigate browser bootstrap/rendering; campaigns 35744074887 and 35747200170, plus accounting campaign 35813099816 after two correct legacy steps with a pending question. Empty screenshot retained; full quiet productive case remains unverified | | Duplicate legacy response | One later live observation | Campaign 35805477715 legacy work-mode neutral: provider issued two successful PATCH calls, second escaping an underscore. Retain as model behavior evidence; exact-once matcher rejected it | | Missing-comment policy ownership | Coverage boundary | Existing typed retry policy remains; review separately if consolidating all post-run compliance into one disposition contract | | Maintain CI and prepare App/Evals review | Pending | Promote fixed invariants into maintained cheap gates; paid suites remain explicit | diff --git a/tests/lifecycle-baseline/CONTINUATION-ACCOUNTING-2026-09-22.md b/tests/lifecycle-baseline/CONTINUATION-ACCOUNTING-2026-09-22.md new file mode 100644 index 00000000000..22b1ced2ced --- /dev/null +++ b/tests/lifecycle-baseline/CONTINUATION-ACCOUNTING-2026-09-22.md @@ -0,0 +1,138 @@ +# Continuation accounting baseline — September 22, 2026 + +This is a test-first slice. Production scheduling/authority code is unchanged. +The [scenario matrix](../../doc/plans/2026-09-22-continuation-accounting-baseline.md) +and executable inventory cover separate allowances, false progress, late gates, +restart and duplicate handling. There are 67 additional deterministic tests +and eight new explicit-only real-provider Product E2E cells. + +## Deterministic measurement + +Source: `379a70315e47de1ac2c8e4eb452eb3121401c5c7`, no tracked source changes at measurement. +Raw evidence: `.lifecycle-baseline/2026-09-23T03-04-36.107Z/`. +[Saved inventory and results](baselines/2026-09-22-continuation-accounting.json). + +| Layer | Passed / total | Failed | +|---|---:|---:| +| Unit | 413 / 414 | 1 | +| Runner | 184 / 184 | 0 | +| Database/heartbeat integration | 371 / 376 | 5 | +| Grading | 85 / 85 | 0 | +| Total | 1,053 / 1,059 | 6 | + +No skipped tests or missing inventory evidence. Four newly failing tests +identify three production problems: + +1. **Delayed repair spends infrastructure allowance.** Immediate first repair + has no scheduled retry debit and passes. Delayed repair 2 has + `scheduledRetryAttempt: 2`, `scheduledRetryReason: issue_disposition_repair`. + `executionFailureRetryCount` interprets it as two prior failures, so a first + safe infrastructure failure is already exhausted. One pure assertion and one + actual scheduler assertion expose this. +2. **Infrastructure retries spend productive allowance.** A run resumed after + two infrastructure retries reaches its first typed max-turn continuation. + The scheduler reads the same counter as two consumed productive attempts and + returns exhausted. The test expects productive attempt 1. +3. **The delayed second repair is cancelled during promotion.** The legacy + repair dispatch gate accepts the persisted episode, but the shared dispatch + path compares its fingerprint against a different disposition fingerprint. + It cancels the unstarted repair with + `issue_disposition_repair_superseded`. The new database test reproduces this + through actual due-retry promotion after recreating the controller service. + The first live exhaustion run also retained this exact cancellation, with + only two provider executions and no final exhaustion checkpoint. + +The other two failures are the previously retained native `same_agent` +compatibility probes. They inject an unsupported current public continuation +shape and do not establish a current model-facing defect. The new paid native +productive tests use reachable question/response contracts. + +The tests also prove that twenty comments or a large raw tool count do not +replenish exhausted legacy repairs, including through the full recovery sweep +while the issue is still active. A new approval, company budget hard-stop, +agent pause or reassignment during the second repair delay blocks dispatch +without another debit. Native replay with twenty commentary/tool events does +not resubmit consumed disposition repair. Existing gates and duplicate/restart +regressions remain linked in the inventory. + +## Other verification + +- Product E2E support: 474/474 passing, including 31 new accounting support tests. +- Inventory/report support: 4/4 passing. +- E2E and lifecycle baseline typechecks pass. +- Server and runner package typechecks pass; server preparation also completes + the runner build and generated-contract checks. +- Full general repository tests, recursive typecheck and root build were not + rerun: this slice changes only tests, harness and documentation. This is not + a claim of repository-wide green or PR readiness. The new intended-behavior + failures remain enabled and will fail their normal test lane until fixed. + +The [initial deterministic measurement](baselines/2026-09-22-continuation-accounting-initial.json) +at `ed53efb1e0e363b382b5101340259ad3cab34307` is retained separately: 1,051/1,056. +The later total adds the promotion regression and two harness calibration tests. + +## Live measurement + +All cells use qualified Codex `gpt-5.6-sol`, real Chromium, and isolated local +server/database fixtures in parallel GitHub Actions jobs. Original machine +grades, source/definition fingerprints, cleanup and billing are retained for +each campaign; unavailable cost is not zero spending. + +First campaign: [35811412940](https://github.com/paperclipai/paperclip/actions/runs/35811412940), +source `9cd7a585f5c69dc327b7d90534ad51be89ae5bb7`. All eight cells failed. +This measurement is not regraded. Initial fixtures requested three identical +comments, which the product deduplicates per run; rich-text serialization also +escaped underscores in literal test tokens. Screenshot names did not meet the +existing evidence allowlist, so the public report publisher rejected the bundle. +Legacy quiet productive behavior passed every causal check before packaging +failed. Approval and Stop lifecycle checks also passed while their comment +perturbation checks failed. Both exhaustion cells failed to reach the expected +exhaustion checkpoint; retained API state identifies the cancelled delayed repair. + +Corrected fixtures use three distinct numbered comments, plain alphanumeric +tokens and existing allowed screenshot names. A packaging test verifies those +screenshots survive. Cancellation fails promptly with its typed reason and the +last observed state, instead of waiting for the overall deadline. These are +test-harness changes, not changes to production behavior. + +Corrected campaign: [35813099816](https://github.com/paperclipai/paperclip/actions/runs/35813099816), +source `379a70315e47de1ac2c8e4eb452eb3121401c5c7`: +**5/8 passed, 3 failed**, no missing cells or retries, all eight evidence packages +valid and cleanup successful. The corrected public report published successfully. + +| Cell | Result | Observed behavior | +|---|---|---| +| Legacy productive, quiet | Fail | After two successful runs, two exact revision-one records, and a pending next question, a task-route reload renders a blank page. `task-chat-thread` never appears within 30 seconds. Remaining three steps are unverified | +| Legacy productive, noisy | Pass | Five productive runs, five exact revision-one documents, four real answered questions, no repair/failure debits | +| Native productive, quiet | Pass | Same five-step causal assertions | +| Native productive, noisy | Pass | Same five-step causal assertions despite misleading attributed comments | +| Legacy exhaustion, quiet | Fail | Second repair cancelled before dispatch with `issue_disposition_repair_superseded` | +| Legacy exhaustion, noisy | Fail | Identical typed cancellation despite the additional comments | +| Legacy repair then Stop | Pass | Delayed second repair cancelled by the operator before dispatch; remains stopped after controller restart and scheduled due time | +| Legacy repair then approval | Pass | Pending approval owns the wait; real browser acceptance produces exactly one successful completion without repair debt | + +The blank-page screenshot is empty. This matches the symptom of the +retained task-route reload finding; it does not establish the underlying UI +cause, and it is not counted as a completed productive case. The successful +native noisy final screenshot shows Done and all five document cards at revision +one. Both exhaustion checkpoints retain the scheduled and restarted run IDs; +their last observations include the cancelled unstarted repair and a board-owned +`active_run_watchdog` action instead of completed disposition-repair exhaustion. + +- [Published corrected report](https://d1p6rlowie26tp.cloudfront.net/runner-e2e/campaigns/gha-35813099816-1/index.html) +- [Both immutable campaign measurements, fingerprints, grades and billing](baselines/2026-09-22-continuation-accounting-live.json) + +Billing is partial in both campaigns. Provider-reported zero totals do **not** +establish free execution: the first campaign records token usage for 29/32 run +records and reported cost for 10; the corrected campaign records usage for 26/29 +and reported cost for 10. Each includes three cancelled, unstarted records. +The saved billing fields preserve the original coverage and cost status. + +## Next production slice + +Fix allowance separation and the delayed-repair promotion contract against the +enabled deterministic failures, then rerun the same eight-cell suite. Keep the +blank-route finding, unsupported native compatibility probes and earlier backlog +distinct. This baseline establishes assertions and observed behavior; it does +not claim the product is already robust or that every supported provider is +qualified. diff --git a/tests/lifecycle-baseline/README.md b/tests/lifecycle-baseline/README.md index b64b80f406d..de821ba1003 100644 --- a/tests/lifecycle-baseline/README.md +++ b/tests/lifecycle-baseline/README.md @@ -150,3 +150,5 @@ E2E scores, or claim full qualification from a partial selection. September 22 follow-up: [legacy continuation implementation and verification](LEGACY-CONTINUATION-2026-09-22.md), including preserved failed campaigns and the remaining backlog. The [continuation accounting matrix](../../doc/plans/2026-09-22-continuation-accounting-baseline.md) adds ACCT-01 through ACCT-04 for separate allowances, false progress, late gates and restart/replay. Its real-provider companion is the explicit-only `continuation-accounting` Product E2E suite. +The [September 22 measurement](CONTINUATION-ACCOUNTING-2026-09-22.md) records the +enabled failures and preserves both initial and corrected live campaigns. diff --git a/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting-initial.json b/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting-initial.json new file mode 100644 index 00000000000..4d6c4ef10a3 --- /dev/null +++ b/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting-initial.json @@ -0,0 +1,6522 @@ +{ + "schema": "paperclip.lifecycle-baseline/v1", + "commit": "ed53efb1e0e363b382b5101340259ad3cab34307", + "fingerprint": "d6bcbc263fe25d28e87ab592491efd0db300a09bcf7f28d40f65148a6b942ea6", + "measuredAt": "2026-09-23T02:47:45.013Z", + "layers": [ + "unit", + "runner", + "integration", + "grading" + ], + "execution": { + "unit": { + "exitCode": 1, + "signal": null, + "success": false, + "total": 414, + "passed": 413, + "failed": 1, + "pending": 0, + "launchError": null + }, + "runner": { + "exitCode": 0, + "signal": null, + "success": true, + "total": 184, + "passed": 184, + "failed": 0, + "pending": 0, + "launchError": null + }, + "integration": { + "exitCode": 1, + "signal": null, + "success": false, + "total": 375, + "passed": 371, + "failed": 4, + "pending": 0, + "launchError": null + }, + "grading": { + "exitCode": 0, + "signal": null, + "success": true, + "total": 83, + "passed": 83, + "failed": 0, + "pending": 0, + "launchError": null + } + }, + "scenarios": [ + { + "id": "LCA-01", + "name": "Ordinary completion", + "expected": "Valid completion, delivered answer, no extra execution", + "coverage": [ + { + "lane": "runner", + "file": "tests/lifecycle-baseline/runner.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / neutral", + "status": "passed", + "duration": 1.9997499999999917, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / no-approval", + "status": "passed", + "duration": 0.22804200000000208, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / scoped-negation", + "status": "passed", + "duration": 0.18191699999999855, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / historical-quote", + "status": "passed", + "duration": 0.18029200000000856, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / spanish", + "status": "passed", + "duration": 0.15666699999999878, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / optional-next-steps", + "status": "passed", + "duration": 0.1419169999999923, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / all-done", + "status": "passed", + "duration": 0.09720799999999485, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / keep-going", + "status": "passed", + "duration": 0.09720799999999485, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-01 fails closed without API evidence", + "status": "passed", + "duration": 0.071124999999995, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover executionRunId", + "status": "passed", + "duration": 0.08050000000000068, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover scheduledRetry", + "status": "passed", + "duration": 0.0659169999999989, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover activeRecoveryAction", + "status": "passed", + "duration": 0.060792000000006396, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover monitorNextCheckAt", + "status": "passed", + "duration": 0.056167000000002076, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status done changes admission with identical prose", + "status": "passed", + "duration": 0.04862500000000125, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status blocked changes admission with identical prose", + "status": "passed", + "duration": 0.0315000000000083, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status in_review changes admission with identical prose", + "status": "passed", + "duration": 0.036457999999996105, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status cancelled changes admission with identical prose", + "status": "passed", + "duration": 0.03562499999999602, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / neutral", + "status": "passed", + "duration": 0.21433400000000802, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / no-approval", + "status": "passed", + "duration": 0.05750000000000455, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / scoped-negation", + "status": "passed", + "duration": 0.058875000000000455, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / historical-quote", + "status": "passed", + "duration": 0.046875, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / spanish", + "status": "passed", + "duration": 0.04870800000000486, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / optional-next-steps", + "status": "passed", + "duration": 0.04508300000000531, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / all-done", + "status": "passed", + "duration": 0.044125000000008185, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / keep-going", + "status": "passed", + "duration": 0.046875, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / empty", + "status": "passed", + "duration": 0.05520800000000747, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/native-status-arbiter-corpus.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "P6-31 Section 18.13 executable status-authority corpus executes all 53 fixtures in their production consumers and joins all 70 matrix rows", + "status": "passed", + "duration": 875.9555409999998, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails independently when any asserted field category is mutated", + "status": "passed", + "duration": 602.1940000000004, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails mapped fixtures when live entrypoints or owning actions are removed despite matching policy labels", + "status": "passed", + "duration": 53.71833400000014, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus retires a proven automatic review and applies the current successful completion exactly once", + "status": "passed", + "duration": 49.06825000000026, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus completes a new merge run after an old CI review and bounds repeated incomplete results", + "status": "passed", + "duration": 50.55687500000022, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects wrong, missing, and duplicate criterion IDs before accepting completion", + "status": "passed", + "duration": 11.656666999999288, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps genuine approval actionable in the finish response and in finalization", + "status": "passed", + "duration": 46.1230000000005, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves answered cards, explicit attention, stronger authority, and later task edits", + "status": "passed", + "duration": 162.52441700000054, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects an empty needs_review report with actionable feedback without inventing an approval", + "status": "passed", + "duration": 22.430875000000015, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus withdraws obsolete policy reviews, restores the prior status, and is idempotent", + "status": "passed", + "duration": 41.59149999999954, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already accepted review untouched", + "status": "passed", + "duration": 13.593708000000333, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already rejected review untouched", + "status": "passed", + "duration": 14.22283299999981, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves real completion reviews and limits cleanup to the requested runs", + "status": "passed", + "duration": 23.14666599999964, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later blocked status", + "status": "passed", + "duration": 22.463166999999885, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later done status", + "status": "passed", + "duration": 19.317457999999533, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later cancelled status", + "status": "passed", + "duration": 19.835250000000087, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus does not restore status after a newer decision or a status change back to review", + "status": "passed", + "duration": 40.21300000000065, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps review status when a separate request still needs a response", + "status": "passed", + "duration": 15.467709000000468, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus isolates a failed cleanup candidate and retries it on the next pass", + "status": "passed", + "duration": 44.28529199999957, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps committed cleanup and continues publication after a live event fails", + "status": "passed", + "duration": 36.41716599999927, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus continues native finalization when the obsolete-card lookup fails", + "status": "passed", + "duration": 22.168541999999434, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves a later authoritative status during reconciliation", + "status": "passed", + "duration": 0.14433399999961694, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus supersedes the exact committed coordinator decision and sequences preserve decisions independently of issue status versions", + "status": "passed", + "duration": 9.310333000000355, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps assessment lineage run-local while superseding an issue decision from another run", + "status": "passed", + "duration": 11.566084000000046, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves an intermediate same-run assessment when the issue decision points to an older ancestor", + "status": "passed", + "duration": 8.484166999999616, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus ignores historical committed finalizations superseded by a newer authoritative decision", + "status": "passed", + "duration": 9.7764159999997, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with none predecessor", + "status": "passed", + "duration": 7.067916999999397, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with same_run predecessor", + "status": "passed", + "duration": 7.6206670000001395, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with other_run predecessor", + "status": "passed", + "duration": 8.670583000000079, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus binds a tools-refresh continuation to its existing durable wake without a duplicate", + "status": "passed", + "duration": 9.068000000000211, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails the transaction closed for an unknown status effect", + "status": "passed", + "duration": 6.398000000000138, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-01 native completed work has no extra execution regardless of summary", + "status": "passed", + "duration": 952.0182909999999, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-01 legacy completed work has no extra execution regardless of summary", + "status": "passed", + "duration": 464.34029199999986, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-completion-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-completion-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-blocker-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-blocker-challenge", + "status": "not_run" + }, + { + "id": "everyday-workflows:build-revise", + "status": "not_run" + }, + { + "id": "runner-evals:finish-task", + "status": "not_run" + } + ] + }, + { + "id": "LCA-02", + "name": "Productive multi-turn continuation", + "expected": "Continue without replaying completed work or treating productivity as repeated failure", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-02", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / neutral preserves continuation effects", + "status": "passed", + "duration": 3.040834000000004, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.2540830000000085, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.17825000000000557, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.1458329999999961, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / spanish preserves continuation effects", + "status": "passed", + "duration": 0.19487499999999613, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.24012500000000614, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / all-done preserves continuation effects", + "status": "passed", + "duration": 0.2534169999999989, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.14587500000000375, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / empty preserves continuation effects", + "status": "passed", + "duration": 0.21966700000000117, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / neutral preserves continuation effects", + "status": "passed", + "duration": 0.2412080000000003, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.11087499999999295, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.10816700000000878, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.09791699999999537, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07020900000000552, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07862500000000239, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / all-done preserves continuation effects", + "status": "passed", + "duration": 0.07916600000000074, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.07320900000000563, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / empty preserves continuation effects", + "status": "passed", + "duration": 0.0542080000000027, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / neutral preserves continuation effects", + "status": "passed", + "duration": 0.09754199999999003, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.07150000000000034, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.05954199999999332, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.07208300000000634, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07491699999999923, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.06579200000000185, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / all-done preserves continuation effects", + "status": "passed", + "duration": 0.38433299999999804, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0654169999999965, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / empty preserves continuation effects", + "status": "passed", + "duration": 0.058290999999996984, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / neutral preserves continuation effects", + "status": "passed", + "duration": 0.09241699999999753, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.05954100000001006, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.057749999999998636, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.05941699999999628, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / spanish preserves continuation effects", + "status": "passed", + "duration": 0.08312499999999545, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.05858299999999872, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / all-done preserves continuation effects", + "status": "passed", + "duration": 0.054666999999994914, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.056708000000000425, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / empty preserves continuation effects", + "status": "passed", + "duration": 0.055084000000007904, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / neutral preserves continuation effects", + "status": "passed", + "duration": 0.11974999999999625, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.062041000000007784, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.060208000000002926, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.0672090000000054, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / spanish preserves continuation effects", + "status": "passed", + "duration": 0.06291699999999878, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.0612080000000077, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / all-done preserves continuation effects", + "status": "passed", + "duration": 0.06904199999999605, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.07941700000000651, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / empty preserves continuation effects", + "status": "passed", + "duration": 0.05679200000000151, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / neutral preserves continuation effects", + "status": "passed", + "duration": 0.07995799999999065, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.06908300000000622, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.4659160000000071, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.11820799999999565, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / spanish preserves continuation effects", + "status": "passed", + "duration": 0.08554200000000378, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07612499999999045, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / all-done preserves continuation effects", + "status": "passed", + "duration": 0.07512499999999989, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.06658299999999429, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / empty preserves continuation effects", + "status": "passed", + "duration": 0.0691669999999931, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / neutral", + "status": "passed", + "duration": 0.14074999999999704, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / no-approval", + "status": "passed", + "duration": 0.045417000000000485, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / scoped-negation", + "status": "passed", + "duration": 0.04445800000000588, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / historical-quote", + "status": "passed", + "duration": 0.04316699999999685, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / spanish", + "status": "passed", + "duration": 0.046582999999998265, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / optional-next-steps", + "status": "passed", + "duration": 0.044083999999998014, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / all-done", + "status": "passed", + "duration": 0.041083000000000425, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / keep-going", + "status": "passed", + "duration": 0.33387499999999193, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / empty", + "status": "passed", + "duration": 0.043834000000003925, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 explicit continuation changes effects with identical prose", + "status": "passed", + "duration": 0.04908299999999599, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "max-turn", + "status": "assertion_failure", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling ACCT-01 infrastructure failures do not spend the first productive max-turn continuation", + "status": "failed", + "duration": 45.80316599999969, + "failureMessages": [ + "AssertionError: expected { outcome: 'retry_exhausted', …(2) } to match object { outcome: 'scheduled', attempt: 1 }\n(1 matching property omitted from actual)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1283:10)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1156:15)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/heartbeat-retry-scheduling.test.ts:662:23\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "heartbeat bounded retry scheduling schedules max-turn continuations with distinct retry metadata", + "status": "passed", + "duration": 60.85479200000009, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling coalesces duplicate max-turn continuation schedules for the same source run and attempt", + "status": "passed", + "duration": 44.16324999999961, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling does not promote a duplicate max-turn continuation that does not own the issue lock", + "status": "passed", + "duration": 615.2102079999986, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to blocked before retry promotion", + "status": "passed", + "duration": 47.036958000000595, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to todo before retry promotion", + "status": "passed", + "duration": 46.127832999998645, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to backlog before retry promotion", + "status": "passed", + "duration": 48.09141699999964, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-02", + "status": "assertion_failure", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-02 native explicit continuation survives misleading approval prose", + "status": "failed", + "duration": 604.2559170000004, + "failureMessages": [ + "AssertionError: expected { Object (status, locked) } to deeply equal { status: 'done', locked: false }\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/test-baselines/lifecycle-heartbeat.test.ts:345:30\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "LCA full heartbeat observation LCA-02 legacy incomplete work schedules the same follow-up regardless of approval wording", + "status": "passed", + "duration": 857.0001670000001, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-02 native productive workflow continues beyond the failure retry allowance", + "status": "failed", + "duration": 312.3179999999993, + "failureMessages": [ + "AssertionError: expected { Object (status, locked) } to deeply equal { status: 'done', locked: false }\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/test-baselines/lifecycle-heartbeat.test.ts:397:28\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + } + ] + } + ], + "live": [ + { + "id": "continuation:completed-action-resume", + "status": "not_run" + } + ] + }, + { + "id": "LCA-03", + "name": "Durable human question", + "expected": "Bound question precedes wait; matching answer resumes once", + "coverage": [ + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-03", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-03 accepts durable question and matching answered identity", + "status": "passed", + "duration": 0.8518749999999926, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-03 rejects prose-only waiting even if final task completes", + "status": "passed", + "duration": 0.3099590000000063, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-03 rejects answer on a different question", + "status": "passed", + "duration": 0.08820799999999451, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-03", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-03 question / neutral", + "status": "passed", + "duration": 0.04658399999999574, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / no-approval", + "status": "passed", + "duration": 0.05099999999998772, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / scoped-negation", + "status": "passed", + "duration": 0.04479100000000358, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / historical-quote", + "status": "passed", + "duration": 0.055749999999989086, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / spanish", + "status": "passed", + "duration": 0.04262500000000102, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / optional-next-steps", + "status": "passed", + "duration": 0.04229099999999164, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / all-done", + "status": "passed", + "duration": 0.08145800000001202, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / keep-going", + "status": "passed", + "duration": 0.04487500000000466, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / empty", + "status": "passed", + "duration": 0.05087500000000489, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/question-response-delivery.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "question response delivery queues an answer to a running successor instead of automatically steering", + "status": "passed", + "duration": 150.43929200000002, + "failureMessages": [] + }, + { + "name": "question response delivery never mixes an external-chat question response into another live chat run in native mode", + "status": "passed", + "duration": 76.08937500000002, + "failureMessages": [] + }, + { + "name": "question response delivery never mixes an external-chat question response into another live chat run in legacy mode", + "status": "passed", + "duration": 44.058958000000075, + "failureMessages": [] + }, + { + "name": "question response delivery does not promote a source-run wake comment from another issue", + "status": "passed", + "duration": 43.71158299999979, + "failureMessages": [] + }, + { + "name": "question response delivery resolves an in-flight native input request before creating a continuation", + "status": "passed", + "duration": 43.640750000000025, + "failureMessages": [] + }, + { + "name": "question response delivery keeps native input delivery pending while its PRP session is unavailable", + "status": "passed", + "duration": 27.95208300000013, + "failureMessages": [] + }, + { + "name": "question response delivery coalesces into a queued successor without creating another wake", + "status": "passed", + "duration": 32.85279199999968, + "failureMessages": [] + }, + { + "name": "question response delivery never steers into the source run and keeps a skipped wake retryable", + "status": "passed", + "duration": 34.89758299999994, + "failureMessages": [] + }, + { + "name": "question response delivery delivers after wake suppression outlasts the bounded error retry limit", + "status": "passed", + "duration": 60.76879100000042, + "failureMessages": [] + }, + { + "name": "question response delivery preserves the actual-error retry budget after prolonged wake suppression", + "status": "passed", + "duration": 57.83512500000006, + "failureMessages": [] + }, + { + "name": "question response delivery enforces one durable wake per question-response idempotency key", + "status": "passed", + "duration": 38.197625000000244, + "failureMessages": [] + }, + { + "name": "question response delivery reuses the winning wake when a concurrent insert hits the idempotency fence", + "status": "passed", + "duration": 42.07237500000019, + "failureMessages": [] + }, + { + "name": "question response delivery settles against a canonical wake from the previous assignee without retrying forever", + "status": "passed", + "duration": 45.0837919999999, + "failureMessages": [] + }, + { + "name": "question response delivery reuses a durable wake receipt instead of issuing a duplicate continuation", + "status": "passed", + "duration": 38.45212500000025, + "failureMessages": [] + }, + { + "name": "question response delivery recovers a completed wake when receipt finalization was interrupted", + "status": "passed", + "duration": 22.3459170000001, + "failureMessages": [] + }, + { + "name": "question response delivery keeps a long wake claim leased while the side effect is active", + "status": "passed", + "duration": 123.49537500000042, + "failureMessages": [] + }, + { + "name": "question response delivery fences a stale worker after a newer claim generation takes ownership", + "status": "passed", + "duration": 72.04341700000032, + "failureMessages": [] + }, + { + "name": "question response delivery keeps acpx_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 35.65316699999994, + "failureMessages": [] + }, + { + "name": "question response delivery keeps claude_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 27.915750000000116, + "failureMessages": [] + }, + { + "name": "question response delivery keeps codex_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 33.33920799999987, + "failureMessages": [] + }, + { + "name": "question response delivery keeps cursor_cloud on the existing wake path without invoking native steering", + "status": "passed", + "duration": 25.869792000000416, + "failureMessages": [] + }, + { + "name": "question response delivery keeps cursor on the existing wake path without invoking native steering", + "status": "passed", + "duration": 26.744292000000314, + "failureMessages": [] + }, + { + "name": "question response delivery keeps gemini_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 33.51658300000054, + "failureMessages": [] + }, + { + "name": "question response delivery keeps grok_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 35.42345899999964, + "failureMessages": [] + }, + { + "name": "question response delivery keeps hermes_gateway on the existing wake path without invoking native steering", + "status": "passed", + "duration": 26.53625000000011, + "failureMessages": [] + }, + { + "name": "question response delivery keeps hermes_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 27.33179199999995, + "failureMessages": [] + }, + { + "name": "question response delivery keeps kimi_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 18.246374999999716, + "failureMessages": [] + }, + { + "name": "question response delivery keeps openclaw_gateway on the existing wake path without invoking native steering", + "status": "passed", + "duration": 18.47179099999994, + "failureMessages": [] + }, + { + "name": "question response delivery keeps opencode_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 24.43304100000023, + "failureMessages": [] + }, + { + "name": "question response delivery keeps pi_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 15.758499999999913, + "failureMessages": [] + }, + { + "name": "question response delivery keeps process on the existing wake path without invoking native steering", + "status": "passed", + "duration": 15.874916999999186, + "failureMessages": [] + }, + { + "name": "question response delivery keeps http on the existing wake path without invoking native steering", + "status": "passed", + "duration": 15.37341699999979, + "failureMessages": [] + }, + { + "name": "question response delivery keeps external_test_adapter on the existing wake path without invoking native steering", + "status": "passed", + "duration": 14.71729200000027, + "failureMessages": [] + }, + { + "name": "question response delivery queues once without probing successor steering", + "status": "passed", + "duration": 14.489042000000154, + "failureMessages": [] + }, + { + "name": "question response delivery formats text, select labels, multi-select, and custom answers in order", + "status": "passed", + "duration": 11.569958000000042, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-question-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-question-challenge", + "status": "not_run" + }, + { + "id": "continuation:answer-updates-scope", + "status": "not_run" + }, + { + "id": "continuation:provider-question-bridge", + "status": "not_run" + } + ] + }, + { + "id": "LCA-04", + "name": "Approval and decline", + "expected": "Correct authorized approval releases only its gate; decline executes nothing", + "coverage": [ + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-04", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 5.524916000000303, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 4.314624999999069, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 10.199917000001733, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 8.384874999999738, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-04", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status done changes admission with identical prose", + "status": "passed", + "duration": 0.04862500000000125, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status blocked changes admission with identical prose", + "status": "passed", + "duration": 0.0315000000000083, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status in_review changes admission with identical prose", + "status": "passed", + "duration": 0.036457999999996105, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status cancelled changes admission with identical prose", + "status": "passed", + "duration": 0.03562499999999602, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / neutral", + "status": "passed", + "duration": 0.0765829999999994, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / no-approval", + "status": "passed", + "duration": 0.051458000000010884, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / scoped-negation", + "status": "passed", + "duration": 0.051791999999991845, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / historical-quote", + "status": "passed", + "duration": 0.045291000000005965, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / spanish", + "status": "passed", + "duration": 0.04354200000000219, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / optional-next-steps", + "status": "passed", + "duration": 0.054874999999995566, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / all-done", + "status": "passed", + "duration": 0.06024999999999636, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / keep-going", + "status": "passed", + "duration": 0.04816700000000651, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / empty", + "status": "passed", + "duration": 0.05041700000001015, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / neutral", + "status": "passed", + "duration": 0.05779200000000628, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / no-approval", + "status": "passed", + "duration": 0.04308399999999324, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / scoped-negation", + "status": "passed", + "duration": 0.04133299999999451, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / historical-quote", + "status": "passed", + "duration": 0.04445800000000588, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / spanish", + "status": "passed", + "duration": 0.39304099999999664, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / optional-next-steps", + "status": "passed", + "duration": 0.085708000000011, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / all-done", + "status": "passed", + "duration": 0.05825000000000102, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / keep-going", + "status": "passed", + "duration": 0.05449999999999022, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / empty", + "status": "passed", + "duration": 0.04783299999999713, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 resolving the real approval changes authority with identical prose", + "status": "passed", + "duration": 0.05416700000000674, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/issue-thread-interaction-routes.test.ts", + "pattern": "confirmation|approval|tool.action", + "status": "pass", + "assertions": [ + { + "name": "issue thread interaction routes returns 400 for agent-addressed tool-action confirmations", + "status": "passed", + "duration": 126.63941599999998, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes accepts request confirmations and wakes the current assignee when configured for accept-only wakeups", + "status": "passed", + "duration": 114.85270800000035, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes executes an accepted tool-action confirmation through the gateway callback", + "status": "passed", + "duration": 113.78504199999952, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes with failure instructions after an accepted tool action fails", + "status": "passed", + "duration": 113.61425000000054, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes with fresh-approval instructions after an accepted tool action expires", + "status": "passed", + "duration": 116.75508300000001, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes rejects client-supplied tool-action metadata on interaction creation", + "status": "passed", + "duration": 115.27816699999948, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes executes an accepted secret-proposal confirmation and wakes with verification instructions", + "status": "passed", + "duration": 116.06241599999976, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forwards plan-document confirmations to the interaction service for revision validation", + "status": "passed", + "duration": 158.7429170000005, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes accepts request checkbox confirmations with selected option ids and wakes the assignee", + "status": "passed", + "duration": 122.84270900000047, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'explicit' issueId", + "status": "passed", + "duration": 115.33683399999973, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'omitted' issueId", + "status": "passed", + "duration": 114.18637499999932, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'null' issueId", + "status": "passed", + "duration": 115.527333, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a plan document confirmation on a standard-work issue", + "status": "passed", + "duration": 114.8650000000016, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes the returned agent when accepting an agent-authored confirmation from a board review assignee", + "status": "passed", + "duration": 116.00316700000076, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes does not emit a continuation wake when request confirmations are rejected", + "status": "passed", + "duration": 116.1391249999997, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes delivers generic confirmation rejection feedback as the next turn message", + "status": "passed", + "duration": 116.82899999999972, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes with decline instructions when a tool-action confirmation is rejected", + "status": "passed", + "duration": 113.07012500000019, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes allows an agent to accept another agent's pending review confirmation by default", + "status": "passed", + "duration": 144.78129099999933, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes allows an agent to reject a pending review confirmation by default", + "status": "passed", + "duration": 130.20550000000003, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes keeps an unrelated pending confirmation human-only on an in-review issue", + "status": "passed", + "duration": 117.31379199999901, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes keeps a same-requester sibling confirmation human-only", + "status": "passed", + "duration": 113.3072919999995, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes rejects an agent review-confirmation verdict under human_only with actionable copy", + "status": "passed", + "duration": 952.0189589999991, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes allows an unrelated agent-resolvable confirmation under a restrictive issue review policy", + "status": "passed", + "duration": 113.58991700000115, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes lets the creator and same run resolve 'request_confirmation' through anyone", + "status": "passed", + "duration": 160.09166699999878, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes lets the creator and same run resolve 'request_checkbox_confirmation' through anyone", + "status": "passed", + "duration": 129.61445900000035, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes blocks human-only and tool-action interactions for agents", + "status": "passed", + "duration": 118.70741699999962, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "gate|budget|paused", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider workspace_busy waits", + "status": "passed", + "duration": 81.23545899999954, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider ai_connection_busy waits", + "status": "passed", + "duration": 70.38154200000008, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the dependency gate for interrupted conversations", + "status": "passed", + "duration": 55.14695799999936, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the disabled gate for interrupted conversations", + "status": "passed", + "duration": 61.996250000000146, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the reassigned gate for interrupted conversations", + "status": "passed", + "duration": 57.23479199999929, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions rolls back the wakeup-request update when the run-event write fails during a gate-suppressed cancellation", + "status": "passed", + "duration": 37.98266700000022, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-approval-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-approval-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-approve", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-decline", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-always", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-untrusted-evidence-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-untrusted-evidence-challenge", + "status": "not_run" + }, + { + "id": "continuation:clarification-not-approval", + "status": "not_run" + }, + { + "id": "everyday-workflows:service-approve", + "status": "not_run" + }, + { + "id": "everyday-workflows:service-decline", + "status": "not_run" + } + ] + }, + { + "id": "LCA-05", + "name": "Plan revision acceptance", + "expected": "Work mode and exact accepted revision authorize execution", + "coverage": [ + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-05 accepts current revision and rejects stale or foreign plan targets", + "status": "passed", + "duration": 0.15420800000001122, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-05 legacy title report is not work-mode authority", + "status": "passed", + "duration": 0.1245839999999987, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-05 legacy title plan is not work-mode authority", + "status": "passed", + "duration": 0.06350000000000477, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-05 legacy title research is not work-mode authority", + "status": "passed", + "duration": 0.061958000000004176, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-05 legacy description is not work-mode authority", + "status": "passed", + "duration": 0.0764999999999958, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/run-liveness.test.ts", + "pattern": "mode|title and description", + "status": "pass", + "assertions": [ + { + "name": "run liveness classifier uses explicit planning mode for the planning diagnostic exemption", + "status": "passed", + "duration": 0.08516699999999844, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode undefined", + "status": "passed", + "duration": 0.7063749999999942, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode null", + "status": "passed", + "duration": 0.3019160000000056, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode standard", + "status": "passed", + "duration": 0.2462500000000034, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode ask", + "status": "passed", + "duration": 0.2655419999999964, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode skill_test", + "status": "passed", + "duration": 0.2605000000000075, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode planning", + "status": "passed", + "duration": 0.231583999999998, + "failureMessages": [] + }, + { + "name": "run liveness classifier a standard-mode task can deliver a plan and complete without entering planning mode", + "status": "passed", + "duration": 0.06637499999999363, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/heartbeat-context-summary.test.ts", + "pattern": "selects directives only", + "status": "pass", + "assertions": [ + { + "name": "buildPaperclipTaskMarkdown selects directives only from explicit standard mode, even when a plan is requested", + "status": "passed", + "duration": 1.1425420000000486, + "failureMessages": [] + }, + { + "name": "buildPaperclipTaskMarkdown selects directives only from explicit planning mode, even when a plan is requested", + "status": "passed", + "duration": 0.1613750000001346, + "failureMessages": [] + }, + { + "name": "buildPaperclipTaskMarkdown selects directives only from explicit ask mode, even when a plan is requested", + "status": "passed", + "duration": 0.12645800000018426, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/services/native-runtime/native-execution-input.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "LCA-05 explicit native work mode title and description cannot override standard mode", + "status": "passed", + "duration": 2.9208750000000236, + "failureMessages": [] + }, + { + "name": "LCA-05 explicit native work mode title and description cannot override planning mode", + "status": "passed", + "duration": 0.5251670000000104, + "failureMessages": [] + }, + { + "name": "LCA-05 explicit native work mode title and description cannot override ask mode", + "status": "passed", + "duration": 0.2980000000000018, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/activity-service.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "activity service LCA-05 persists explicit standard mode across wording edits and uses it in ledger backfill", + "status": "passed", + "duration": 166.63091699999995, + "failureMessages": [] + }, + { + "name": "activity service LCA-05 persists explicit planning mode across wording edits and uses it in ledger backfill", + "status": "passed", + "duration": 80.17266599999994, + "failureMessages": [] + }, + { + "name": "activity service LCA-05 persists explicit ask mode across wording edits and uses it in ledger backfill", + "status": "passed", + "duration": 83.53383299999996, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/issue-thread-interaction-routes.test.ts", + "pattern": "plan|revision", + "status": "pass", + "assertions": [ + { + "name": "issue thread interaction routes forwards plan-document confirmations to the interaction service for revision validation", + "status": "passed", + "duration": 158.7429170000005, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'explicit' issueId", + "status": "passed", + "duration": 115.33683399999973, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'omitted' issueId", + "status": "passed", + "duration": 114.18637499999932, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'null' issueId", + "status": "passed", + "duration": 115.527333, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes does not project an explicitly different issue's approved plan into the current issue wake", + "status": "passed", + "duration": 115.11908399999993, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a plan document confirmation on a standard-work issue", + "status": "passed", + "duration": 114.8650000000016, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes the assignee to revise a rejected plan even when its policy is accept-only", + "status": "passed", + "duration": 140.47304199999962, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/issue-thread-interactions-service.test.ts", + "pattern": "Plan.mode|stale.*revision|revision.*stale|plan confirmation", + "status": "pass", + "assertions": [ + { + "name": "issueThreadInteractionService atomically returns an accepted Plan-mode issue to its agent in Auto mode", + "status": "passed", + "duration": 20.809374999999818, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps Plan mode for non-plan and checkbox confirmations", + "status": "passed", + "duration": 19.72908299999972, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps ask mode when accepting a plan confirmation", + "status": "passed", + "duration": 9.658166999999594, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps standard mode when accepting a plan confirmation", + "status": "passed", + "duration": 9.061457999999675, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps Plan mode when a plan confirmation is rejected", + "status": "passed", + "duration": 9.120416999999634, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService rejects creating a plan confirmation against a stale document revision and accepts the current one", + "status": "passed", + "duration": 15.57895899999994, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-plan-revision-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-plan-revision-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-work-mode-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-work-mode-challenge", + "status": "not_run" + }, + { + "id": "agent-chat:plan-handoff", + "status": "not_run" + }, + { + "id": "continuation:revision-preserves-approval", + "status": "not_run" + } + ] + }, + { + "id": "LCA-06", + "name": "Dependencies", + "expected": "All required dependencies release one parent wake; unrelated events do nothing", + "coverage": [ + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-issue-liveness-escalation.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "heartbeat resolved dependency wake reconciliation runs exactly one bounded review-path recovery before surfacing a stalled decision", + "status": "passed", + "duration": 746.2584999999999, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation keeps resolved dependency wake reconciliation active", + "status": "passed", + "duration": 486.4196659999998, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation heals a blocked dependent whose done blocker has no workspace finalize obligation", + "status": "passed", + "duration": 429.0295409999999, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation reconciles a resolved blocked dependency after the assignee-null window closes", + "status": "passed", + "duration": 394.06395799999973, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation keeps repeated wakes behind a active execution hold run-free, then resumes once", + "status": "passed", + "duration": 281.6218749999998, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation keeps repeated wakes behind a resolved execution hold run-free, then resumes once", + "status": "passed", + "duration": 272.543584, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation rechecks every gate after an execution hold clears", + "status": "passed", + "duration": 402.83195799999976, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation preserves distinct comments through a hold and adopts them on the next eligible wake", + "status": "passed", + "duration": 379.4833750000007, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation retries a resolved dependency wake when the prior wake was skipped as stale", + "status": "passed", + "duration": 370.61533299999974, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation waits for workspace finalize before healing a resolved blocked dependent", + "status": "passed", + "duration": 417.3050830000002, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation does not duplicate an existing dependency wake keyed to any resolved blocker", + "status": "passed", + "duration": 37.13466700000026, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation heals a multi-blocker dependent when only a completed wake for an earlier blocker exists", + "status": "passed", + "duration": 362.1180830000012, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation heals a blocked dependent after a terminal reset when a previous-cycle old-key wake exists", + "status": "passed", + "duration": 352.30154200000106, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation does not re-heal when a completed old-key wake is from the current blocked cycle", + "status": "passed", + "duration": 27.884665999999925, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation counts null dependency wake returns as deferred instead of enqueue failures", + "status": "passed", + "duration": 28.105915999998615, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-challenge", + "status": "not_run" + }, + { + "id": "everyday-workflows:delegate-feedback", + "status": "not_run" + }, + { + "id": "runner-evals:set-task-dependencies", + "status": "not_run" + } + ] + }, + { + "id": "LCA-07", + "name": "External monitor wait", + "expected": "Durable eligible monitor fires once and respects timeout and exhaustion", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-07", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-07 monitor / neutral", + "status": "passed", + "duration": 0.05662499999999682, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / no-approval", + "status": "passed", + "duration": 0.056958000000008724, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / scoped-negation", + "status": "passed", + "duration": 0.050208999999995285, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / historical-quote", + "status": "passed", + "duration": 0.04633400000000165, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / spanish", + "status": "passed", + "duration": 0.056417000000010376, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / optional-next-steps", + "status": "passed", + "duration": 0.04708300000000065, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / all-done", + "status": "passed", + "duration": 0.0417500000000075, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / keep-going", + "status": "passed", + "duration": 0.04879200000000594, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / empty", + "status": "passed", + "duration": 0.04354200000000219, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/issue-monitor-scheduler.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "issue monitor scheduler triggers due issue monitors once and clears the one-shot schedule", + "status": "passed", + "duration": 1292.4710829999995, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler does not replay a quota monitor with unknown execution evidence", + "status": "passed", + "duration": 581.6314999999995, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler does not replay a quota monitor with exhausted execution evidence", + "status": "passed", + "duration": 566.4495420000003, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler wakes a cross-agent review participant for provider quota monitors", + "status": "passed", + "duration": 833.0718340000003, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler lets the board trigger a scheduled issue monitor immediately", + "status": "passed", + "duration": 989.7243750000007, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler clears due monitors that cannot be dispatched and records a skip", + "status": "passed", + "duration": 561.982958999999, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler clears exhausted monitors and queues bounded owner recovery instead of another due check", + "status": "passed", + "duration": 994.8384590000005, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler clears timed-out monitors and creates a visible recovery issue when requested", + "status": "passed", + "duration": 988.3864169999997, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler omits external monitor refs from wake payloads and activity details", + "status": "passed", + "duration": 968.3414170000015, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "runner-evals:schedule-task-wake", + "status": "not_run" + } + ] + }, + { + "id": "LCA-08", + "name": "Ordinary conversation", + "expected": "Deliver response without task completion coercion or repair loops", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-08", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-08 conversation / neutral", + "status": "passed", + "duration": 0.052917000000007874, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / no-approval", + "status": "passed", + "duration": 0.04075000000000273, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / scoped-negation", + "status": "passed", + "duration": 0.041042000000004464, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / historical-quote", + "status": "passed", + "duration": 0.04462500000001057, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / spanish", + "status": "passed", + "duration": 0.04725000000000534, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / optional-next-steps", + "status": "passed", + "duration": 0.039874999999995, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / all-done", + "status": "passed", + "duration": 0.039332999999999174, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / keep-going", + "status": "passed", + "duration": 0.04162499999999625, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / empty", + "status": "passed", + "duration": 0.03895900000000552, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "conversation", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling bounds interrupted conversations across restarts and concurrent scheduling", + "status": "passed", + "duration": 150.13554199999908, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the dependency gate for interrupted conversations", + "status": "passed", + "duration": 55.14695799999936, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the disabled gate for interrupted conversations", + "status": "passed", + "duration": 61.996250000000146, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the reassigned gate for interrupted conversations", + "status": "passed", + "duration": 57.23479199999929, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "governed wait|structured input", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery commits a governed wait without waiting for abort-insensitive provider cleanup", + "status": "passed", + "duration": 101.18454099999985, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery accepts a control-plane governed wait when a completed turn omitted its semantic result", + "status": "passed", + "duration": 0.3569999999999709, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery parks a provider turn immediately after a durable governed wait appears", + "status": "passed", + "duration": 0.2768330000003516, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery hands a committed structured input to the durable wait after its live window", + "status": "passed", + "duration": 0.9252919999998994, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery keeps a settling structured input in the original turn while its append crosses expiry", + "status": "passed", + "duration": 0.6923339999998461, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:clarify-reuse", + "status": "not_run" + }, + { + "id": "agent-chat:clarify-reuse", + "status": "not_run" + } + ] + }, + { + "id": "LCA-09", + "name": "Missing disposition and exhausted repair", + "expected": "Bounded explicit recovery; prose/comments do not supply authority or reset attempts", + "coverage": [ + { + "lane": "runner", + "file": "tests/lifecycle-baseline/runner.test.ts", + "pattern": "LCA-09", + "status": "pass", + "assertions": [ + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / neutral", + "status": "passed", + "duration": 0.25270899999999585, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / no-approval", + "status": "passed", + "duration": 0.18087500000000034, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / scoped-negation", + "status": "passed", + "duration": 0.1275839999999988, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / historical-quote", + "status": "passed", + "duration": 0.07729199999999992, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / spanish", + "status": "passed", + "duration": 0.06587500000000546, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / optional-next-steps", + "status": "passed", + "duration": 0.05729099999999221, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / all-done", + "status": "passed", + "duration": 0.061166000000000054, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / keep-going", + "status": "passed", + "duration": 0.06125000000000114, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / empty", + "status": "passed", + "duration": 0.07479200000000219, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-09", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / neutral preserves continuation effects", + "status": "passed", + "duration": 3.040834000000004, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.2540830000000085, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.17825000000000557, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.1458329999999961, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / spanish preserves continuation effects", + "status": "passed", + "duration": 0.19487499999999613, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.24012500000000614, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / all-done preserves continuation effects", + "status": "passed", + "duration": 0.2534169999999989, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.14587500000000375, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / empty preserves continuation effects", + "status": "passed", + "duration": 0.21966700000000117, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / neutral preserves continuation effects", + "status": "passed", + "duration": 0.2412080000000003, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.11087499999999295, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.10816700000000878, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.09791699999999537, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07020900000000552, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07862500000000239, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / all-done preserves continuation effects", + "status": "passed", + "duration": 0.07916600000000074, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.07320900000000563, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / empty preserves continuation effects", + "status": "passed", + "duration": 0.0542080000000027, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / neutral preserves continuation effects", + "status": "passed", + "duration": 0.09754199999999003, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.07150000000000034, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.05954199999999332, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.07208300000000634, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07491699999999923, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.06579200000000185, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / all-done preserves continuation effects", + "status": "passed", + "duration": 0.38433299999999804, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0654169999999965, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / empty preserves continuation effects", + "status": "passed", + "duration": 0.058290999999996984, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / neutral preserves continuation effects", + "status": "passed", + "duration": 0.09241699999999753, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.05954100000001006, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.057749999999998636, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.05941699999999628, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / spanish preserves continuation effects", + "status": "passed", + "duration": 0.08312499999999545, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.05858299999999872, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / all-done preserves continuation effects", + "status": "passed", + "duration": 0.054666999999994914, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.056708000000000425, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / empty preserves continuation effects", + "status": "passed", + "duration": 0.055084000000007904, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / neutral preserves continuation effects", + "status": "passed", + "duration": 0.11974999999999625, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.062041000000007784, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.060208000000002926, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.0672090000000054, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / spanish preserves continuation effects", + "status": "passed", + "duration": 0.06291699999999878, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.0612080000000077, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / all-done preserves continuation effects", + "status": "passed", + "duration": 0.06904199999999605, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.07941700000000651, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / empty preserves continuation effects", + "status": "passed", + "duration": 0.05679200000000151, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / neutral preserves continuation effects", + "status": "passed", + "duration": 0.07995799999999065, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.06908300000000622, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.4659160000000071, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.11820799999999565, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / spanish preserves continuation effects", + "status": "passed", + "duration": 0.08554200000000378, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07612499999999045, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / all-done preserves continuation effects", + "status": "passed", + "duration": 0.07512499999999989, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.06658299999999429, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / empty preserves continuation effects", + "status": "passed", + "duration": 0.0691669999999931, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-09 additional commentary cannot manufacture progress or reset an attempt", + "status": "passed", + "duration": 0.11787499999999795, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-09 exhausted recovery remains exhausted", + "status": "passed", + "duration": 0.027541999999996847, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / neutral", + "status": "passed", + "duration": 0.05349999999999966, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / no-approval", + "status": "passed", + "duration": 0.041667000000003895, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / scoped-negation", + "status": "passed", + "duration": 0.04245899999999381, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / historical-quote", + "status": "passed", + "duration": 0.04008300000000986, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / spanish", + "status": "passed", + "duration": 0.05041699999999594, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / optional-next-steps", + "status": "passed", + "duration": 0.051541999999997756, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / all-done", + "status": "passed", + "duration": 0.05033399999999233, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / keep-going", + "status": "passed", + "duration": 0.04074999999998852, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / empty", + "status": "passed", + "duration": 0.03829199999999844, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (1)", + "status": "passed", + "duration": 86.61391600000024, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (2)", + "status": "passed", + "duration": 29.17037500000015, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (3)", + "status": "passed", + "duration": 24.398791999999958, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (4)", + "status": "passed", + "duration": 23.13700000000017, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (5)", + "status": "passed", + "duration": 24.309708999999657, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not roll back the ledger when a fast repair finishes before enqueue returns", + "status": "passed", + "duration": 26.807667000000038, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority keeps the same bounded episode across restart and commentary, then escalates only after agent attempts", + "status": "passed", + "duration": 52.394374999999854, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with silent", + "status": "passed", + "duration": 95.71362499999987, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with comments", + "status": "passed", + "duration": 75.41820899999993, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with tool-calls", + "status": "passed", + "duration": 69.76400000000012, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 approval introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 27.63458300000002, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 budget introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 26.179375000000164, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 pause introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 26.749416999999994, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 reassigned introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 29.382332999999562, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority persists the source identity while the second repair waits to dispatch", + "status": "passed", + "duration": 18.918249999999716, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not stack a new repair budget on the retry_queued comment policy", + "status": "passed", + "duration": 5.655832999999802, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not stack a new repair budget on the retry_exhausted comment policy", + "status": "passed", + "duration": 5.040958000000046, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not grant a new budget to exhausted pre-upgrade continuation", + "status": "passed", + "duration": 14.779291000000285, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable done instead of the final summary", + "status": "passed", + "duration": 4.8428750000002765, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable cancelled instead of the final summary", + "status": "passed", + "duration": 2.7322089999997843, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable blocked instead of the final summary", + "status": "passed", + "duration": 5.370167000000038, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable in_review instead of the final summary", + "status": "passed", + "duration": 4.851791999999932, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority respects a pending approval while the issue still says in progress", + "status": "passed", + "duration": 5.582374999999956, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority rechecks a newly pending approval at dispatch without spending another attempt", + "status": "passed", + "duration": 16.95024999999987, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority preserves repair authority and its budget through a typed infrastructure retry", + "status": "passed", + "duration": 18.527166000000307, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after done", + "status": "passed", + "duration": 13.55758300000025, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after paused", + "status": "passed", + "duration": 13.585583000000042, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after reassigned", + "status": "passed", + "duration": 14.851208000000042, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after stopped", + "status": "passed", + "duration": 11.240708000000268, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority leaves goal-control run ownership intact: {\"goalControlRequestId\":\"control\"}", + "status": "passed", + "duration": 5.2188750000000255, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority leaves goal-control run ownership intact: {\"resumeSessionGoalHeartbeat\":true}", + "status": "passed", + "duration": 5.128791999999976, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority leaves a due monitor as the owner of the next step", + "status": "passed", + "duration": 4.969167000000198, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors pause and changed ownership without spending a repair attempt", + "status": "passed", + "duration": 10.653749999999945, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority the delayed sweep ignores old diagnostic labels and uses the same repair path", + "status": "passed", + "duration": 140.967709, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/services/recovery/legacy-continuation.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation authority requests agent repair for a successful process without a task disposition", + "status": "passed", + "duration": 1.0783330000000007, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted done disposition", + "status": "passed", + "duration": 0.11545800000000384, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted cancelled disposition", + "status": "passed", + "duration": 0.04333399999998733, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted blocked disposition", + "status": "passed", + "duration": 0.04029199999999378, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted in_review disposition", + "status": "passed", + "duration": 0.03883299999999679, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a failed process into repair", + "status": "passed", + "duration": 0.04008299999999565, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a cancelled process into repair", + "status": "passed", + "duration": 0.029542000000006396, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a interrupted process into repair", + "status": "passed", + "duration": 0.038250000000005, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a timed_out process into repair", + "status": "passed", + "duration": 0.04262500000000102, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a running process into repair", + "status": "passed", + "duration": 0.051084000000003016, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves stopped", + "status": "passed", + "duration": 0.04270800000000463, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves paused", + "status": "passed", + "duration": 0.024790999999993346, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves budgetBlocked", + "status": "passed", + "duration": 0.020750000000006708, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves pendingWait", + "status": "passed", + "duration": 0.02312499999999318, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves activeExecution", + "status": "passed", + "duration": 0.02479199999999082, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves ownedLifecycle", + "status": "passed", + "duration": 0.01999999999999602, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves conversation", + "status": "passed", + "duration": 0.01708399999999699, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not repair with a paused agent", + "status": "passed", + "duration": 0.025083000000009292, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not repair with a terminated agent", + "status": "passed", + "duration": 0.01695799999998826, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not repair with a pending_approval agent", + "status": "passed", + "duration": 0.016707999999994172, + "failureMessages": [] + }, + { + "name": "legacy continuation authority rejects foreign agent and reassigned issue", + "status": "passed", + "duration": 0.0418329999999969, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves the episode through two attempts and exhaustion", + "status": "passed", + "duration": 0.23545900000000586, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not resurrect an exhausted pre-upgrade liveness or handoff budget", + "status": "passed", + "duration": 0.12645799999999952, + "failureMessages": [] + }, + { + "name": "legacy continuation authority keeps replay identity stable while a genuinely new episode gets its own identity", + "status": "passed", + "duration": 0.11754100000000278, + "failureMessages": [] + }, + { + "name": "legacy continuation authority leaves native finalization to its own authority", + "status": "passed", + "duration": 0.027416999999999803, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-09", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-09 exhausted recovery ignores commentary but admits a new user request", + "status": "passed", + "duration": 152.58679200000006, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/disposition-repair.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "owner-sticky disposition repair classifies a deliberate wait without a target into its dedicated bounded lane", + "status": "passed", + "duration": 1.0484579999999823, + "failureMessages": [] + }, + { + "name": "owner-sticky disposition repair uses the persisted five-attempt owner-sticky schedule with bounded deterministic jitter", + "status": "passed", + "duration": 0.57387499999993, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "result.less|proposal.less|semantic result", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery reconciles an out-of-band 'complete' goal (after semantic result: false)", + "status": "passed", + "duration": 26.57974999999999, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'complete' goal (after semantic result: true)", + "status": "passed", + "duration": 26.421791999999982, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'paused' goal (after semantic result: false)", + "status": "passed", + "duration": 25.66816700000004, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'paused' goal (after semantic result: true)", + "status": "passed", + "duration": 27.099958000000015, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'blocked' goal (after semantic result: false)", + "status": "passed", + "duration": 26.564625000000092, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'blocked' goal (after semantic result: true)", + "status": "passed", + "duration": 26.126750000000015, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'limited' goal (after semantic result: false)", + "status": "passed", + "duration": 26.542958, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'limited' goal (after semantic result: true)", + "status": "passed", + "duration": 25.18729200000007, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'usageLimited' goal (after semantic result: false)", + "status": "passed", + "duration": 26.51354200000003, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'usageLimited' goal (after semantic result: true)", + "status": "passed", + "duration": 26.534625000000005, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'budgetLimited' goal (after semantic result: false)", + "status": "passed", + "duration": 26.567416999999978, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'budgetLimited' goal (after semantic result: true)", + "status": "passed", + "duration": 26.688791000000037, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after silent without replenishing consumed repair", + "status": "passed", + "duration": 0.63149999999996, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after commentary without replenishing consumed repair", + "status": "passed", + "duration": 0.38570900000013353, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after tool-events without replenishing consumed repair", + "status": "passed", + "duration": 0.3227919999999358, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery resolves a checkpointed result-less disposition without resubmitting when its terminal event is missing", + "status": "passed", + "duration": 0.4729160000001684, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery keeps a reconstructed semantic result on its matched terminal turn", + "status": "passed", + "duration": 0.5299589999999625, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery accepts a control-plane governed wait when a completed turn omitted its semantic result", + "status": "passed", + "duration": 0.3569999999999709, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/services/native-runtime/native-safe-replacement.test.ts", + "pattern": "exhausted|another run id", + "status": "pass", + "assertions": [ + { + "name": "durable replacement and control recovery automatically closes an exhausted incident once, preserves ownership, and records no replay", + "status": "passed", + "duration": 368.2448750000003, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery never resets an exhausted incident by assigning another run id", + "status": "passed", + "duration": 340.69979100000273, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-repair-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-repair-challenge", + "status": "not_run" + } + ] + }, + { + "id": "LCA-10", + "name": "Stop, pause and budget", + "expected": "Distinct stop/pause semantics; no unauthorized continuation", + "coverage": [ + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-10", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 5.524916000000303, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 4.314624999999069, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 10.199917000001733, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 8.384874999999738, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-10", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate budget survives encouraging prose", + "status": "passed", + "duration": 0.06812499999999488, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate duplicate survives encouraging prose", + "status": "passed", + "duration": 0.050333000000009065, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate wrong-company survives encouraging prose", + "status": "passed", + "duration": 0.040415999999993346, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate paused-agent survives encouraging prose", + "status": "passed", + "duration": 0.039249999999995566, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / neutral", + "status": "passed", + "duration": 0.0433749999999975, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / no-approval", + "status": "passed", + "duration": 0.04120799999999747, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / scoped-negation", + "status": "passed", + "duration": 0.038458000000005654, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / historical-quote", + "status": "passed", + "duration": 0.038458000000005654, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / spanish", + "status": "passed", + "duration": 0.03691700000000253, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / optional-next-steps", + "status": "passed", + "duration": 0.045915999999991186, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / all-done", + "status": "passed", + "duration": 0.09783400000000597, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / keep-going", + "status": "passed", + "duration": 0.09387500000001125, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / empty", + "status": "passed", + "duration": 0.05620799999999804, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-stale-queue-invalidation.test.ts", + "pattern": "cap|gate|ownership|before adapter", + "status": "pass", + "assertions": [ + { + "name": "heartbeat stale queued-run invalidation skips generic timer wakes with no actionable assigned work before adapter execution", + "status": "passed", + "duration": 397.89275, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation cancels a resolved connection-intent wake 'parked' after checkout but before adapter dispatch", + "status": "passed", + "duration": 743.6849170000005, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation cancels a resolved connection-intent wake 'reassigned' after checkout but before adapter dispatch", + "status": "passed", + "duration": 800.298417, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation rejects ownership changes immediately before the final continuation handoff", + "status": "passed", + "duration": 628.7572499999987, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily run cap is reached", + "status": "passed", + "duration": 1336.4290830000027, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily run cap as a hard stop", + "status": "passed", + "duration": 1317.758332999998, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation counts started cancelled runs toward the per-agent daily run cap", + "status": "passed", + "duration": 591.2961670000004, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation coalesces same-issue wakes before enforcing the daily run cap", + "status": "passed", + "duration": 440.34833300000173, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily cost cap is reached", + "status": "passed", + "duration": 392.40000000000146, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily cost cap as a hard stop", + "status": "passed", + "duration": 403.7852500000008, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued runs before adapter execution when the daily cost cap is reached", + "status": "passed", + "duration": 459.61924999999974, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued issue runs at the daily run cap and releases the execution lock", + "status": "passed", + "duration": 425.7841660000013, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation promotes deferred issue wakes when a queued holder is cancelled by the daily run cap", + "status": "passed", + "duration": 452.822957999997, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "budget|pause|cancel|gate", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider workspace_busy waits", + "status": "passed", + "duration": 81.23545899999954, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider ai_connection_busy waits", + "status": "passed", + "duration": 70.38154200000008, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the dependency gate for interrupted conversations", + "status": "passed", + "duration": 55.14695799999936, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the disabled gate for interrupted conversations", + "status": "passed", + "duration": 61.996250000000146, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the reassigned gate for interrupted conversations", + "status": "passed", + "duration": 57.23479199999929, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to blocked before retry promotion", + "status": "passed", + "duration": 47.036958000000595, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to todo before retry promotion", + "status": "passed", + "duration": 46.127832999998645, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to backlog before retry promotion", + "status": "passed", + "duration": 48.09141699999964, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions rolls back the wakeup-request update when the run-event write fails during a gate-suppressed cancellation", + "status": "passed", + "duration": 37.98266700000022, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions keeps promotion and stale-queued-run cancellation company-scoped", + "status": "passed", + "duration": 622.666416, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions never writes another company's wakeup request during suppressed-retry or stale-queued-run cancellation", + "status": "passed", + "duration": 45.93187500000022, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:stop-new-resume", + "status": "not_run" + }, + { + "id": "everyday-workflows:stop-redirect", + "status": "not_run" + }, + { + "id": "agent-chat:stop-new-resume", + "status": "not_run" + } + ] + }, + { + "id": "LCA-11", + "name": "Terminal ordering and cleanup", + "expected": "Completion report is not provider success; terminal/cleanup events retain their authority", + "coverage": [ + { + "lane": "runner", + "file": "tests/lifecycle-baseline/runner.test.ts", + "pattern": "LCA-11", + "status": "pass", + "assertions": [ + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / neutral", + "status": "passed", + "duration": 0.1841670000000022, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / no-approval", + "status": "passed", + "duration": 0.07116700000000264, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / scoped-negation", + "status": "passed", + "duration": 0.06499999999999773, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / historical-quote", + "status": "passed", + "duration": 0.07250000000000512, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / spanish", + "status": "passed", + "duration": 0.084541999999999, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / optional-next-steps", + "status": "passed", + "duration": 0.09945799999999849, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / all-done", + "status": "passed", + "duration": 0.06662500000000193, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / keep-going", + "status": "passed", + "duration": 0.0602919999999898, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / empty", + "status": "passed", + "duration": 0.06333300000000008, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-11", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-11 late failure / neutral", + "status": "passed", + "duration": 0.0539579999999944, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / no-approval", + "status": "passed", + "duration": 0.03895900000000552, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / scoped-negation", + "status": "passed", + "duration": 0.038375000000002046, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / historical-quote", + "status": "passed", + "duration": 0.03958299999999326, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / spanish", + "status": "passed", + "duration": 0.04595799999999883, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / optional-next-steps", + "status": "passed", + "duration": 0.03866700000000378, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / all-done", + "status": "passed", + "duration": 0.03849999999999909, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / keep-going", + "status": "passed", + "duration": 0.03849999999999909, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / empty", + "status": "passed", + "duration": 0.03958299999999326, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "terminal|completion report|cleanup|handoff", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery preserves durable success while quarantined cleanup stays bounded", + "status": "passed", + "duration": 1.0589579999999614, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery stops scheduled cleanup after the quarantine lifetime budget", + "status": "passed", + "duration": 1.1108749999999645, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery retains late bootstrap cleanup through the next admission", + "status": "passed", + "duration": 0.6132499999999936, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when provider result never settles", + "status": "passed", + "duration": 0.5157090000000153, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when completion checkpoint never settles", + "status": "passed", + "duration": 0.3305000000000291, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when control-plane replay never settles", + "status": "passed", + "duration": 0.3534590000000435, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when final event append never settles", + "status": "passed", + "duration": 0.4444579999999405, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when run completion never settles", + "status": "passed", + "duration": 0.35399999999992815, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery commits cancellation before bounding failed provider cleanup", + "status": "passed", + "duration": 204.10249999999985, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":true,\"closeFails\":false})", + "status": "passed", + "duration": 0.6019579999999678, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":true,\"closeFails\":true})", + "status": "passed", + "duration": 0.3662909999998192, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":false,\"closeFails\":true})", + "status": "passed", + "duration": 0.32962499999985084, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":true,\"closeFails\":true,\"startupRace\":true})", + "status": "passed", + "duration": 0.451415999999881, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery commits a governed wait without waiting for abort-insensitive provider cleanup", + "status": "passed", + "duration": 101.18454099999985, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery uses the execution timeout when a completion report has no provider terminal", + "status": "passed", + "duration": 172.73924999999986, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery retains a reusable session while a semantic terminal releases its remote subscription", + "status": "passed", + "duration": 152.15720800000008, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery replaces a provider session that already ended with a failed terminal", + "status": "passed", + "duration": 0.43704200000001947, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery resolves a checkpointed result-less disposition without resubmitting when its terminal event is missing", + "status": "passed", + "duration": 0.4729160000001684, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery keeps a reconstructed semantic result on its matched terminal turn", + "status": "passed", + "duration": 0.5299589999999625, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery aborts and bounds a durable handoff that never settles", + "status": "passed", + "duration": 128.27008399999977, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves terminal success while iterator teardown remains pending", + "status": "passed", + "duration": 52.3132499999997, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves terminal success while quarantining stalled handoff cleanup", + "status": "passed", + "duration": 103.34749999999985, + "failureMessages": [] + } + ] + } + ], + "live": [] + }, + { + "id": "LCA-12", + "name": "Replay, restart and stale ownership", + "expected": "One successor, preserved receipts/budgets; stale finalizers cannot mutate new ownership", + "coverage": [ + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-12", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-12 rejects lost original receipt", + "status": "passed", + "duration": 0.06883299999999792, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-12", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate budget survives encouraging prose", + "status": "passed", + "duration": 0.06812499999999488, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate duplicate survives encouraging prose", + "status": "passed", + "duration": 0.050333000000009065, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate wrong-company survives encouraging prose", + "status": "passed", + "duration": 0.040415999999993346, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate paused-agent survives encouraging prose", + "status": "passed", + "duration": 0.039249999999995566, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / neutral", + "status": "passed", + "duration": 0.05349999999999966, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / no-approval", + "status": "passed", + "duration": 0.04329199999999389, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / scoped-negation", + "status": "passed", + "duration": 0.04141600000001233, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / historical-quote", + "status": "passed", + "duration": 0.04016699999999673, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / spanish", + "status": "passed", + "duration": 0.038207999999997355, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / optional-next-steps", + "status": "passed", + "duration": 0.03754100000000449, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / all-done", + "status": "passed", + "duration": 0.038624999999996135, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / keep-going", + "status": "passed", + "duration": 0.03920800000000213, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / empty", + "status": "passed", + "duration": 0.03808300000000031, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/native-finalization-recovery.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "P6-16/P6-25/P6-28 native finalization recovery fails closed into bounded named recovery without consulting the live flag or falling back", + "status": "passed", + "duration": 73.25437499999998, + "failureMessages": [] + }, + { + "name": "P6-16/P6-25/P6-28 native finalization recovery retires an older failed finalizer when a newer run already committed the issue", + "status": "passed", + "duration": 22.563916000000063, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers exact committed results even with stale nativePhase or privately recovered errors", + "status": "passed", + "duration": 26.722083999999995, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"runtimeMode\":\"legacy\"}}", + "status": "passed", + "duration": 6.575957999999446, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"status\":\"running\"}}", + "status": "passed", + "duration": 8.268000000000029, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"finishedAt\":null}}", + "status": "passed", + "duration": 7.679167000000234, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"error\":\"another failure\"}}", + "status": "passed", + "duration": 12.666334000000461, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"errorCode\":\"setup_failed\"}}", + "status": "passed", + "duration": 7.419542000000547, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"error\":\"newer failure\",\"errorCode\":\"adapter_failed\",\"resultJson\":{\"recoveredExecutionFailure\":{\"error\":\"provider_transport_failed: runner did not durably suspend before checkpoint\",\"errorCode\":\"adapter_failed\"}}}}", + "status": "passed", + "duration": 5.909082999999555, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"schemaStatus\":\"rejected\"}", + "status": "passed", + "duration": 7.417833999999857, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"phase\":\"retryable_failure\"}}", + "status": "passed", + "duration": 6.349707999999737, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"nextAttemptAt\":\"1970-01-01T00:00:00.000Z\"}}", + "status": "passed", + "duration": 5.044875000000502, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"leaseOwner\":\"another-controller\",\"leaseExpiresAt\":\"2026-09-23T02:49:23.344Z\"}}", + "status": "passed", + "duration": 5.042790999999852, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_maintenance\",\"phase\":\"started\"}]}}", + "status": "passed", + "duration": 5.972083999999995, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_maintenance\",\"phase\":\"settled\"}]}}", + "status": "passed", + "duration": 6.085291999999754, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_maintenance\",\"phase\":\"operator_required\"}]}}", + "status": "passed", + "duration": 5.977332999999817, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_source_archive\",\"phase\":\"operator_required\"}]}}", + "status": "passed", + "duration": 5.863666999999623, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_source_archive\",\"phase\":\"prepared\"},{\"kind\":\"native_cleanup_runner_epoch\",\"phase\":\"spawned\",\"epoch\":1,\"pid\":88736}]}}", + "status": "passed", + "duration": 5.537166999999499, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers a single legacy failed attempt only for independent physical proof", + "status": "passed", + "duration": 8.65808399999969, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers prelaunch source archival at prepared without changing authority", + "status": "passed", + "duration": 7.8695410000000265, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers prelaunch source archival at archived without changing authority", + "status": "passed", + "duration": 7.115332999999737, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery fences actual scoped admission until every archived owner has its matching latest settlement", + "status": "passed", + "duration": 21.041041000000405, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with new epoch", + "status": "passed", + "duration": 5.289458000000195, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with third attempt", + "status": "passed", + "duration": 3.824541999999383, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with reordered phases", + "status": "passed", + "duration": 4.634125000000495, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with different request", + "status": "passed", + "duration": 4.3634170000004815, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with unversioned entry", + "status": "passed", + "duration": 4.95508399999926, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with settled attempt", + "status": "passed", + "duration": 3.953334000000723, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with unknown failure", + "status": "passed", + "duration": 4.681625000000167, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with missing source", + "status": "passed", + "duration": 3.867082999999184, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery joins overlap and advances beyond a permanently ineligible first candidate", + "status": "passed", + "duration": 12.7681249999996, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery isolates one failure and resets its joined owner for the next bounded sweep", + "status": "passed", + "duration": 11.541791999999987, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/services/native-runtime/native-safe-replacement.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "durable replacement and control recovery preserves saved work and a queued request at a controlled recovery boundary (verified)", + "status": "passed", + "duration": 406.46283300000005, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery preserves saved work and a queued request at a controlled recovery boundary (unproven)", + "status": "passed", + "duration": 277.70641700000033, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery preserves saved work and a queued request at a controlled recovery boundary (unknown_action)", + "status": "passed", + "duration": 352.52849999999944, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires stopped-session proof through commit (unproven)", + "status": "passed", + "duration": 280.3205420000004, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires stopped-session proof through commit (changed)", + "status": "passed", + "duration": 283.05966700000045, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires stopped-session proof through commit (verified)", + "status": "passed", + "duration": 553.8750829999999, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (missing_receipt)", + "status": "passed", + "duration": 309.8735829999996, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (other_run)", + "status": "passed", + "duration": 489.16712499999994, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (other_cause)", + "status": "passed", + "duration": 370.17495899999994, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (manual_reblock)", + "status": "passed", + "duration": 313.86083299999973, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (dependency_edit)", + "status": "passed", + "duration": 345.0147500000003, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (queued_comment)", + "status": "passed", + "duration": 282.69337499999983, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery automatically closes an exhausted incident once, preserves ownership, and records no replay", + "status": "passed", + "duration": 368.2448750000003, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not let a full batch awaiting replacement starve an eligible disposition", + "status": "passed", + "duration": 430.7183750000004, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery rolls back a crashed automatic disposition and completes it on the next sweep", + "status": "passed", + "duration": 406.46870800000033, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not let the automatic fallback preempt a safe replacement", + "status": "passed", + "duration": 246.2845839999991, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery closes stale recovery after closed without changing task state or granting replay", + "status": "passed", + "duration": 262.1961250000004, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery closes stale recovery after reassigned without changing task state or granting replay", + "status": "passed", + "duration": 264.5473750000001, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery closes stale recovery after new_execution without changing task state or granting replay", + "status": "passed", + "duration": 266.72199999999975, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery cancels a durable native retry even when its previous provider is already failed", + "status": "passed", + "duration": 338.26958299999933, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery atomically terminalizes unsupported legacy recovery and preserves its owner", + "status": "passed", + "duration": 482.05062499999985, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reopen a reconciled legacy run while continuation is pending", + "status": "passed", + "duration": 1391.6370000000006, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery surfaces a failed current reviewer without transferring the original assignment", + "status": "passed", + "duration": 1353.0169580000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not turn an already reconciled continuation into a recovery assignment", + "status": "passed", + "duration": 418.68425000000025, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery keeps an unclassified transport terminal operator-owned", + "status": "passed", + "duration": 369.35362499999974, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reuse consumed wake authority after a later done transition", + "status": "passed", + "duration": 292.8311250000006, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reuse consumed wake authority after a later cancelled transition", + "status": "passed", + "duration": 318.2577919999985, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reuse consumed wake authority after a later review transition", + "status": "passed", + "duration": 352.1425840000011, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery persists exactly one linked successor under competing sweepers and restarts", + "status": "passed", + "duration": 348.3069169999999, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery retries status publication after a crash without dispatching provider work", + "status": "passed", + "duration": 332.87191600000006, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native", + "status": "passed", + "duration": 361.73870800000077, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: legacy", + "status": "passed", + "duration": 364.1260000000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native_precedes_context", + "status": "passed", + "duration": 415.9444579999981, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: missing", + "status": "passed", + "duration": 341.13424999999916, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: nonexistent", + "status": "passed", + "duration": 385.58470899999884, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: deleted", + "status": "passed", + "duration": 362.4044169999979, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: foreign", + "status": "passed", + "duration": 324.5604579999999, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: malformed", + "status": "passed", + "duration": 420.7029580000017, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: object", + "status": "passed", + "duration": 348.3107920000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: array", + "status": "passed", + "duration": 291.7279579999995, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: number", + "status": "passed", + "duration": 374.49041600000055, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: json_null", + "status": "passed", + "duration": 443.61499999999796, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native_foreign", + "status": "passed", + "duration": 471.174332999999, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native_nonexistent", + "status": "passed", + "duration": 305.4517500000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery never resets an exhausted incident by assigning another run id", + "status": "passed", + "duration": 340.69979100000273, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery recovers a crash at successor_inserted without duplicate successors", + "status": "passed", + "duration": 306.0639169999995, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery recovers a crash at lineage_committed without duplicate successors", + "status": "passed", + "duration": 306.6994169999998, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not replay a provider-native command with unknown effects (PRP envelope: false)", + "status": "passed", + "duration": 343.34816599999976, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not replay a provider-native command with unknown effects (PRP envelope: true)", + "status": "passed", + "duration": 336.6472079999985, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery surfaces a reviewer's abandoned control transition for the operator", + "status": "passed", + "duration": 402.8783749999966, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery fences a stranded finalization and surfaces one operator action after its deadline", + "status": "passed", + "duration": 365.1917500000018, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery bounds legacy finalization without adding a deadline to healthy provider execution", + "status": "passed", + "duration": 349.4671669999989, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not release another run's checkout or replace a reassigned task", + "status": "passed", + "duration": 358.9440419999992, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires explicit reconciled outcomes and rejects a still-running provider", + "status": "passed", + "duration": 303.7825410000005, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery retains a reconciliation delivery across dispatch failure and invalidates stale ownership", + "status": "passed", + "duration": 342.7300839999989, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/question-response-delivery.test.ts", + "pattern": "concurrent|interrupted|stale|receipt", + "status": "pass", + "assertions": [ + { + "name": "question response delivery reuses the winning wake when a concurrent insert hits the idempotency fence", + "status": "passed", + "duration": 42.07237500000019, + "failureMessages": [] + }, + { + "name": "question response delivery reuses a durable wake receipt instead of issuing a duplicate continuation", + "status": "passed", + "duration": 38.45212500000025, + "failureMessages": [] + }, + { + "name": "question response delivery recovers a completed wake when receipt finalization was interrupted", + "status": "passed", + "duration": 22.3459170000001, + "failureMessages": [] + }, + { + "name": "question response delivery fences a stale worker after a newer claim generation takes ownership", + "status": "passed", + "duration": 72.04341700000032, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-restart", + "status": "not_run" + }, + { + "id": "everyday-workflows:recover-controller", + "status": "not_run" + } + ] + }, + { + "id": "LCA-13", + "name": "Owned review", + "expected": "Concrete reviewer; reviewer outcome drives next transition", + "coverage": [ + { + "lane": "unit", + "file": "server/src/services/native-runtime/status-arbiter.test.ts", + "pattern": "review", + "status": "pass", + "assertions": [ + { + "name": "native status authority a reviewer finishes its decision without completing rejected or still-reviewed work", + "status": "passed", + "duration": 1.1150420000000025, + "failureMessages": [] + }, + { + "name": "native status authority routes an unfinished reviewer action to bounded recovery instead of retrying the worker task", + "status": "passed", + "duration": 0.14624999999999488, + "failureMessages": [] + }, + { + "name": "native status authority creates explicit liveness paths for review, continuation, cancellation, and governance", + "status": "passed", + "duration": 0.31412499999999, + "failureMessages": [] + }, + { + "name": "native status authority does not create a duplicate review after this run's review was already accepted", + "status": "passed", + "duration": 0.0436250000000058, + "failureMessages": [] + }, + { + "name": "native status authority does not create a duplicate review after this run's planning confirmation was already accepted", + "status": "passed", + "duration": 0.029832999999996446, + "failureMessages": [] + }, + { + "name": "native status authority routes each explicit request to its own reviewer", + "status": "passed", + "duration": 0.055125000000003865, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/native-status-arbiter-corpus.test.ts", + "pattern": "ATT|review|corpus", + "status": "pass", + "assertions": [ + { + "name": "P6-31 Section 18.13 executable status-authority corpus executes all 53 fixtures in their production consumers and joins all 70 matrix rows", + "status": "passed", + "duration": 875.9555409999998, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails independently when any asserted field category is mutated", + "status": "passed", + "duration": 602.1940000000004, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails mapped fixtures when live entrypoints or owning actions are removed despite matching policy labels", + "status": "passed", + "duration": 53.71833400000014, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus retires a proven automatic review and applies the current successful completion exactly once", + "status": "passed", + "duration": 49.06825000000026, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus completes a new merge run after an old CI review and bounds repeated incomplete results", + "status": "passed", + "duration": 50.55687500000022, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects wrong, missing, and duplicate criterion IDs before accepting completion", + "status": "passed", + "duration": 11.656666999999288, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps genuine approval actionable in the finish response and in finalization", + "status": "passed", + "duration": 46.1230000000005, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves answered cards, explicit attention, stronger authority, and later task edits", + "status": "passed", + "duration": 162.52441700000054, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects an empty needs_review report with actionable feedback without inventing an approval", + "status": "passed", + "duration": 22.430875000000015, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus withdraws obsolete policy reviews, restores the prior status, and is idempotent", + "status": "passed", + "duration": 41.59149999999954, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already accepted review untouched", + "status": "passed", + "duration": 13.593708000000333, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already rejected review untouched", + "status": "passed", + "duration": 14.22283299999981, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves real completion reviews and limits cleanup to the requested runs", + "status": "passed", + "duration": 23.14666599999964, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later blocked status", + "status": "passed", + "duration": 22.463166999999885, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later done status", + "status": "passed", + "duration": 19.317457999999533, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later cancelled status", + "status": "passed", + "duration": 19.835250000000087, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus does not restore status after a newer decision or a status change back to review", + "status": "passed", + "duration": 40.21300000000065, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps review status when a separate request still needs a response", + "status": "passed", + "duration": 15.467709000000468, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus isolates a failed cleanup candidate and retries it on the next pass", + "status": "passed", + "duration": 44.28529199999957, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps committed cleanup and continues publication after a live event fails", + "status": "passed", + "duration": 36.41716599999927, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus continues native finalization when the obsolete-card lookup fails", + "status": "passed", + "duration": 22.168541999999434, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves a later authoritative status during reconciliation", + "status": "passed", + "duration": 0.14433399999961694, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus supersedes the exact committed coordinator decision and sequences preserve decisions independently of issue status versions", + "status": "passed", + "duration": 9.310333000000355, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps assessment lineage run-local while superseding an issue decision from another run", + "status": "passed", + "duration": 11.566084000000046, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves an intermediate same-run assessment when the issue decision points to an older ancestor", + "status": "passed", + "duration": 8.484166999999616, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus ignores historical committed finalizations superseded by a newer authoritative decision", + "status": "passed", + "duration": 9.7764159999997, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with none predecessor", + "status": "passed", + "duration": 7.067916999999397, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with same_run predecessor", + "status": "passed", + "duration": 7.6206670000001395, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with other_run predecessor", + "status": "passed", + "duration": 8.670583000000079, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus binds a tools-refresh continuation to its existing durable wake without a duplicate", + "status": "passed", + "duration": 9.068000000000211, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails the transaction closed for an unknown status effect", + "status": "passed", + "duration": 6.398000000000138, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "runner-evals:request-task-review", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-01", + "name": "Separate productive, repair and infrastructure allowances", + "expected": "Each lane spends only its own allowance", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-01", + "status": "assertion_failure", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 0 is not a failed provider attempt", + "status": "passed", + "duration": 0.7582920000000115, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 1 is not a failed provider attempt", + "status": "passed", + "duration": 0.09249999999997272, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 2 is not a failed provider attempt", + "status": "failed", + "duration": 2.5431669999999826, + "failureMessages": [ + "AssertionError: expected 2 to be +0 // Object.is equality\n at /private/tmp/paperclip-lifecycle-baseline-20260921/tests/lifecycle-baseline/accounting.test.ts:25:22\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2027:60\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:302:11\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:26\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2326:20\n at new Promise ()\n at runWithCancel (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2323:10)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2305:20\n at new Promise ()\n at runWithTimeout (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2272:10)" + ] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 0 is not failure count", + "status": "passed", + "duration": 0.09899999999998954, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 1 is not failure count", + "status": "passed", + "duration": 0.05279199999998241, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 2 is not failure count", + "status": "passed", + "duration": 0.03845900000001734, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 10 is not failure count", + "status": "passed", + "duration": 0.035790999999989026, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance workspace_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.07929100000001199, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ai_connection_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.06058300000000827, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'silent' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.3314589999999953, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'confident' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.11229099999999903, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'comments' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.0956250000000125, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'tool calls' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.08104099999999903, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'stale diagnostic' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.07258300000000872, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 stopped wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.061790999999999485, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 paused wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03433300000000372, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 budgetBlocked wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031458999999983916, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 pendingWait wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03162499999999113, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 activeExecution wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.030750000000011823, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 ownedLifecycle wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03212500000000773, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-04 episode identity survives arbitrary failure and resource-wait counters", + "status": "passed", + "duration": 0.0675420000000031, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "ACCT-01", + "status": "assertion_failure", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling ACCT-01 a failed disposition repair 1 receives its own first infrastructure retry", + "status": "passed", + "duration": 63.291542000000845, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling ACCT-01 a failed disposition repair 2 receives its own first infrastructure retry", + "status": "failed", + "duration": 48.93654199999946, + "failureMessages": [ + "AssertionError: expected 'retry_exhausted' to be 'scheduled' // Object.is equality\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/heartbeat-retry-scheduling.test.ts:644:31\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "heartbeat bounded retry scheduling ACCT-01 infrastructure failures do not spend the first productive max-turn continuation", + "status": "failed", + "duration": 45.80316599999969, + "failureMessages": [ + "AssertionError: expected { outcome: 'retry_exhausted', …(2) } to match object { outcome: 'scheduled', attempt: 1 }\n(1 matching property omitted from actual)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1283:10)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1156:15)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/heartbeat-retry-scheduling.test.ts:662:23\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 1.2462909999999852, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.6362909999999999, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.12520800000001486, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.1392500000000041, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.09370900000001825, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1097910000000013, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.0780420000000106, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.17433299999999008, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.10162499999998431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.11145799999999895, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.07879200000002129, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.12975000000000136, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07241700000000151, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.05879099999998516, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.0746249999999975, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.05883299999999281, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.05462499999998727, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.17608300000000554, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.13179199999999014, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.08545800000001691, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09704099999999016, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.06516600000000494, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.04508299999997689, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.06254099999998175, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04220899999998551, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07154199999999378, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.133041999999989, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-02", + "name": "False progress and exhaustion", + "expected": "Comments, wording and raw tool counts cannot replenish attempts", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-02", + "status": "assertion_failure", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 0 is not a failed provider attempt", + "status": "passed", + "duration": 0.7582920000000115, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 1 is not a failed provider attempt", + "status": "passed", + "duration": 0.09249999999997272, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 2 is not a failed provider attempt", + "status": "failed", + "duration": 2.5431669999999826, + "failureMessages": [ + "AssertionError: expected 2 to be +0 // Object.is equality\n at /private/tmp/paperclip-lifecycle-baseline-20260921/tests/lifecycle-baseline/accounting.test.ts:25:22\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2027:60\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:302:11\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:26\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2326:20\n at new Promise ()\n at runWithCancel (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2323:10)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2305:20\n at new Promise ()\n at runWithTimeout (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2272:10)" + ] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 0 is not failure count", + "status": "passed", + "duration": 0.09899999999998954, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 1 is not failure count", + "status": "passed", + "duration": 0.05279199999998241, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 2 is not failure count", + "status": "passed", + "duration": 0.03845900000001734, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 10 is not failure count", + "status": "passed", + "duration": 0.035790999999989026, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance workspace_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.07929100000001199, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ai_connection_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.06058300000000827, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'silent' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.3314589999999953, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'confident' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.11229099999999903, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'comments' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.0956250000000125, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'tool calls' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.08104099999999903, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'stale diagnostic' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.07258300000000872, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 stopped wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.061790999999999485, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 paused wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03433300000000372, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 budgetBlocked wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031458999999983916, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 pendingWait wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03162499999999113, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 activeExecution wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.030750000000011823, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 ownedLifecycle wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03212500000000773, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-04 episode identity survives arbitrary failure and resource-wait counters", + "status": "passed", + "duration": 0.0675420000000031, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "ACCT-02", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling ACCT-02 exhausted infrastructure retries remain exhausted after silent and restart", + "status": "passed", + "duration": 43.78195799999958, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling ACCT-02 exhausted infrastructure retries remain exhausted after comments-and-tools and restart", + "status": "passed", + "duration": 49.00437500000044, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": "ACCT-02", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with silent", + "status": "passed", + "duration": 95.71362499999987, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with comments", + "status": "passed", + "duration": 75.41820899999993, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with tool-calls", + "status": "passed", + "duration": 69.76400000000012, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 1.2462909999999852, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.6362909999999999, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.12520800000001486, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.1392500000000041, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.09370900000001825, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1097910000000013, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.0780420000000106, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.17433299999999008, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.10162499999998431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.11145799999999895, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.07879200000002129, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.12975000000000136, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07241700000000151, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.05879099999998516, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.0746249999999975, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.05883299999999281, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.05462499999998727, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.17608300000000554, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.13179199999999014, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.08545800000001691, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09704099999999016, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.06516600000000494, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.04508299999997689, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.06254099999998175, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04220899999998551, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07154199999999378, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.133041999999989, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-03", + "name": "Late gates", + "expected": "Stop, approvals, ownership, pause and spending gates remain authoritative", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-03", + "status": "pass", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 stopped wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.061790999999999485, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 paused wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03433300000000372, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 budgetBlocked wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031458999999983916, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 pendingWait wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03162499999999113, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 activeExecution wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.030750000000011823, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 ownedLifecycle wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.03212500000000773, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": "ACCT-03", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation persisted authority ACCT-03 approval introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 27.63458300000002, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 budget introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 26.179375000000164, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 pause introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 26.749416999999994, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 reassigned introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 29.382332999999562, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-04 LCA-10", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 5.524916000000303, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 4.314624999999069, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 10.199917000001733, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 8.384874999999738, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-stale-queue-invalidation.test.ts", + "pattern": "gate|cap|ownership", + "status": "pass", + "assertions": [ + { + "name": "heartbeat stale queued-run invalidation rejects ownership changes immediately before the final continuation handoff", + "status": "passed", + "duration": 628.7572499999987, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily run cap is reached", + "status": "passed", + "duration": 1336.4290830000027, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily run cap as a hard stop", + "status": "passed", + "duration": 1317.758332999998, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation counts started cancelled runs toward the per-agent daily run cap", + "status": "passed", + "duration": 591.2961670000004, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation coalesces same-issue wakes before enforcing the daily run cap", + "status": "passed", + "duration": 440.34833300000173, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily cost cap is reached", + "status": "passed", + "duration": 392.40000000000146, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily cost cap as a hard stop", + "status": "passed", + "duration": 403.7852500000008, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued runs before adapter execution when the daily cost cap is reached", + "status": "passed", + "duration": 459.61924999999974, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued issue runs at the daily run cap and releases the execution lock", + "status": "passed", + "duration": 425.7841660000013, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation promotes deferred issue wakes when a queued holder is cancelled by the daily run cap", + "status": "passed", + "duration": 452.822957999997, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 1.2462909999999852, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.6362909999999999, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.12520800000001486, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.1392500000000041, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.09370900000001825, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1097910000000013, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.0780420000000106, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.17433299999999008, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.10162499999998431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.11145799999999895, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.07879200000002129, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.12975000000000136, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07241700000000151, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.05879099999998516, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.0746249999999975, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.05883299999999281, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.05462499999998727, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.17608300000000554, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.13179199999999014, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.08545800000001691, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09704099999999016, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.06516600000000494, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.04508299999997689, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.06254099999998175, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04220899999998551, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07154199999999378, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.133041999999989, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-04", + "name": "Restart and replay accounting", + "expected": "Consumed allowances and causal receipts survive restart and duplicates", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-04", + "status": "pass", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-04 episode identity survives arbitrary failure and resource-wait counters", + "status": "passed", + "duration": 0.0675420000000031, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "ACCT-04", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after silent without replenishing consumed repair", + "status": "passed", + "duration": 0.63149999999996, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after commentary without replenishing consumed repair", + "status": "passed", + "duration": 0.38570900000013353, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after tool-events without replenishing consumed repair", + "status": "passed", + "duration": 0.3227919999999358, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": "replay|restart|fast repair", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (1)", + "status": "passed", + "duration": 86.61391600000024, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (2)", + "status": "passed", + "duration": 29.17037500000015, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (3)", + "status": "passed", + "duration": 24.398791999999958, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (4)", + "status": "passed", + "duration": 23.13700000000017, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (5)", + "status": "passed", + "duration": 24.309708999999657, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not roll back the ledger when a fast repair finishes before enqueue returns", + "status": "passed", + "duration": 26.807667000000038, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority keeps the same bounded episode across restart and commentary, then escalates only after agent attempts", + "status": "passed", + "duration": 52.394374999999854, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 approval introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 27.63458300000002, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 budget introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 26.179375000000164, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 pause introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 26.749416999999994, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 reassigned introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 29.382332999999562, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "concurrent|coalesces", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling reuses one failure successor across concurrent and repeated scheduling", + "status": "passed", + "duration": 125.9824579999995, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling bounds interrupted conversations across restarts and concurrent scheduling", + "status": "passed", + "duration": 150.13554199999908, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling coalesces duplicate accepted interaction continuation infra retry schedules", + "status": "passed", + "duration": 56.101457999999184, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling coalesces duplicate max-turn continuation schedules for the same source run and attempt", + "status": "passed", + "duration": 44.16324999999961, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions promotes a due scheduled retry exactly once under concurrent promotion attempts", + "status": "passed", + "duration": 603.8214160000007, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 1.2462909999999852, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.6362909999999999, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.12520800000001486, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.1392500000000041, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.09370900000001825, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1097910000000013, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.0780420000000106, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.17433299999999008, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.10162499999998431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.11145799999999895, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.07879200000002129, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.12975000000000136, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07241700000000151, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.05879099999998516, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.0746249999999975, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.05883299999999281, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.05462499999998727, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.17608300000000554, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.13179199999999014, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.08545800000001691, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09704099999999016, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.06516600000000494, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.04508299999997689, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.06254099999998175, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04220899999998551, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07154199999999378, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.133041999999989, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + } + ] +} diff --git a/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting-live.json b/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting-live.json new file mode 100644 index 00000000000..2707ee40fc0 --- /dev/null +++ b/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting-live.json @@ -0,0 +1,1102 @@ +{ + "schema": "paperclip.continuation-accounting-verification/v1", + "measurementDateLocal": "2026-09-22", + "timezone": "America/Los_Angeles", + "campaigns": [ + { + "source": { + "sha": "9cd7a585f5c69dc327b7d90534ad51be89ae5bb7", + "ref": "refs/heads/codex/lifecycle-behavior-baseline-20260921", + "workflowRunUrl": "https://github.com/paperclipai/paperclip/actions/runs/35811412940", + "eventName": "workflow_dispatch" + }, + "campaignId": "gha-35811412940-1", + "artifactSha256": "c43cff78e68900b350bfd509f72ba0166b03408fc24ba1a61108516e50977f55", + "totals": { + "selected": 8, + "executed": 8, + "passed": 0, + "failed": 8, + "incomplete": 0, + "retries": 0, + "cleanupPassed": true + }, + "billing": { + "testCount": 8, + "agentRunDurationMs": 747862, + "leaseDurationMs": 0, + "llm": { + "runCount": 32, + "runsWithTokenUsage": 29, + "runsWithReportedCost": 10, + "inputTokens": 12277374, + "outputTokens": 93595, + "cachedInputTokens": 11245058, + "totalTokens": 23616027, + "reportedCostUsd": 0, + "costStatus": "partial" + }, + "reportedLlmCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "testsWithCompleteBilling": 2 + }, + "definitionHashes": [ + "eee31d4c9061793bea81ce5a4b05edf26d79fd1d0d8af7afb12515b2e4b14fdc" + ], + "cells": [ + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-productive-neutral", + "caseId": "accounting-productive-neutral", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "permanent_infrastructure", + "error": "Required evidence missing: final-state.png", + "attempt": 1, + "durationMs": 233300, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 0, + "inputTokens": 4841910, + "outputTokens": 29213, + "cachedInputTokens": 4589732, + "totalTokens": 9460855, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 162684, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 5, + "runIds": [ + "cd450ecc-85bd-4af7-a395-4212e96e3a0b", + "4902a7bc-a7f2-4faf-8df9-259deca46cfa", + "2aeb3b1b-d8ec-4804-89f0-9c843c5e168f", + "6ab8d9b9-f35e-4306-bd73-9ce653416199", + "e3288fe3-7576-4606-8dee-9e08d6eb11a0" + ], + "failedMatchers": [] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-productive-noisy", + "caseId": "accounting-productive-noisy", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Accounting assertions failed: perturbation, step-2, step-3, step-4, step-5", + "attempt": 1, + "durationMs": 176147, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 0, + "inputTokens": 3308157, + "outputTokens": 28094, + "cachedInputTokens": 3079643, + "totalTokens": 6415894, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 109528, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 5, + "runIds": [ + "3233b53d-a2b0-42aa-8f9e-def0420a5220", + "4401a1c9-a391-434f-8cf7-8e2212f82346", + "aa5e27fe-4398-4491-a699-9902159679d4", + "777db355-be84-4cba-b8a2-2077216fc424", + "ce7bb8d0-4a69-413b-bd5c-2e00a69e7e05" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.perturbation", + "expected": true + }, + "passed": false, + "detail": "Each successful provider run actually posted its prescribed attributed comments." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-2", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-3", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-4", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-5", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-exhaustion-neutral", + "caseId": "accounting-exhaustion-neutral", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Timed out waiting for bounded repairs exhausted; the observed state did not satisfy the condition. See the saved state evidence.", + "attempt": 1, + "durationMs": 660687, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 226456, + "outputTokens": 2402, + "cachedInputTokens": 180512, + "totalTokens": 409370, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 26919, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "f95b0e46-4219-4b51-b889-e548ef769200", + "28aa6ea5-1028-44c5-a3e4-1cab2571ba32", + "2d75ab16-d8c1-472f-a3b0-b94126a9ad76" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.evidence", + "expected": true + }, + "passed": false, + "detail": "A final persisted checkpoint is required." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-exhaustion-noisy", + "caseId": "accounting-exhaustion-noisy", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Timed out waiting for bounded repairs exhausted; the observed state did not satisfy the condition. See the saved state evidence.", + "attempt": 1, + "durationMs": 660777, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 589167, + "outputTokens": 4706, + "cachedInputTokens": 523461, + "totalTokens": 1117334, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 56397, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "913aea30-aafe-42a7-b312-528e8a5a048b", + "241c8afa-b462-4315-9260-6483bad73dee", + "f1ad92f1-d0c4-49b5-9473-0055bcd72af7" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.evidence", + "expected": true + }, + "passed": false, + "detail": "A final persisted checkpoint is required." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-repair-stop", + "caseId": "accounting-repair-stop", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Accounting assertions failed: perturbation", + "attempt": 1, + "durationMs": 136992, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 228641, + "outputTokens": 2935, + "cachedInputTokens": 181928, + "totalTokens": 413504, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 37162, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "16a25d65-f2bf-46dc-89d7-7c9b395330ab", + "57eb0250-0984-41df-9275-b0c6311d7cf1", + "3940ae20-0ca9-472f-89cd-65fa3af11e4f" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.perturbation", + "expected": true + }, + "passed": false, + "detail": "Each successful provider run actually posted its prescribed attributed comments." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-repair-approval", + "caseId": "accounting-repair-approval", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Accounting assertions failed: perturbation", + "attempt": 1, + "durationMs": 158334, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 3, + "runsWithReportedCost": 0, + "inputTokens": 1215545, + "outputTokens": 10760, + "cachedInputTokens": 1095123, + "totalTokens": 2321428, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 120541, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "060e51de-f9ec-45f6-9ae1-c1b4ff24ce68", + "b2cf4b15-a81a-4cc9-a422-ee7285725f0b", + "3ba4c799-0085-4964-85e2-286c09f6f860" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.perturbation", + "expected": true + }, + "passed": false, + "detail": "Each successful provider run actually posted its prescribed attributed comments." + } + ] + }, + { + "executionId": "continuation-accounting.runner-codex.local.accounting-productive-neutral", + "caseId": "accounting-productive-neutral", + "profileId": "runner-codex", + "environmentId": "local", + "runtimeMode": "native", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Accounting assertions failed: perturbation, step-2, step-3, step-4, step-5", + "attempt": 1, + "durationMs": 173167, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 5, + "inputTokens": 679896, + "outputTokens": 6460, + "cachedInputTokens": 550165, + "totalTokens": 1236521, + "reportedCostUsd": 0, + "costStatus": "reported" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 102873, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": true + }, + "runCount": 5, + "runIds": [ + "0f2dc86a-6fd5-4062-a872-f2d24b677aa7", + "301ca19b-7e17-4b9c-8352-9e808ae8b1e4", + "381aa5ce-1d20-4d2b-ab19-d54f0eabb76b", + "e3b3c940-ead5-449e-8176-86e6c3b475b6", + "44142431-ec1f-4102-8943-3a1ea284fd02" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.perturbation", + "expected": true + }, + "passed": false, + "detail": "Each successful provider run actually posted its prescribed attributed comments." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-2", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-3", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-4", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-5", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + } + ] + }, + { + "executionId": "continuation-accounting.runner-codex.local.accounting-productive-noisy", + "caseId": "accounting-productive-noisy", + "profileId": "runner-codex", + "environmentId": "local", + "runtimeMode": "native", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Accounting assertions failed: perturbation, step-2, step-3, step-4, step-5", + "attempt": 1, + "durationMs": 207602, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 5, + "inputTokens": 1187602, + "outputTokens": 9025, + "cachedInputTokens": 1044494, + "totalTokens": 2241121, + "reportedCostUsd": 0, + "costStatus": "reported" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 131758, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": true + }, + "runCount": 5, + "runIds": [ + "cae45ce9-5384-4bc1-a8f2-f34d1c587541", + "beb65da6-cb23-42cc-a75d-369856ad1803", + "ddee4c73-ca44-4ddf-a213-183080dce9d9", + "640f8b76-0828-49b9-878b-efed8dda4405", + "e650ad50-1f47-414b-85c3-1ff5c1aa1acb" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.perturbation", + "expected": true + }, + "passed": false, + "detail": "Each successful provider run actually posted its prescribed attributed comments." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-2", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-3", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-4", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + }, + { + "matcher": { + "kind": "json_path", + "path": "accounting.step-5", + "expected": true + }, + "passed": false, + "detail": "Each checkpoint contains exactly its completed records; no replay or premature later step." + } + ] + } + ], + "interpretation": "Original 0/8 result retained. Fixture issues: within-run identical comment deduplication, rich-text escaping of underscore tokens, and screenshot names rejected by the existing publication allowlist. Both exhaustion cells timed out; neutral retained API state confirms unstarted second repair cancelled as issue_disposition_repair_superseded. No regrading or production fixes." + }, + { + "source": { + "sha": "379a70315e47de1ac2c8e4eb452eb3121401c5c7", + "ref": "refs/heads/codex/lifecycle-behavior-baseline-20260921", + "workflowRunUrl": "https://github.com/paperclipai/paperclip/actions/runs/35813099816", + "eventName": "workflow_dispatch" + }, + "campaignId": "gha-35813099816-1", + "artifactSha256": "25821231dd32b6f0d9b1e1e71249e0ccdc39125582c6873638ea1ef2cf74f4ef", + "totals": { + "selected": 8, + "executed": 8, + "passed": 5, + "failed": 3, + "incomplete": 0, + "retries": 0, + "cleanupPassed": true + }, + "billing": { + "testCount": 8, + "agentRunDurationMs": 544232, + "leaseDurationMs": 0, + "llm": { + "runCount": 29, + "runsWithTokenUsage": 26, + "runsWithReportedCost": 10, + "inputTokens": 7627551, + "outputTokens": 76366, + "cachedInputTokens": 6787126, + "totalTokens": 14491043, + "reportedCostUsd": 0, + "costStatus": "partial" + }, + "reportedLlmCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "testsWithCompleteBilling": 2 + }, + "definitionHashes": [ + "6485ad6c67bc744e6b2a294e0eac7a6b14d2f6d6bbfac4a0012e4812f9605f9e" + ], + "cells": [ + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-productive-neutral", + "caseId": "accounting-productive-neutral", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "\u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByTestId('task-chat-thread')\nExpected: visible\nTimeout: 30000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 30000ms\u001b[22m\n\u001b[2m - waiting for getByTestId('task-chat-thread')\u001b[22m\n", + "attempt": 1, + "durationMs": 124121, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 2, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 513544, + "outputTokens": 9088, + "cachedInputTokens": 446852, + "totalTokens": 969484, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 71986, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 2, + "runIds": [ + "74a368e1-32cc-483f-840c-134be1239dc0", + "c8dc6d99-e578-43e1-9b0f-b9b4627b7716" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.evidence", + "expected": true + }, + "passed": false, + "detail": "A final persisted checkpoint is required." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-productive-noisy", + "caseId": "accounting-productive-noisy", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "passed", + "failureClass": null, + "error": null, + "attempt": 1, + "durationMs": 182620, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 0, + "inputTokens": 3189876, + "outputTokens": 31944, + "cachedInputTokens": 2956599, + "totalTokens": 6178419, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 122277, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 5, + "runIds": [ + "c3c6fcaf-00e6-4831-ac91-85552d8730ea", + "daa2623e-c21e-41cc-81ad-ad7785d6883a", + "ef24fff0-7277-4aea-8d21-09afe10509b7", + "5ba855d7-dcfd-4511-ad6b-971cf609f7a0", + "ff827af8-37ea-4549-8bb2-3ba8688a0e1b" + ], + "failedMatchers": [] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-exhaustion-neutral", + "caseId": "accounting-exhaustion-neutral", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Stopped waiting for bounded repairs exhausted: Unexpected terminated run: cancelled:issue_disposition_repair_superseded", + "attempt": 1, + "durationMs": 127267, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 337440, + "outputTokens": 2900, + "cachedInputTokens": 282269, + "totalTokens": 622609, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 32035, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "15fe6f7f-63fd-4089-bcb0-442448ae7ebd", + "15c2632c-eff1-4485-a5f1-df0255447045", + "127fd61b-485d-4bd2-8574-1902313d17c1" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.evidence", + "expected": true + }, + "passed": false, + "detail": "A final persisted checkpoint is required." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-exhaustion-noisy", + "caseId": "accounting-exhaustion-noisy", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "failed", + "failureClass": "candidate_failure", + "error": "Stopped waiting for bounded repairs exhausted: Unexpected terminated run: cancelled:issue_disposition_repair_superseded", + "attempt": 1, + "durationMs": 114665, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 232873, + "outputTokens": 2755, + "cachedInputTokens": 184884, + "totalTokens": 420512, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 27850, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "fe2fd386-d3dc-4b34-8f01-b557e83cf302", + "42f23bba-84c9-45ec-9c3e-94fdc1fb2ac8", + "c2700082-f873-441c-b0a9-082ad0e9c9f5" + ], + "failedMatchers": [ + { + "matcher": { + "kind": "json_path", + "path": "accounting.evidence", + "expected": true + }, + "passed": false, + "detail": "A final persisted checkpoint is required." + } + ] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-repair-stop", + "caseId": "accounting-repair-stop", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "passed", + "failureClass": null, + "error": null, + "attempt": 1, + "durationMs": 123125, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 2, + "runsWithReportedCost": 0, + "inputTokens": 261481, + "outputTokens": 2795, + "cachedInputTokens": 205153, + "totalTokens": 469429, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 24490, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "c08e7972-bb21-4691-b234-48613d0a6eef", + "df60791e-c7de-466e-a151-56a1e9b36c70", + "1bd657d2-e5e5-474e-bbfe-c4102bdf5d12" + ], + "failedMatchers": [] + }, + { + "executionId": "continuation-accounting.legacy-codex.local.accounting-repair-approval", + "caseId": "accounting-repair-approval", + "profileId": "legacy-codex", + "environmentId": "local", + "runtimeMode": "legacy", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "passed", + "failureClass": null, + "error": null, + "attempt": 1, + "durationMs": 116072, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 3, + "runsWithTokenUsage": 3, + "runsWithReportedCost": 0, + "inputTokens": 1217324, + "outputTokens": 12613, + "cachedInputTokens": 1116105, + "totalTokens": 2346042, + "reportedCostUsd": 0, + "costStatus": "unpriced" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 82668, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": false + }, + "runCount": 3, + "runIds": [ + "3701896d-643c-4577-ab28-b1246c2e7dc1", + "5a18316f-6379-4352-99e4-f28aa99e322f", + "b1608a3c-7bdc-49ef-80d9-bfa11845b234" + ], + "failedMatchers": [] + }, + { + "executionId": "continuation-accounting.runner-codex.local.accounting-productive-neutral", + "caseId": "accounting-productive-neutral", + "profileId": "runner-codex", + "environmentId": "local", + "runtimeMode": "native", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "passed", + "failureClass": null, + "error": null, + "attempt": 1, + "durationMs": 164757, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 5, + "inputTokens": 1143277, + "outputTokens": 7520, + "cachedInputTokens": 1004822, + "totalTokens": 2155619, + "reportedCostUsd": 0, + "costStatus": "reported" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 98792, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": true + }, + "runCount": 5, + "runIds": [ + "f284b06e-2fd4-42db-93da-6862512ab60b", + "e09209fa-2b83-40fc-a00a-0b1d3d8ddcbc", + "9d2da16d-fb7d-40f4-abb5-029a78e0d58f", + "00ab467d-0450-4764-b34d-df3f1dfc5619", + "04e7aa19-0009-4b3c-b23c-4f94db7da442" + ], + "failedMatchers": [] + }, + { + "executionId": "continuation-accounting.runner-codex.local.accounting-productive-noisy", + "caseId": "accounting-productive-noisy", + "profileId": "runner-codex", + "environmentId": "local", + "runtimeMode": "native", + "provider": "codex", + "model": "gpt-5.6-sol", + "status": "passed", + "failureClass": null, + "error": null, + "attempt": 1, + "durationMs": 131670, + "evidenceValid": true, + "evidenceErrors": [], + "cleanup": "passed", + "billing": { + "llm": { + "runCount": 5, + "runsWithTokenUsage": 5, + "runsWithReportedCost": 5, + "inputTokens": 731736, + "outputTokens": 6751, + "cachedInputTokens": 590442, + "totalTokens": 1328929, + "reportedCostUsd": 0, + "costStatus": "reported" + }, + "runtime": { + "provider": "local", + "agentRunDurationMs": 84134, + "leaseDurationMs": null, + "leaseCount": 0, + "costStatus": "not_metered", + "costSource": "local_not_metered" + }, + "reportedCostUsd": 0, + "estimatedRuntimeCostUsd": 0, + "observedAndEstimatedCostUsd": 0, + "complete": true + }, + "runCount": 5, + "runIds": [ + "23138f6c-c140-44b8-b737-cdcc92e9dbff", + "b13025ef-f45b-430a-a9aa-ad7bdc6ff3dc", + "d953117a-1bba-4623-bef7-6dc2204c4797", + "d85ba9bd-28d5-4965-a86a-6fba8e0dc462", + "fee86140-b7d0-4349-a10c-95cb3575023b" + ], + "failedMatchers": [] + } + ], + "interpretation": "Corrected fixtures: 5/8 passed. Both native productive pairs, legacy noisy productivity, approval and Stop passed. Both legacy exhaustion cases fail with cancelled:issue_disposition_repair_superseded after restart. Legacy quiet stops at a blank task-route reload after two correct persisted steps and a pending question; full workflow remains unverified. No regrading. All eight evidence packages valid, cleanup passed, no retries. Public publication succeeded; reported cost remains partial, not zero actual spending." + } + ] +} diff --git a/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting.json b/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting.json new file mode 100644 index 00000000000..3679e2a4703 --- /dev/null +++ b/tests/lifecycle-baseline/baselines/2026-09-22-continuation-accounting.json @@ -0,0 +1,6588 @@ +{ + "schema": "paperclip.lifecycle-baseline/v1", + "commit": "379a70315e47de1ac2c8e4eb452eb3121401c5c7", + "fingerprint": "fd5111becbe33cc1f29a91c59fe7585e288b685843edcda65b4faeacb7e9e815", + "measuredAt": "2026-09-23T03:06:49.582Z", + "layers": [ + "unit", + "runner", + "integration", + "grading" + ], + "execution": { + "unit": { + "exitCode": 1, + "signal": null, + "success": false, + "total": 414, + "passed": 413, + "failed": 1, + "pending": 0, + "launchError": null + }, + "runner": { + "exitCode": 0, + "signal": null, + "success": true, + "total": 184, + "passed": 184, + "failed": 0, + "pending": 0, + "launchError": null + }, + "integration": { + "exitCode": 1, + "signal": null, + "success": false, + "total": 376, + "passed": 371, + "failed": 5, + "pending": 0, + "launchError": null + }, + "grading": { + "exitCode": 0, + "signal": null, + "success": true, + "total": 85, + "passed": 85, + "failed": 0, + "pending": 0, + "launchError": null + } + }, + "scenarios": [ + { + "id": "LCA-01", + "name": "Ordinary completion", + "expected": "Valid completion, delivered answer, no extra execution", + "coverage": [ + { + "lane": "runner", + "file": "tests/lifecycle-baseline/runner.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / neutral", + "status": "passed", + "duration": 1.6033749999999998, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / no-approval", + "status": "passed", + "duration": 0.14262499999999534, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / scoped-negation", + "status": "passed", + "duration": 0.10420799999999986, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / historical-quote", + "status": "passed", + "duration": 0.08675000000000921, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / spanish", + "status": "passed", + "duration": 0.15166700000000333, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / optional-next-steps", + "status": "passed", + "duration": 0.13295800000000213, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / all-done", + "status": "passed", + "duration": 0.09245799999999349, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-01 structured completion / keep-going", + "status": "passed", + "duration": 0.08929200000000037, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-01 fails closed without API evidence", + "status": "passed", + "duration": 0.08708400000000438, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover executionRunId", + "status": "passed", + "duration": 0.2063750000000084, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover scheduledRetry", + "status": "passed", + "duration": 0.11479200000000844, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover activeRecoveryAction", + "status": "passed", + "duration": 0.10379200000001276, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-01 rejects leftover monitorNextCheckAt", + "status": "passed", + "duration": 0.0677079999999961, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status done changes admission with identical prose", + "status": "passed", + "duration": 0.046916999999993436, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status blocked changes admission with identical prose", + "status": "passed", + "duration": 0.030416999999999916, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status in_review changes admission with identical prose", + "status": "passed", + "duration": 0.0350000000000108, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status cancelled changes admission with identical prose", + "status": "passed", + "duration": 0.02854199999998741, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / neutral", + "status": "passed", + "duration": 0.227374999999995, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / no-approval", + "status": "passed", + "duration": 0.056457999999992126, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / scoped-negation", + "status": "passed", + "duration": 0.06537500000000307, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / historical-quote", + "status": "passed", + "duration": 0.047416999999995824, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / spanish", + "status": "passed", + "duration": 0.05462500000000148, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / optional-next-steps", + "status": "passed", + "duration": 0.04712499999999409, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / all-done", + "status": "passed", + "duration": 0.04579200000000583, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / keep-going", + "status": "passed", + "duration": 0.04566699999999457, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-01 complete / empty", + "status": "passed", + "duration": 0.05454199999999787, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/native-status-arbiter-corpus.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "P6-31 Section 18.13 executable status-authority corpus executes all 53 fixtures in their production consumers and joins all 70 matrix rows", + "status": "passed", + "duration": 774.79, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails independently when any asserted field category is mutated", + "status": "passed", + "duration": 587.7799170000003, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails mapped fixtures when live entrypoints or owning actions are removed despite matching policy labels", + "status": "passed", + "duration": 51.700750000000426, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus retires a proven automatic review and applies the current successful completion exactly once", + "status": "passed", + "duration": 45.78529200000003, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus completes a new merge run after an old CI review and bounds repeated incomplete results", + "status": "passed", + "duration": 49.408584000000246, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects wrong, missing, and duplicate criterion IDs before accepting completion", + "status": "passed", + "duration": 10.107332999999926, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps genuine approval actionable in the finish response and in finalization", + "status": "passed", + "duration": 40.46954199999982, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves answered cards, explicit attention, stronger authority, and later task edits", + "status": "passed", + "duration": 155.02979200000027, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects an empty needs_review report with actionable feedback without inventing an approval", + "status": "passed", + "duration": 19.547750000000633, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus withdraws obsolete policy reviews, restores the prior status, and is idempotent", + "status": "passed", + "duration": 39.04766699999982, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already accepted review untouched", + "status": "passed", + "duration": 11.80291699999998, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already rejected review untouched", + "status": "passed", + "duration": 12.757166999999754, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves real completion reviews and limits cleanup to the requested runs", + "status": "passed", + "duration": 24.520834000000832, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later blocked status", + "status": "passed", + "duration": 19.023291999999856, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later done status", + "status": "passed", + "duration": 18.597708999999668, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later cancelled status", + "status": "passed", + "duration": 18.73766699999942, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus does not restore status after a newer decision or a status change back to review", + "status": "passed", + "duration": 38.63575000000037, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps review status when a separate request still needs a response", + "status": "passed", + "duration": 16.936249999999745, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus isolates a failed cleanup candidate and retries it on the next pass", + "status": "passed", + "duration": 42.93354199999976, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps committed cleanup and continues publication after a live event fails", + "status": "passed", + "duration": 41.15258300000005, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus continues native finalization when the obsolete-card lookup fails", + "status": "passed", + "duration": 25.51787500000046, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves a later authoritative status during reconciliation", + "status": "passed", + "duration": 0.1322920000002341, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus supersedes the exact committed coordinator decision and sequences preserve decisions independently of issue status versions", + "status": "passed", + "duration": 9.202833999999712, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps assessment lineage run-local while superseding an issue decision from another run", + "status": "passed", + "duration": 10.826584000000366, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves an intermediate same-run assessment when the issue decision points to an older ancestor", + "status": "passed", + "duration": 7.281833000000006, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus ignores historical committed finalizations superseded by a newer authoritative decision", + "status": "passed", + "duration": 8.267249999999876, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with none predecessor", + "status": "passed", + "duration": 6.03583400000025, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with same_run predecessor", + "status": "passed", + "duration": 6.521334000000024, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with other_run predecessor", + "status": "passed", + "duration": 8.094875000000684, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus binds a tools-refresh continuation to its existing durable wake without a duplicate", + "status": "passed", + "duration": 10.037249999999403, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails the transaction closed for an unknown status effect", + "status": "passed", + "duration": 4.380417000000307, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-01", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-01 native completed work has no extra execution regardless of summary", + "status": "passed", + "duration": 758.0168750000003, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-01 legacy completed work has no extra execution regardless of summary", + "status": "passed", + "duration": 358.62383300000056, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-completion-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-completion-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-blocker-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-blocker-challenge", + "status": "not_run" + }, + { + "id": "everyday-workflows:build-revise", + "status": "not_run" + }, + { + "id": "runner-evals:finish-task", + "status": "not_run" + } + ] + }, + { + "id": "LCA-02", + "name": "Productive multi-turn continuation", + "expected": "Continue without replaying completed work or treating productivity as repeated failure", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-02", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / neutral preserves continuation effects", + "status": "passed", + "duration": 3.323999999999998, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.32058400000001086, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.18187500000000512, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.16499999999999204, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / spanish preserves continuation effects", + "status": "passed", + "duration": 0.2067920000000072, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.13537499999999625, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / all-done preserves continuation effects", + "status": "passed", + "duration": 0.11341700000001254, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.09029100000000767, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / empty preserves continuation effects", + "status": "passed", + "duration": 0.1327089999999913, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / neutral preserves continuation effects", + "status": "passed", + "duration": 0.1374580000000094, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.10137500000000443, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.10450000000000159, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.08737500000000864, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07358299999999929, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07566599999999823, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / all-done preserves continuation effects", + "status": "passed", + "duration": 0.08449999999999136, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0717910000000046, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / empty preserves continuation effects", + "status": "passed", + "duration": 0.05458300000000804, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / neutral preserves continuation effects", + "status": "passed", + "duration": 0.10729200000000105, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.07604200000000105, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.05970800000000054, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.0714580000000069, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / spanish preserves continuation effects", + "status": "passed", + "duration": 0.08029200000000003, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.0695829999999944, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / all-done preserves continuation effects", + "status": "passed", + "duration": 0.0902499999999975, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.06070800000000531, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / empty preserves continuation effects", + "status": "passed", + "duration": 0.05858299999999872, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / neutral preserves continuation effects", + "status": "passed", + "duration": 0.09516599999999187, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.058707999999995764, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.05808299999999633, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.059041999999990935, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07879199999999287, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.05895800000000406, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / all-done preserves continuation effects", + "status": "passed", + "duration": 0.056708000000000425, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0605419999999981, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / empty preserves continuation effects", + "status": "passed", + "duration": 0.06858400000000131, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / neutral preserves continuation effects", + "status": "passed", + "duration": 0.1325829999999968, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.06350000000000477, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.06875000000000853, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.08166599999999846, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / spanish preserves continuation effects", + "status": "passed", + "duration": 0.06254200000000765, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07399999999999807, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / all-done preserves continuation effects", + "status": "passed", + "duration": 0.0782079999999894, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0914590000000004, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / empty preserves continuation effects", + "status": "passed", + "duration": 0.05750000000000455, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / neutral preserves continuation effects", + "status": "passed", + "duration": 0.0783750000000083, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.0640420000000006, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.10537499999999511, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.06441599999999426, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / spanish preserves continuation effects", + "status": "passed", + "duration": 0.06500000000001194, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.06920799999998906, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / all-done preserves continuation effects", + "status": "passed", + "duration": 0.06629100000000676, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.06324999999999648, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / empty preserves continuation effects", + "status": "passed", + "duration": 0.07054100000000574, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / neutral", + "status": "passed", + "duration": 0.07075000000000387, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / no-approval", + "status": "passed", + "duration": 0.04391700000000753, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / scoped-negation", + "status": "passed", + "duration": 0.04291700000000276, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / historical-quote", + "status": "passed", + "duration": 0.04287499999999511, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / spanish", + "status": "passed", + "duration": 0.043958000000003494, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / optional-next-steps", + "status": "passed", + "duration": 0.04404200000000458, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / all-done", + "status": "passed", + "duration": 0.045457999999996446, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / keep-going", + "status": "passed", + "duration": 0.406084000000007, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 continue / empty", + "status": "passed", + "duration": 0.07166700000000503, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-02 explicit continuation changes effects with identical prose", + "status": "passed", + "duration": 0.04654199999998809, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "max-turn", + "status": "assertion_failure", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling ACCT-01 infrastructure failures do not spend the first productive max-turn continuation", + "status": "failed", + "duration": 45.57795799999985, + "failureMessages": [ + "AssertionError: expected { outcome: 'retry_exhausted', …(2) } to match object { outcome: 'scheduled', attempt: 1 }\n(1 matching property omitted from actual)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1283:10)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1156:15)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/heartbeat-retry-scheduling.test.ts:662:23\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "heartbeat bounded retry scheduling schedules max-turn continuations with distinct retry metadata", + "status": "passed", + "duration": 55.00008399999933, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling coalesces duplicate max-turn continuation schedules for the same source run and attempt", + "status": "passed", + "duration": 54.64887500000077, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling does not promote a duplicate max-turn continuation that does not own the issue lock", + "status": "passed", + "duration": 613.8263750000006, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to blocked before retry promotion", + "status": "passed", + "duration": 46.08037499999955, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to todo before retry promotion", + "status": "passed", + "duration": 49.787374999999884, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to backlog before retry promotion", + "status": "passed", + "duration": 46.75645900000018, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-02", + "status": "assertion_failure", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-02 native explicit continuation survives misleading approval prose", + "status": "failed", + "duration": 489.61233300000004, + "failureMessages": [ + "AssertionError: expected { Object (status, locked) } to deeply equal { status: 'done', locked: false }\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/test-baselines/lifecycle-heartbeat.test.ts:345:30\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "LCA full heartbeat observation LCA-02 legacy incomplete work schedules the same follow-up regardless of approval wording", + "status": "passed", + "duration": 659.50025, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-02 native productive workflow continues beyond the failure retry allowance", + "status": "failed", + "duration": 285.3129169999993, + "failureMessages": [ + "AssertionError: expected { Object (status, locked) } to deeply equal { status: 'done', locked: false }\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/test-baselines/lifecycle-heartbeat.test.ts:397:28\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + } + ] + } + ], + "live": [ + { + "id": "continuation:completed-action-resume", + "status": "not_run" + } + ] + }, + { + "id": "LCA-03", + "name": "Durable human question", + "expected": "Bound question precedes wait; matching answer resumes once", + "coverage": [ + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-03", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-03 accepts durable question and matching answered identity", + "status": "passed", + "duration": 1.027000000000001, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-03 rejects prose-only waiting even if final task completes", + "status": "passed", + "duration": 0.6942919999999901, + "failureMessages": [] + }, + { + "name": "LCA Product E2E evidence calibration LCA-03 rejects answer on a different question", + "status": "passed", + "duration": 0.16908300000000054, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-03", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-03 question / neutral", + "status": "passed", + "duration": 0.05212499999998954, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / no-approval", + "status": "passed", + "duration": 0.04825000000001012, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / scoped-negation", + "status": "passed", + "duration": 0.043707999999995195, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / historical-quote", + "status": "passed", + "duration": 0.05820800000000759, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / spanish", + "status": "passed", + "duration": 0.04316699999999685, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / optional-next-steps", + "status": "passed", + "duration": 0.04754200000000708, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / all-done", + "status": "passed", + "duration": 0.055542000000002645, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / keep-going", + "status": "passed", + "duration": 0.0486670000000089, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-03 question / empty", + "status": "passed", + "duration": 0.043666999999999234, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/question-response-delivery.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "question response delivery queues an answer to a running successor instead of automatically steering", + "status": "passed", + "duration": 151.75979199999983, + "failureMessages": [] + }, + { + "name": "question response delivery never mixes an external-chat question response into another live chat run in native mode", + "status": "passed", + "duration": 82.27770800000008, + "failureMessages": [] + }, + { + "name": "question response delivery never mixes an external-chat question response into another live chat run in legacy mode", + "status": "passed", + "duration": 36.96050000000014, + "failureMessages": [] + }, + { + "name": "question response delivery does not promote a source-run wake comment from another issue", + "status": "passed", + "duration": 45.11854199999971, + "failureMessages": [] + }, + { + "name": "question response delivery resolves an in-flight native input request before creating a continuation", + "status": "passed", + "duration": 39.06095899999991, + "failureMessages": [] + }, + { + "name": "question response delivery keeps native input delivery pending while its PRP session is unavailable", + "status": "passed", + "duration": 25.851750000000266, + "failureMessages": [] + }, + { + "name": "question response delivery coalesces into a queued successor without creating another wake", + "status": "passed", + "duration": 45.38795800000025, + "failureMessages": [] + }, + { + "name": "question response delivery never steers into the source run and keeps a skipped wake retryable", + "status": "passed", + "duration": 39.77583300000015, + "failureMessages": [] + }, + { + "name": "question response delivery delivers after wake suppression outlasts the bounded error retry limit", + "status": "passed", + "duration": 59.35541699999976, + "failureMessages": [] + }, + { + "name": "question response delivery preserves the actual-error retry budget after prolonged wake suppression", + "status": "passed", + "duration": 74.51887499999975, + "failureMessages": [] + }, + { + "name": "question response delivery enforces one durable wake per question-response idempotency key", + "status": "passed", + "duration": 36.65104100000008, + "failureMessages": [] + }, + { + "name": "question response delivery reuses the winning wake when a concurrent insert hits the idempotency fence", + "status": "passed", + "duration": 44.392917000000125, + "failureMessages": [] + }, + { + "name": "question response delivery settles against a canonical wake from the previous assignee without retrying forever", + "status": "passed", + "duration": 46.86941700000034, + "failureMessages": [] + }, + { + "name": "question response delivery reuses a durable wake receipt instead of issuing a duplicate continuation", + "status": "passed", + "duration": 36.711709000000155, + "failureMessages": [] + }, + { + "name": "question response delivery recovers a completed wake when receipt finalization was interrupted", + "status": "passed", + "duration": 23.419208000000253, + "failureMessages": [] + }, + { + "name": "question response delivery keeps a long wake claim leased while the side effect is active", + "status": "passed", + "duration": 119.63599999999997, + "failureMessages": [] + }, + { + "name": "question response delivery fences a stale worker after a newer claim generation takes ownership", + "status": "passed", + "duration": 94.60833299999967, + "failureMessages": [] + }, + { + "name": "question response delivery keeps acpx_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 66.58333300000004, + "failureMessages": [] + }, + { + "name": "question response delivery keeps claude_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 30.360499999999774, + "failureMessages": [] + }, + { + "name": "question response delivery keeps codex_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 36.40029199999981, + "failureMessages": [] + }, + { + "name": "question response delivery keeps cursor_cloud on the existing wake path without invoking native steering", + "status": "passed", + "duration": 29.88179100000025, + "failureMessages": [] + }, + { + "name": "question response delivery keeps cursor on the existing wake path without invoking native steering", + "status": "passed", + "duration": 37.83295799999996, + "failureMessages": [] + }, + { + "name": "question response delivery keeps gemini_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 27.225291999999627, + "failureMessages": [] + }, + { + "name": "question response delivery keeps grok_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 22.471999999999753, + "failureMessages": [] + }, + { + "name": "question response delivery keeps hermes_gateway on the existing wake path without invoking native steering", + "status": "passed", + "duration": 20.66204199999993, + "failureMessages": [] + }, + { + "name": "question response delivery keeps hermes_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 19.821125000000393, + "failureMessages": [] + }, + { + "name": "question response delivery keeps kimi_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 16.558083999999326, + "failureMessages": [] + }, + { + "name": "question response delivery keeps openclaw_gateway on the existing wake path without invoking native steering", + "status": "passed", + "duration": 17.125167000000147, + "failureMessages": [] + }, + { + "name": "question response delivery keeps opencode_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 18.64837500000067, + "failureMessages": [] + }, + { + "name": "question response delivery keeps pi_local on the existing wake path without invoking native steering", + "status": "passed", + "duration": 19.973958000000493, + "failureMessages": [] + }, + { + "name": "question response delivery keeps process on the existing wake path without invoking native steering", + "status": "passed", + "duration": 22.62474999999995, + "failureMessages": [] + }, + { + "name": "question response delivery keeps http on the existing wake path without invoking native steering", + "status": "passed", + "duration": 24.335834000000432, + "failureMessages": [] + }, + { + "name": "question response delivery keeps external_test_adapter on the existing wake path without invoking native steering", + "status": "passed", + "duration": 27.56970799999999, + "failureMessages": [] + }, + { + "name": "question response delivery queues once without probing successor steering", + "status": "passed", + "duration": 31.37054200000057, + "failureMessages": [] + }, + { + "name": "question response delivery formats text, select labels, multi-select, and custom answers in order", + "status": "passed", + "duration": 15.128958000000239, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-question-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-question-challenge", + "status": "not_run" + }, + { + "id": "continuation:answer-updates-scope", + "status": "not_run" + }, + { + "id": "continuation:provider-question-bridge", + "status": "not_run" + } + ] + }, + { + "id": "LCA-04", + "name": "Approval and decline", + "expected": "Correct authorized approval releases only its gate; decline executes nothing", + "coverage": [ + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-04", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 5.14166699999987, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 4.1118749999996, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 8.112959000000046, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 7.717458000000079, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-04", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status done changes admission with identical prose", + "status": "passed", + "duration": 0.046916999999993436, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status blocked changes admission with identical prose", + "status": "passed", + "duration": 0.030416999999999916, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status in_review changes admission with identical prose", + "status": "passed", + "duration": 0.0350000000000108, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-01 LCA-04 real status cancelled changes admission with identical prose", + "status": "passed", + "duration": 0.02854199999998741, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / neutral", + "status": "passed", + "duration": 0.08241600000000915, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / no-approval", + "status": "passed", + "duration": 0.04991700000000776, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / scoped-negation", + "status": "passed", + "duration": 0.046041999999999916, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / historical-quote", + "status": "passed", + "duration": 0.04574999999999818, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / spanish", + "status": "passed", + "duration": 0.04399999999999693, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / optional-next-steps", + "status": "passed", + "duration": 0.05404199999999548, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / all-done", + "status": "passed", + "duration": 0.060457999999997014, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / keep-going", + "status": "passed", + "duration": 0.05229099999999676, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 approval / empty", + "status": "passed", + "duration": 0.04420799999999758, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / neutral", + "status": "passed", + "duration": 0.05720900000000029, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / no-approval", + "status": "passed", + "duration": 0.04416700000000162, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / scoped-negation", + "status": "passed", + "duration": 0.042374999999992724, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / historical-quote", + "status": "passed", + "duration": 0.04258300000000759, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / spanish", + "status": "passed", + "duration": 0.07366700000000037, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / optional-next-steps", + "status": "passed", + "duration": 0.04883399999999938, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / all-done", + "status": "passed", + "duration": 0.045457999999996446, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / keep-going", + "status": "passed", + "duration": 0.043874999999999886, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 blocker / empty", + "status": "passed", + "duration": 0.044583000000002926, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-04 resolving the real approval changes authority with identical prose", + "status": "passed", + "duration": 0.04904200000001424, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/issue-thread-interaction-routes.test.ts", + "pattern": "confirmation|approval|tool.action", + "status": "pass", + "assertions": [ + { + "name": "issue thread interaction routes returns 400 for agent-addressed tool-action confirmations", + "status": "passed", + "duration": 133.30733299999974, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes accepts request confirmations and wakes the current assignee when configured for accept-only wakeups", + "status": "passed", + "duration": 116.21062500000062, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes executes an accepted tool-action confirmation through the gateway callback", + "status": "passed", + "duration": 118.31616699999995, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes with failure instructions after an accepted tool action fails", + "status": "passed", + "duration": 120.84270899999956, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes with fresh-approval instructions after an accepted tool action expires", + "status": "passed", + "duration": 125.01208399999996, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes rejects client-supplied tool-action metadata on interaction creation", + "status": "passed", + "duration": 125.9063329999999, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes executes an accepted secret-proposal confirmation and wakes with verification instructions", + "status": "passed", + "duration": 121.89487499999996, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forwards plan-document confirmations to the interaction service for revision validation", + "status": "passed", + "duration": 181.62229200000002, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes accepts request checkbox confirmations with selected option ids and wakes the assignee", + "status": "passed", + "duration": 132.4389170000004, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'explicit' issueId", + "status": "passed", + "duration": 126.19850000000042, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'omitted' issueId", + "status": "passed", + "duration": 124.96008400000028, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'null' issueId", + "status": "passed", + "duration": 125.90704099999857, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a plan document confirmation on a standard-work issue", + "status": "passed", + "duration": 124.96574999999939, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes the returned agent when accepting an agent-authored confirmation from a board review assignee", + "status": "passed", + "duration": 123.4225830000014, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes does not emit a continuation wake when request confirmations are rejected", + "status": "passed", + "duration": 133.9235000000008, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes delivers generic confirmation rejection feedback as the next turn message", + "status": "passed", + "duration": 123.97237499999937, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes with decline instructions when a tool-action confirmation is rejected", + "status": "passed", + "duration": 112.73591599999963, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes allows an agent to accept another agent's pending review confirmation by default", + "status": "passed", + "duration": 143.91079200000058, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes allows an agent to reject a pending review confirmation by default", + "status": "passed", + "duration": 116.28516599999966, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes keeps an unrelated pending confirmation human-only on an in-review issue", + "status": "passed", + "duration": 123.84170900000026, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes keeps a same-requester sibling confirmation human-only", + "status": "passed", + "duration": 117.16037499999948, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes rejects an agent review-confirmation verdict under human_only with actionable copy", + "status": "passed", + "duration": 127.01104099999975, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes allows an unrelated agent-resolvable confirmation under a restrictive issue review policy", + "status": "passed", + "duration": 154.25116700000035, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes lets the creator and same run resolve 'request_confirmation' through anyone", + "status": "passed", + "duration": 121.35991600000125, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes lets the creator and same run resolve 'request_checkbox_confirmation' through anyone", + "status": "passed", + "duration": 118.94429200000013, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes blocks human-only and tool-action interactions for agents", + "status": "passed", + "duration": 113.92954100000134, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "gate|budget|paused", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider workspace_busy waits", + "status": "passed", + "duration": 88.39587500000016, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider ai_connection_busy waits", + "status": "passed", + "duration": 71.8779169999998, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the dependency gate for interrupted conversations", + "status": "passed", + "duration": 54.53133400000024, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the disabled gate for interrupted conversations", + "status": "passed", + "duration": 60.206208000000515, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the reassigned gate for interrupted conversations", + "status": "passed", + "duration": 66.83141699999942, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions rolls back the wakeup-request update when the run-event write fails during a gate-suppressed cancellation", + "status": "passed", + "duration": 37.617167000000336, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-approval-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-approval-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-approve", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-decline", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-always", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-untrusted-evidence-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-untrusted-evidence-challenge", + "status": "not_run" + }, + { + "id": "continuation:clarification-not-approval", + "status": "not_run" + }, + { + "id": "everyday-workflows:service-approve", + "status": "not_run" + }, + { + "id": "everyday-workflows:service-decline", + "status": "not_run" + } + ] + }, + { + "id": "LCA-05", + "name": "Plan revision acceptance", + "expected": "Work mode and exact accepted revision authorize execution", + "coverage": [ + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-05 accepts current revision and rejects stale or foreign plan targets", + "status": "passed", + "duration": 0.27779199999999094, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-05 legacy title report is not work-mode authority", + "status": "passed", + "duration": 0.10145799999999383, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-05 legacy title plan is not work-mode authority", + "status": "passed", + "duration": 0.06208300000000122, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-05 legacy title research is not work-mode authority", + "status": "passed", + "duration": 0.0589170000000081, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-05 legacy description is not work-mode authority", + "status": "passed", + "duration": 0.07212500000001398, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/run-liveness.test.ts", + "pattern": "mode|title and description", + "status": "pass", + "assertions": [ + { + "name": "run liveness classifier uses explicit planning mode for the planning diagnostic exemption", + "status": "passed", + "duration": 0.07579099999999528, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode undefined", + "status": "passed", + "duration": 0.7129580000000004, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode null", + "status": "passed", + "duration": 0.3009169999999983, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode standard", + "status": "passed", + "duration": 0.26824999999999477, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode ask", + "status": "passed", + "duration": 0.37400000000000944, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode skill_test", + "status": "passed", + "duration": 0.28845800000000565, + "failureMessages": [] + }, + { + "name": "run liveness classifier title and description cannot change liveness in explicit mode planning", + "status": "passed", + "duration": 0.2597909999999928, + "failureMessages": [] + }, + { + "name": "run liveness classifier a standard-mode task can deliver a plan and complete without entering planning mode", + "status": "passed", + "duration": 0.10508299999999338, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/heartbeat-context-summary.test.ts", + "pattern": "selects directives only", + "status": "pass", + "assertions": [ + { + "name": "buildPaperclipTaskMarkdown selects directives only from explicit standard mode, even when a plan is requested", + "status": "passed", + "duration": 1.2774999999999181, + "failureMessages": [] + }, + { + "name": "buildPaperclipTaskMarkdown selects directives only from explicit planning mode, even when a plan is requested", + "status": "passed", + "duration": 0.1714590000001408, + "failureMessages": [] + }, + { + "name": "buildPaperclipTaskMarkdown selects directives only from explicit ask mode, even when a plan is requested", + "status": "passed", + "duration": 0.12466699999981756, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/services/native-runtime/native-execution-input.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "LCA-05 explicit native work mode title and description cannot override standard mode", + "status": "passed", + "duration": 2.9952919999999494, + "failureMessages": [] + }, + { + "name": "LCA-05 explicit native work mode title and description cannot override planning mode", + "status": "passed", + "duration": 0.5428339999999707, + "failureMessages": [] + }, + { + "name": "LCA-05 explicit native work mode title and description cannot override ask mode", + "status": "passed", + "duration": 0.3020000000000209, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/activity-service.test.ts", + "pattern": "LCA-05", + "status": "pass", + "assertions": [ + { + "name": "activity service LCA-05 persists explicit standard mode across wording edits and uses it in ledger backfill", + "status": "passed", + "duration": 183.83554099999992, + "failureMessages": [] + }, + { + "name": "activity service LCA-05 persists explicit planning mode across wording edits and uses it in ledger backfill", + "status": "passed", + "duration": 82.2564169999996, + "failureMessages": [] + }, + { + "name": "activity service LCA-05 persists explicit ask mode across wording edits and uses it in ledger backfill", + "status": "passed", + "duration": 85.77937500000007, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/issue-thread-interaction-routes.test.ts", + "pattern": "plan|revision", + "status": "pass", + "assertions": [ + { + "name": "issue thread interaction routes forwards plan-document confirmations to the interaction service for revision validation", + "status": "passed", + "duration": 181.62229200000002, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'explicit' issueId", + "status": "passed", + "duration": 126.19850000000042, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'omitted' issueId", + "status": "passed", + "duration": 124.96008400000028, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a planning confirmation with 'null' issueId", + "status": "passed", + "duration": 125.90704099999857, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes does not project an explicitly different issue's approved plan into the current issue wake", + "status": "passed", + "duration": 121.05295900000056, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes forces a fresh workspace-aware session when accepting a plan document confirmation on a standard-work issue", + "status": "passed", + "duration": 124.96574999999939, + "failureMessages": [] + }, + { + "name": "issue thread interaction routes wakes the assignee to revise a rejected plan even when its policy is accept-only", + "status": "passed", + "duration": 146.74508400000013, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/issue-thread-interactions-service.test.ts", + "pattern": "Plan.mode|stale.*revision|revision.*stale|plan confirmation", + "status": "pass", + "assertions": [ + { + "name": "issueThreadInteractionService atomically returns an accepted Plan-mode issue to its agent in Auto mode", + "status": "passed", + "duration": 14.613749999999982, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps Plan mode for non-plan and checkbox confirmations", + "status": "passed", + "duration": 19.53512499999988, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps ask mode when accepting a plan confirmation", + "status": "passed", + "duration": 9.466249999999945, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps standard mode when accepting a plan confirmation", + "status": "passed", + "duration": 10.914540999999645, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService keeps Plan mode when a plan confirmation is rejected", + "status": "passed", + "duration": 8.90795799999978, + "failureMessages": [] + }, + { + "name": "issueThreadInteractionService rejects creating a plan confirmation against a stale document revision and accepts the current one", + "status": "passed", + "duration": 11.294957999999951, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-plan-revision-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-plan-revision-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-work-mode-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-work-mode-challenge", + "status": "not_run" + }, + { + "id": "agent-chat:plan-handoff", + "status": "not_run" + }, + { + "id": "continuation:revision-preserves-approval", + "status": "not_run" + } + ] + }, + { + "id": "LCA-06", + "name": "Dependencies", + "expected": "All required dependencies release one parent wake; unrelated events do nothing", + "coverage": [ + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-issue-liveness-escalation.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "heartbeat resolved dependency wake reconciliation runs exactly one bounded review-path recovery before surfacing a stalled decision", + "status": "passed", + "duration": 622.468625, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation keeps resolved dependency wake reconciliation active", + "status": "passed", + "duration": 440.5710420000005, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation heals a blocked dependent whose done blocker has no workspace finalize obligation", + "status": "passed", + "duration": 399.8885, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation reconciles a resolved blocked dependency after the assignee-null window closes", + "status": "passed", + "duration": 339.05183300000044, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation keeps repeated wakes behind a active execution hold run-free, then resumes once", + "status": "passed", + "duration": 241.24391699999978, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation keeps repeated wakes behind a resolved execution hold run-free, then resumes once", + "status": "passed", + "duration": 268.5475829999996, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation rechecks every gate after an execution hold clears", + "status": "passed", + "duration": 364.55162500000006, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation preserves distinct comments through a hold and adopts them on the next eligible wake", + "status": "passed", + "duration": 351.14345799999955, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation retries a resolved dependency wake when the prior wake was skipped as stale", + "status": "passed", + "duration": 324.91099999999915, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation waits for workspace finalize before healing a resolved blocked dependent", + "status": "passed", + "duration": 387.86220800000046, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation does not duplicate an existing dependency wake keyed to any resolved blocker", + "status": "passed", + "duration": 37.18925000000036, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation heals a multi-blocker dependent when only a completed wake for an earlier blocker exists", + "status": "passed", + "duration": 332.0475000000006, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation heals a blocked dependent after a terminal reset when a previous-cycle old-key wake exists", + "status": "passed", + "duration": 332.6506249999993, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation does not re-heal when a completed old-key wake is from the current blocked cycle", + "status": "passed", + "duration": 18.93012499999986, + "failureMessages": [] + }, + { + "name": "heartbeat resolved dependency wake reconciliation counts null dependency wake returns as deferred instead of enqueue failures", + "status": "passed", + "duration": 32.38983299999927, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-challenge", + "status": "not_run" + }, + { + "id": "everyday-workflows:delegate-feedback", + "status": "not_run" + }, + { + "id": "runner-evals:set-task-dependencies", + "status": "not_run" + } + ] + }, + { + "id": "LCA-07", + "name": "External monitor wait", + "expected": "Durable eligible monitor fires once and respects timeout and exhaustion", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-07", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-07 monitor / neutral", + "status": "passed", + "duration": 0.050958000000008496, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / no-approval", + "status": "passed", + "duration": 0.05808399999999381, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / scoped-negation", + "status": "passed", + "duration": 0.05395800000000861, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / historical-quote", + "status": "passed", + "duration": 0.05500000000000682, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / spanish", + "status": "passed", + "duration": 0.057165999999995165, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / optional-next-steps", + "status": "passed", + "duration": 0.048749999999998295, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / all-done", + "status": "passed", + "duration": 0.044166000000004146, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / keep-going", + "status": "passed", + "duration": 0.05433300000001395, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-07 monitor / empty", + "status": "passed", + "duration": 0.04466700000000401, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/issue-monitor-scheduler.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "issue monitor scheduler triggers due issue monitors once and clears the one-shot schedule", + "status": "passed", + "duration": 1450.7236670000007, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler does not replay a quota monitor with unknown execution evidence", + "status": "passed", + "duration": 632.0440840000001, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler does not replay a quota monitor with exhausted execution evidence", + "status": "passed", + "duration": 610.0789169999998, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler wakes a cross-agent review participant for provider quota monitors", + "status": "passed", + "duration": 804.4720419999994, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler lets the board trigger a scheduled issue monitor immediately", + "status": "passed", + "duration": 944.488625, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler clears due monitors that cannot be dispatched and records a skip", + "status": "passed", + "duration": 552.5827499999996, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler clears exhausted monitors and queues bounded owner recovery instead of another due check", + "status": "passed", + "duration": 1129.7204579999998, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler clears timed-out monitors and creates a visible recovery issue when requested", + "status": "passed", + "duration": 952.8982090000009, + "failureMessages": [] + }, + { + "name": "issue monitor scheduler omits external monitor refs from wake payloads and activity details", + "status": "passed", + "duration": 926.2297499999986, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "runner-evals:schedule-task-wake", + "status": "not_run" + } + ] + }, + { + "id": "LCA-08", + "name": "Ordinary conversation", + "expected": "Deliver response without task completion coercion or repair loops", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-08", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-08 conversation / neutral", + "status": "passed", + "duration": 0.05154100000000028, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / no-approval", + "status": "passed", + "duration": 0.043083000000009974, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / scoped-negation", + "status": "passed", + "duration": 0.04091700000000742, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / historical-quote", + "status": "passed", + "duration": 0.04033300000000395, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / spanish", + "status": "passed", + "duration": 0.05316700000000196, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / optional-next-steps", + "status": "passed", + "duration": 0.041416999999995596, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / all-done", + "status": "passed", + "duration": 0.040542000000002076, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / keep-going", + "status": "passed", + "duration": 0.04441699999999571, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-08 conversation / empty", + "status": "passed", + "duration": 0.038375000000002046, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "conversation", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling bounds interrupted conversations across restarts and concurrent scheduling", + "status": "passed", + "duration": 129.8407499999994, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the dependency gate for interrupted conversations", + "status": "passed", + "duration": 54.53133400000024, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the disabled gate for interrupted conversations", + "status": "passed", + "duration": 60.206208000000515, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the reassigned gate for interrupted conversations", + "status": "passed", + "duration": 66.83141699999942, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "governed wait|structured input", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery commits a governed wait without waiting for abort-insensitive provider cleanup", + "status": "passed", + "duration": 101.15741600000001, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery accepts a control-plane governed wait when a completed turn omitted its semantic result", + "status": "passed", + "duration": 0.4275840000000244, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery parks a provider turn immediately after a durable governed wait appears", + "status": "passed", + "duration": 0.29379199999993943, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery hands a committed structured input to the durable wait after its live window", + "status": "passed", + "duration": 0.9682079999997768, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery keeps a settling structured input in the original turn while its append crosses expiry", + "status": "passed", + "duration": 0.7033750000000509, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:clarify-reuse", + "status": "not_run" + }, + { + "id": "agent-chat:clarify-reuse", + "status": "not_run" + } + ] + }, + { + "id": "LCA-09", + "name": "Missing disposition and exhausted repair", + "expected": "Bounded explicit recovery; prose/comments do not supply authority or reset attempts", + "coverage": [ + { + "lane": "runner", + "file": "tests/lifecycle-baseline/runner.test.ts", + "pattern": "LCA-09", + "status": "pass", + "assertions": [ + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / neutral", + "status": "passed", + "duration": 0.28779199999999605, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / no-approval", + "status": "passed", + "duration": 0.15395800000000293, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / scoped-negation", + "status": "passed", + "duration": 0.08529199999999548, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / historical-quote", + "status": "passed", + "duration": 0.06304199999999582, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / spanish", + "status": "passed", + "duration": 0.054500000000004434, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / optional-next-steps", + "status": "passed", + "duration": 0.06320900000000051, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / all-done", + "status": "passed", + "duration": 0.05858299999999872, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / keep-going", + "status": "passed", + "duration": 0.047584000000000515, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-09 summary cannot replace missing disposition / empty", + "status": "passed", + "duration": 0.06441699999999173, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-09", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / neutral preserves continuation effects", + "status": "passed", + "duration": 3.323999999999998, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.32058400000001086, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.18187500000000512, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.16499999999999204, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / spanish preserves continuation effects", + "status": "passed", + "duration": 0.2067920000000072, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.13537499999999625, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / all-done preserves continuation effects", + "status": "passed", + "duration": 0.11341700000001254, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.09029100000000767, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy summary / empty preserves continuation effects", + "status": "passed", + "duration": 0.1327089999999913, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / neutral preserves continuation effects", + "status": "passed", + "duration": 0.1374580000000094, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.10137500000000443, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.10450000000000159, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.08737500000000864, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07358299999999929, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07566599999999823, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / all-done preserves continuation effects", + "status": "passed", + "duration": 0.08449999999999136, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0717910000000046, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy result / empty preserves continuation effects", + "status": "passed", + "duration": 0.05458300000000804, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / neutral preserves continuation effects", + "status": "passed", + "duration": 0.10729200000000105, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.07604200000000105, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.05970800000000054, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.0714580000000069, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / spanish preserves continuation effects", + "status": "passed", + "duration": 0.08029200000000003, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.0695829999999944, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / all-done preserves continuation effects", + "status": "passed", + "duration": 0.0902499999999975, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.06070800000000531, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy comment / empty preserves continuation effects", + "status": "passed", + "duration": 0.05858299999999872, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / neutral preserves continuation effects", + "status": "passed", + "duration": 0.09516599999999187, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.058707999999995764, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.05808299999999633, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.059041999999990935, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / spanish preserves continuation effects", + "status": "passed", + "duration": 0.07879199999999287, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.05895800000000406, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / all-done preserves continuation effects", + "status": "passed", + "duration": 0.056708000000000425, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0605419999999981, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy continuation / empty preserves continuation effects", + "status": "passed", + "duration": 0.06858400000000131, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / neutral preserves continuation effects", + "status": "passed", + "duration": 0.1325829999999968, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.06350000000000477, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.06875000000000853, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.08166599999999846, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / spanish preserves continuation effects", + "status": "passed", + "duration": 0.06254200000000765, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.07399999999999807, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / all-done preserves continuation effects", + "status": "passed", + "duration": 0.0782079999999894, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.0914590000000004, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stdout / empty preserves continuation effects", + "status": "passed", + "duration": 0.05750000000000455, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / neutral preserves continuation effects", + "status": "passed", + "duration": 0.0783750000000083, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / no-approval preserves continuation effects", + "status": "passed", + "duration": 0.0640420000000006, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / scoped-negation preserves continuation effects", + "status": "passed", + "duration": 0.10537499999999511, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / historical-quote preserves continuation effects", + "status": "passed", + "duration": 0.06441599999999426, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / spanish preserves continuation effects", + "status": "passed", + "duration": 0.06500000000001194, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / optional-next-steps preserves continuation effects", + "status": "passed", + "duration": 0.06920799999998906, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / all-done preserves continuation effects", + "status": "passed", + "duration": 0.06629100000000676, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / keep-going preserves continuation effects", + "status": "passed", + "duration": 0.06324999999999648, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-02 LCA-09 legacy stderr / empty preserves continuation effects", + "status": "passed", + "duration": 0.07054100000000574, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-09 additional commentary cannot manufacture progress or reset an attempt", + "status": "passed", + "duration": 0.1180829999999986, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-09 exhausted recovery remains exhausted", + "status": "passed", + "duration": 0.10445800000000816, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / neutral", + "status": "passed", + "duration": 0.054541000000000395, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / no-approval", + "status": "passed", + "duration": 0.04416700000001583, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / scoped-negation", + "status": "passed", + "duration": 0.04479200000000105, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / historical-quote", + "status": "passed", + "duration": 0.04104099999997857, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / spanish", + "status": "passed", + "duration": 0.06108399999999392, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / optional-next-steps", + "status": "passed", + "duration": 0.06858299999998962, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / all-done", + "status": "passed", + "duration": 0.049625000000020236, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / keep-going", + "status": "passed", + "duration": 0.047708000000000084, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-09 missing evidence / empty", + "status": "passed", + "duration": 0.04141599999999812, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": ".", + "status": "assertion_failure", + "assertions": [ + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (1)", + "status": "passed", + "duration": 82.72762499999999, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (2)", + "status": "passed", + "duration": 28.238624999999956, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (3)", + "status": "passed", + "duration": 23.354125000000295, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (4)", + "status": "passed", + "duration": 25.66608300000007, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (5)", + "status": "passed", + "duration": 22.29879200000005, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not roll back the ledger when a fast repair finishes before enqueue returns", + "status": "passed", + "duration": 25.931832999999642, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority keeps the same bounded episode across restart and commentary, then escalates only after agent attempts", + "status": "passed", + "duration": 54.93312500000002, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with silent", + "status": "passed", + "duration": 87.61700000000019, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with comments", + "status": "passed", + "duration": 94.849291, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with tool-calls", + "status": "passed", + "duration": 86.13845800000036, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 approval introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 37.50333300000011, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 budget introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 36.710000000000036, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 pause introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 35.21629100000018, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 reassigned introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 32.534834000000046, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-04 a delayed second repair remains promotable after controller restart", + "status": "failed", + "duration": 47.96762499999977, + "failureMessages": [ + "AssertionError: expected [] to include '9e9365a5-335b-41e7-9ca9-095c1e89a9c9'\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1319:15)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1164:22)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/legacy-continuation-authority.test.ts:119:34\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20", + "AssertionError: expected { …(70) } to match object { status: 'queued', errorCode: null }\n(82 matching properties omitted from actual)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1283:10)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1156:15)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/legacy-continuation-authority.test.ts:120:60\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "legacy continuation persisted authority persists the source identity while the second repair waits to dispatch", + "status": "passed", + "duration": 20.92570799999976, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not stack a new repair budget on the retry_queued comment policy", + "status": "passed", + "duration": 5.962209000000257, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not stack a new repair budget on the retry_exhausted comment policy", + "status": "passed", + "duration": 6.221250000000055, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not grant a new budget to exhausted pre-upgrade continuation", + "status": "passed", + "duration": 16.016708000000108, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable done instead of the final summary", + "status": "passed", + "duration": 3.733874999999898, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable cancelled instead of the final summary", + "status": "passed", + "duration": 3.2770840000002863, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable blocked instead of the final summary", + "status": "passed", + "duration": 4.898542000000361, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors durable in_review instead of the final summary", + "status": "passed", + "duration": 5.0520839999999225, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority respects a pending approval while the issue still says in progress", + "status": "passed", + "duration": 5.582875000000058, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority rechecks a newly pending approval at dispatch without spending another attempt", + "status": "passed", + "duration": 18.28512499999988, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority preserves repair authority and its budget through a typed infrastructure retry", + "status": "passed", + "duration": 20.839124999999967, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after done", + "status": "passed", + "duration": 15.070917000000009, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after paused", + "status": "passed", + "duration": 16.81508299999996, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after reassigned", + "status": "passed", + "duration": 14.278000000000247, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority suppresses a queued repair after stopped", + "status": "passed", + "duration": 10.4375, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority leaves goal-control run ownership intact: {\"goalControlRequestId\":\"control\"}", + "status": "passed", + "duration": 5.878417000000354, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority leaves goal-control run ownership intact: {\"resumeSessionGoalHeartbeat\":true}", + "status": "passed", + "duration": 5.9499580000001515, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority leaves a due monitor as the owner of the next step", + "status": "passed", + "duration": 6.840083999999933, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority honors pause and changed ownership without spending a repair attempt", + "status": "passed", + "duration": 9.972749999999905, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority the delayed sweep ignores old diagnostic labels and uses the same repair path", + "status": "passed", + "duration": 142.309667, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/services/recovery/legacy-continuation.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation authority requests agent repair for a successful process without a task disposition", + "status": "passed", + "duration": 1.0723749999999939, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted done disposition", + "status": "passed", + "duration": 0.11645800000000861, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted cancelled disposition", + "status": "passed", + "duration": 0.04449999999999932, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted blocked disposition", + "status": "passed", + "duration": 0.04029199999999378, + "failureMessages": [] + }, + { + "name": "legacy continuation authority respects persisted in_review disposition", + "status": "passed", + "duration": 0.043417000000005146, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a failed process into repair", + "status": "passed", + "duration": 0.04529200000000344, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a cancelled process into repair", + "status": "passed", + "duration": 0.044415999999998235, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a interrupted process into repair", + "status": "passed", + "duration": 0.03433300000000372, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a timed_out process into repair", + "status": "passed", + "duration": 0.04416700000000162, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not convert a running process into repair", + "status": "passed", + "duration": 0.050667000000004236, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves stopped", + "status": "passed", + "duration": 0.04074999999998852, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves paused", + "status": "passed", + "duration": 0.024124999999997954, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves budgetBlocked", + "status": "passed", + "duration": 0.023040999999992096, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves pendingWait", + "status": "passed", + "duration": 0.02154199999999662, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves activeExecution", + "status": "passed", + "duration": 0.023167000000000826, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves ownedLifecycle", + "status": "passed", + "duration": 0.018833000000000766, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves conversation", + "status": "passed", + "duration": 0.016791999999995255, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not repair with a paused agent", + "status": "passed", + "duration": 0.025084000000006768, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not repair with a terminated agent", + "status": "passed", + "duration": 0.01675000000000182, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not repair with a pending_approval agent", + "status": "passed", + "duration": 0.01633300000000304, + "failureMessages": [] + }, + { + "name": "legacy continuation authority rejects foreign agent and reassigned issue", + "status": "passed", + "duration": 0.049040999999988344, + "failureMessages": [] + }, + { + "name": "legacy continuation authority preserves the episode through two attempts and exhaustion", + "status": "passed", + "duration": 0.16141700000000014, + "failureMessages": [] + }, + { + "name": "legacy continuation authority does not resurrect an exhausted pre-upgrade liveness or handoff budget", + "status": "passed", + "duration": 0.1058749999999975, + "failureMessages": [] + }, + { + "name": "legacy continuation authority keeps replay identity stable while a genuinely new episode gets its own identity", + "status": "passed", + "duration": 0.0971669999999989, + "failureMessages": [] + }, + { + "name": "legacy continuation authority leaves native finalization to its own authority", + "status": "passed", + "duration": 0.023957999999993262, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-09", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-09 exhausted recovery ignores commentary but admits a new user request", + "status": "passed", + "duration": 166.03637499999968, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "server/src/__tests__/disposition-repair.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "owner-sticky disposition repair classifies a deliberate wait without a target into its dedicated bounded lane", + "status": "passed", + "duration": 1.1750829999999723, + "failureMessages": [] + }, + { + "name": "owner-sticky disposition repair uses the persisted five-attempt owner-sticky schedule with bounded deterministic jitter", + "status": "passed", + "duration": 0.6236249999999472, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "result.less|proposal.less|semantic result", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery reconciles an out-of-band 'complete' goal (after semantic result: false)", + "status": "passed", + "duration": 26.028999999999996, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'complete' goal (after semantic result: true)", + "status": "passed", + "duration": 26.60349999999994, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'paused' goal (after semantic result: false)", + "status": "passed", + "duration": 27.388624999999934, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'paused' goal (after semantic result: true)", + "status": "passed", + "duration": 26.75987500000008, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'blocked' goal (after semantic result: false)", + "status": "passed", + "duration": 26.590250000000083, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'blocked' goal (after semantic result: true)", + "status": "passed", + "duration": 26.80220799999995, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'limited' goal (after semantic result: false)", + "status": "passed", + "duration": 25.639790999999946, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'limited' goal (after semantic result: true)", + "status": "passed", + "duration": 26.759832999999958, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'usageLimited' goal (after semantic result: false)", + "status": "passed", + "duration": 26.073540999999977, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'usageLimited' goal (after semantic result: true)", + "status": "passed", + "duration": 26.778583000000026, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'budgetLimited' goal (after semantic result: false)", + "status": "passed", + "duration": 26.757458000000042, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery reconciles an out-of-band 'budgetLimited' goal (after semantic result: true)", + "status": "passed", + "duration": 25.91045799999995, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after silent without replenishing consumed repair", + "status": "passed", + "duration": 0.6385420000001432, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after commentary without replenishing consumed repair", + "status": "passed", + "duration": 0.46166600000015023, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after tool-events without replenishing consumed repair", + "status": "passed", + "duration": 0.48862499999995634, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery resolves a checkpointed result-less disposition without resubmitting when its terminal event is missing", + "status": "passed", + "duration": 0.9620420000001104, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery keeps a reconstructed semantic result on its matched terminal turn", + "status": "passed", + "duration": 0.9588749999998072, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery accepts a control-plane governed wait when a completed turn omitted its semantic result", + "status": "passed", + "duration": 0.4275840000000244, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/services/native-runtime/native-safe-replacement.test.ts", + "pattern": "exhausted|another run id", + "status": "pass", + "assertions": [ + { + "name": "durable replacement and control recovery automatically closes an exhausted incident once, preserves ownership, and records no replay", + "status": "passed", + "duration": 258.8660410000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery never resets an exhausted incident by assigning another run id", + "status": "passed", + "duration": 248.73049999999967, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-repair-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-repair-challenge", + "status": "not_run" + } + ] + }, + { + "id": "LCA-10", + "name": "Stop, pause and budget", + "expected": "Distinct stop/pause semantics; no unauthorized continuation", + "coverage": [ + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-10", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 5.14166699999987, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 4.1118749999996, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 8.112959000000046, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 7.717458000000079, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-10", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate budget survives encouraging prose", + "status": "passed", + "duration": 0.06825000000000614, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate duplicate survives encouraging prose", + "status": "passed", + "duration": 0.05879199999999685, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate wrong-company survives encouraging prose", + "status": "passed", + "duration": 0.040041000000002214, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate paused-agent survives encouraging prose", + "status": "passed", + "duration": 0.03900000000000148, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / neutral", + "status": "passed", + "duration": 0.053875000000005, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / no-approval", + "status": "passed", + "duration": 0.05079200000000128, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / scoped-negation", + "status": "passed", + "duration": 0.055125000000003865, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / historical-quote", + "status": "passed", + "duration": 0.04312500000000341, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / spanish", + "status": "passed", + "duration": 0.04399999999999693, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / optional-next-steps", + "status": "passed", + "duration": 0.09791699999999537, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / all-done", + "status": "passed", + "duration": 0.1074999999999875, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / keep-going", + "status": "passed", + "duration": 0.06391599999999187, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-10 stopped / empty", + "status": "passed", + "duration": 0.05170899999998824, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-stale-queue-invalidation.test.ts", + "pattern": "cap|gate|ownership|before adapter", + "status": "pass", + "assertions": [ + { + "name": "heartbeat stale queued-run invalidation skips generic timer wakes with no actionable assigned work before adapter execution", + "status": "passed", + "duration": 388.023291, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation cancels a resolved connection-intent wake 'parked' after checkout but before adapter dispatch", + "status": "passed", + "duration": 644.5317919999998, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation cancels a resolved connection-intent wake 'reassigned' after checkout but before adapter dispatch", + "status": "passed", + "duration": 616.6430419999997, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation rejects ownership changes immediately before the final continuation handoff", + "status": "passed", + "duration": 626.9747079999997, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily run cap is reached", + "status": "passed", + "duration": 370.0606250000001, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily run cap as a hard stop", + "status": "passed", + "duration": 377.38175000000047, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation counts started cancelled runs toward the per-agent daily run cap", + "status": "passed", + "duration": 377.0649169999997, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation coalesces same-issue wakes before enforcing the daily run cap", + "status": "passed", + "duration": 441.1517500000009, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily cost cap is reached", + "status": "passed", + "duration": 409.0295420000002, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily cost cap as a hard stop", + "status": "passed", + "duration": 367.7435839999998, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued runs before adapter execution when the daily cost cap is reached", + "status": "passed", + "duration": 391.4734580000004, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued issue runs at the daily run cap and releases the execution lock", + "status": "passed", + "duration": 404.72258299999885, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation promotes deferred issue wakes when a queued holder is cancelled by the daily run cap", + "status": "passed", + "duration": 441.80862499999967, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "budget|pause|cancel|gate", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider workspace_busy waits", + "status": "passed", + "duration": 88.39587500000016, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling retains the failure budget after many pre-provider ai_connection_busy waits", + "status": "passed", + "duration": 71.8779169999998, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the dependency gate for interrupted conversations", + "status": "passed", + "duration": 54.53133400000024, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the disabled gate for interrupted conversations", + "status": "passed", + "duration": 60.206208000000515, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling respects the reassigned gate for interrupted conversations", + "status": "passed", + "duration": 66.83141699999942, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to blocked before retry promotion", + "status": "passed", + "duration": 46.08037499999955, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to todo before retry promotion", + "status": "passed", + "duration": 49.787374999999884, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling cancels a due max-turn continuation when the issue moves to backlog before retry promotion", + "status": "passed", + "duration": 46.75645900000018, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions rolls back the wakeup-request update when the run-event write fails during a gate-suppressed cancellation", + "status": "passed", + "duration": 37.617167000000336, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions keeps promotion and stale-queued-run cancellation company-scoped", + "status": "passed", + "duration": 608.1801669999986, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions never writes another company's wakeup request during suppressed-retry or stale-queued-run cancellation", + "status": "passed", + "duration": 52.17962500000067, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:stop-new-resume", + "status": "not_run" + }, + { + "id": "everyday-workflows:stop-redirect", + "status": "not_run" + }, + { + "id": "agent-chat:stop-new-resume", + "status": "not_run" + } + ] + }, + { + "id": "LCA-11", + "name": "Terminal ordering and cleanup", + "expected": "Completion report is not provider success; terminal/cleanup events retain their authority", + "coverage": [ + { + "lane": "runner", + "file": "tests/lifecycle-baseline/runner.test.ts", + "pattern": "LCA-11", + "status": "pass", + "assertions": [ + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / neutral", + "status": "passed", + "duration": 0.17337499999999295, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / no-approval", + "status": "passed", + "duration": 0.06208300000000122, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / scoped-negation", + "status": "passed", + "duration": 0.06491599999999664, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / historical-quote", + "status": "passed", + "duration": 0.12437500000000057, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / spanish", + "status": "passed", + "duration": 0.12274999999999636, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / optional-next-steps", + "status": "passed", + "duration": 0.0752080000000035, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / all-done", + "status": "passed", + "duration": 0.0587499999999892, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / keep-going", + "status": "passed", + "duration": 0.05520799999999326, + "failureMessages": [] + }, + { + "name": "LCA runner protocol narrative pairs LCA-11 explicit verification reason survives detail / empty", + "status": "passed", + "duration": 0.053582999999989056, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-11", + "status": "pass", + "assertions": [ + { + "name": "LCA native authority pairs LCA-11 late failure / neutral", + "status": "passed", + "duration": 0.05041599999999846, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / no-approval", + "status": "passed", + "duration": 0.0430419999999998, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / scoped-negation", + "status": "passed", + "duration": 0.04274999999999807, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / historical-quote", + "status": "passed", + "duration": 0.04191600000000051, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / spanish", + "status": "passed", + "duration": 0.05100000000000193, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / optional-next-steps", + "status": "passed", + "duration": 0.03991599999999096, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / all-done", + "status": "passed", + "duration": 0.039874999999995, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / keep-going", + "status": "passed", + "duration": 0.04045899999999847, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-11 late failure / empty", + "status": "passed", + "duration": 0.04616700000001117, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "terminal|completion report|cleanup|handoff", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery preserves durable success while quarantined cleanup stays bounded", + "status": "passed", + "duration": 2.235749999999939, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery stops scheduled cleanup after the quarantine lifetime budget", + "status": "passed", + "duration": 1.5286250000000337, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery retains late bootstrap cleanup through the next admission", + "status": "passed", + "duration": 1.0650840000000699, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when provider result never settles", + "status": "passed", + "duration": 0.8437079999999924, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when completion checkpoint never settles", + "status": "passed", + "duration": 0.5157910000000356, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when control-plane replay never settles", + "status": "passed", + "duration": 0.6369170000000395, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when final event append never settles", + "status": "passed", + "duration": 0.66762499999993, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery bounds post-terminal finalization when run completion never settles", + "status": "passed", + "duration": 0.6398750000000746, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery commits cancellation before bounding failed provider cleanup", + "status": "passed", + "duration": 202.746625, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":true,\"closeFails\":false})", + "status": "passed", + "duration": 0.6352500000000418, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":true,\"closeFails\":true})", + "status": "passed", + "duration": 0.3799589999998716, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":false,\"closeFails\":true})", + "status": "passed", + "duration": 0.3714999999999691, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves a permanent integrity failure through required cleanup ({\"typed\":true,\"closeFails\":true,\"startupRace\":true})", + "status": "passed", + "duration": 0.3416669999999158, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery commits a governed wait without waiting for abort-insensitive provider cleanup", + "status": "passed", + "duration": 101.15741600000001, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery uses the execution timeout when a completion report has no provider terminal", + "status": "passed", + "duration": 172.18641599999978, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery retains a reusable session while a semantic terminal releases its remote subscription", + "status": "passed", + "duration": 152.0486249999999, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery replaces a provider session that already ended with a failed terminal", + "status": "passed", + "duration": 0.7044160000000375, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery resolves a checkpointed result-less disposition without resubmitting when its terminal event is missing", + "status": "passed", + "duration": 0.9620420000001104, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery keeps a reconstructed semantic result on its matched terminal turn", + "status": "passed", + "duration": 0.9588749999998072, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery aborts and bounds a durable handoff that never settles", + "status": "passed", + "duration": 125.93604099999993, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves terminal success while iterator teardown remains pending", + "status": "passed", + "duration": 51.99108399999977, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery preserves terminal success while quarantining stalled handoff cleanup", + "status": "passed", + "duration": 101.5946670000003, + "failureMessages": [] + } + ] + } + ], + "live": [] + }, + { + "id": "LCA-12", + "name": "Replay, restart and stale ownership", + "expected": "One successor, preserved receipts/budgets; stale finalizers cannot mutate new ownership", + "coverage": [ + { + "lane": "grading", + "file": "tests/runner-e2e/lifecycle-baseline.test.ts", + "pattern": "LCA-12", + "status": "pass", + "assertions": [ + { + "name": "LCA Product E2E evidence calibration LCA-12 rejects lost original receipt", + "status": "passed", + "duration": 0.08279100000000028, + "failureMessages": [] + } + ] + }, + { + "lane": "unit", + "file": "tests/lifecycle-baseline/authority.test.ts", + "pattern": "LCA-12", + "status": "pass", + "assertions": [ + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate budget survives encouraging prose", + "status": "passed", + "duration": 0.06825000000000614, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate duplicate survives encouraging prose", + "status": "passed", + "duration": 0.05879199999999685, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate wrong-company survives encouraging prose", + "status": "passed", + "duration": 0.040041000000002214, + "failureMessages": [] + }, + { + "name": "LCA narrative authority baseline LCA-10 LCA-12 legacy gate paused-agent survives encouraging prose", + "status": "passed", + "duration": 0.03900000000000148, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / neutral", + "status": "passed", + "duration": 0.05674999999999386, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / no-approval", + "status": "passed", + "duration": 0.04975000000000307, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / scoped-negation", + "status": "passed", + "duration": 0.047874999999990564, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / historical-quote", + "status": "passed", + "duration": 0.04666600000000187, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / spanish", + "status": "passed", + "duration": 0.039749999999997954, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / optional-next-steps", + "status": "passed", + "duration": 0.053542000000007306, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / all-done", + "status": "passed", + "duration": 0.04562500000000114, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / keep-going", + "status": "passed", + "duration": 0.04129100000000108, + "failureMessages": [] + }, + { + "name": "LCA native authority pairs LCA-12 already closed / empty", + "status": "passed", + "duration": 0.04358400000000984, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/native-finalization-recovery.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "P6-16/P6-25/P6-28 native finalization recovery fails closed into bounded named recovery without consulting the live flag or falling back", + "status": "passed", + "duration": 79.16716700000006, + "failureMessages": [] + }, + { + "name": "P6-16/P6-25/P6-28 native finalization recovery retires an older failed finalizer when a newer run already committed the issue", + "status": "passed", + "duration": 30.53233399999999, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers exact committed results even with stale nativePhase or privately recovered errors", + "status": "passed", + "duration": 17.120958000000428, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"runtimeMode\":\"legacy\"}}", + "status": "passed", + "duration": 4.629958999999872, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"status\":\"running\"}}", + "status": "passed", + "duration": 4.469333000000006, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"finishedAt\":null}}", + "status": "passed", + "duration": 3.978374999999687, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"error\":\"another failure\"}}", + "status": "passed", + "duration": 4.495417000000089, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"errorCode\":\"setup_failed\"}}", + "status": "passed", + "duration": 3.7576660000004267, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"run\":{\"error\":\"newer failure\",\"errorCode\":\"adapter_failed\",\"resultJson\":{\"recoveredExecutionFailure\":{\"error\":\"provider_transport_failed: runner did not durably suspend before checkpoint\",\"errorCode\":\"adapter_failed\"}}}}", + "status": "passed", + "duration": 4.321082999999817, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"schemaStatus\":\"rejected\"}", + "status": "passed", + "duration": 3.4382919999998194, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"phase\":\"retryable_failure\"}}", + "status": "passed", + "duration": 3.512374999999338, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"nextAttemptAt\":\"1970-01-01T00:00:00.000Z\"}}", + "status": "passed", + "duration": 3.0437910000000556, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"leaseOwner\":\"another-controller\",\"leaseExpiresAt\":\"2026-09-23T03:08:19.620Z\"}}", + "status": "passed", + "duration": 2.9561249999997017, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_maintenance\",\"phase\":\"started\"}]}}", + "status": "passed", + "duration": 3.411750000000211, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_maintenance\",\"phase\":\"settled\"}]}}", + "status": "passed", + "duration": 3.03716600000007, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_maintenance\",\"phase\":\"operator_required\"}]}}", + "status": "passed", + "duration": 4.835624999999709, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_source_archive\",\"phase\":\"operator_required\"}]}}", + "status": "passed", + "duration": 2.8373750000000655, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes ineligible or previously attempted cleanup: {\"coordinator\":{\"recoveryHistory\":[{\"kind\":\"native_cleanup_source_archive\",\"phase\":\"prepared\"},{\"kind\":\"native_cleanup_runner_epoch\",\"phase\":\"spawned\",\"epoch\":1,\"pid\":88736}]}}", + "status": "passed", + "duration": 2.7802920000003724, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers a single legacy failed attempt only for independent physical proof", + "status": "passed", + "duration": 4.889083000000028, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers prelaunch source archival at prepared without changing authority", + "status": "passed", + "duration": 4.83337500000016, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery discovers prelaunch source archival at archived without changing authority", + "status": "passed", + "duration": 4.297708000000057, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery fences actual scoped admission until every archived owner has its matching latest settlement", + "status": "passed", + "duration": 14.86829200000011, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with new epoch", + "status": "passed", + "duration": 3.526582999999846, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with third attempt", + "status": "passed", + "duration": 3.87762500000008, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with reordered phases", + "status": "passed", + "duration": 3.6692089999996824, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with different request", + "status": "passed", + "duration": 3.652165999999852, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with unversioned entry", + "status": "passed", + "duration": 3.4002500000005966, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with settled attempt", + "status": "passed", + "duration": 3.65191699999923, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with unknown failure", + "status": "passed", + "duration": 3.4476250000006985, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery excludes legacy discovery with missing source", + "status": "passed", + "duration": 3.318040999999539, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery joins overlap and advances beyond a permanently ineligible first candidate", + "status": "passed", + "duration": 10.120791000000281, + "failureMessages": [] + }, + { + "name": "retained native cleanup discovery isolates one failure and resets its joined owner for the next bounded sweep", + "status": "passed", + "duration": 10.222749999999905, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/services/native-runtime/native-safe-replacement.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "durable replacement and control recovery preserves saved work and a queued request at a controlled recovery boundary (verified)", + "status": "passed", + "duration": 298.00245799999993, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery preserves saved work and a queued request at a controlled recovery boundary (unproven)", + "status": "passed", + "duration": 223.86308299999973, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery preserves saved work and a queued request at a controlled recovery boundary (unknown_action)", + "status": "passed", + "duration": 235.1736249999999, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires stopped-session proof through commit (unproven)", + "status": "passed", + "duration": 250.62712499999998, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires stopped-session proof through commit (changed)", + "status": "passed", + "duration": 236.75745800000004, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires stopped-session proof through commit (verified)", + "status": "passed", + "duration": 241.3942079999997, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (missing_receipt)", + "status": "passed", + "duration": 234.8430419999995, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (other_run)", + "status": "passed", + "duration": 263.9076249999998, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (other_cause)", + "status": "passed", + "duration": 233.54004199999963, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (manual_reblock)", + "status": "passed", + "duration": 252.0674170000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (dependency_edit)", + "status": "passed", + "duration": 264.8952909999998, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery honors blocking intent before safe replacement (queued_comment)", + "status": "passed", + "duration": 244.16299999999956, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery automatically closes an exhausted incident once, preserves ownership, and records no replay", + "status": "passed", + "duration": 258.8660410000002, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not let a full batch awaiting replacement starve an eligible disposition", + "status": "passed", + "duration": 331.67875000000004, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery rolls back a crashed automatic disposition and completes it on the next sweep", + "status": "passed", + "duration": 245.8399589999999, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not let the automatic fallback preempt a safe replacement", + "status": "passed", + "duration": 236.95858299999963, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery closes stale recovery after closed without changing task state or granting replay", + "status": "passed", + "duration": 235.6805000000004, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery closes stale recovery after reassigned without changing task state or granting replay", + "status": "passed", + "duration": 260.0826669999997, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery closes stale recovery after new_execution without changing task state or granting replay", + "status": "passed", + "duration": 236.67991699999948, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery cancels a durable native retry even when its previous provider is already failed", + "status": "passed", + "duration": 257.77658299999985, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery atomically terminalizes unsupported legacy recovery and preserves its owner", + "status": "passed", + "duration": 239.84454099999948, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reopen a reconciled legacy run while continuation is pending", + "status": "passed", + "duration": 234.43604200000118, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery surfaces a failed current reviewer without transferring the original assignment", + "status": "passed", + "duration": 235.00195800000074, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not turn an already reconciled continuation into a recovery assignment", + "status": "passed", + "duration": 225.83150000000023, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery keeps an unclassified transport terminal operator-owned", + "status": "passed", + "duration": 235.39329100000032, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reuse consumed wake authority after a later done transition", + "status": "passed", + "duration": 252.5802500000009, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reuse consumed wake authority after a later cancelled transition", + "status": "passed", + "duration": 363.0120000000006, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not reuse consumed wake authority after a later review transition", + "status": "passed", + "duration": 267.9835000000003, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery persists exactly one linked successor under competing sweepers and restarts", + "status": "passed", + "duration": 246.13879199999974, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery retries status publication after a crash without dispatching provider work", + "status": "passed", + "duration": 256.02170900000056, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native", + "status": "passed", + "duration": 249.50333300000057, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: legacy", + "status": "passed", + "duration": 250.35208299999977, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native_precedes_context", + "status": "passed", + "duration": 235.27133399999911, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: missing", + "status": "passed", + "duration": 225.27358300000014, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: nonexistent", + "status": "passed", + "duration": 241.30808300000172, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: deleted", + "status": "passed", + "duration": 260.0013749999998, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: foreign", + "status": "passed", + "duration": 291.71108300000014, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: malformed", + "status": "passed", + "duration": 231.0297499999997, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: object", + "status": "passed", + "duration": 227.43995799999902, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: array", + "status": "passed", + "duration": 223.37995899999987, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: number", + "status": "passed", + "duration": 228.80220800000097, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: json_null", + "status": "passed", + "duration": 233.24337500000001, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native_foreign", + "status": "passed", + "duration": 250.67433399999936, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery routes status delivery only through a proven same-company task: native_nonexistent", + "status": "passed", + "duration": 237.93429099999958, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery never resets an exhausted incident by assigning another run id", + "status": "passed", + "duration": 248.73049999999967, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery recovers a crash at successor_inserted without duplicate successors", + "status": "passed", + "duration": 251.19875000000138, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery recovers a crash at lineage_committed without duplicate successors", + "status": "passed", + "duration": 269.7586249999986, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not replay a provider-native command with unknown effects (PRP envelope: false)", + "status": "passed", + "duration": 246.4947919999995, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not replay a provider-native command with unknown effects (PRP envelope: true)", + "status": "passed", + "duration": 257.72912499999984, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery surfaces a reviewer's abandoned control transition for the operator", + "status": "passed", + "duration": 252.70866600000045, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery fences a stranded finalization and surfaces one operator action after its deadline", + "status": "passed", + "duration": 256.14908300000025, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery bounds legacy finalization without adding a deadline to healthy provider execution", + "status": "passed", + "duration": 237.23337500000162, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery does not release another run's checkout or replace a reassigned task", + "status": "passed", + "duration": 259.41058300000077, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery requires explicit reconciled outcomes and rejects a still-running provider", + "status": "passed", + "duration": 275.0111250000009, + "failureMessages": [] + }, + { + "name": "durable replacement and control recovery retains a reconciliation delivery across dispatch failure and invalidates stale ownership", + "status": "passed", + "duration": 236.89220800000112, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/question-response-delivery.test.ts", + "pattern": "concurrent|interrupted|stale|receipt", + "status": "pass", + "assertions": [ + { + "name": "question response delivery reuses the winning wake when a concurrent insert hits the idempotency fence", + "status": "passed", + "duration": 44.392917000000125, + "failureMessages": [] + }, + { + "name": "question response delivery reuses a durable wake receipt instead of issuing a duplicate continuation", + "status": "passed", + "duration": 36.711709000000155, + "failureMessages": [] + }, + { + "name": "question response delivery recovers a completed wake when receipt finalization was interrupted", + "status": "passed", + "duration": 23.419208000000253, + "failureMessages": [] + }, + { + "name": "question response delivery fences a stale worker after a newer claim generation takes ownership", + "status": "passed", + "duration": 94.60833299999967, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-neutral", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:lifecycle-dependency-restart-challenge", + "status": "not_run" + }, + { + "id": "lifecycle-baseline:tool-review-restart", + "status": "not_run" + }, + { + "id": "everyday-workflows:recover-controller", + "status": "not_run" + } + ] + }, + { + "id": "LCA-13", + "name": "Owned review", + "expected": "Concrete reviewer; reviewer outcome drives next transition", + "coverage": [ + { + "lane": "unit", + "file": "server/src/services/native-runtime/status-arbiter.test.ts", + "pattern": "review", + "status": "pass", + "assertions": [ + { + "name": "native status authority a reviewer finishes its decision without completing rejected or still-reviewed work", + "status": "passed", + "duration": 1.2171659999999918, + "failureMessages": [] + }, + { + "name": "native status authority routes an unfinished reviewer action to bounded recovery instead of retrying the worker task", + "status": "passed", + "duration": 0.15374999999998806, + "failureMessages": [] + }, + { + "name": "native status authority creates explicit liveness paths for review, continuation, cancellation, and governance", + "status": "passed", + "duration": 0.19441600000000392, + "failureMessages": [] + }, + { + "name": "native status authority does not create a duplicate review after this run's review was already accepted", + "status": "passed", + "duration": 0.04058399999999551, + "failureMessages": [] + }, + { + "name": "native status authority does not create a duplicate review after this run's planning confirmation was already accepted", + "status": "passed", + "duration": 0.028707999999994627, + "failureMessages": [] + }, + { + "name": "native status authority routes each explicit request to its own reviewer", + "status": "passed", + "duration": 0.05516700000001151, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/native-status-arbiter-corpus.test.ts", + "pattern": "ATT|review|corpus", + "status": "pass", + "assertions": [ + { + "name": "P6-31 Section 18.13 executable status-authority corpus executes all 53 fixtures in their production consumers and joins all 70 matrix rows", + "status": "passed", + "duration": 774.79, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails independently when any asserted field category is mutated", + "status": "passed", + "duration": 587.7799170000003, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails mapped fixtures when live entrypoints or owning actions are removed despite matching policy labels", + "status": "passed", + "duration": 51.700750000000426, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus retires a proven automatic review and applies the current successful completion exactly once", + "status": "passed", + "duration": 45.78529200000003, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus completes a new merge run after an old CI review and bounds repeated incomplete results", + "status": "passed", + "duration": 49.408584000000246, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects wrong, missing, and duplicate criterion IDs before accepting completion", + "status": "passed", + "duration": 10.107332999999926, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps genuine approval actionable in the finish response and in finalization", + "status": "passed", + "duration": 40.46954199999982, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves answered cards, explicit attention, stronger authority, and later task edits", + "status": "passed", + "duration": 155.02979200000027, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus rejects an empty needs_review report with actionable feedback without inventing an approval", + "status": "passed", + "duration": 19.547750000000633, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus withdraws obsolete policy reviews, restores the prior status, and is idempotent", + "status": "passed", + "duration": 39.04766699999982, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already accepted review untouched", + "status": "passed", + "duration": 11.80291699999998, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus leaves an already rejected review untouched", + "status": "passed", + "duration": 12.757166999999754, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves real completion reviews and limits cleanup to the requested runs", + "status": "passed", + "duration": 24.520834000000832, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later blocked status", + "status": "passed", + "duration": 19.023291999999856, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later done status", + "status": "passed", + "duration": 18.597708999999668, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus dismisses the obsolete card without undoing a later cancelled status", + "status": "passed", + "duration": 18.73766699999942, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus does not restore status after a newer decision or a status change back to review", + "status": "passed", + "duration": 38.63575000000037, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps review status when a separate request still needs a response", + "status": "passed", + "duration": 16.936249999999745, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus isolates a failed cleanup candidate and retries it on the next pass", + "status": "passed", + "duration": 42.93354199999976, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps committed cleanup and continues publication after a live event fails", + "status": "passed", + "duration": 41.15258300000005, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus continues native finalization when the obsolete-card lookup fails", + "status": "passed", + "duration": 25.51787500000046, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves a later authoritative status during reconciliation", + "status": "passed", + "duration": 0.1322920000002341, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus supersedes the exact committed coordinator decision and sequences preserve decisions independently of issue status versions", + "status": "passed", + "duration": 9.202833999999712, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus keeps assessment lineage run-local while superseding an issue decision from another run", + "status": "passed", + "duration": 10.826584000000366, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus preserves an intermediate same-run assessment when the issue decision points to an older ancestor", + "status": "passed", + "duration": 7.281833000000006, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus ignores historical committed finalizations superseded by a newer authoritative decision", + "status": "passed", + "duration": 8.267249999999876, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with none predecessor", + "status": "passed", + "duration": 6.03583400000025, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with same_run predecessor", + "status": "passed", + "duration": 6.521334000000024, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus records run-scoped superseding assessment lineage with other_run predecessor", + "status": "passed", + "duration": 8.094875000000684, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus binds a tools-refresh continuation to its existing durable wake without a duplicate", + "status": "passed", + "duration": 10.037249999999403, + "failureMessages": [] + }, + { + "name": "P6-31 Section 18.13 executable status-authority corpus fails the transaction closed for an unknown status effect", + "status": "passed", + "duration": 4.380417000000307, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "runner-evals:request-task-review", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-01", + "name": "Separate productive, repair and infrastructure allowances", + "expected": "Each lane spends only its own allowance", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-01", + "status": "assertion_failure", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 0 is not a failed provider attempt", + "status": "passed", + "duration": 0.7985419999999976, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 1 is not a failed provider attempt", + "status": "passed", + "duration": 0.10808399999999097, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 2 is not a failed provider attempt", + "status": "failed", + "duration": 2.362459000000001, + "failureMessages": [ + "AssertionError: expected 2 to be +0 // Object.is equality\n at /private/tmp/paperclip-lifecycle-baseline-20260921/tests/lifecycle-baseline/accounting.test.ts:25:22\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2027:60\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:302:11\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:26\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2326:20\n at new Promise ()\n at runWithCancel (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2323:10)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2305:20\n at new Promise ()\n at runWithTimeout (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2272:10)" + ] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 0 is not failure count", + "status": "passed", + "duration": 0.09325000000001182, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 1 is not failure count", + "status": "passed", + "duration": 0.05025000000000546, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 2 is not failure count", + "status": "passed", + "duration": 0.03508300000001441, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 10 is not failure count", + "status": "passed", + "duration": 0.03162499999999113, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance workspace_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.0795829999999853, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ai_connection_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.10470900000001393, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'silent' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.3683329999999785, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'confident' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.1861250000000041, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'comments' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.10908299999999826, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'tool calls' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.09158299999998576, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'stale diagnostic' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.07179199999998787, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 stopped wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.0689999999999884, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 paused wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031666000000001304, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 budgetBlocked wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.027625000000000455, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 pendingWait wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031125000000002956, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 activeExecution wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.0262079999999969, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 ownedLifecycle wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.023291000000000395, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-04 episode identity survives arbitrary failure and resource-wait counters", + "status": "passed", + "duration": 0.06391599999997766, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "ACCT-01", + "status": "assertion_failure", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling ACCT-01 a failed disposition repair 1 receives its own first infrastructure retry", + "status": "passed", + "duration": 63.81516699999884, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling ACCT-01 a failed disposition repair 2 receives its own first infrastructure retry", + "status": "failed", + "duration": 53.89654100000007, + "failureMessages": [ + "AssertionError: expected 'retry_exhausted' to be 'scheduled' // Object.is equality\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/heartbeat-retry-scheduling.test.ts:644:31\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + }, + { + "name": "heartbeat bounded retry scheduling ACCT-01 infrastructure failures do not spend the first productive max-turn continuation", + "status": "failed", + "duration": 45.57795799999985, + "failureMessages": [ + "AssertionError: expected { outcome: 'retry_exhausted', …(2) } to match object { outcome: 'scheduled', attempt: 1 }\n(1 matching property omitted from actual)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1283:10)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1156:15)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/heartbeat-retry-scheduling.test.ts:662:23\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence retains every accounting screenshot through the existing evidence allowlist", + "status": "passed", + "duration": 7.243166000000002, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 0.7209589999999935, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.5200000000000102, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.1376250000000141, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.12283299999998576, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.1541249999999934, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1073329999999828, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.09541699999999764, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.1489169999999831, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.16283300000000622, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.19062500000001137, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.06941599999998971, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.15875000000002615, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07116700000000264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.06837500000000318, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.07462500000002592, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.057582999999993945, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.06745800000001623, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.05637499999997431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.0619999999999834, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.0695829999999944, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive deduplicated-noise", + "status": "passed", + "duration": 0.0691669999999931, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09812500000001023, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.05716699999999264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.049791999999996506, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.060374999999993406, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.05616700000001629, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07091599999998266, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.07379099999999994, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-02", + "name": "False progress and exhaustion", + "expected": "Comments, wording and raw tool counts cannot replenish attempts", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-02", + "status": "assertion_failure", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 0 is not a failed provider attempt", + "status": "passed", + "duration": 0.7985419999999976, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 1 is not a failed provider attempt", + "status": "passed", + "duration": 0.10808399999999097, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance a disposition repair attempt 2 is not a failed provider attempt", + "status": "failed", + "duration": 2.362459000000001, + "failureMessages": [ + "AssertionError: expected 2 to be +0 // Object.is equality\n at /private/tmp/paperclip-lifecycle-baseline-20260921/tests/lifecycle-baseline/accounting.test.ts:25:22\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2027:60\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:302:11\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:26\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2326:20\n at new Promise ()\n at runWithCancel (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2323:10)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2305:20\n at new Promise ()\n at runWithTimeout (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:2272:10)" + ] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 0 is not failure count", + "status": "passed", + "duration": 0.09325000000001182, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 1 is not failure count", + "status": "passed", + "duration": 0.05025000000000546, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 2 is not failure count", + "status": "passed", + "duration": 0.03508300000001441, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance productive continuation count 10 is not failure count", + "status": "passed", + "duration": 0.03162499999999113, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance workspace_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.0795829999999853, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ai_connection_busy preserves prior failures regardless of wait count", + "status": "passed", + "duration": 0.10470900000001393, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'silent' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.3683329999999785, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'confident' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.1861250000000041, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'comments' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.10908299999999826, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'tool calls' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.09158299999998576, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance 'stale diagnostic' cannot replenish exhausted repairs or failures", + "status": "passed", + "duration": 0.07179199999998787, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 stopped wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.0689999999999884, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 paused wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031666000000001304, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 budgetBlocked wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.027625000000000455, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 pendingWait wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031125000000002956, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 activeExecution wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.0262079999999969, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 ownedLifecycle wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.023291000000000395, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-04 episode identity survives arbitrary failure and resource-wait counters", + "status": "passed", + "duration": 0.06391599999997766, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "ACCT-02", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling ACCT-02 exhausted infrastructure retries remain exhausted after silent and restart", + "status": "passed", + "duration": 48.85533300000134, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling ACCT-02 exhausted infrastructure retries remain exhausted after comments-and-tools and restart", + "status": "passed", + "duration": 48.906582999999955, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": "ACCT-02", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with silent", + "status": "passed", + "duration": 87.61700000000019, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with comments", + "status": "passed", + "duration": 94.849291, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-02 full recovery sweep cannot replenish an exhausted episode with tool-calls", + "status": "passed", + "duration": 86.13845800000036, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence retains every accounting screenshot through the existing evidence allowlist", + "status": "passed", + "duration": 7.243166000000002, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 0.7209589999999935, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.5200000000000102, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.1376250000000141, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.12283299999998576, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.1541249999999934, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1073329999999828, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.09541699999999764, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.1489169999999831, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.16283300000000622, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.19062500000001137, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.06941599999998971, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.15875000000002615, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07116700000000264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.06837500000000318, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.07462500000002592, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.057582999999993945, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.06745800000001623, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.05637499999997431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.0619999999999834, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.0695829999999944, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive deduplicated-noise", + "status": "passed", + "duration": 0.0691669999999931, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09812500000001023, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.05716699999999264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.049791999999996506, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.060374999999993406, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.05616700000001629, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07091599999998266, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.07379099999999994, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-03", + "name": "Late gates", + "expected": "Stop, approvals, ownership, pause and spending gates remain authoritative", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-03", + "status": "pass", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 stopped wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.0689999999999884, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 paused wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031666000000001304, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 budgetBlocked wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.027625000000000455, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 pendingWait wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.031125000000002956, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 activeExecution wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.0262079999999969, + "failureMessages": [] + }, + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-03 ownedLifecycle wins over both fresh and exhausted allowances", + "status": "passed", + "duration": 0.023291000000000395, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": "ACCT-03", + "status": "pass", + "assertions": [ + { + "name": "legacy continuation persisted authority ACCT-03 approval introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 37.50333300000011, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 budget introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 36.710000000000036, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 pause introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 35.21629100000018, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 reassigned introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 32.534834000000046, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/test-baselines/lifecycle-heartbeat.test.ts", + "pattern": "LCA-04 LCA-10", + "status": "pass", + "assertions": [ + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 5.14166699999987, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the paused admission gate", + "status": "passed", + "duration": 4.1118749999996, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 native accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 8.112959000000046, + "failureMessages": [] + }, + { + "name": "LCA full heartbeat observation LCA-04 LCA-10 legacy accepted approval preserves the budget admission gate", + "status": "passed", + "duration": 7.717458000000079, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-stale-queue-invalidation.test.ts", + "pattern": "gate|cap|ownership", + "status": "pass", + "assertions": [ + { + "name": "heartbeat stale queued-run invalidation rejects ownership changes immediately before the final continuation handoff", + "status": "passed", + "duration": 626.9747079999997, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily run cap is reached", + "status": "passed", + "duration": 370.0606250000001, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily run cap as a hard stop", + "status": "passed", + "duration": 377.38175000000047, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation counts started cancelled runs toward the per-agent daily run cap", + "status": "passed", + "duration": 377.0649169999997, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation coalesces same-issue wakes before enforcing the daily run cap", + "status": "passed", + "duration": 441.1517500000009, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips wakes before queueing when per-agent daily cost cap is reached", + "status": "passed", + "duration": 409.0295420000002, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation treats zero daily cost cap as a hard stop", + "status": "passed", + "duration": 367.7435839999998, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued runs before adapter execution when the daily cost cap is reached", + "status": "passed", + "duration": 391.4734580000004, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation skips already queued issue runs at the daily run cap and releases the execution lock", + "status": "passed", + "duration": 404.72258299999885, + "failureMessages": [] + }, + { + "name": "heartbeat stale queued-run invalidation promotes deferred issue wakes when a queued holder is cancelled by the daily run cap", + "status": "passed", + "duration": 441.80862499999967, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence retains every accounting screenshot through the existing evidence allowlist", + "status": "passed", + "duration": 7.243166000000002, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 0.7209589999999935, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.5200000000000102, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.1376250000000141, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.12283299999998576, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.1541249999999934, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1073329999999828, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.09541699999999764, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.1489169999999831, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.16283300000000622, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.19062500000001137, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.06941599999998971, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.15875000000002615, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07116700000000264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.06837500000000318, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.07462500000002592, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.057582999999993945, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.06745800000001623, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.05637499999997431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.0619999999999834, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.0695829999999944, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive deduplicated-noise", + "status": "passed", + "duration": 0.0691669999999931, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09812500000001023, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.05716699999999264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.049791999999996506, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.060374999999993406, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.05616700000001629, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07091599999998266, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.07379099999999994, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + }, + { + "id": "ACCT-04", + "name": "Restart and replay accounting", + "expected": "Consumed allowances and causal receipts survive restart and duplicates", + "coverage": [ + { + "lane": "unit", + "file": "tests/lifecycle-baseline/accounting.test.ts", + "pattern": "ACCT-04", + "status": "pass", + "assertions": [ + { + "name": "ACCT-01 separate accounting and ACCT-02 narrative invariance ACCT-04 episode identity survives arbitrary failure and resource-wait counters", + "status": "passed", + "duration": 0.06391599999997766, + "failureMessages": [] + } + ] + }, + { + "lane": "runner", + "file": "packages/paperclip-runner/src/native-session-runtime.test.ts", + "pattern": "ACCT-04", + "status": "pass", + "assertions": [ + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after silent without replenishing consumed repair", + "status": "passed", + "duration": 0.6385420000001432, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after commentary without replenishing consumed repair", + "status": "passed", + "duration": 0.46166600000015023, + "failureMessages": [] + }, + { + "name": "executeNativeSession recovery ACCT-04 resolves a proposal-less durable disposition after tool-events without replenishing consumed repair", + "status": "passed", + "duration": 0.48862499999995634, + "failureMessages": [] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/legacy-continuation-authority.test.ts", + "pattern": "ACCT-04|replay|restart|fast repair", + "status": "assertion_failure", + "assertions": [ + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (1)", + "status": "passed", + "duration": 82.72762499999999, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (2)", + "status": "passed", + "duration": 28.238624999999956, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (3)", + "status": "passed", + "duration": 23.354125000000295, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (4)", + "status": "passed", + "duration": 25.66608300000007, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority deduplicates concurrent replay with stale prose-derived liveness (5)", + "status": "passed", + "duration": 22.29879200000005, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority does not roll back the ledger when a fast repair finishes before enqueue returns", + "status": "passed", + "duration": 25.931832999999642, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority keeps the same bounded episode across restart and commentary, then escalates only after agent attempts", + "status": "passed", + "duration": 54.93312500000002, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 approval introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 37.50333300000011, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 budget introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 36.710000000000036, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 pause introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 35.21629100000018, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-03 reassigned introduced during second repair delay survives restart without another debit", + "status": "passed", + "duration": 32.534834000000046, + "failureMessages": [] + }, + { + "name": "legacy continuation persisted authority ACCT-04 a delayed second repair remains promotable after controller restart", + "status": "failed", + "duration": 47.96762499999977, + "failureMessages": [ + "AssertionError: expected [] to include '9e9365a5-335b-41e7-9ca9-095c1e89a9c9'\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1319:15)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1164:22)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/legacy-continuation-authority.test.ts:119:34\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20", + "AssertionError: expected { …(70) } to match object { status: 'queued', errorCode: null }\n(82 matching properties omitted from actual)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1283:10)\n at Proxy. (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.js:1156:15)\n at Proxy.methodWrapper (file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js:1700:25)\n at /private/tmp/paperclip-lifecycle-baseline-20260921/server/src/__tests__/legacy-continuation-authority.test.ts:120:60\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at file:///Users/dotta/paperclipai/paperclip/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20" + ] + } + ] + }, + { + "lane": "integration", + "file": "server/src/__tests__/heartbeat-retry-scheduling.test.ts", + "pattern": "concurrent|coalesces", + "status": "pass", + "assertions": [ + { + "name": "heartbeat bounded retry scheduling reuses one failure successor across concurrent and repeated scheduling", + "status": "passed", + "duration": 130.18333299999995, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling bounds interrupted conversations across restarts and concurrent scheduling", + "status": "passed", + "duration": 129.8407499999994, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling coalesces duplicate accepted interaction continuation infra retry schedules", + "status": "passed", + "duration": 66.03158299999996, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling coalesces duplicate max-turn continuation schedules for the same source run and attempt", + "status": "passed", + "duration": 54.64887500000077, + "failureMessages": [] + }, + { + "name": "heartbeat bounded retry scheduling run-dispatch module transactions promotes a due scheduled retry exactly once under concurrent promotion attempts", + "status": "passed", + "duration": 606.6054999999997, + "failureMessages": [] + } + ] + }, + { + "lane": "grading", + "file": "tests/runner-e2e/accounting.test.ts", + "pattern": ".", + "status": "pass", + "assertions": [ + { + "name": "ACCT calibrated live accounting evidence retains every accounting screenshot through the existing evidence allowlist", + "status": "passed", + "duration": 7.243166000000002, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence discovers eight explicit-only real-provider cells and excludes unsupported native repair injection", + "status": "passed", + "duration": 0.7209589999999935, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-neutral' recording", + "status": "passed", + "duration": 0.5200000000000102, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-productive-noisy' recording", + "status": "passed", + "duration": 0.1376250000000141, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-neutral' recording", + "status": "passed", + "duration": 0.12283299999998576, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-exhaustion-noisy' recording", + "status": "passed", + "duration": 0.1541249999999934, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-stop' recording", + "status": "passed", + "duration": 0.1073329999999828, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence accepts a complete 'accounting-repair-approval' recording", + "status": "passed", + "duration": 0.09541699999999764, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-productive-neutral", + "status": "passed", + "duration": 0.1489169999999831, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-exhaustion-noisy", + "status": "passed", + "duration": 0.16283300000000622, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-stop", + "status": "passed", + "duration": 0.19062500000001137, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects missing final evidence for accounting-repair-approval", + "status": "passed", + "duration": 0.06941599999998971, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive noise", + "status": "passed", + "duration": 0.15875000000002615, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive extra-run", + "status": "passed", + "duration": 0.07116700000000264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-runtime", + "status": "passed", + "duration": 0.06837500000000318, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive pending-retry", + "status": "passed", + "duration": 0.07462500000002592, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive repair-debt", + "status": "passed", + "duration": 0.057582999999993945, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive wrong-document", + "status": "passed", + "duration": 0.058166999999997415, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive premature-document", + "status": "passed", + "duration": 0.06745800000001623, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-answer", + "status": "passed", + "duration": 0.05637499999997431, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive missing-state", + "status": "passed", + "duration": 0.0619999999999834, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive rewritten-document", + "status": "passed", + "duration": 0.0695829999999944, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects productive deduplicated-noise", + "status": "passed", + "duration": 0.0691669999999931, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair new-episode", + "status": "passed", + "duration": 0.09812500000001023, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair reset-attempt", + "status": "passed", + "duration": 0.05716699999999264, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair extra-repair", + "status": "passed", + "duration": 0.049791999999996506, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair user-comment", + "status": "passed", + "duration": 0.060374999999993406, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair restart-loss", + "status": "passed", + "duration": 0.05616700000001629, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects exhausted repair hidden-exhaustion", + "status": "passed", + "duration": 0.04349999999999454, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects Stop that still dispatched the provider", + "status": "passed", + "duration": 0.07091599999998266, + "failureMessages": [] + }, + { + "name": "ACCT calibrated live accounting evidence rejects pending approval competing with repair and declined approval continuing", + "status": "passed", + "duration": 0.07379099999999994, + "failureMessages": [] + } + ] + } + ], + "live": [ + { + "id": "continuation-accounting:accounting-productive-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-productive-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-neutral", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-exhaustion-noisy", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-stop", + "status": "not_run" + }, + { + "id": "continuation-accounting:accounting-repair-approval", + "status": "not_run" + } + ] + } + ] +} diff --git a/tests/runner-e2e/CONTINUATION-ACCOUNTING.md b/tests/runner-e2e/CONTINUATION-ACCOUNTING.md index 2fd1034f074..38591ece684 100644 --- a/tests/runner-e2e/CONTINUATION-ACCOUNTING.md +++ b/tests/runner-e2e/CONTINUATION-ACCOUNTING.md @@ -36,3 +36,7 @@ See the [scenario matrix](../../doc/plans/2026-09-22-continuation-accounting-bas for deterministic fault, replay, spending and ownership coverage. Infrastructure failures are not induced in paid cells; their cross-lane allowance semantics are covered by actual scheduler tests with controlled failures. + +Results and follow-ups are retained in the [accounting measurement report](../lifecycle-baseline/CONTINUATION-ACCOUNTING-2026-09-22.md), +including the original failed fixture campaign. A new measurement never replaces +or regrades an earlier campaign.