This commit is contained in:
parent
2173d211a5
commit
f540584553
1 changed files with 43 additions and 0 deletions
|
|
@ -187,6 +187,49 @@ approval id to retry. Because tags are first-class git objects,
|
||||||
rejected and failed trees stay browsable forever — `git log
|
rejected and failed trees stay browsable forever — `git log
|
||||||
--tags` in the applied repo is the audit trail.
|
--tags` in the applied repo is the audit trail.
|
||||||
|
|
||||||
|
### Dispatch via `rebuild_queue` (#441)
|
||||||
|
|
||||||
|
Long-running approval work — `ApplyCommit`, `UpdateMetaInputs`,
|
||||||
|
`Spawn` — no longer runs inline inside `actions::approve`. Instead
|
||||||
|
the approval handler enqueues a `QueueEntry` into the global
|
||||||
|
`rebuild_queue`:
|
||||||
|
|
||||||
|
| `ApprovalKind` | `QueueKind` queued | `QueueSource` |
|
||||||
|
|---|---|---|
|
||||||
|
| `ApplyCommit` | `Rebuild` | `Approval` |
|
||||||
|
| `UpdateMetaInputs` | `MetaUpdate` | `Approval` |
|
||||||
|
| `Spawn` | `Spawn` | `Approval` |
|
||||||
|
| `InitConfig` | — runs inline (sub-second git seed) | — |
|
||||||
|
| `SchedulePrompt` | — runs inline (single sqlite insert) | — |
|
||||||
|
|
||||||
|
Each queue entry carries the originating `approval_id` so the
|
||||||
|
worker can re-fetch the approval row when it dispatches, run the
|
||||||
|
kind-specific pipeline (`run_approval_apply_commit` /
|
||||||
|
`run_approval_update_meta_inputs` / `run_approval_spawn`), and
|
||||||
|
fire the matching `HelperEvent::*` on completion via
|
||||||
|
`finish_approval`.
|
||||||
|
|
||||||
|
Two visible consequences:
|
||||||
|
|
||||||
|
- **Operator dashboard**: after clicking APPR0VE the work-in-progress
|
||||||
|
shows up on the *rebuild queue* card (`POST /api/state.rebuild_queue`
|
||||||
|
+ live `rebuild_queue_changed` events), not on the approvals panel
|
||||||
|
(which already moved the row to "approved"). A long meta-update
|
||||||
|
cascade renders as a parent entry with one child per per-agent
|
||||||
|
rebuild — see `docs/web-ui.md` for the layout.
|
||||||
|
- **Cancellation**: the dashboard's *× cancel* button on a `Queued`
|
||||||
|
entry calls `POST /api/rebuild-queue/{id}/cancel`, which flips the
|
||||||
|
entry to `Cancelled` before the worker dispatches it. Returns
|
||||||
|
`{"cancelled": true}` on success, `{"cancelled": false}` if the
|
||||||
|
entry already left `Queued` (running / done / failed) — terminal
|
||||||
|
states can't be retroactively rewritten.
|
||||||
|
|
||||||
|
`QueueSource::Approval` carries the `approval_id` so a tail-end
|
||||||
|
build failure surfaces back as a failed approval row, not just a
|
||||||
|
silent queue entry. `QueueSource::Manual` (dashboard ↻ R3BU1LD)
|
||||||
|
and `QueueSource::AutoUpdate` (boot-time sweep) use the same
|
||||||
|
queue but skip the approval row plumbing.
|
||||||
|
|
||||||
### Forge mirror
|
### Forge mirror
|
||||||
|
|
||||||
When the bundled `hive-forge` container is running — on by
|
When the bundled `hive-forge` container is running — on by
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue