ace-overseer 0.28.1 → 0.30.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +2 -2
- data/docs/getting-started.md +1 -1
- data/docs/usage.md +47 -25
- data/handbook/workflow-instructions/overseer/bootstrap-delegation.wf.md +224 -37
- data/handbook/workflow-instructions/overseer/lab-start.wf.md +49 -21
- data/handbook/workflow-instructions/overseer/queue.wf.md +13 -8
- data/handbook/workflow-instructions/overseer/start.wf.md +198 -21
- data/lib/ace/overseer/atoms/observation_sources.rb +17 -0
- data/lib/ace/overseer/atoms/start_contract.rb +20 -0
- data/lib/ace/overseer/cli/commands/handoff.rb +4 -0
- data/lib/ace/overseer/cli/commands/process_reports.rb +4 -2
- data/lib/ace/overseer/cli/commands/start.rb +45 -5
- data/lib/ace/overseer/cli/commands/work_on.rb +6 -2
- data/lib/ace/overseer/cli.rb +2 -0
- data/lib/ace/overseer/molecules/coworker_launcher.rb +189 -0
- data/lib/ace/overseer/molecules/event_observation.rb +54 -19
- data/lib/ace/overseer/molecules/eyes_evidence.rb +103 -0
- data/lib/ace/overseer/molecules/eyes_readiness.rb +21 -0
- data/lib/ace/overseer/molecules/eyes_session_evidence.rb +132 -0
- data/lib/ace/overseer/molecules/hitl_inbox.rb +13 -5
- data/lib/ace/overseer/molecules/local_sources.rb +83 -19
- data/lib/ace/overseer/molecules/project_bundle.rb +1 -1
- data/lib/ace/overseer/molecules/project_observations.rb +82 -0
- data/lib/ace/overseer/molecules/project_sessions.rb +99 -0
- data/lib/ace/overseer/molecules/remote_sources.rb +46 -16
- data/lib/ace/overseer/molecules/session_environment.rb +127 -0
- data/lib/ace/overseer/organisms/handoff_orchestrator.rb +26 -15
- data/lib/ace/overseer/organisms/report_processor.rb +42 -10
- data/lib/ace/overseer/organisms/start_orchestrator.rb +105 -55
- data/lib/ace/overseer/organisms/work_on_orchestrator.rb +43 -1
- data/lib/ace/overseer/version.rb +1 -1
- data/lib/ace/overseer.rb +2 -1
- metadata +64 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92f8ba410b2086914103a468bc9592cb2f1638f228e8f04bbc9050c1acb72eaf
|
|
4
|
+
data.tar.gz: acd533702789417b67b6f3c318f20256c5e0c0f62851f7f447b07fb9bf1368c1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4c6f234b40b3953e1106919d62a89ece41fb3acbae42d09476a1d6685eeb029ed691bb4d9007300aca87fc1eeb91e620fb5a50b45bde4b6f2c773863cd12a7e8
|
|
7
|
+
data.tar.gz: 8094e9edbd30cceca456ae18b8f768a956e60006188e617c9aa359efabd7a454b4e6fd2842d34fee39b12ccdc68bc844cf02156e408a2f5437e091791aa965b5
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.30.0] - 2026-11-11
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Select installed toolchain from overseer configuration without shell setup; derive child Herdr socket from the configured session runtime.
|
|
15
|
+
|
|
16
|
+
## [0.29.0] - 2026-11-10
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Start real workers from work-on/handoff, persist native executor identities on existing commissions, and require active observation before delegation. Accept reports before retirement and continuation through worker, reviewer and integrator roles; refuse duplicate or uncertain starts. Build explicit installed environments, select per-project observation credentials, and observe issue bodies/labels plus project sessions. Verify first-turn/eyes evidence on Linux and macOS; delegate configuration and diagnosis in packaged instructions.
|
|
21
|
+
|
|
10
22
|
## [0.28.1] - 2026-10-31
|
|
11
23
|
|
|
12
24
|
### Fixed
|
data/README.md
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
> **State owner:** the private, gitignored overseer task list in
|
|
18
18
|
> `.ace-tasks/_overseer/`, a normal task folder reached through
|
|
19
|
-
> `ace-task --in _overseer
|
|
19
|
+
> `ace-task list --in _overseer` (see [docs/lab-flow.md](../docs/lab-flow.md)).
|
|
20
20
|
> Task worktrees live in `.ace-wt/`; assignment plans and steps stay in
|
|
21
21
|
> `.ace-local/assign/` (ace-assign) and are never copied into the overseer
|
|
22
22
|
> list.
|
|
@@ -80,7 +80,7 @@ or create your own.
|
|
|
80
80
|
> assignment sequence -- not available yet.
|
|
81
81
|
>
|
|
82
82
|
> **L6 (partial):** the private overseer queue is coordinated through the
|
|
83
|
-
> gitignored `.ace-tasks/_overseer/` list (`ace-task --in _overseer`):
|
|
83
|
+
> gitignored `.ace-tasks/_overseer/` list (`ace-task list --in _overseer`):
|
|
84
84
|
> managing tasks with lifecycle subtasks (prepare, implement, review,
|
|
85
85
|
> integrate), integration-gated dependencies, and one active executor per
|
|
86
86
|
> worktree. See the
|
data/docs/getting-started.md
CHANGED
|
@@ -10,7 +10,7 @@ ace-docs:
|
|
|
10
10
|
# Getting Started with ace-overseer
|
|
11
11
|
|
|
12
12
|
> **State owner:** `.ace-tasks/_overseer/` (private, gitignored task folder
|
|
13
|
-
> reached via `ace-task --in _overseer`) and `.ace-wt/` (one worktree per
|
|
13
|
+
> reached via `ace-task list --in _overseer`) and `.ace-wt/` (one worktree per
|
|
14
14
|
> project task). Assignment plans stay in `.ace-local/assign/`. See
|
|
15
15
|
> [docs/lab-flow.md](../../docs/lab-flow.md).
|
|
16
16
|
|
data/docs/usage.md
CHANGED
|
@@ -10,7 +10,7 @@ ace-docs:
|
|
|
10
10
|
# Usage
|
|
11
11
|
|
|
12
12
|
> **State owner:** `.ace-tasks/_overseer/` (private, gitignored task folder
|
|
13
|
-
> reached via `ace-task --in _overseer`) and `.ace-wt/` (one worktree per
|
|
13
|
+
> reached via `ace-task list --in _overseer`) and `.ace-wt/` (one worktree per
|
|
14
14
|
> project task). Assignment plans live in `.ace-local/assign/` and are not
|
|
15
15
|
> copied here. See [docs/lab-flow.md](../../docs/lab-flow.md).
|
|
16
16
|
|
|
@@ -84,14 +84,16 @@ Behavior:
|
|
|
84
84
|
`herdr agent start` success only means the interactive agent is ready for
|
|
85
85
|
input, the start submits a first-turn prompt right after the agent starts —
|
|
86
86
|
the session actually begins its first turn (state read, `/eyes` arming).
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
Herdr's activity gate (`agent prompt --wait`) only confirms working
|
|
88
|
+
activity. Readiness also requires the completed first turn and fresh,
|
|
89
|
+
healthy eyes evidence tied to the current live Pi process and session. A
|
|
90
|
+
delivery failure after a started agent does not remove that agent:
|
|
91
|
+
the report stays `started` with `prompt_failed: true` and an uncertain
|
|
92
|
+
delivery warning. A later start never re-sends the prompt solely because a
|
|
93
|
+
reused agent is idle or done: either state can follow a delivered prompt.
|
|
94
|
+
A healthy reused session can become ready once its current observation is
|
|
95
|
+
verified; a blocked agent is never interrupted. Process identity evidence
|
|
96
|
+
currently supports Linux only; other systems remain unconfirmed.
|
|
95
97
|
- The report carries `status` (`started|reused|blocked|dry_run`), `scope`,
|
|
96
98
|
`root`, `label`, `workspace`, `pane`, `agent`, `profile`, `instructions`
|
|
97
99
|
(`source` + resolved `path`) and a `message`. Exit 0 only for a ready
|
|
@@ -153,17 +155,14 @@ explicitly through `start --scope lab`:
|
|
|
153
155
|
nesting): the lab context owns the per-project spaces by creating and
|
|
154
156
|
reusing them from this one start flow.
|
|
155
157
|
- Statuses: `ready` (all projects started/reused AND every first turn
|
|
156
|
-
|
|
158
|
+
completed with live, healthy eyes — the lab overseer's included; an empty configured
|
|
157
159
|
list is a valid idle lab once its own session is initialized), `partial`
|
|
158
160
|
(an unhealthy project — or a session whose first turn failed or stays
|
|
159
161
|
unconfirmed — is reported with its concrete reason while healthy projects
|
|
160
162
|
run — never false success), `blocked` (unreadable topology / conflicting
|
|
161
|
-
roles).
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
re-delivered through herdr's activity gate (`agent prompt --wait`) to
|
|
165
|
-
confirm or repair initialization; a working/blocked agent is never
|
|
166
|
-
interrupted, and an unclassifiable one stays visibly unconfirmed.
|
|
163
|
+
roles). Repeated start reuses live sessions and never closes manual panes.
|
|
164
|
+
A reused session remains unconfirmed without trustworthy first-turn and
|
|
165
|
+
current-process observation evidence. No first prompt is re-sent automatically.
|
|
167
166
|
- `--dry-run` lists the plan (space + per-project would_start) and creates
|
|
168
167
|
nothing. The report carries per-project results (`projects`), the count,
|
|
169
168
|
and the lab-level readiness; exit 0 for ready, non-zero for partial and
|
|
@@ -174,7 +173,7 @@ explicitly through `start --scope lab`:
|
|
|
174
173
|
## `ace-overseer observe`
|
|
175
174
|
|
|
176
175
|
Read-only standing observation the started overseer's eyes poll (task
|
|
177
|
-
8xs.t.pu0.3). The projection merges
|
|
176
|
+
8xs.t.pu0.3). The projection merges local source classes, each read
|
|
178
177
|
from its state owner — never a second task/assignment state:
|
|
179
178
|
|
|
180
179
|
- HITL events (semantic revisions; reports/questions toward this owner),
|
|
@@ -182,7 +181,10 @@ from its state owner — never a second task/assignment state:
|
|
|
182
181
|
- worktrees (`ace-git-worktree`),
|
|
183
182
|
- coworker availability and assignment progress (`ace-coworker` probe over the
|
|
184
183
|
`ace-assign` inventory; live/stale judged by existing run identifiers —
|
|
185
|
-
commissioned assignment ids — never pane names)
|
|
184
|
+
commissioned assignment ids — never pane names),
|
|
185
|
+
- configured project Overseer session states from `ace-lab` project locations
|
|
186
|
+
and Herdr. Session activity is a wake signal, not proof that project eyes
|
|
187
|
+
are armed; inspect the session for that evidence.
|
|
186
188
|
|
|
187
189
|
Every row carries a stable `key` and a `revision` that changes only when the
|
|
188
190
|
owner's data changes: identical state projects identical revisions (healthy
|
|
@@ -190,11 +192,13 @@ silence consumes zero model turns), and a real change wakes the observer once.
|
|
|
190
192
|
A failing source degrades ONLY itself — it contributes a `source-health` row
|
|
191
193
|
whose revision is keyed by the failure class (an identical repeated failure
|
|
192
194
|
never re-wakes; a new failure mode wakes once) while the healthy sources keep
|
|
193
|
-
projecting.
|
|
195
|
+
projecting. Recovery revises the same row to `ok` and wakes the observer
|
|
196
|
+
even if the work is unchanged. `sources` maps each source to
|
|
197
|
+
`ok`/`degraded`. After a restart,
|
|
194
198
|
pending revisions reconcile before new work is chosen, so a report that
|
|
195
199
|
arrived during the overseer's absence is recognized exactly once.
|
|
196
200
|
|
|
197
|
-
### Remote PR observation
|
|
201
|
+
### Remote issue and PR observation
|
|
198
202
|
|
|
199
203
|
Configure the observed pull requests in the same cascade (task 8xs.t.pu0.4)
|
|
200
204
|
— the project's own declarations, never a scan of every accessible account:
|
|
@@ -203,11 +207,25 @@ Configure the observed pull requests in the same cascade (task 8xs.t.pu0.4)
|
|
|
203
207
|
# .ace/overseer/config.yml
|
|
204
208
|
observe:
|
|
205
209
|
remote:
|
|
210
|
+
issues:
|
|
211
|
+
- server: forgejo-lab # the configured project repository
|
|
206
212
|
pull_requests:
|
|
207
213
|
- server: github-cs3b # configured git server (ace-git ServerRegistry)
|
|
208
214
|
number: 398
|
|
209
215
|
```
|
|
210
216
|
|
|
217
|
+
Each configured issue source observes the selected repository's open issues
|
|
218
|
+
as one collection. New, changed and closed issues change its semantic
|
|
219
|
+
revision, while reordered identical results do not. Read the current issue
|
|
220
|
+
before acting. The revision covers issue identity, title, state, author, URL
|
|
221
|
+
and available labels; issue comments are not observed by this source. A
|
|
222
|
+
listing with more than 500 open issues, an unsupported
|
|
223
|
+
provider, or an authentication failure degrades the source visibly rather
|
|
224
|
+
than treating a partial or unavailable list as complete. Session credentials
|
|
225
|
+
must be available to the observation command for the duration of observation.
|
|
226
|
+
Currently the Forgejo provider implements issue listing; GitHub does not.
|
|
227
|
+
The Forgejo listing does not currently expose labels to this observation.
|
|
228
|
+
|
|
211
229
|
Rows project through the EXISTING forge provider adapters (Forgejo and
|
|
212
230
|
GitHub — `Ace::Git::Providers.for`; no separate HTTP client, no webhook
|
|
213
231
|
service). Each configured PR contributes two rows: its lifecycle (`pr:` —
|
|
@@ -221,8 +239,8 @@ state projects identical revisions — zero model turns.
|
|
|
221
239
|
A failing forge (401/403, rate limit, timeout, malformed payload) degrades
|
|
222
240
|
only its source (`source-health` marker keyed by failure class: one wake per
|
|
223
241
|
failure mode, never an empty healthy list); retry/backoff stays inside the
|
|
224
|
-
provider adapters. After access returns, the
|
|
225
|
-
|
|
242
|
+
provider adapters. After access returns, the source health revision wakes
|
|
243
|
+
the observer. Remote data stays data: re-read the current
|
|
226
244
|
state and evidence before any merge decision. CI check changes are
|
|
227
245
|
information, never a merge gate.
|
|
228
246
|
|
|
@@ -348,9 +366,13 @@ Matching and outcome rules (enforced mechanically):
|
|
|
348
366
|
it `done`, then continues with the next unblocked step (same
|
|
349
367
|
`DependencyReadiness` gate as `work-on`): `ace-overseer handoff` for the
|
|
350
368
|
next role when the family records a worktree, otherwise the `work-on`
|
|
351
|
-
gate. A refused continuation is reported as blocked
|
|
352
|
-
handoff
|
|
353
|
-
|
|
369
|
+
gate in local terminal mode. A refused continuation is reported as blocked
|
|
370
|
+
with reasons. Local handoff ensures the window and returns the start command.
|
|
371
|
+
With the Herdr backend, work-on and handoff start the actual executor with
|
|
372
|
+
an explicit environment and record its identity on the coworker commission.
|
|
373
|
+
Accepted reports retire that executor before continuation. A completed role
|
|
374
|
+
sequence does not close pending coordination steps. No authorization daemon
|
|
375
|
+
or isolated operating-system session is required.
|
|
354
376
|
- A repeated delivery of an already-processed report is `duplicate`: the
|
|
355
377
|
recorded result and existing allocation answer it; nothing re-runs
|
|
356
378
|
(delivery repetition is never work repetition). A duplicate whose
|
|
@@ -8,6 +8,12 @@ purpose: Complete one lab-owned startup commission without the overseer doing th
|
|
|
8
8
|
---
|
|
9
9
|
# Delegated project bootstrap
|
|
10
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
|
+
|
|
11
17
|
## Commission and ownership
|
|
12
18
|
|
|
13
19
|
The overseer reads owner state and public CLI contracts to establish scope,
|
|
@@ -17,6 +23,9 @@ Record the known failure and desired outcome in the commission; discovering
|
|
|
17
23
|
the root cause is part of the assigned work, never a prerequisite for dispatch.
|
|
18
24
|
Use existing readiness state, or a startup dry run only when that state is
|
|
19
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.
|
|
20
29
|
Once the symptom is known, proceed to task creation/reconciliation, observation
|
|
21
30
|
and worker dispatch, then end the turn.
|
|
22
31
|
|
|
@@ -26,15 +35,119 @@ Create one lab coordination task in `_overseer`, with three direct children:
|
|
|
26
35
|
prepare, independently verify, confirm start. The latter two depend on their
|
|
27
36
|
predecessor. Only the lab overseer updates this private tree.
|
|
28
37
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
32
70
|
configuration, observed failure, desired outcome, allowed changes, runtime
|
|
33
71
|
mode, acceptance checks and report recipient. Assign diagnosis and reproduction
|
|
34
|
-
as well as preparation to the worker. This
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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.
|
|
38
151
|
|
|
39
152
|
Explicit `ACE_TOOLCHAIN=installed` remains installed in every subprocess,
|
|
40
153
|
worker and resumed session. The project checkout is domain data. Never modify
|
|
@@ -44,8 +157,12 @@ do not patch installed gems. Preserve unrelated changes.
|
|
|
44
157
|
|
|
45
158
|
## Arm eyes before dispatch
|
|
46
159
|
|
|
47
|
-
Use the lab's existing eyes JSON configuration
|
|
48
|
-
`
|
|
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.
|
|
49
166
|
Inspect the returned state: enabled=true, breaker=null, errors=0 and at least
|
|
50
167
|
one observation. Read pending revisions from their original owners, reconcile
|
|
51
168
|
existing commissions, and ack each exact key/revision only after acceptance.
|
|
@@ -54,8 +171,28 @@ report that capability gap. Do not claim that mentioning `/eyes` armed it.
|
|
|
54
171
|
|
|
55
172
|
## Prepare and actually launch a worker
|
|
56
173
|
|
|
57
|
-
|
|
58
|
-
|
|
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,
|
|
59
196
|
assignment IDs and start-config paths; record these on the matching private
|
|
60
197
|
steps before launch through the task API, not only in prose:
|
|
61
198
|
|
|
@@ -65,6 +202,12 @@ ace-task update <verify-step> --set assignment=<verifier-assignment> --set role=
|
|
|
65
202
|
ace-task update <confirm-step> --set role=confirm-start
|
|
66
203
|
```
|
|
67
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
|
+
|
|
68
211
|
Read back the steps with `ace-task show` and verify exact returned identities.
|
|
69
212
|
A preparation readiness report is not worker completion. It does not complete
|
|
70
213
|
any of these three steps; never label bootstrap execution as `role=planner`.
|
|
@@ -72,47 +215,91 @@ Only a separate, explicitly commissioned planner preparation allocation may
|
|
|
72
215
|
accept an unassigned readiness report.
|
|
73
216
|
The task must be present in the execution worktree before any agent starts.
|
|
74
217
|
|
|
75
|
-
`ace-coworker start --config <returned-path>` validates and prints a brief
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
outside the lab task worktree; ordinary product worker/reviewer roles do not.
|
|
82
|
-
Use CLI help for
|
|
83
|
-
Herdr's current arguments. Record the returned pane/agent identity and verify
|
|
84
|
-
first-turn delivery. Never replace a missing executor with your own work.
|
|
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.
|
|
85
224
|
|
|
86
|
-
|
|
87
|
-
|
|
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.
|
|
88
230
|
|
|
89
231
|
## Receive, verify, start
|
|
90
232
|
|
|
91
233
|
On wake, read the original report and current assignment. Require matching
|
|
92
234
|
report ID, task, assignment and role; a preparation report, process exit or
|
|
93
|
-
unmatched message is not success.
|
|
94
|
-
|
|
95
|
-
|
|
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.
|
|
96
241
|
Record the actual accepted HITL event ID and result in step metadata through
|
|
97
242
|
`ace-task update <step> --set processed_report=<event-id> --set report_result=<result>`
|
|
98
|
-
|
|
99
|
-
Mark done only after acceptance; errors keep the step open.
|
|
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
|
|
100
248
|
the path returned by `ace-task show` supplement these fields, never replace them.
|
|
101
249
|
Read back the recorded identity before acknowledging the eyes revision.
|
|
102
250
|
Never put a preparation readiness ID on a worker, verifier or confirm-start step.
|
|
103
251
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
assignments and agents instead of dispatching again.
|
|
252
|
+
After accepting the worker's report, use `ace-overseer process-reports` 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.
|
|
110
257
|
|
|
111
258
|
Only after accepted worker completion and independent verification does the
|
|
112
259
|
overseer perform this commission's project-start coordination operation `ace-overseer start --reconcile`. Confirm the target's session, first
|
|
113
|
-
turn and active eyes
|
|
114
|
-
|
|
115
|
-
|
|
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.
|
|
116
303
|
|
|
117
304
|
On error, keep the step open and route repair to the worker. Missing authority
|
|
118
305
|
or an actual Captain decision becomes a precise HITL question; end the turn
|