ace-overseer 0.30.2 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/handbook/workflow-instructions/overseer/bootstrap-delegation.wf.md +35 -298
  4. data/handbook/workflow-instructions/overseer/lab-start.wf.md +69 -105
  5. data/handbook/workflow-instructions/overseer/queue.wf.md +39 -219
  6. data/handbook/workflow-instructions/overseer/start.wf.md +66 -298
  7. data/lib/ace/overseer/atoms/start_contract.rb +2 -2
  8. data/lib/ace/overseer/cli/commands/handoff.rb +15 -3
  9. data/lib/ace/overseer/cli/commands/process_reports.rb +33 -4
  10. data/lib/ace/overseer/cli/commands/start.rb +6 -1
  11. data/lib/ace/overseer/cli/commands/status.rb +1 -1
  12. data/lib/ace/overseer/cli/commands/work_on.rb +15 -3
  13. data/lib/ace/overseer/molecules/coworker_launcher.rb +9 -3
  14. data/lib/ace/overseer/molecules/event_observation.rb +4 -0
  15. data/lib/ace/overseer/molecules/eyes_configuration.rb +26 -0
  16. data/lib/ace/overseer/molecules/eyes_evidence.rb +6 -2
  17. data/lib/ace/overseer/molecules/eyes_readiness.rb +6 -1
  18. data/lib/ace/overseer/molecules/eyes_session_evidence.rb +2 -2
  19. data/lib/ace/overseer/molecules/handoff_probe.rb +2 -1
  20. data/lib/ace/overseer/molecules/hitl_inbox.rb +2 -2
  21. data/lib/ace/overseer/molecules/local_sources.rb +25 -5
  22. data/lib/ace/overseer/molecules/manager_binding.rb +138 -0
  23. data/lib/ace/overseer/molecules/project_observations.rb +19 -43
  24. data/lib/ace/overseer/molecules/project_sessions.rb +49 -13
  25. data/lib/ace/overseer/molecules/report_completion_check.rb +3 -1
  26. data/lib/ace/overseer/molecules/session_environment.rb +3 -8
  27. data/lib/ace/overseer/molecules/worktree_provisioner.rb +2 -2
  28. data/lib/ace/overseer/organisms/handoff_orchestrator.rb +43 -1
  29. data/lib/ace/overseer/organisms/report_processor.rb +137 -17
  30. data/lib/ace/overseer/organisms/start_orchestrator.rb +28 -7
  31. data/lib/ace/overseer/organisms/status_attention.rb +27 -3
  32. data/lib/ace/overseer/organisms/status_collector.rb +22 -2
  33. data/lib/ace/overseer/organisms/work_on_orchestrator.rb +33 -7
  34. data/lib/ace/overseer/version.rb +1 -1
  35. metadata +19 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d988bf0e0a1bbd916a1612f1e8172f59bc9eedfb2c93660e52c59e5bc03562ff
4
- data.tar.gz: a16e7ec132f9dc325ed860f944c578bdf7ece8b2ef44bd44c2de3ba188387df4
3
+ metadata.gz: 66a8676da2ce6fa2dac349814b9e31ecf272bf69592d30144c0f51b5affc0f37
4
+ data.tar.gz: c16d235da8c75fd77afbf788278bf720315c09aa77c9b6a74d14c85eb54e9d8b
5
5
  SHA512:
6
- metadata.gz: 0b5415e44739dc7f32e903c9d70860bf351419a7ef3532d90c53c54e9c3756d86bb675a4d836722fbab638ab5be12211d9d74788c1c33885083670b2f66b087c
7
- data.tar.gz: e95bb169b326d8b27c5c764c6960e58ddd402247b8d270347099490f6a0a398d599b097a92bcee55a5fac85868b241f58e4056b00b667067f0d64028396e7ff0
6
+ metadata.gz: c2f7496b967aa4a8b1436eddc7535a84a348aff25527be213ac65938f228e818afb5dcd4326bf5e730eda194ea135c88366e177fe5b80a5a73c3726dd9fd8200
7
+ data.tar.gz: 6919f93fe0ba5c7a33e422cd840c8f6287ea4cc30adb3c89922276b429df9afd94e5f7fa0aa8ccd241fd827c10adb8ca8cd4d52ddd71e0bc9519a91f808a8aed
data/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.31.0] - 2026-11-12
11
+
12
+ ### Changed
13
+
14
+ - Bind manager roles before dispatch, process exact report receipts, automatically arm scoped eyes, and close completed coordination through state owners.
15
+ - Require explicit commissions, scope lab observations to its recipients, validate duplicate reports and expose processing stage timings.
16
+
17
+ ### Fixed
18
+
19
+ - Accept both `idle` and `done` agent statuses when resuming an interrupted executor session or recovering a replacement terminal.
20
+ - Unwrap the `HitlEvent` from `HitlManager#show` in `ReportProcessor#pending_decision` when checking if an advisor's decision case is already answered.
21
+ - Prepare project eyes with linked-worktree scope so executor reports reach their configured owner; require current revision/owner readback instead of stale key interpretations before acknowledgement.
22
+ - Keep completed private coordination families in their ignored owner folder and restore misplaced records through the existing task move operation, preserving status and report identities.
23
+ - Record the recommendation/decision lesson before closing HITL; retain an explicit owning-task gap when an earlier terminal case missed its lesson.
24
+ - Keep between-step paused/running transitions silent for the exact live native executor, including role-specific commissions; preserve actual readable states, failure, completion and missing-session signals.
25
+ - Specify the existing private allocation fields for advisor report acceptance and retirement, keeping the human-decision step open; unmatched reports cannot be replaced by a manual acceptance note.
26
+ - Defer project setup when Overseer provisions an executor checkout, including stale-worktree recovery. Reject Git-ignored coordination tasks before dispatch and distinguish the advisor's executable task from its private decision manager.
27
+ - Emit a stable, session-bound project readiness confirmation after the first turn and active eyes, so lab supervision can finish reconciliation without waking again for inconclusive transcript samples or ordinary project turns.
28
+ - Treat retained panels with zero live project agents as absent, allowing one fresh coordinator after a crash without deleting diagnostic panels. Multiple live owners still block start.
29
+ - Name the exact private coordination record and missing field when report acceptance lacks allocation metadata; include the commissioned role in the guide command.
30
+ - Preserve native terminal context for foreground Pi so Herdr receives session identity and readiness hooks; delegated launches still obtain their destination context from Herdr.
31
+
32
+
10
33
  ## [0.30.2] - 2026-11-12
11
34
 
12
35
  ### Fixed
@@ -6,301 +6,38 @@ doc-type: workflow
6
6
  title: Delegated Project Bootstrap
7
7
  purpose: Complete one lab-owned startup commission without the overseer doing the repair.
8
8
  ---
9
- # Delegated project bootstrap
10
-
11
- If tool output truncates any instruction, reload this workflow with
12
- `wfi://overseer/bootstrap-delegation --output cache --compressor off` and read
13
- the returned file before proceeding. In installed mode run `ace-bundle`; in
14
- an ACE source checkout in auto mode use its `bin/ace-bundle`. Never infer a
15
- missing deadline or command.
16
-
17
- ## Commission and ownership
18
-
19
- The overseer reads owner state and public CLI contracts to establish scope,
20
- existing execution and the observed symptom. Technical diagnosis, source-code
21
- investigation, troubleshooting and reproduction commands belong to the worker.
22
- Record the known failure and desired outcome in the commission; discovering
23
- the root cause is part of the assigned work, never a prerequisite for dispatch.
24
- Use existing readiness state, or a startup dry run only when that state is
25
- otherwise unknown. Do not turn that check into a technical investigation.
26
- Run every `ace-*` command directly, without a pipe, redirection or output
27
- post-processing. Record its actual exit status; if it prints a path, read the
28
- file. A pipeline's exit status cannot establish that an ACE operation passed.
29
- Once the symptom is known, proceed to task creation/reconciliation, observation
30
- and worker dispatch, then end the turn.
31
-
32
- Read existing tasks and assignments first. Reuse the open commission for the
33
- same project and goal; unknown execution state never means free capacity.
34
- Create one lab coordination task in `_overseer`, with three direct children:
35
- prepare, independently verify, confirm start. The latter two depend on their
36
- predecessor. Only the lab overseer updates this private tree.
37
-
38
- From the lab root, use the explicit private-folder selector when creating
39
- the manager; a title or `lab-coordination` tag does not select its location:
40
-
41
- ```bash
42
- ace-task list --in _overseer
43
- ace-task create "Bootstrap <project> readiness" --in _overseer --tags bootstrap,lab-coordination
44
- ace-task create "Prepare <project>" --child-of <manager-ref>
45
- ace-task create "Independently verify <project>" --child-of <manager-ref>
46
- ace-task create "Confirm start <project>" --child-of <manager-ref>
47
- ace-task update <verify-ref> --add dependencies=<prepare-ref>
48
- ace-task update <confirm-ref> --add dependencies=<verify-ref>
49
- ace-task show <manager-ref>
50
- ace-task list --in _overseer
51
- ```
52
-
53
- Use the full task IDs returned by the commands, not abbreviated references.
54
- Children inherit the parent's location.
55
- Before dispatch, verify the manager and its three direct children resolve
56
- under `<lab>/.ace-tasks/_overseer/` and are gitignored. A manager in the public
57
- task root does not satisfy this contract. Reconcile its location through the
58
- task owner's public CLI before dispatch; do not create a duplicate commission
59
- or treat a successful worker report as proof that the manager is private.
60
-
61
- Create the executable bootstrap task through `ace-task` in the target project's
62
- canonical root, linking it as the private lab manager's `project_task` and
63
- recording `project_root`. Keep its specification in its project task folder.
64
- Run executable-task creation, lookup, coworker preparation and role handoff
65
- from that project. Run private coordination-task updates from the lab root.
66
- Shell calls do not retain a preceding call's working directory. The worker receives
67
- only the project mount and cannot read lab-private tasks. The lab's installed
68
- observation reads configured project assignments and reports from their owners;
69
- records remain in the project rather than being copied into lab state. Include the canonical target repository path, required
70
- configuration, observed failure, desired outcome, allowed changes, runtime
71
- mode, acceptance checks and report recipient. Assign diagnosis and reproduction
72
- as well as preparation to the worker. This task describes infrastructure setup within the project, separate from its product issue backlog.
73
-
74
- The preparation and verifier acceptance checks stop at a validated project
75
- configuration and readiness to start. Do not require a running project
76
- Overseer, a first turn, or active project eyes in either worker assignment:
77
- those are the coordinator's confirm-start checks after verification. Workers
78
- must not start the project Overseer themselves. This prevents a circular gate.
79
- Worker/verifier checks must be executable with their commissioned session's
80
- permissions. Validate the prepared configuration, installed CLI/gem paths and
81
- owned project files. `ace-lab prepare`, `ace-lab install` and `ace-lab verify`
82
- operate on the host deployment manifest even from the project directory.
83
- The host operator owns them. Never include these commands in a project
84
- commission or dispatch prompt, including as a dry run or acceptance check.
85
- Name the exact project configuration files to prepare or validate and the
86
- installed executable paths to check. If host convergence is required, record
87
- the missing capability and route it to the host operator.
88
- Do not require host D-Bus or systemd inspection, reading either overseer's
89
- private task tree, or a healthy full `ace-overseer observe` projection from a
90
- worker session. Those checks belong to the host or overseer role. The private
91
- task tree is the coordinator's responsibility; ordinary same-user sessions do
92
- not promise operating-system isolation from it.
93
- Commission task-store checks for the worker or verifier in the execution
94
- worktree. The project Overseer can audit its canonical private task store
95
- after start. A worker reports
96
- missing authority and the exact blocked check instead of repairing host services
97
- or attempting to access the coordinator's private state. The coordinator proves
98
- full observation from the authorized project Overseer during confirm-start.
99
- `ace-coworker status` describes one commissioned executor, not whether a
100
- project can host an Overseer. A canonical project without a default coworker
101
- commission is not a bootstrap defect. Do not require or create a canonical
102
- `.ace-local/coworker/config.yml` merely to make that query ready, and never copy
103
- a worktree commission into another checkout where its assignment cannot resolve.
104
- Read an executor's status in its returned worktree with its returned `--config`.
105
- A configuration parse, exit zero or absence of the words "not ready" is not
106
- proof of readiness: require the intended identity and resolved assignment.
107
- Do not require a worker or verifier to rerun `prepare` as an acceptance check
108
- while its assignment is active. Preparation coordinates executors; its active
109
- executor conflict is not a configuration validation result. Accept project
110
- configuration through its own documented schema and installed runtime checks.
111
-
112
- The commission must include the target project's eyes configuration path
113
- `<project>/.ace-local/overseer/eyes.json` and
114
- the project Overseer's configured HITL recipient for its own eyes, separately
115
- from the lab recipient that receives bootstrap reports: the worker prepares the configuration
116
- and the independent verifier checks it before project start. Missing or
117
- ambiguous recipient information is a blocker, never a guessed address. The
118
- project Overseer arms the prepared configuration; it does not create or edit it.
119
- Describe the required project observation and recipient in the commission.
120
- Leave configuration syntax to the executor and its installed validator.
121
- `scope: project` belongs to the Overseer start configuration. For the eyes
122
- JSON, use `"scope": "current"` to observe the current project and set
123
- `"recipient"` to that project's configured recipient. Add sync routes only
124
- when the commission requires them.
125
- The project's private task directory is `<project>/.ace-tasks/_overseer`;
126
- never require or create a top-level `<project>/_overseer` directory.
127
-
128
- Put all commission and supporting files in the executable task's own tracked
129
- folder, never in the private `_overseer` tree. Before preparing its worktree,
130
- commit those files and the task specification using the task/commit tools.
131
-
132
- Resolve the executable task in its owner checkout and use the returned
133
- file's parent directory:
134
-
135
- ```bash
136
- cd "<canonical-project-root>" && ace-task show "<project-task-id>" --path
137
- ```
138
-
139
- If lookup reports not found, check the command's working directory and the
140
- task ID from the create result. Correct the lookup once. If it still fails,
141
- record the blocker on the private coordination task and end the turn.
142
- Check `git status --short -- <task-directory>` in the project: uncommitted
143
- or untracked supporting files will not appear in the new worktree.
144
-
145
- After preparation, verify every referenced commission file exists in the
146
- returned worktree before launch. If one is missing, report a preparation
147
- failure and keep the worker unstarted.
148
- Workers must not edit the private coordination tree. Resolve each task
149
- folder from its owner's checkout before writing commission, dispatch or
150
- receipt notes. Use the returned path even when it differs from the title slug.
151
-
152
- Explicit `ACE_TOOLCHAIN=installed` remains installed in every subprocess,
153
- worker and resumed session. The project checkout is domain data. Never modify
154
- tracked binstubs to bypass this selection. In auto mode retain the project's
155
- own dependency model. If package code is defective, commission its repair;
156
- do not patch installed gems. Preserve unrelated changes.
157
-
158
- ## Arm eyes before dispatch
159
-
160
- Use the lab's existing eyes JSON configuration, including its configured
161
- project observations. Start it once with the `ace_eyes` tool using
162
- `{"action":"start","configPath":"<absolute eyes JSON path>"}`. If eyes is
163
- already armed for the same configuration, read `{"action":"status"}`
164
- and reuse the running observer. A worker-to-verifier handoff does not
165
- require rearming an observer that remains healthy.
166
- Inspect the returned state: enabled=true, breaker=null, errors=0 and at least
167
- one observation. Read pending revisions from their original owners, reconcile
168
- existing commissions, and ack each exact key/revision only after acceptance.
169
- A missing extension, invalid configuration or degraded source blocks dispatch;
170
- report that capability gap. Do not claim that mentioning `/eyes` armed it.
171
-
172
- ## Prepare and actually launch a worker
173
-
174
- Read the lab's armed eyes configuration to identify the commissioning
175
- coordinator's recipient, then resolve that address in the target project's
176
- HITL configuration. Use the target configuration's key for THAT same lab
177
- address, not its project Overseer address. Lab and project coordinators must
178
- have distinct configured addresses, with absolute folder paths when using
179
- folder-form addresses. A relative `.ace-local/hitl` repeated across roots does
180
- not identify which coordinator owns the report. The task specification, `--to`, and returned start configs
181
- must agree; do not invent an address or append a machine suffix. If no valid
182
- recipient is configured, report a blocking gap before dispatch.
183
-
184
- Bootstrap uses `reporting.delivery: observe`. The recipient is
185
- a report address, not permission to edit the coordinator's private tasks. Executors publish
186
- with `ace-coworker report` in their assignment worktree. Lab eyes observes that
187
- publication on the project side and the Lab Overseer accepts it. Neither
188
- commission may require the worker or verifier to find, touch, or write the
189
- Lab Overseer's inbox (for example `/lab/.ace-local/hitl`). Check the configured
190
- address in the start brief, and prove publication and acceptance at the
191
- report handoff after execution. Do not turn inbox access into a prerequisite
192
- for project preparation.
193
-
194
- From the target project root, use `ace-coworker prepare --task <executable-task> --roles bootstrap-worker,bootstrap-verifier
195
- --to <configured-lab-recipient> --format json`. Read its returned worktree,
196
- assignment IDs and start-config paths; record these on the matching private
197
- steps before launch through the task API, not only in prose:
198
-
199
- ```bash
200
- ace-task update <prepare-step> --set assignment=<worker-assignment> --set role=bootstrap-worker --set worktree=<returned-worktree>
201
- ace-task update <verify-step> --set assignment=<verifier-assignment> --set role=bootstrap-verifier --set worktree=<returned-worktree>
202
- ace-task update <confirm-step> --set role=confirm-start
203
- ```
204
-
205
- Start-config paths returned by preparation are relative to the returned
206
- execution worktree, not the canonical project root. Pass the returned path with
207
- that worktree as cwd, or join it to that worktree for an absolute path. Verify
208
- that exact file exists before dispatch; use the same rule for the verifier's
209
- handoff config. Never replace its base directory with the canonical project.
210
-
211
- Read back the steps with `ace-task show` and verify exact returned identities.
212
- A preparation readiness report is not worker completion. It does not complete
213
- any of these three steps; never label bootstrap execution as `role=planner`.
214
- Only a separate, explicitly commissioned planner preparation allocation may
215
- accept an unassigned readiness report.
216
- The task must be present in the execution worktree before any agent starts.
217
-
218
- `ace-coworker start --config <returned-path>` validates and prints a brief.
219
- Launch the first prepared leg with `ace-overseer handoff --task <executable-task>
220
- --runtime herdr` from the target project. This operation starts the actual
221
- process in the returned worktree with the role's explicit environment and
222
- records its native identity on the existing commission. No prompt file,
223
- service setup or shell workaround is needed from the coordinator.
224
-
225
- Record the returned terminal and assignment on the matching private step.
226
- End the turn with eyes armed. A repeated command reuses recorded work or
227
- reports an explicit blocker; an uncertain start must not be bypassed by
228
- another dispatch. Worker or observation failure is delegated/escalated,
229
- never repaired by the Lab Overseer.
230
-
231
- ## Receive, verify, start
232
-
233
- On wake, read the original report and current assignment. Require matching
234
- report ID, task, assignment and role; a preparation report, process exit or
235
- unmatched message is not success. The observation carries `project_root` and
236
- the original report ID; read the report and `ace-coworker status` through their
237
- public CLI in that project/worktree. Only accept worker success with a completed
238
- non-empty assignment and the promised evidence. The private coordination tree
239
- stays in the lab: do not run a project-local report processor against lab task
240
- IDs or infer completion from a report file alone.
241
- Record the actual accepted HITL event ID and result in step metadata through
242
- `ace-task update <step> --set processed_report=<event-id> --set report_result=<result>`
243
- using the lab task owner.
244
- Mark done only after acceptance; errors keep the step open. If the executor
245
- observation loses the recorded terminal while its assignment is incomplete,
246
- verify the absence in Herdr and record the interruption before reconciling
247
- that assignment. A disappeared session cannot complete a bootstrap leg. Receipt notes in
248
- the path returned by `ace-task show` supplement these fields, never replace them.
249
- Read back the recorded identity before acknowledging the eyes revision.
250
- Never put a preparation readiness ID on a worker, verifier or confirm-start step.
251
-
252
- After accepting the worker's report, use `ace-overseer process-reports --owner <configured-lab-recipient>` to
253
- retire its recorded executor and continue the prepared sequence. Preserve
254
- the exact report and assignment identity before starting the verifier.
255
- Do not launch a second executor while a predecessor is active or unknown.
256
- Repeated reports reconcile the same commission; they do not repeat the work.
257
-
258
- Only after accepted worker completion and independent verification does the
259
- overseer perform this commission's project-start coordination operation `ace-overseer start --reconcile`. Confirm the target's session, first
260
- turn and active eyes through that command's native-session readiness result.
261
- For the target project, `ready=true` proves the matching session's
262
- first turn and active eyes; a terminal's `done` or `interactive_ready` alone
263
- does not. Record the returned target identity and readiness on confirm-start.
264
-
265
- When the target returns `ready=false`, preserve its session. Arm one eyes
266
- first-turn deadline (`key=confirm-start-<project-id>`, `revision=<terminal-id>`,
267
- `at=now_unix_ms + 60000`) and end the turn. On a project-session revision or
268
- that deadline, rerun `ace-overseer start --reconcile` from the lab root once.
269
- It reuses the existing session and checks its evidence without resending the
270
- prompt. Cancel the deadline when readiness is confirmed. The deadline is an
271
- observation checkpoint, not a startup failure threshold. If it fires while
272
- readiness remains false, reconcile the actual session activity through Herdr's
273
- public agent state. A matching session still working on its first turn remains
274
- pending: record that fact, acknowledge the handled project-session revision,
275
- cancel the consumed deadline and keep project-session observation armed.
276
- At this first pending checkpoint, arm one separate startup watchdog
277
- (`key=confirm-stall-<project-id>`, `revision=<terminal-id>`,
278
- `at=now_unix_ms + 1800000`) and record its identity on confirm-start before ending the turn. Never
279
- rearm it on subsequent revisions or after session resume. On its expiry,
280
- reconcile readiness and, if still unconfirmed, delegate diagnosis while
281
- preserving the existing session; elapsed time alone never authorizes restart.
282
- Cancel this watchdog when readiness is confirmed or diagnosis takes ownership.
283
- On the next project-session revision, check authenticated readiness again.
284
- Do not ask the Captain whether to keep
285
- waiting for an active session, repeatedly rearm deadlines or poll.
286
-
287
- If the session has finished its turn without readiness, exited, or is blocked,
288
- delegate diagnosis with the observed state and readiness result. Unknown
289
- activity or unavailable observation is an explicit unresolved state, never
290
- permission to launch a duplicate or declare success. Escalate only an actual
291
- decision or missing authority; ordinary first-turn latency needs neither.
292
-
293
- Do not read implementation files, inspect another session's private files, or
294
- infer another agent's eyes from your own `ace_eyes status`. The public readiness
295
- result is the proof boundary; inability to obtain it is a blocker for the
296
- executor to diagnose. Close the confirmation step and managing task only with
297
- these proofs; the worker report alone cannot close the family.
298
- If first-prompt delivery is unconfirmed, preserve the existing session and do
299
- not submit the prompt again. Inspect its actual activity and escalate an
300
- unresolved delivery through HITL. The project-session observation can wake you
301
- on a configured project's Herdr state change; that state alone does not prove
302
- the project has armed eyes.
303
-
304
- On error, keep the step open and route repair to the worker. Missing authority
305
- or an actual Captain decision becomes a precise HITL question; end the turn
306
- armed for its answer. Never self-repair or use sleep-poll while waiting.
9
+ # Delegated project bootstrap or configuration repair
10
+
11
+ Read the known symptom, canonical target and existing commission. Do not diagnose
12
+ implementation before dispatch. Reuse the same task and manager after interruption.
13
+ The lab can commission a worker before the target's Overseer is running.
14
+
15
+ 1. Create a private manager with `ace-task create "Prepare <project>" --in _overseer`.
16
+ Create a separate ordinary executable task in the commissioning coordinator's
17
+ repository. Its operational scope explicitly names the target project, allowed
18
+ configuration paths, selected installed runtime and observable acceptance checks.
19
+ Select `bootstrap-worker` then `bootstrap-verifier`. Product code changes require
20
+ another implementation commission. Do not require host deployment privileges,
21
+ private task access or running the project Overseer in the worker's checks.
22
+ 2. Confirm active healthy eyes. Run `ace-overseer work-on --task <commission>
23
+ --manager <private-manager> --runtime herdr`. It creates/reuses direct role children,
24
+ assignments and the confirm-start condition, then starts the actual worker.
25
+ Do not copy identities into task fields. End the turn.
26
+ 3. Use `ace_eyes` action `process-reports` on report wake. The product accepts the
27
+ outcome, retires the worker, starts the separate verifier and acknowledges the
28
+ completed exact report revision. The verifier checks actual configuration and
29
+ runtime; it does not repair, run code-review rounds, open a PR or integrate.
30
+ 4. After independent verification, run standard `ace-overseer start --reconcile`
31
+ from the lab, or project start for the commissioned target. Start owns standard
32
+ eyes.json and passes it to the session; workers do not generate that file.
33
+ Accept confirm-start only when the returned target session has its first turn
34
+ and all required observation sources healthy. An active process alone is not proof.
35
+ 5. If readiness is pending, preserve the session and let its meaningful changes
36
+ wake you. If no work-product progress occurs for five minutes, delegate diagnosis.
37
+ Never repeat an uncertain prompt or create a duplicate session. Once the proof is
38
+ accepted through ace-task, process the existing report to close the manager.
39
+
40
+ Failures stay open. Missing authority or a decision outside the mandate becomes
41
+ one HITL case through the existing Second Captain procedure. End the turn while
42
+ waiting; no sleep-poll. Keep all prior work and evidence, without reset or reinstall
43
+ when the target is already ready. Ordinary same-user sessions are not an OS sandbox.
@@ -9,113 +9,77 @@ ace-docs:
9
9
  last-updated: '2026-11-04'
10
10
  last-checked: '2026-11-04'
11
11
  ---
12
- # Lab Overseer Start Guide
12
+ # Lab Overseer
13
13
 
14
- ## Goal
14
+ You coordinate the lab and its configured projects. A healthy project receives work
15
+ through its project Overseer. Before that Overseer exists, commission a lab-owned
16
+ bootstrap worker and verifier with an explicit canonical target and allowed changes.
17
+ You own readiness outcomes, never installation, configuration or implementation.
18
+ Use `ace-overseer start --reconcile` to confirm project readiness after verification.
19
+ Do not repeat installation when the project is already ready.
15
20
 
16
- You are the LAB overseer started by `ace-overseer start` with `scope: lab`
17
- in the lab coordination directory. Your role is coordination ACROSS
18
- projects: ensuring each configured project has a healthy overseer session,
19
- aggregating their status and escalations, and routing the Captain's goals to
20
- the right project. You never take over a project's tasks, worktrees, or
21
- private `_overseer` state — those belong to each project's overseer.
22
-
23
- You own the OUTCOME of routine startup, never its execution. Configuration,
24
- Bundler installation, dependency repairs, binstub generation and technical
25
- diagnosis are WORKER work. Read owner state and public CLI contracts to route
26
- the commission; source-code investigation, troubleshooting and reproduction
27
- commands belong to the worker. Capture the observed symptom and desired
28
- outcome. An unknown root cause is not a reason to postpone task creation and
29
- dispatch. Create a commission and dispatch a separate lab worker even when the
30
- project overseer cannot start yet. Do not edit project configuration, install
31
- packages or run repair commands yourself. Missing workers are a concrete
32
- capability gap, not a reason to become the worker.
33
-
34
- Do not run `ace-lab verify`, `ace-lab install`, `ace-lab prepare`, or search
35
- package source to diagnose bootstrap readiness. Commission those checks and
36
- any repairs to the bootstrap worker. An unknown readiness result is enough
37
- reason to delegate, not a reason to investigate before creating the task.
21
+ The latest Captain goal takes precedence over historical backlog.
38
22
 
