Restore loop/cron dispatcher delegation with host-owned occurrence mandates #339

Merged
karsten merged 1 commit from fix/cron-dispatch-mandate into main 2026-11-11 09:14:10 +00:00
Owner

Incident

Peter native Linux .103 hourly /loop overview fired 08:45 UTC but dispatch submit failed because taskId was omitted and recurring turns lacked a host task. No fresh ADO/Notion/GitHub queries occurred.

Fix

Assign fresh durable mandates to non-worker initial loop/cron/heartbeat/goal/API turns before execution. Never inherit previous session task, expiry or held legacy work; scheduled occurrences do not overwrite operator focus. Keep continuation/wait identity and child ownership exact. Dispatcher submitCurrent snapshots active host task so plugin need not rely on model ID copying; explicit wrong IDs still reject. Held legacy tasks cannot provide checkpoints. Pin Plugins #87.

Validation

Full suite 1873 passed / one optional skip. Typecheck/build/diff-check passed. Regressions exercise real Scheduler, loop-like same-session repeated occurrences, bound model tool with omitted taskId, exact assertions, reply routing and historical recovery holds.

Operator requires functional recurring work, not a weakened context fence. Rollout must restore scheduled admission without clearing history or replaying old tasks.

## Incident Peter native Linux .103 hourly /loop overview fired 08:45 UTC but dispatch submit failed because taskId was omitted and recurring turns lacked a host task. No fresh ADO/Notion/GitHub queries occurred. ## Fix Assign fresh durable mandates to non-worker initial loop/cron/heartbeat/goal/API turns before execution. Never inherit previous session task, expiry or held legacy work; scheduled occurrences do not overwrite operator focus. Keep continuation/wait identity and child ownership exact. Dispatcher submitCurrent snapshots active host task so plugin need not rely on model ID copying; explicit wrong IDs still reject. Held legacy tasks cannot provide checkpoints. Pin Plugins #87. ## Validation Full suite 1873 passed / one optional skip. Typecheck/build/diff-check passed. Regressions exercise real Scheduler, loop-like same-session repeated occurrences, bound model tool with omitted taskId, exact assertions, reply routing and historical recovery holds. Operator requires functional recurring work, not a weakened context fence. Rollout must restore scheduled admission without clearing history or replaying old tasks.
fix: give scheduled occurrences fresh mandates and host-bound delegation
All checks were successful
decision-interface-ci / full-validation (pull_request) Successful in 1m53s
18f881cf02
Author
Owner

Final exact head: native Core CI green. Complete local suite rerun: 1873 passed / one optional skip / zero failures. One preceding run hit two unrelated subprocess startup/timing fixtures; both passed isolated and in final complete rerun. Fifteen plugin dispatcher tests passed; native Plugin compatibility CI green; Plugins #87 merged. Real Scheduler plus loop/heartbeat/goal/API occurrence tests prove host current binding with omitted model taskId, wrong-ID rejection, distinct occurrence IDs, preserved operator focus and held legacy fence. Delivery follows published immutable shared release, then owner rollout; no fabricated source query results.

Final exact head: native Core CI green. Complete local suite rerun: 1873 passed / one optional skip / zero failures. One preceding run hit two unrelated subprocess startup/timing fixtures; both passed isolated and in final complete rerun. Fifteen plugin dispatcher tests passed; native Plugin compatibility CI green; Plugins #87 merged. Real Scheduler plus loop/heartbeat/goal/API occurrence tests prove host current binding with omitted model taskId, wrong-ID rejection, distinct occurrence IDs, preserved operator focus and held legacy fence. Delivery follows published immutable shared release, then owner rollout; no fabricated source query results.
Author
Owner

DEPLOYED AND REAL SCHEDULED OCCURRENCE VERIFIED on live Peter Linux .103: published 0.1.235 / 17c28ef, immutable digest sha256:7cd0c1970550f0bf4c7e017ff33f692fb0f45ed69e55cac133407cb2871e756a, PID 1147175 exact executable/API identity checked. Actual enabled hourly /loop fired at 09:45 UTC without schedule edits; fresh task 0bef19bf-2225-467f-8415-1602733277cf; dispatcher accepted overview-1045-1111 as c3f830c8-fe16-46a6-a319-9050d92445b7, running with exact task dependency at 09:46:38 UTC. Original missing-taskId failure did not recur. All 405 held historical task records unchanged. Installed-code synthetic test separately passed TWO loop occurrences plus real Scheduler via plugin without model taskId, distinct host IDs, wrong explicit ID rejection and legacy hold. Full suite 1873 passed / one optional skip. This verifies the real scheduled admission/execution path, NOT completion of all ADO/Notion/GitHub queries; overview worker still running at verification. Core #339, lock #342, Plugins #87, native desired Overlays #348 all merged after green CI. Details: notes/peter-recurring-dispatch-repair-2026-11-11.md; private live-loop receipt ~/.cache/hayate-maintenance/cron-dispatch-repair/live-loop.json.

