@jaimevalasek/aioson 1.22.0 → 1.23.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.
- package/CHANGELOG.md +932 -919
- package/package.json +1 -1
- package/src/agents.js +1 -1
- package/src/cli.js +16 -0
- package/src/commands/harness-preview.js +74 -0
- package/src/commands/harness-retro.js +221 -0
- package/src/commands/self-implement-loop.js +12 -2
- package/src/commands/workflow-next.js +10 -2
- package/src/harness/preview-artifact.js +85 -0
- package/src/i18n/messages/en.js +21 -0
- package/src/i18n/messages/es.js +21 -0
- package/src/i18n/messages/fr.js +21 -0
- package/src/i18n/messages/pt-BR.js +21 -0
- package/src/lib/retro/retro-aggregate.js +192 -0
- package/src/lib/retro/retro-render.js +185 -0
- package/src/lib/retro/retro-sources.js +624 -0
- package/template/.aioson/agents/dev.md +11 -0
- package/template/.aioson/agents/pentester.md +8 -0
- package/template/.aioson/agents/qa.md +24 -0
- package/template/.aioson/agents/sheldon.md +13 -0
- package/template/.aioson/agents/tester.md +17 -0
- package/template/.aioson/agents/validator.md +8 -0
- package/template/.aioson/docs/autopilot-handoff.md +83 -46
- package/template/.aioson/rules/aioson-context-boundary.md +10 -8
- package/template/AGENTS.md +1 -1
- package/template/CLAUDE.md +1 -1
|
@@ -274,6 +274,19 @@ Goal: convert binary ACs from the enriched PRD into a machine-checkable contract
|
|
|
274
274
|
|
|
275
275
|
Load `.aioson/docs/sheldon/harness-contract.md` for the full procedure: init via `aioson harness:init`, criteria population (binary vs advisory), `contract_mode`/governor selection by risk, and canonical schemas. Mention the contract path in the post-enrichment handoff; the user approves before the contract is final.
|
|
276
276
|
|
|
277
|
+
## Retro dossier analysis (on-demand)
|
|
278
|
+
|
|
279
|
+
Load this mode only when the user points you at a retrospective dossier produced by `aioson harness:retro` (`.aioson/context/retro/{slug}.md` or `window-last-{N}.md`). The CLI mines deterministically and materializes the dossier; YOU do the semantic analysis and propose deltas. The dossier is your evidence boundary.
|
|
280
|
+
|
|
281
|
+
Procedure:
|
|
282
|
+
1. Read the dossier. Only "Propostas candidatas" are eligible for a delta proposal; "Observações" are single-occurrence signals you may cite but must never promote on their own.
|
|
283
|
+
2. Promote an Observação to a proposal ONLY when you can name ≥2 concrete occurrences (feature + finding-ID + path) already present in the dossier. Never invent occurrences the dossier does not list.
|
|
284
|
+
3. Classify the recurring failure classes by citing the dossier's exact occurrences — never re-mine the codebase, run web searches, or call an LLM to "find more". The CLI already did the deterministic mining.
|
|
285
|
+
4. Land accepted deltas EXCLUSIVELY in `.aioson/learnings/` (project gotchas/recipes) and `.aioson/rules/` (agent-loaded rules). Never edit code, specs, or other context files from this mode.
|
|
286
|
+
5. Human approval is mandatory before any delta is written; auto-application is prohibited.
|
|
287
|
+
|
|
288
|
+
If the dossier is empty (no candidates and no observations), say so and stop — do not fabricate retrospective conclusions.
|
|
289
|
+
|
|
277
290
|
## Hard constraints
|
|
278
291
|
- **Never implement code** — role is exclusively PRD analysis and enrichment
|
|
279
292
|
- **Never rewrite Vision, Problem, Users** — those sections belong to `@product`
|
|
@@ -181,6 +181,15 @@ Work module by module in priority order from the risk map:
|
|
|
181
181
|
- If code under test has a real bug: report it in `test-plan.md`, do not fix silently
|
|
182
182
|
- Do not modify production code (even small "just to make it testable" changes) — report untestable code instead
|
|
183
183
|
|
|
184
|
+
**Large test logs — preview, not dump:** when a run emits a big log, redirect it to a file and read a preview + pointer instead of pasting the full output into context:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm test > test-run.log 2>&1 || true
|
|
188
|
+
aioson harness:preview test-run.log --max-bytes=8192
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
`harness:preview` is read-only (persist-first) and returns the first bytes plus a pointer to the full file. Open the full log only when the preview is insufficient.
|
|
192
|
+
|
|
184
193
|
## 4-Tier Verification Protocol (goal-backward)
|
|
185
194
|
|
|
186
195
|
Verification starts from the goal - what the system must deliver - and works backward.
|
|
@@ -664,6 +673,14 @@ If `aioson` CLI is not available, update `.aioson/context/project-pulse.md` manu
|
|
|
664
673
|
## At session end
|
|
665
674
|
Register: `aioson agent:done . --agent=tester --summary="<one-line summary>" 2>/dev/null || true`
|
|
666
675
|
|
|
676
|
+
## Autopilot handoff (post-dev cycle)
|
|
677
|
+
|
|
678
|
+
When `auto_handoff: true` is set in `project.context.md`, after the suite is delivered and `agent:done` is registered, return to the hub instead of stopping (`.aioson/docs/autopilot-handoff.md`):
|
|
679
|
+
- Dev-owned blocking gaps found (failing must-have test, real bug reported) → `Skill(aioson:agent:dev)` with `"fix @tester findings — autopilot handoff"`.
|
|
680
|
+
- Otherwise → `Skill(aioson:agent:qa)` with `"re-evaluate after @tester — autopilot handoff"`.
|
|
681
|
+
|
|
682
|
+
Emit `Autopilot: @tester → invoking @<next> (Ctrl+C to interrupt)` first. Never auto-run `feature:close`. If `auto_handoff` is absent or `false`, hand off manually (recommend `@qa` or `@dev`).
|
|
683
|
+
|
|
667
684
|
## Continuation Protocol
|
|
668
685
|
|
|
669
686
|
Append this block only after tests or test artifacts were actually written in the current session. Do not append it when waiting for user confirmation before Phase 4.
|
|
@@ -103,6 +103,14 @@ Skip silently when the dossier is absent — `progress.json` remains the canonic
|
|
|
103
103
|
## Observability
|
|
104
104
|
At session end, register: `aioson agent:done . --agent=validator --summary="Validated <slug> phase <N>: score=<0|1>, ready_for_done=<bool>" 2>/dev/null || true`
|
|
105
105
|
|
|
106
|
+
## Autopilot handoff (post-dev cycle)
|
|
107
|
+
|
|
108
|
+
When `auto_handoff: true` is set in `project.context.md`, after the verdict and `agent:done` (`.aioson/docs/autopilot-handoff.md`):
|
|
109
|
+
- Score 0 / FAIL → `Skill(aioson:agent:dev)` with `"fix @validator findings — autopilot handoff"`.
|
|
110
|
+
- Score 1 / PASS → **STOP**. The feature is verification-clean; recommend the human run `aioson feature:close . --feature={slug}`. **Never auto-run `feature:close`** — the close is the human gate.
|
|
111
|
+
|
|
112
|
+
Emit `Autopilot: @validator → invoking @<next> (Ctrl+C to interrupt)` before invoking. If `auto_handoff` is absent or `false`, hand off manually.
|
|
113
|
+
|
|
106
114
|
---
|
|
107
115
|
## ▶ Next step
|
|
108
116
|
The result will be written to `progress.json` by the gateway. Hand back to `@dev` for correction, or proceed to feature closure.
|
|
@@ -1,46 +1,83 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Autopilot handoff protocol: automatic agent chaining
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Autopilot handoff (analyst → dev)
|
|
6
|
-
|
|
7
|
-
Opt-in protocol that removes manual handoff confirmations in the deterministic
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
---
|
|
2
|
+
description: "Autopilot handoff protocol: automatic agent chaining across the feature workflow — the analyst→dev pre-dev chain and the post-dev review cycle (dev→qa→tester/pentester→validator) — with deterministic routing and explicit stop conditions. The chain never auto-runs feature:close/publish."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Autopilot handoff (analyst → dev → review cycle)
|
|
6
|
+
|
|
7
|
+
Opt-in protocol that removes manual handoff confirmations in the deterministic segments of the feature workflow. Two segments:
|
|
8
|
+
|
|
9
|
+
1. **Pre-dev chain (`@analyst` → `@dev`):** `@analyst`, `@scope-check`, `@architect`, `@discovery-design-doc`, and `@pm` (MEDIUM only). Upstream agents (`@briefing`, `@product`, `@sheldon`) always stay manual — they end on genuine human decisions.
|
|
10
|
+
2. **Post-dev review cycle (`@dev` → `@qa` → `@tester`/`@pentester` → `@validator`):** once a human starts `@dev`, the implementation and review agents chain automatically until the feature is ready to close. `@qa` is the hub: it owns the routing to the specialized agents and the corrections loop.
|
|
11
|
+
|
|
12
|
+
## Activation
|
|
13
|
+
|
|
14
|
+
Autopilot is active only when ALL are true:
|
|
15
|
+
|
|
16
|
+
1. `project.context.md` frontmatter has `auto_handoff: true` (absent or `false` = manual handoffs, current behavior).
|
|
17
|
+
2. A feature workflow is active (feature slug known, classification SMALL or MEDIUM).
|
|
18
|
+
3. The current agent's own gate/verdict passed (see stop conditions).
|
|
19
|
+
|
|
20
|
+
## Routing — deterministic, never LLM-chosen
|
|
21
|
+
|
|
22
|
+
The next agent comes from the workflow state machine and on-disk evidence, not from model judgment:
|
|
23
|
+
|
|
24
|
+
- CLI available: run `aioson workflow:next .` (inspect mode) and use the stage it reports, or the `next` field of `.aioson/context/workflow.state.json`.
|
|
25
|
+
- CLI absent: follow the classification sequence in `.aioson/config.md` and the routing table below exactly.
|
|
26
|
+
|
|
27
|
+
Never skip a stage, reorder, or pick an agent the state machine / routing table did not name.
|
|
28
|
+
|
|
29
|
+
## Auto-invoke pattern
|
|
30
|
+
|
|
31
|
+
When autopilot is active and no stop condition applies:
|
|
32
|
+
|
|
33
|
+
1. Finish your own closing duties first (artifacts on disk, gate registration, dossier/spec updates, `pulse:update`, `agent:done`).
|
|
34
|
+
2. Emit a one-line transition notice: `Autopilot: @<current> done → invoking @<next> (Ctrl+C to interrupt)`.
|
|
35
|
+
3. Invoke `Skill(aioson:agent:<next>)` with the task `"continue feature {slug} — autopilot handoff from @<current>"`. No user prompt — Ctrl+C interrupts.
|
|
36
|
+
|
|
37
|
+
## Segment 1 — pre-dev chain (`@analyst` → `@dev`)
|
|
38
|
+
|
|
39
|
+
`@analyst` → `@scope-check` → `@architect` → `@discovery-design-doc` → (`@pm` on MEDIUM) → **STOP before `@dev`**.
|
|
40
|
+
|
|
41
|
+
The pre-dev chain stops before the FIRST `@dev` activation. The human clears context (`/clear`) and starts implementation with a fresh budget — `@dev` is a heavy phase and benefits from a clean context window. Produce `dev-state.md` (the dev handoff producer), emit the standard handoff message, and recommend `/clear` + `/dev`. **Never auto-invoke the initial `@dev` entry.**
|
|
42
|
+
|
|
43
|
+
## Segment 2 — post-dev review cycle (hub = `@qa`)
|
|
44
|
+
|
|
45
|
+
Once a human starts `@dev` and it finishes, the chain resumes automatically. `@qa` is the hub; every specialized agent returns to it.
|
|
46
|
+
|
|
47
|
+
Routing table (each row is followed only when autopilot is active and no stop condition applies):
|
|
48
|
+
|
|
49
|
+
| Current | Condition | Auto-invoke |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `@dev` (first pass) | tests green, gates clear, no open corrections cycle | `@qa` |
|
|
52
|
+
| `@dev` (corrections) | corrections applied, tests green (`qa-dev-cycle.json` present) | `@qa` (re-verify) |
|
|
53
|
+
| `@qa` | verdict **FAIL** (Critical/High) | `@dev` via the corrections auto-cycle (cap 2, security gate) |
|
|
54
|
+
| `@qa` | verdict **PASS** + `@tester` trigger fires AND `@tester` not yet run clean | `@tester` |
|
|
55
|
+
| `@qa` | verdict **PASS** + `@pentester` trigger fires AND `@pentester` not yet run clean | `@pentester` |
|
|
56
|
+
| `@qa` | verdict **PASS** + harness contract present AND `@validator` not yet PASS | `@validator` |
|
|
57
|
+
| `@qa` | verdict **PASS** + no pending trigger/contract | **STOP** — recommend the human run `aioson feature:close . --feature={slug}` |
|
|
58
|
+
| `@tester` | surfaced dev-owned blocking gaps | `@dev` |
|
|
59
|
+
| `@tester` | no dev-owned blocking gaps | `@qa` (re-evaluate / sign-off) |
|
|
60
|
+
| `@pentester` | open `recommended_owner = dev` findings | `@dev` |
|
|
61
|
+
| `@pentester` | no open dev-owned findings | `@qa` (re-evaluate / sign-off) |
|
|
62
|
+
| `@validator` | PASS | **STOP** — recommend the human run `aioson feature:close` |
|
|
63
|
+
| `@validator` | FAIL | `@dev` |
|
|
64
|
+
|
|
65
|
+
**Trigger source for `@tester`/`@pentester`:** the existing `@qa` trigger logic (coverage gaps → `@tester`; sensitive surface auth/secrets/data/upload/external-URL/supply-chain → `@pentester`). The four agents are ALWAYS wired into the chain, but `@tester`/`@pentester` only EXECUTE when their trigger fires — otherwise `@qa` skips straight to the next routing row.
|
|
66
|
+
|
|
67
|
+
**Re-entry guard (no infinite loops):** before auto-invoking a specialized agent, `@qa` checks on-disk evidence that it already ran clean this cycle (e.g. `security-findings-{slug}.json` clean → `@pentester` done; a tester coverage artifact present with no new gap → `@tester` done; `progress.json.ready_for_done_gate` / validator PASS recorded → `@validator` done). An agent that already returned clean is not re-invoked.
|
|
68
|
+
|
|
69
|
+
## Stop conditions — break the chain and emit the normal manual handoff
|
|
70
|
+
|
|
71
|
+
1. **`feature:close` / publish** — ALWAYS the human gate. When `@qa` (PASS, nothing pending) or `@validator` (PASS) is the last clean step, STOP and recommend `aioson feature:close . --feature={slug}`. Never auto-run `feature:close`, `feature:archive`, `npm publish`, or any publish/close action.
|
|
72
|
+
2. **First `@dev` entry** — the pre-dev chain stops here (Segment 1). The human clears context and starts implementation.
|
|
73
|
+
3. **Corrections cap reached** — the `@qa`↔`@dev` auto-cycle is bounded at 2 rounds (`qa-dev-cycle.json`); when exhausted, stop and escalate to the human.
|
|
74
|
+
4. **Critical security finding** — the `@qa` corrections security gate (auth/secret/credential/session/password/token/PII/encryption keywords) blocks the auto-loop; stop and require human intervention.
|
|
75
|
+
5. **Verdict not clean / gate or readiness blocked** — `@scope-check` not `approved`/`patched`, `@architect` Gate B blocked, `@discovery-design-doc` readiness `blocked`, `@pm` Gate C blocked, `@validator` FAIL with no safe corrections path: stop and route to the owner manually.
|
|
76
|
+
6. **Context budget** — estimated usage ≥ `context_warning_threshold` (`.aioson/config.md`): write the compaction checkpoint to `.aioson/context/last-handoff.json`, stop, and recommend `/clear`. The workflow resumes from `workflow.state.json` — the next session re-enters autopilot automatically.
|
|
77
|
+
7. **Ambiguity** — workflow state unavailable AND routing ambiguous, or any real decision requires user input: stop and ask, manually.
|
|
78
|
+
|
|
79
|
+
The user can interrupt at any time (Ctrl+C); autopilot never retries an interrupted invocation.
|
|
80
|
+
|
|
81
|
+
## Rationale
|
|
82
|
+
|
|
83
|
+
Industry-validated design (see `researchs/auto-handoff-pipeline-2026/summary.md`): deterministic routing beats LLM routing; human gates belong where they catch mistakes — at the start of implementation (`@dev` entry: fresh context) and at the irreversible boundary (`feature:close`/publish). Every autonomous loop needs explicit exit conditions and bounds (the corrections cap, the re-entry guard); per-hop context checkpointing is the load-bearing cost mitigation.
|
|
@@ -28,10 +28,11 @@ Allowed machine-readable exceptions:
|
|
|
28
28
|
| Project configuration | `.aioson/config.md` |
|
|
29
29
|
| Conformance schema | `.aioson/context/conformance-{slug}.yaml` ← machine-readable exception |
|
|
30
30
|
| Security findings | `.aioson/context/security-findings-{slug}.json` ← machine-readable exception |
|
|
31
|
-
| Workflow handoff/runtime state | `.aioson/context/workflow.state.json`, `.aioson/context/handoff-protocol.json`, `.aioson/context/last-handoff.json` |
|
|
32
|
-
| Parallel coordination machine files | `.aioson/context/parallel/*.json` |
|
|
33
|
-
| Simple implementation plans | `.aioson/context/simple-plans/{slug}.md` |
|
|
34
|
-
|
|
|
31
|
+
| Workflow handoff/runtime state | `.aioson/context/workflow.state.json`, `.aioson/context/handoff-protocol.json`, `.aioson/context/last-handoff.json` |
|
|
32
|
+
| Parallel coordination machine files | `.aioson/context/parallel/*.json` |
|
|
33
|
+
| Simple implementation plans | `.aioson/context/simple-plans/{slug}.md` |
|
|
34
|
+
| Retrospective dossier | `.aioson/context/retro/{slug}.md` (or `window-last-{N}.md`) ← harness:retro |
|
|
35
|
+
| Squad definitions | `.aioson/squads/{slug}/` |
|
|
35
36
|
| Skill manifests | `.aioson/skills/{category}/{slug}/SKILL.md` |
|
|
36
37
|
| Feature artifacts | `.aioson/context/{artifact}-{slug}.md` |
|
|
37
38
|
| Project artifacts | `.aioson/context/{artifact}.md` |
|
|
@@ -46,10 +47,11 @@ architecture.md ← architect
|
|
|
46
47
|
ui-spec-{slug}.md ← ux-ui
|
|
47
48
|
prd.md / prd-{slug}.md ← product
|
|
48
49
|
spec-{slug}.md ← dev
|
|
49
|
-
implementation-plan-{slug}.md ← pm
|
|
50
|
-
simple-plans/{slug}.md ← dev / deyvin
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
implementation-plan-{slug}.md ← pm
|
|
51
|
+
simple-plans/{slug}.md ← dev / deyvin
|
|
52
|
+
retro/{slug}.md ← harness:retro (retrospective dossier; window-last-{N}.md for windows)
|
|
53
|
+
features.md ← product / pm
|
|
54
|
+
project-pulse.md ← all agents (update at session end)
|
|
53
55
|
conformance-{slug}.yaml ← conformance machine-readable exception
|
|
54
56
|
security-findings-{slug}.json ← pentester/qa security findings exception
|
|
55
57
|
workflow.state.json ← workflow runtime exception
|
package/template/AGENTS.md
CHANGED
|
@@ -102,7 +102,7 @@ When running Codex directly (without `aioson workflow:next`), these rules apply:
|
|
|
102
102
|
- For implementation requests (code changes, feature build, refactor, bugfix), default to workflow routing and execute via the next workflow stage agent (typically `@dev` after required upstream stages).
|
|
103
103
|
- Exception: if the user explicitly activates `@deyvin` (or the compatibility alias `@pair`), it may work directly only as a continuity / pair-programming agent for existing known context and a small validated slice. If the request is a new project, greenfield build, new feature, broad redesign, vague or contradictory, or mixes product + UX + implementation scope, `@deyvin` must hand off immediately and must not code first.
|
|
104
104
|
- Official workflow agents (`@setup`, `@product`, `@analyst`, `@scope-check`, `@architect`, `@ux-ui`, `@pm`, `@orchestrator`, `@dev`, `@qa`) must stay inside the workflow. Do not answer requests outside the current agent's scope.
|
|
105
|
-
- Between agent handoffs, your ONLY valid output is: which agent is next and why. Do not continue into that agent's work. Single exception: when `auto_handoff: true` is set in `project.context.md`, the agents covered by `.aioson/docs/autopilot-handoff.md` auto-invoke the next agent's skill instead of stopping
|
|
105
|
+
- Between agent handoffs, your ONLY valid output is: which agent is next and why. Do not continue into that agent's work. Single exception: when `auto_handoff: true` is set in `project.context.md`, the agents covered by `.aioson/docs/autopilot-handoff.md` auto-invoke the next agent's skill instead of stopping. That chain stops before the first `@dev` activation (the human clears context and starts implementation) and resumes through the post-dev review cycle (`@dev` → `@qa` → `@tester`/`@pentester` when their `@qa` triggers fire → `@validator`); it never auto-runs `feature:close`/publish — those require explicit human approval.
|
|
106
106
|
- If `project.context.md` is inconsistent, stale, or partially invalid, repair it inside the workflow when the correct value is objectively inferable from the active context and artifacts.
|
|
107
107
|
- If a context field is still uncertain, route back to `@setup` inside the workflow instead of offering direct execution as a workaround.
|
|
108
108
|
- Never silently bypass workflow after `@setup` or after collecting requirements.
|
package/template/CLAUDE.md
CHANGED
|
@@ -103,7 +103,7 @@ When running Claude Code directly (without `aioson workflow:next`), these rules
|
|
|
103
103
|
**Hard constraints — no exceptions:**
|
|
104
104
|
- You MUST NEVER implement code, produce UI specs, write PRDs, or answer technical tasks outside an activated agent.
|
|
105
105
|
- If the user explicitly activates `/deyvin` or `/pair`, it may act directly only for continuity on existing known context and a small validated slice. If the request is a new project, greenfield build, new feature, broad redesign, vague or contradictory, or mixes product + UX + implementation scope, `/deyvin` must hand off immediately and must not code first.
|
|
106
|
-
- Between agent handoffs, your ONLY valid output is: which agent is next and why. Do not continue into that agent's work. Single exception: when `auto_handoff: true` is set in `project.context.md`, the agents covered by `.aioson/docs/autopilot-handoff.md` auto-invoke the next agent's skill instead of stopping
|
|
106
|
+
- Between agent handoffs, your ONLY valid output is: which agent is next and why. Do not continue into that agent's work. Single exception: when `auto_handoff: true` is set in `project.context.md`, the agents covered by `.aioson/docs/autopilot-handoff.md` auto-invoke the next agent's skill instead of stopping. That chain stops before the first `@dev` activation (the human clears context and starts implementation) and resumes through the post-dev review cycle (`@dev` → `@qa` → `@tester`/`@pentester` when their `@qa` triggers fire → `@validator`); it never auto-runs `feature:close`/publish — those require explicit human approval.
|
|
107
107
|
- If the user sends an implementation request before setup is complete: do not implement. Tell them to activate `/setup` first.
|
|
108
108
|
- If the user insists on bypassing an agent stage: refuse and redirect. Urgency or complexity do not override this rule.
|
|
109
109
|
|