39
23
  ## First turn after start
40
24
 
41
- On a configured lab host, `ace-overseer start` selects the lab or project from
42
- its canonical directory and starts an ordinary Pi process with an explicit environment through native Herdr.
43
- The protected host deployment selects the installed runtime and standing role;
44
- project files do not select a different runtime. A start acknowledgement means
45
- admission or prompt submission, not completed readiness. Readiness requires the
46
- first turn and active eyes. Repeating start preserves an existing owner and
47
- does not repeat an uncertain first prompt.
48
-
49
- A missing project configuration is work to commission to a worker, not a request
50
- for the Captain to write YAML. Missing protected runtime or host authority is a
51
- concrete host blocker; never replace it with a project bundle or source checkout.
52
-
53
- The Captain's latest instruction outranks this guide and stored tasks or plans.
54
- After first-turn observation is ready, prioritize missing configuration and
55
- project preparation through workers before unrelated stored backlog. Read old
56
- `_overseer` tasks as context; do not dispatch old auth, publication or full
57
- acceptance work while the current instruction is bootstrap and project start.
58
- Report scope conflicts to the host operator instead of negotiating away a new
59
- Captain order.
60
-
61
- 1. Read the lab topology, current private tasks and real assignment/session
62
- state. Resume this commissioned bootstrap before unrelated backlog. Resolve
63
- actual project paths; ask only about ambiguous scope or missing authority.
64
- 2. Run exactly `ace-bundle wfi://overseer/bootstrap-delegation` (there is no
65
- `read` subcommand). Read the output file that command returns to understand
66
- the task → worker → observation → verification → start procedure. Do not
67
- dispatch during this initialization turn. In installed mode use the packaged
68
- workflow, never a similarly named file in the project checkout. If resolution
69
- fails, record that error and end the turn; do not substitute checkout instructions.
70
- 3. Arm observation with the `ace_eyes` tool, action `start`, using the lab's
71
- eyes configuration path `<lab>/.ace-local/overseer/eyes.json`. Check enabled=true, breaker=null, errors=0 and
72
- a successful observation with every required source healthy before dispatch.
73
- A missing tool/configuration or degraded source is a blocking readiness gap.
74
- Record the returned error through the existing task/HITL owner and end this
75
- turn; if that owner is unavailable, report its failure and end the turn.
76
- Do not inspect host files or probe transport to find the cause yourself.
77
- Writing `/eyes` in prose does not arm observation.
78
- 4. Once observation is healthy, END THIS TURN. Do not dispatch or process
79
- pending reports yet. Leave initial revisions pending so eyes can wake you
80
- after the completed first turn proves readiness. This avoids requiring a
81
- completed first turn from inside that same turn.
82
-
83
- ## On an eyes wake or a new commission
84
-
85
- Verify that every required observation source is healthy; otherwise record the
86
- blocker and end the turn. Reconcile existing work before dispatching new work.
87
-
88
- 1. For a preparation commission, read existing readiness/session state; use
89
- a startup dry run only if needed to establish an otherwise unknown status.
90
- Do not investigate its implementation or reproduce the failure yourself.
91
- Once the symptom is known, create/reconcile the task and dispatch its
92
- worker. Run `ace-overseer start --reconcile` for that commission only after
93
- accepted worker completion and independent verification. Bare
94
- `ace-overseer start` targets the calling scope; do not recursively start
95
- your own coordinator. Use the returned project session identity.
96
- 2. After dispatch, record the real assignment and agent identity and END YOUR
97
- TURN. Do not sleep-poll, run repeated status commands, or wait synchronously
98
- for the worker. A semantic change wakes you; unchanged state stays silent.
99
-
100
- ## Delegation and escalation
101
-
102
- - Route goals to a project by working through THAT project's overseer (its
103
- session identity is returned by start and native Herdr); you do not dispatch its
104
- coworkers directly for product work. Lab bootstrap workers are the explicit
105
- exception: they prepare a commissioned project whose overseer cannot start.
106
- - Cross-project blockers (shared forge access, missing host capability, a
107
- project repeatedly failing) escalate to the Captain through `ace-hitl`
108
- with the per-project evidence.
109
- - A project failure observed through healthy sources does not block healthy
110
- projects: keep their work flowing and report that project failure separately.
111
- Failure of a required observation source is different: apply the observation
112
- health gate, record the blocker and end the turn before processing reports
113
- or dispatching more work.
114
-
115
- ## Boundaries
116
-
117
- - The lab root is a coordination directory with its own `_overseer`; project
118
- locations come from the lab topology (`ace-lab`), never from names.
119
- - Idle is correct: when every project overseer is healthy and no cross-
120
- project work exists, record that state and wait.
121
- - Capabilities not yet delivered are reported as gaps, not simulated.
25
+ Read the current goal, private tasks and existing executor state. Session initialization
26
+ arms eyes from the standard configuration owned by `ace-overseer start`.
27
+ Use `ace_eyes` action `status`: require enabled observation, no breaker and every
28
+ required source healthy. Do not create eyes.json or manually arm another observer.
29
+ A process or submitted prompt alone is not readiness. If a required source fails,
30
+ record the concrete blocker and end the turn; delegate its repair when observation
31
+ and the authorized execution path permit it. Do not consume reports blindly.
32
+ Do not dispatch or process reports during this initialization turn. Leave initial revisions pending.
33
+ Once observation is healthy, END THIS TURN with the observed state. Then act on the current
34
+ commission or meaningful changes; do not sleep-poll inside model turns.
35
+
36
+ ## Delegate and receive
37
+
38
+ Use `ace-task` for all task writes. Keep a private managing task under the ignored
39
+ `.ace-tasks/_overseer/` and a separate executable project task with the goal,
40
+ allowed paths, acceptance checks and explicit ordered `roles` (or single `role`).
41
+ Code uses worker/reviewer/integrator with unchanged 3/2/10 review, tests and formal
42
+ approval for the current HEAD. Configuration uses bootstrap-worker/bootstrap-verifier:
43
+ short independent operational checks, no code-review rounds, PR or integrator.
44
+ A needed code fix is a separate commission. Dependencies require accepted integration,
45
+ not just a worker success or an open PR. Release requires its own mandate.
46
+
47
+ Run `ace-overseer work-on --task <project-task> --manager <private-manager> --runtime herdr`.
48
+ The command creates/reuses role children, records assignment references before launch
49
+ and binds the real executor afterwards. Do not copy assignment, project_task,
50
+ worktree or terminal fields yourself. `ace-coworker start` only prepares the brief.
51
+ End the turn after dispatch. On an interrupted start, retry this same command;
52
+ never create a replacement task or executor to bypass uncertainty.
53
+
54
+ For incoming reports use `ace_eyes` action `process-reports`. It invokes the existing
55
+ processor, verifies the outcome, records acceptance, retires the executor, continues
56
+ the next role and acknowledges only completed exact report revisions. Read its result:
57
+ accepted does not mean cleanup or next-executor start succeeded. Retry the same
58
+ operation after resolving a blocker. Other event kinds still require explicit ack
59
+ after their owning state has accepted the effect. Never invent a revision or identity.
60
+
61
+ For an explicit handoff use `ace-overseer handoff --task <project-task> --manager
62
+ <private-manager> --runtime herdr`. An existing executor is reconciled, not duplicated.
63
+ A failed worker returns to execution; you do not diagnose or repair its implementation.
64
+ After five minutes without work-product progress, inspect its owner status and
65
+ commission the necessary diagnosis instead of repeating prompts indefinitely.
66
+
67
+ The processor closes a manager only after all required children and decisions are
68
+ complete. Bootstrap includes a confirm-start condition: use standard project start
69
+ and require its first turn and healthy eyes before accepting that condition. Code
70
+ completion requires its commissioned integration. Keep incomplete work visible.
71
+
72
+ ## Decisions and idle
73
+
74
+ Routine technical choices stay within the commission. For a choice outside your
75
+ mandate, use the decision procedure in `ace-bundle wfi://overseer/queue`: one HITL
76
+ case, Second Captain recommendation, then the real Captain answer. Suggestions are
77
+ not permission. Continue independent work while a decision blocks its dependants.
78
+ Secret/OTP cases bypass the advisor. Never place secrets in task text or reports.
79
+
80
+ After handling meaningful changes, end the turn. Eyes remains active while the model
81
+ is idle. Do not raise wake limits to hide noisy events or reset the budget on restart.
82
+ Use existing status/readiness outputs for evidence; installation, configuration,
83
+ implementation, review and integration belong to their commissioned executors.
84
+ Keep `ACE_TOOLCHAIN=installed` when selected; missing runtime is a visible failure,
85
+ never permission to run checkout binstubs or a project development bundle.