DEPLOYED AND REAL SCHEDULED OCCURRENCE VERIFIED on live Peter Linux .103: published 0.1.235 / 17c28ef, immutable digest sha256:7cd0c1970550f0bf4c7e017ff33f692fb0f45ed69e55cac133407cb2871e756a, PID 1147175 exact executable/API identity checked. Actual enabled hourly /loop fired at 09:45 UTC without schedule edits; fresh task 0bef19bf-2225-467f-8415-1602733277cf; dispatcher accepted overview-1045-1111 as c3f830c8-fe16-46a6-a319-9050d92445b7, running with exact task dependency at 09:46:38 UTC. Original missing-taskId failure did not recur. All 405 held historical task records unchanged. Installed-code synthetic test separately passed TWO loop occurrences plus real Scheduler via plugin without model taskId, distinct host IDs, wrong explicit ID rejection and legacy hold. Full suite 1873 passed / one optional skip. This verifies the real scheduled admission/execution path, NOT completion of all ADO/Notion/GitHub queries; overview worker still running at verification. Core #339, lock #342, Plugins #87, native desired Overlays #348 all merged after green CI. Details: notes/peter-recurring-dispatch-repair-2026-11-11.md; private live-loop receipt ~/.cache/hayate-maintenance/cron-dispatch-repair/live-loop.json.
Author
Owner

FLEET DELIVERY COMPLETED, live readback 2026-11-11 10:55:34 UTC. All ELEVEN observed active agent installations now actually run 0.1.236 / exact Core 9232c229f2: Che, Randy, Minato, Kakashi, SaaStaq Moist-Hayate, Odo, Shikamaru, Peter Linux .103, Severus Linux .107, Akira and separate native macOS Karsten. All six K8s deployments Ready with exact digest sha256:4a65671a60c7b43e1f8a41c0ee678715c7790264320250bbc0c21a3ffc97d70d. All five native PID/executable/release pointers and authenticated API identities checked. Actual installed-code smoke independently PASSED on every installation: two loop occurrences plus real Scheduler and model plugin without taskId; distinct host mandates; wrong explicit ID denied; legacy hold retained. Production ledgers on all eleven: no held task active, no held worker running, no held generated recurring input executable. No historic task bulk resume/replay, credentials/schedule edits or forced kill. Six remaining 0.1.234 installations were not left to assumed eventual promotion. Owner PRs Racktaq #668, SaaStaq #122, Overlays #354 merged. SaaStaq has no API key configured, so its evidence is Ready/process/build/compiled-code execution, NOT claimed authenticated API readback. Severus used a new root-owned approved payload root (old tree untouched), verified shared OCI extraction transferred because isolated host has no Docker, unprivileged executable probes and existing checkpoint owner; future new-image extraction provider there remains a separately documented pre-existing limitation. Business-source completion of every production cron is NOT inferred from isolated smoke. Details notes/cron-context-fleet-delivery-2026-11-11.md; private complete per-installation evidence ~/.cache/hayate-maintenance/cron-fleet-delivery/verified-fleet.json.

FLEET DELIVERY COMPLETED, live readback 2026-11-11 10:55:34 UTC. All ELEVEN observed active agent installations now actually run 0.1.236 / exact Core 9232c229f216d51ecab899fc430ccacbadf9fa11: Che, Randy, Minato, Kakashi, SaaStaq Moist-Hayate, Odo, Shikamaru, Peter Linux .103, Severus Linux .107, Akira and separate native macOS Karsten. All six K8s deployments Ready with exact digest sha256:4a65671a60c7b43e1f8a41c0ee678715c7790264320250bbc0c21a3ffc97d70d. All five native PID/executable/release pointers and authenticated API identities checked. Actual installed-code smoke independently PASSED on every installation: two loop occurrences plus real Scheduler and model plugin without taskId; distinct host mandates; wrong explicit ID denied; legacy hold retained. Production ledgers on all eleven: no held task active, no held worker running, no held generated recurring input executable. No historic task bulk resume/replay, credentials/schedule edits or forced kill. Six remaining 0.1.234 installations were not left to assumed eventual promotion. Owner PRs Racktaq #668, SaaStaq #122, Overlays #354 merged. SaaStaq has no API key configured, so its evidence is Ready/process/build/compiled-code execution, NOT claimed authenticated API readback. Severus used a new root-owned approved payload root (old tree untouched), verified shared OCI extraction transferred because isolated host has no Docker, unprivileged executable probes and existing checkpoint owner; future new-image extraction provider there remains a separately documented pre-existing limitation. Business-source completion of every production cron is NOT inferred from isolated smoke. Details notes/cron-context-fleet-delivery-2026-11-11.md; private complete per-installation evidence ~/.cache/hayate-maintenance/cron-fleet-delivery/verified-fleet.json.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
harness/core!339
No description provided.