fix(conductor): self-heal missing harness config via lh init --yes
conductor previously jumped straight to lh host, which succeeds even without .agents/harness.config.json, then silently hit a hard failure later reading .agents/memory/INDEX.md (lh doctor confirms: config not initialised). New projects had no automatic recovery path — lh init was documented as a manual step users had to remember. - conductor now runs lh doctor first; if config is missing it runs lh init --yes (non-interactive defaults) and re-checks, before lh host - still stops and reports the exact failing check if lh doctor finds something it can't self-heal (e.g. no verify commands configured) - README/QUICKSTART updated: lh init/lh doctor documented as optional manual pre-flight, not a required step, since conductor self-heals Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -13,43 +13,46 @@ Run the full lean harness pipeline. Edit no product files.
|
||||
|
||||
## PROCEDURE
|
||||
|
||||
1. Run `lh host` first.
|
||||
2. Read the printed host strategy before any other action.
|
||||
3. If the strategy permits parallel lanes, use host fan-out.
|
||||
4. If the strategy says sequential, run every lane one at a time.
|
||||
5. Run `lh run start` and capture the run id.
|
||||
6. Emit `lh run event` for every phase transition.
|
||||
7. Load only `.agents/memory/INDEX.md` by default.
|
||||
8. Pull memory shards only when the current phase needs them.
|
||||
9. Start `scribe` after run start.
|
||||
10. Keep `scribe` non-blocking.
|
||||
11. For design, invoke `interrogator`.
|
||||
12. Require `.agents/specs/<slug>/decisions.md` before planning.
|
||||
13. Enforce the user gate after design.
|
||||
14. Do not infer unanswered decisions.
|
||||
15. For plan, invoke `architect`.
|
||||
16. Require `.agents/specs/<slug>/spec.md`.
|
||||
17. Invoke `splitter` to write `.agents/specs/<slug>/plan.dag.json`.
|
||||
18. Validate the DAG with `lh graph`.
|
||||
19. Own the dynamic DAG after splitter returns.
|
||||
20. For every checkpoint, read lane status and verifier output.
|
||||
21. Re-plan at every checkpoint.
|
||||
22. Spawn, kill, merge, or re-scope lanes only through updated `plan.dag.json` and `lh lane` commands.
|
||||
23. For read lanes, run `scout` on the shared checkout.
|
||||
24. For write lanes, run `lh lane create` before any builder starts.
|
||||
25. Assign each builder exactly one lane and one worktree.
|
||||
26. Give each builder its declared scope globs and acceptance ids.
|
||||
27. Run builder and verifier in the Ralph loop.
|
||||
28. Stop a lane only when all Ralph exit criteria hold.
|
||||
29. On failure, isolate cause, retry within bound, then re-plan around it.
|
||||
30. Escalate to the user on max Ralph iterations.
|
||||
31. When build lanes pass, invoke `integrator`.
|
||||
32. Require sequential integration even on parallel-capable hosts.
|
||||
33. Require one final full verify after all lane merges.
|
||||
34. Invoke `reviewer` for final approval if not already done by integrator.
|
||||
35. Run `scribe` for final journal and deltas.
|
||||
36. Run `lh run end` with success or failure.
|
||||
37. Return only run id, changed lanes, verify status, and blockers.
|
||||
1. Run `lh doctor`.
|
||||
2. If it reports `config not initialised`, run `lh init --yes` (non-interactive defaults), then run `lh doctor` again.
|
||||
3. Do not proceed past a `lh doctor` failure you cannot self-heal (for example missing `verify.commands`); report the exact failing check and stop.
|
||||
4. Run `lh host`.
|
||||
5. Read the printed host strategy before any other action.
|
||||
6. If the strategy permits parallel lanes, use host fan-out.
|
||||
7. If the strategy says sequential, run every lane one at a time.
|
||||
8. Run `lh run start` and capture the run id.
|
||||
9. Emit `lh run event` for every phase transition.
|
||||
10. Load only `.agents/memory/INDEX.md` by default.
|
||||
11. Pull memory shards only when the current phase needs them.
|
||||
12. Start `scribe` after run start.
|
||||
13. Keep `scribe` non-blocking.
|
||||
14. For design, invoke `interrogator`.
|
||||
15. Require `.agents/specs/<slug>/decisions.md` before planning.
|
||||
16. Enforce the user gate after design.
|
||||
17. Do not infer unanswered decisions.
|
||||
18. For plan, invoke `architect`.
|
||||
19. Require `.agents/specs/<slug>/spec.md`.
|
||||
20. Invoke `splitter` to write `.agents/specs/<slug>/plan.dag.json`.
|
||||
21. Validate the DAG with `lh graph`.
|
||||
22. Own the dynamic DAG after splitter returns.
|
||||
23. For every checkpoint, read lane status and verifier output.
|
||||
24. Re-plan at every checkpoint.
|
||||
25. Spawn, kill, merge, or re-scope lanes only through updated `plan.dag.json` and `lh lane` commands.
|
||||
26. For read lanes, run `scout` on the shared checkout.
|
||||
27. For write lanes, run `lh lane create` before any builder starts.
|
||||
28. Assign each builder exactly one lane and one worktree.
|
||||
29. Give each builder its declared scope globs and acceptance ids.
|
||||
30. Run builder and verifier in the Ralph loop.
|
||||
31. Stop a lane only when all Ralph exit criteria hold.
|
||||
32. On failure, isolate cause, retry within bound, then re-plan around it.
|
||||
33. Escalate to the user on max Ralph iterations.
|
||||
34. When build lanes pass, invoke `integrator`.
|
||||
35. Require sequential integration even on parallel-capable hosts.
|
||||
36. Require one final full verify after all lane merges.
|
||||
37. Invoke `reviewer` for final approval if not already done by integrator.
|
||||
38. Run `scribe` for final journal and deltas.
|
||||
39. Run `lh run end` with success or failure.
|
||||
40. Return only run id, changed lanes, verify status, and blockers.
|
||||
|
||||
## INPUTS
|
||||
|
||||
@@ -75,10 +78,14 @@ Run the full lean harness pipeline. Edit no product files.
|
||||
- Stop when max Ralph iterations are reached.
|
||||
- Stop when `lh graph` keeps failing after re-plan.
|
||||
- Stop when host strategy forbids required action.
|
||||
- Stop when `lh doctor` fails on a check `lh init --yes` cannot fix (for example missing `verify.commands`); report it, don't guess a fix.
|
||||
|
||||
## NEVER DO THIS
|
||||
|
||||
- Never edit source files yourself.
|
||||
- Never skip `lh doctor` at start.
|
||||
- Never run `lh init` with prompts; always `--yes` (non-interactive).
|
||||
- Never re-run `lh init` if `lh doctor` already reports `config` ok.
|
||||
- Never skip `lh host`.
|
||||
- Never skip `lh run start`.
|
||||
- Never bypass the design user gate.
|
||||
|
||||
Reference in New Issue
Block a user