Commit 8756a6b
committed
fix(heartbeat): observe the installed automation prompt binding every turn
Installed automation bodies were reconciled once, at `update --apply` time.
A running App cannot be written through the offline adapter, so the pending
adoption was reported only inside that batch: a lane that was repaired,
resumed, or activated later silently kept applying a frozen body, and nothing
in the recurring contract ever re-observed the installed prompt.
`quota should-run` now observes the caller's own installed automation and
projects it as `scheduler_hint.app_automation.prompt_binding`
(`codex_app_automation_prompt_binding_v0`: current, adoption_required,
blocked, ambiguous, absent, unavailable). A stale entry carries
`host_action=adopt_managed_bootstrap`, its no-spend policy, both prompt
digests, and the same reviewed prompt-only `automation_update` request that
update-time reconciliation returns, so the obligation survives in the live
contract instead of a completed report. Update-time and turn-time requests are
built by one renderer so their shapes cannot drift.
The observation is read-only, bounded, and fail-open: an unreadable store
reports a status instead of failing the turn, and a lane without an installed
automation projects no field. A recognized loader is always compared with its
own binding, because a turn must never retarget another home, registry,
runtime root, or CLI binary; only an unrecognized body is reviewed against the
caller's registry. The thin/compact/full scheduler-hint rules name the new
host action within their existing output budgets.
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>1 parent cd9cfa6 commit 8756a6b
11 files changed
Lines changed: 581 additions & 48 deletions
File tree
- docs
- reference
- examples/control_plane
- loopx/control_plane
- heartbeat
- quota
- scheduler
- skills/loopx-project
- tests/control_plane
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
637 | 637 | | |
638 | 638 | | |
639 | 639 | | |
640 | | - | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
641 | 647 | | |
642 | 648 | | |
643 | 649 | | |
| |||
815 | 821 | | |
816 | 822 | | |
817 | 823 | | |
818 | | - | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
819 | 828 | | |
820 | 829 | | |
821 | 830 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
71 | 93 | | |
72 | 94 | | |
73 | 95 | | |
| |||
202 | 224 | | |
203 | 225 | | |
204 | 226 | | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
594 | 594 | | |
595 | 595 | | |
596 | 596 | | |
| 597 | + | |
597 | 598 | | |
598 | 599 | | |
599 | 600 | | |
| |||
696 | 697 | | |
697 | 698 | | |
698 | 699 | | |
| 700 | + | |
699 | 701 | | |
700 | 702 | | |
701 | 703 | | |
| |||
0 commit comments