fix(docs): address review feedback on architecture clarity and path consistency
PR Ready Gate / clear-labels (pull_request) Successful in 1s
CI / test (pull_request) Successful in 23s
CI / review (gpt-5, security, ., rodin/security-patterns, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 29s
CI / review (anthropic--claude-4.6-sonnet, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 45s
CI / review (gpt-5, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 1m40s

- Clarify SPAWN exits vs HANDOFF continues in architecture diagram (S1)
- Add 'read' to toolsAllow in architecture snippet to match cron config (G2)
- Rephrase safety invariant 6 to clarify workers may push/manage labels (G3)
- Add reserved Rule 1 placeholder to explain numbering gap (S2)
- Clarify Rule 10 skip behavior for already-assigned PRs (S3)
- Standardize invariants checker path to full workspace path (G4/G5)
- Add note explaining SKILL.md deployment to workspace path (G1)
This commit is contained in:
Rodin
2026-05-15 01:03:04 -07:00
parent 151199e436
commit d573c14998
2 changed files with 9 additions and 7 deletions
+6 -4
View File
@@ -8,15 +8,15 @@ It lives in the repo so changes are version-controlled alongside the code.
Dispatch is a **pure shell script** — no model reasoning. Dispatch is a **pure shell script** — no model reasoning.
``` ```
Cron (agentTurn, toolsAllow: [exec, sessions_spawn]) Cron (agentTurn, toolsAllow: [exec, sessions_spawn, read])
→ runs dispatch script → runs dispatch script
→ reads output for SPAWN or HANDOFF lines → reads output for SPAWN or HANDOFF lines
→ spawns worker if instructed → spawns worker if instructed
Dispatch script (~/.openclaw/workspace/scripts/dev-loop-dispatch.sh) Dispatch script (~/.openclaw/workspace/scripts/dev-loop-dispatch.sh)
→ pure bash, all decisions are curl API calls + branches → pure bash, all decisions are curl API calls + branches
→ exits after one SPAWN action per pass → exits after emitting one SPAWN line (at most one worker per run)
may emit multiple HANDOFFs in one pass emits HANDOFF for each qualifying PR (does not exit after HANDOFF)
Workers (Opus, spawned by cron model) Workers (Opus, spawned by cron model)
→ receive precise task description → receive precise task description
@@ -34,7 +34,7 @@ The model **never** assesses project state or makes dispatch decisions.
3. **WIP mutex** — one active worker per repo; WIP label gates new issue pickup 3. **WIP mutex** — one active worker per repo; WIP label gates new issue pickup
4. **One SPAWN per run** — script emits at most one SPAWN line per execution 4. **One SPAWN per run** — script emits at most one SPAWN line per execution
5. **set -euo pipefail** — any curl failure aborts immediately, no partial actions 5. **set -euo pipefail** — any curl failure aborts immediately, no partial actions
6. **Workers reply NO_REPLY** — no announcements, no handoffs, no side effects 6. **Workers reply NO_REPLY** — no dispatch-level side effects (workers may push changes and manage labels as part of their task)
## Dispatch Rules (in order) ## Dispatch Rules (in order)
@@ -42,6 +42,7 @@ The model **never** assesses project state or makes dispatch decisions.
|------|-----------|--------| |------|-----------|--------|
| 0 | WIP label > 1hr old | Remove stale WIP, continue | | 0 | WIP label > 1hr old | Remove stale WIP, continue |
| 0b | WIP label ≤ 1hr old | Mark ACTIVE_WIP=1, continue (only gates Rule 10) | | 0b | WIP label ≤ 1hr old | Mark ACTIVE_WIP=1, continue (only gates Rule 10) |
| _(1)_ | _(reserved — intentionally unused)_ | — |
| 2 | Any reviewer has REQUEST_CHANGES | SPAWN:findings | | 2 | Any reviewer has REQUEST_CHANGES | SPAWN:findings |
| 3 | PR not mergeable | SPAWN:rebase | | 3 | PR not mergeable | SPAWN:rebase |
| 4 | CI failure, no fix plan | SPAWN:ci-fix | | 4 | CI failure, no fix plan | SPAWN:ci-fix |
@@ -99,6 +100,7 @@ Key fields:
If no SPAWN line in output, reply NO_REPLY. If no SPAWN line in output, reply NO_REPLY.
See ~/.openclaw/workspace/skills/dev-loop/SKILL.md for full instructions. See ~/.openclaw/workspace/skills/dev-loop/SKILL.md for full instructions.
(This repo's SKILL.md is deployed to that workspace path.)
model: hai-anthropic/anthropic--claude-4.5-haiku model: hai-anthropic/anthropic--claude-4.5-haiku
toolsAllow: [exec, sessions_spawn, read] toolsAllow: [exec, sessions_spawn, read]
``` ```
+3 -3
View File
@@ -204,7 +204,7 @@ If all current:
- Emit `HANDOFF:<pr_num>` - Emit `HANDOFF:<pr_num>`
- Continue evaluating remaining PRs (do NOT exit) - Continue evaluating remaining PRs (do NOT exit)
If already assigned to `aweiker`: skip. If already assigned to `aweiker`: skip (assume handoff was already performed; continue to next PR without emitting another HANDOFF).
### Rule 11: New Issue Pickup ### Rule 11: New Issue Pickup
@@ -219,7 +219,7 @@ Claim the issue (assign to bot user to prevent double-pick), then:
## 6. Safety Invariants ## 6. Safety Invariants
These are statically checked by `test/check-invariants.sh` and enforced in all changes: These are statically checked by `~/.openclaw/workspace/scripts/test/check-invariants.sh` and enforced in all changes:
| ID | Invariant | | ID | Invariant |
|----|-----------| |----|-----------|
@@ -268,7 +268,7 @@ Workers **always** remove the WIP label on completion and reply `NO_REPLY`.
## 9. Fixes for Issues #144 and #145 ## 9. Fixes for Issues #144 and #145
**Issue #144** (autonomous merge): **Issue #144** (autonomous merge):
The dispatch script contains no merge API calls anywhere. The `scripts/test/check-invariants.sh` The dispatch script contains no merge API calls anywhere. The `~/.openclaw/workspace/scripts/test/check-invariants.sh`
invariant `S1` verifies this. Workers do not receive merge instructions. invariant `S1` verifies this. Workers do not receive merge instructions.
**Issue #145** (merged despite REQUEST_CHANGES): **Issue #145** (merged despite REQUEST_CHANGES):