diff --git a/doc/idle-discord-command-registration.md b/doc/idle-discord-command-registration.md index 1016ffa794b..890c1e44e0b 100644 --- a/doc/idle-discord-command-registration.md +++ b/doc/idle-discord-command-registration.md @@ -30,7 +30,8 @@ company status and unrelated endpoint metadata do not add new policy. Startup reconstructs eligible state in UUID keyset pages of 100. Committed hints refresh only the affected endpoint, connection, or deleted company. Refresh and -retry passes have a 30-second minimum spacing. There is no periodic inventory +retry passes have a 30-second minimum spacing when no already-due backlog +remains. A bounded batch with more due rows continues after one second. There is no periodic inventory scan after all hints settle. Due dispatch rechecks persisted eligibility and the saved deadline, invokes the command owner, and reloads its durable result. @@ -74,9 +75,9 @@ wake integration; process-local hints are not cross-replica notification deliver ## Verification and limits -Selected local verification covers 38 real-PostgreSQL protocol/lifecycle cases, -three fair-batch cases, 91 Discord integration cases, 487 tool-access/access -consumers, and 20 chat-worker/startup consumers: 639 unique tests. Workspace +Selected local verification covers 40 real-PostgreSQL protocol/lifecycle cases, +three fair-batch cases, 93 Discord integration cases, 487 tool-access/access +consumers, and 20 chat-worker/startup consumers: 643 unique tests. Workspace typechecking and build pass; the final small fairness addition also receives server type/build verification before publication. The full local `pnpm test:run` is not claimed: embedded PostgreSQL is unavailable on this host. Remote CI must @@ -98,3 +99,27 @@ voice, Teams, and other chat maintenance remain separate obligations. The remain runtime poll can still read command receipts; it no longer initiates command registration or remote verification. Cloud sleep eligibility and durable alarm coverage are unchanged. A timer in this process cannot wake a stopped host. + + +Review follow-up: a 300-command regression failed under the old 25-per-30-second +limit. Bounded one-second continuations now drain the controlled due backlog +within 15 seconds, then remain quiet until real verification deadlines. An unknown +scope hint also reproduced loss of a later valid wake. Parsing now occurs inside +the recovery boundary; an invalid scope requests full reconstruction rather than +dropping queued scopes or retrying a poison hint forever. Both regressions and +all 62 combined command/health/batching cases pass. + +The real producer integration covers credential rotation and company deletion in +addition to configure/removal. The deletion test first lacked a configured agent +lifecycle worker; after adding the controlled host driver it exposed an existing +restrictive endpoint-to-agent foreign key failure. Prerequisite #17561 fixes the +deletion order in its own PR. The command intent is now registered before endpoint +cleanup in the owning transaction. The test verifies deadline cancellation, SQL +silence, and retained ownership tombstones. All seven automatic-registration +integration cases pass; 1,413 deselected cases are not counted as executed. + +A test invocation during prerequisite merging failed before execution because an +import conflict was unresolved. The conflict was repaired preserving both imports, +then the test ran successfully. Final server typecheck/build pass. Fresh CI and +reviews are still required after publication; prior-head Greptile 5/5 and Actions +results do not establish acceptance of this head. diff --git a/doc/plans/2026-10-24-recurring-server-sleep-stack.md b/doc/plans/2026-10-24-recurring-server-sleep-stack.md index 01d6199f8ec..5a714ad8eb8 100644 --- a/doc/plans/2026-10-24-recurring-server-sleep-stack.md +++ b/doc/plans/2026-10-24-recurring-server-sleep-stack.md @@ -17,13 +17,13 @@ Do not mark an item done from a timer removal or a green check alone. | 03 | Run and task recovery | Orphan runs and active leases; shutdown workspace settlement; scheduled retries; queued runs; stranded assignments; resolved dependencies; task watchdogs; silent-run monitoring; stale locks | Pending | | 04 | Decision retention and notifications | Retention deadlines and notification delivery are separate reasons | Approval retention implemented in slice 14, verification in progress; other source owners pending; notification delivery: [#17475](https://github.com/paperclipai/paperclip/pull/17475), all checks passed (Paperclip Review skipped), Greptile 5/5 at `692e3ee02c` | | 05 | Decision expiry and interrupted effects | Expiry, effect recovery, continuation recovery | Continuations: [#17478](https://github.com/paperclipai/paperclip/pull/17478), all checks passed, Greptile 5/5 at `5f96892a58`; TTL: [#17479](https://github.com/paperclipai/paperclip/pull/17479), all checks passed, Greptile 5/5 at `63b58cc26f`; effects: [#17482](https://github.com/paperclipai/paperclip/pull/17482), all checks passed, Greptile 5/5 at `a5b5994c1d`; target invalidation: [#17486](https://github.com/paperclipai/paperclip/pull/17486), all checks passed, Greptile 5/5 at `1bbfc69590` | -| 06 | Tool connection health | Configuration/use activation and defined proactive health deadlines | Pending | +| 06 | Tool connection health | Configuration/use activation and defined proactive health deadlines | #17554 published; fairness, backlog, and real-producer repairs at `f8ad26f0ff`; fresh acceptance pending | | 07 | Secret proposals, tool reviews, gateway tokens | Separate expiry/scrub/recovery owners | Secret proposals: [#17446](https://github.com/paperclipai/paperclip/pull/17446), checks passed at `d41590ac0e`; gateway credentials: [#17450](https://github.com/paperclipai/paperclip/pull/17450), all checks passed, Greptile 5/5 at `c5c53fc43f`; pending tool-review expiry: [#17453](https://github.com/paperclipai/paperclip/pull/17453), all checks passed, Greptile 5/5 at `ce6a260a83`; approved recovery: [#17454](https://github.com/paperclipai/paperclip/pull/17454), all checks passed, Greptile 5/5 at `7a1cf03e62`; interrupted claims: [#17458](https://github.com/paperclipai/paperclip/pull/17458), all checks passed, Greptile 5/5 at `85003a7ac4`; projection: [#17468](https://github.com/paperclipai/paperclip/pull/17468), all checks passed, Greptile 5/5 at `0956883a84` | | 08 | GitHub connection events and continuity | Event discovery/replay and credential continuity separately | Pending | | 09 | Merged-PR confirmations | Candidate writes, webhook activation where supported, outstanding-candidate fallback | Pending | | 10 | External-object refresh | Configuration changes, refresh deadlines, source events | Pending | | 11 | Status-card evaluation | Settings/card mutations and evaluation deadlines | Pending | -| 12 | Plugin scheduled jobs | Registration/update/removal and actual job deadlines | Pending | +| 12 | Plugin scheduled jobs | Registration/update/removal and actual job deadlines | #17518 published; see latest-head gate records below | | 13 | Routine, agent-timer and issue-monitor scheduling | Remove periodic wake backstops after complete producer coverage; routine execution-status reconciliation separately | Pending | | 14 | Skill-version retention and native-harness backup expiration | Separate retention owners and existing retention guarantees | Pending | | 15 | Automatic database backups | Shared scheduling, actual backup deadlines, existing checkpoint contract | Pending | @@ -1132,3 +1132,28 @@ removed the initial missing-worker failure but reproduced this actual SQL failur Keep the failing producer test; repair the deletion dependency in its own stack PR before publishing the Discord follow-up. Current local changes are not final acceptance. The original full inventory and remaining CI gates are still open. + + +Company deletion prerequisite is [#17561](https://github.com/paperclipai/paperclip/pull/17561), +head `4d721402d2`, based on #17554. Both new regressions failed first; all six +cleanup-removal tests and server types/build pass after the fix. The chat owner +removes company endpoints before agent purge in the same transaction. Other +companies and global namespace tombstones remain unchanged; a later failure rolls +back the deletion. Existing voice-history restrictions remain in force. Remote +CI/review are required; this is a focused correctness dependency, not a migration +of another inventory duty. + +The prerequisite is merged into the local Discord branch at `2802c361f3`. The +company command signal precedes endpoint deletion. All seven real automatic +registration integration cases now pass, including rotation and deletion, plus +62 combined worker/batching cases and final server types/build. The earlier +missing lifecycle fixture, actual dependency-order failure, and merge-conflict +invocation are recorded in the Discord document. Update #17557's base to #17561 +and publish the review repairs for fresh CI/review. Cumulative selected Discord +coverage is 643 cases. Health #17554 at `f8ad26f0ff` has no failures and one pending +check at the last observation; do not mark it fully accepted yet. + +Next new owner remains chat runtime discovery/ownership, separate from command +registration, voice, and active transport renewals. The full original inventory, +#17490 E2E cancellation failure, final stack/master reconciliation, and all PR +acceptance gates remain required. No stack merge is authorized.