@cassiomc1/forgeloop 0.1.2 → 0.1.4

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.
@@ -14,6 +14,11 @@ alwaysApply: true
14
14
  7. Diagnose failures before fixing them and do not repeat an attempt without new evidence.
15
15
  8. Request authority for unrelated external or destructive actions, installations, and publications. For a task-scoped missing Qwen-MM-Plugins capability, follow `LOOP_ENGINEERING.md`; API credentials and system dependencies remain separately gated.
16
16
  9. After implementation begins, do not return a final result in `EXECUTING`: follow `VERIFYING` → structured evidence → `REVIEWING` → execution receipt → validator-backed `COMPLETE`; otherwise report `BLOCKED` or `PARTIALLY VERIFIED` with exact findings.
17
+
18
+ After implementation work for the current task is complete, run `forgeloop next`
19
+ before returning a final result. Follow the returned lifecycle action until
20
+ ForgeLoop reaches a terminal state or an explicit blocker.
21
+
17
22
  10. Report only demonstrated results and checks.
18
23
 
19
24
  Do not stop for non-blocking missing product details. When a safe, reversible
@@ -22,3 +27,14 @@ load-bearing, irreversible, externally consequential, unsafe, or real
22
27
  user/business decisions.
23
28
 
24
29
  The loop and router are canonical sources; do not duplicate domain rules.
30
+
31
+ ## Pre-question decisions
32
+
33
+ Before asking any product-detail question, classify it as `BLOCKING` or
34
+ `NON_BLOCKING` using `LOOP_ENGINEERING.md`. For
35
+ `NON_BLOCKING`, choose a safe reversible local default, record it in
36
+ `current-contract.assumptions[]`, and continue. For `BLOCKING`, persist
37
+ `current-contract.json` with `unresolvedDecisions[]` and a blocking reason
38
+ before asking. Do not ask the user to choose among reversible local
39
+ product-positioning alternatives; the canonical checklist and boundary remain
40
+ in `LOOP_ENGINEERING.md`.
@@ -12,6 +12,11 @@ directory or file rules.
12
12
  - Diagnose the cause before fixing a failure; do not make random attempts.
13
13
  - Do not install unrelated software, publish, delete, migrate, or alter external state without authority. For a task-scoped missing Qwen-MM-Plugins capability, follow `LOOP_ENGINEERING.md`; API credentials and system dependencies remain separately gated.
14
14
  - After implementation begins, do not return a final result in `EXECUTING`: follow `VERIFYING` → structured evidence → `REVIEWING` → execution receipt → validator-backed `COMPLETE`; otherwise report `BLOCKED` or `PARTIALLY VERIFIED` with exact findings.
15
+
16
+ After implementation work for the current task is complete, run `forgeloop next`
17
+ before returning a final result. Follow the returned lifecycle action until
18
+ ForgeLoop reaches a terminal state or an explicit blocker.
19
+
15
20
  - Report the result, checks actually run, limitations, and publication state.
16
21
 
17
22
  Do not stop for non-blocking missing product details. When a safe, reversible
@@ -20,3 +25,14 @@ load-bearing, irreversible, externally consequential, unsafe, or real
20
25
  user/business decisions.
21
26
 
22
27
  The loop and router are canonical; do not replicate domain rules here.
28
+
29
+ ## Pre-question decisions
30
+
31
+ Before asking any product-detail question, classify it as `BLOCKING` or
32
+ `NON_BLOCKING` using `LOOP_ENGINEERING.md`. For
33
+ `NON_BLOCKING`, choose a safe reversible local default, record it in
34
+ `current-contract.assumptions[]`, and continue. For `BLOCKING`, persist
35
+ `current-contract.json` with `unresolvedDecisions[]` and a blocking reason
36
+ before asking. Do not ask the user to choose among reversible local
37
+ product-positioning alternatives; the canonical checklist and boundary remain
38
+ in `LOOP_ENGINEERING.md`.
package/AGENTS.md CHANGED
@@ -14,7 +14,11 @@ specific rule overrides them.
14
14
  9. Before implementation, create/validate `.forgeloop/current-contract.json`, persist deterministic routing, satisfy mandatory gates, and require `forgeloop preflight` to return `READY`.
15
15
  10. Before claiming `COMPLETE`, require `forgeloop complete` to return `VALID`; otherwise report completion as not protocol-verified.
16
16
  11. After implementation begins, do not return a final result in `EXECUTING`: advance through `VERIFYING`, record structured evidence, reach `REVIEWING`, prepare/update the execution receipt, and require `forgeloop complete` to return `VALID`. If closure cannot be reached, report `BLOCKED` or `PARTIALLY VERIFIED` with exact findings.
17
- 12. Finish with the result, checks actually run, limitations, and publication state.
17
+
18
+ 12. After implementation work for the current task is complete, run `forgeloop next`
19
+ before returning a final result. Follow the returned lifecycle action until
20
+ ForgeLoop reaches a terminal state or an explicit blocker.
21
+ 13. Finish with the result, checks actually run, limitations, and publication state.
18
22
 
19
23
  Do not stop for non-blocking missing product details. When a safe, reversible
20
24
  local default exists, record it as an agent assumption and follow the Blocking vs Non-Blocking Decisions policy in `LOOP_ENGINEERING.md`. Ask only for
@@ -22,3 +26,14 @@ load-bearing, irreversible, externally consequential, unsafe, or real
22
26
  user/business decisions.
23
27
 
24
28
  The guides provide technical defaults; explicit requirements and project evidence prevail.
29
+
30
+ ## Pre-question decisions
31
+
32
+ Before asking any product-detail question, classify it as `BLOCKING` or
33
+ `NON_BLOCKING` using `LOOP_ENGINEERING.md`. For
34
+ `NON_BLOCKING`, choose a safe reversible local default, record it in
35
+ `current-contract.assumptions[]`, and continue. For `BLOCKING`, persist
36
+ `current-contract.json` with `unresolvedDecisions[]` and a blocking reason
37
+ before asking. Do not ask the user to choose among reversible local
38
+ product-positioning alternatives; the canonical checklist and boundary remain
39
+ in `LOOP_ENGINEERING.md`.
package/CLAUDE.md CHANGED
@@ -10,7 +10,11 @@ When working in this repository:
10
10
  6. Investigate the root cause of a failure before fixing it.
11
11
  7. Request authority for unrelated installation, publication, deletion, migration, or another external or destructive action. For a task-scoped missing Qwen-MM-Plugins capability, follow `LOOP_ENGINEERING.md`; API credentials and system dependencies remain separately gated.
12
12
  8. After implementation begins, do not return a final result in `EXECUTING`: follow `VERIFYING` → structured evidence → `REVIEWING` → execution receipt → validator-backed `COMPLETE`; otherwise report `BLOCKED` or `PARTIALLY VERIFIED` with exact findings.
13
- 9. Report current evidence, limitations, and publication state without claiming checks that were not run.
13
+
14
+ 9. After implementation work for the current task is complete, run `forgeloop next`
15
+ before returning a final result. Follow the returned lifecycle action until
16
+ ForgeLoop reaches a terminal state or an explicit blocker.
17
+ 10. Report current evidence, limitations, and publication state without claiming checks that were not run.
14
18
 
15
19
  Do not stop for non-blocking missing product details. When a safe, reversible
16
20
  local default exists, record it as an agent assumption and follow the Blocking vs Non-Blocking Decisions policy in `LOOP_ENGINEERING.md`. Ask only for
@@ -18,3 +22,14 @@ load-bearing, irreversible, externally consequential, unsafe, or real
18
22
  user/business decisions.
19
23
 
20
24
  Do not duplicate guide rules here; treat the loop and router as canonical sources.
25
+
26
+ ## Pre-question decisions
27
+
28
+ Before asking any product-detail question, classify it as `BLOCKING` or
29
+ `NON_BLOCKING` using `LOOP_ENGINEERING.md`. For
30
+ `NON_BLOCKING`, choose a safe reversible local default, record it in
31
+ `current-contract.assumptions[]`, and continue. For `BLOCKING`, persist
32
+ `current-contract.json` with `unresolvedDecisions[]` and a blocking reason
33
+ before asking. Do not ask the user to choose among reversible local
34
+ product-positioning alternatives; the canonical checklist and boundary remain
35
+ in `LOOP_ENGINEERING.md`.
@@ -7,31 +7,162 @@
7
7
  ## Blocking vs Non-Blocking Decisions
8
8
 
9
9
  Classify every unresolved decision before deciding whether to ask the user.
10
+ The question is a consequence of a `BLOCKING` classification, never a default
11
+ response to ordinary uncertainty.
10
12
 
11
- `NON_BLOCKING` applies when a safe local default exists, the choice is
12
- reversible, it does not change external state, it is not sensitive or
13
- authoritative, and it does not assert a real user or business fact. Examples
14
- include fictional company name, demo phone number, placeholder copy, temporary logo text,
15
- palette, typography, local-only fictional identity, fictional identity, demo
16
- contacts, visual defaults, section ordering, and local-only form behavior.
13
+ ### Pre-question decision classification
17
14
 
18
- `BLOCKING` applies when proceeding would require real legal business name,
19
- real contact details, credentials, payment data, production endpoint,
20
- deployment target, deployment or domain authority, destructive operation,
21
- irreversible architectural decision, irreversible data choice, regulated/legal claim,
22
- regulated claim, or another externally consequential/high-impact decision.
15
+ Before asking the user any product-detail question:
16
+
17
+ 1. Classify the unresolved detail as `BLOCKING` or `NON_BLOCKING`.
18
+ 2. If `NON_BLOCKING`, do not ask; choose the smallest reasonable reversible
19
+ local default, record it in `current-contract.assumptions[]`, and continue.
20
+ 3. If `BLOCKING`, record the detail in
21
+ `current-contract.unresolvedDecisions[]`, persist and validate the contract,
22
+ then ask the user with a blocking reason.
23
+
24
+ In short, `NON_BLOCKING` means do not ask and record it in `current-contract.assumptions[]`; `BLOCKING` means persist the contract and ask the user with a blocking reason.
25
+
26
+ There is no third `UNKNOWN → ask` path for ordinary reversible product
27
+ ambiguity. The invariant is:
28
+
29
+ ```text
30
+ QUESTION
31
+ must never happen
32
+ before CLASSIFICATION
33
+ ```
34
+
35
+ ### PRE-QUESTION CHECK
36
+
37
+ Before asking the user, answer every item:
38
+
39
+ ```text
40
+ [ ] Is this a real user/business fact?
41
+ [ ] Is this sensitive?
42
+ [ ] Is this authoritative?
43
+ [ ] Does it affect external state?
44
+ [ ] Is it destructive?
45
+ [ ] Is it irreversible?
46
+ [ ] Would a safe local reversible default materially misrepresent the user?
47
+ ```
48
+
49
+ If all answers are `NO`, classify the detail as `NON_BLOCKING`, record an
50
+ assumption, and continue. If any answer is `YES`, classify it as `BLOCKING`,
51
+ persist the contract before clarification, and attach a blocking reason.
23
52
 
24
53
  ### Safe assumption rule
25
54
 
26
- When a missing product detail is non-blocking, choose the smallest reasonable reversible default, explicitly classify it as an agent assumption, and record it in `current-contract.assumptions[]`. Each assumption must include `value`, `reason`, `scope`, `reversible=true`, and `source=agent-default`. Do not place resolved safe assumptions in unresolvedDecisions[]. Never present an assumption as a verified user or business fact.
55
+ `NON_BLOCKING` applies when the choice is `SAFE + REVERSIBLE + LOCAL +
56
+ NON-SENSITIVE + NON-AUTHORITATIVE + NON-DESTRUCTIVE` and does not assert a real
57
+ user or business fact. Each recorded `ASSUMPTION` must include `value`, `reason`,
58
+ `scope`, `reversible=true`, and `source=agent-default`. Do not place resolved
59
+ safe assumptions in `unresolvedDecisions[]`, and never present an assumption as
60
+ a verified user or business fact.
61
+
62
+ Generally `NON_BLOCKING` when no real business fact is supplied:
63
+
64
+ ```text
65
+ practice-area emphasis
66
+ fictional positioning
67
+ representative specialty mix
68
+ tone of the fictional firm
69
+ hero messaging
70
+ section ordering
71
+ fictional partner/attorney profiles
72
+ fictional office location
73
+ visual identity
74
+ palette
75
+ typography
76
+ local fictional brand name
77
+ local-only fictional identity
78
+ fictional company name
79
+ demo contact details
80
+ demo phone number
81
+ placeholder legal-service descriptions
82
+ placeholder copy
83
+ fictional testimonials
84
+ temporary logo text
85
+ local-only form behavior
86
+ ```
87
+
88
+ These examples remain non-blocking only when they stay safe, reversible,
89
+ local, non-sensitive, non-authoritative, and non-destructive. Do not hardcode
90
+ one law-firm positioning into the protocol or tests.
91
+
92
+ ### Blocking boundary
27
93
 
28
- The assumption boundary is:
94
+ `BLOCKING` applies when proceeding requires any of the following:
29
95
 
30
96
  ```text
31
- SAFE + REVERSIBLE + LOCAL + NON-SENSITIVE + NON-AUTHORITATIVE + NON-DESTRUCTIVE
97
+ real legal business name
98
+ real contact information
99
+ real contact details
100
+ real attorney identities
101
+ credentials
102
+ payment information
103
+ payment data
104
+ production endpoints
105
+ production endpoint
106
+ deployment target
107
+ deployment/domain authority
108
+ destructive operations
109
+ destructive operation
110
+ irreversible architecture
111
+ irreversible architectural decision
112
+ irreversible data decisions
113
+ regulated or legal claims
114
+ regulated/legal claim
115
+ real compliance representations
116
+ real business facts not safely inferable
32
117
  ```
33
118
 
34
- Record the choice with an explicit `ASSUMPTION` marker. Unresolved blocking decisions must be recorded in `current-contract.unresolvedDecisions[]`; they prevent `preflight` from returning `READY` and block `EXECUTING` until resolved, but do not prevent contract serialization.
119
+ Blocking decisions must be written to
120
+ `current-contract.unresolvedDecisions[]`. They make `preflight` return
121
+ `BLOCKED`, but they do not prevent contract serialization.
122
+ Unresolved blocking decisions are recorded in `current-contract.unresolvedDecisions[]`.
123
+
124
+ ### Question justification invariant
125
+
126
+ Asking the user is allowed only when `blockingReason` is present and comes from
127
+ a blocking category such as:
128
+
129
+ A user question requires a `blockingReason`; a question without one is invalid.
130
+
131
+ ```text
132
+ REAL_BUSINESS_FACT_REQUIRED
133
+ SENSITIVE_VALUE_REQUIRED
134
+ EXTERNAL_AUTHORITY_REQUIRED
135
+ IRREVERSIBLE_DECISION_REQUIRED
136
+ REGULATED_CLAIM_REQUIRED
137
+ DESTRUCTIVE_ACTION_REQUIRED
138
+ ```
139
+
140
+ Multiple reasonable aesthetic or positioning choices do not justify a question.
141
+ The deterministic support helper in `src/core/decision-classification.js`
142
+ validates this boundary; it does not use an LLM or parse natural language.
143
+
144
+ ### Contract-before-clarification sequence
145
+
146
+ The operational order is:
147
+
148
+ ```text
149
+ DISCOVERY
150
+
151
+ classify unresolved details
152
+
153
+ create and persist current-contract.json
154
+
155
+ persist assumptions[] and unresolvedDecisions[]
156
+
157
+ validate contract
158
+
159
+ if unresolvedDecisions.length > 0
160
+
161
+ ask user with blockingReason
162
+ ```
163
+
164
+ No clarification stop is allowed before a serialized contract exists. A
165
+ non-blocking ambiguity never becomes a contract blocker.
35
166
 
36
167
  ## Serialized protocol preparation
37
168
 
@@ -72,20 +203,44 @@ Implementation finished is not task finished, and tests executed are not the
72
203
  same as verification recorded. After implementation begins, do not stop or
73
204
  return the final result while the ForgeLoop task remains in `EXECUTING`.
74
205
 
206
+ ACT → QUERY NEXT → ACT → QUERY NEXT → … → TERMINAL
207
+
208
+ At each lifecycle boundary, query persisted state with `forgeloop next` before
209
+ choosing the next action. Always query after implementation, verification,
210
+ correction, and review. The query is advisory and read-only; the host agent
211
+ runs checks and applies the returned legal transition or repair action.
212
+
75
213
  ```text
76
214
  POST-IMPLEMENTATION CLOSURE
77
215
 
78
216
  EXECUTING
79
- advance
80
- VERIFYING
81
- run checks and record structured evidence
82
- REVIEWING
83
- prepare/update the execution receipt
84
- forgeloop complete
217
+ forgeloop next
218
+ advance --to VERIFYING
219
+ forgeloop next
220
+ prepare-completion
221
+
222
+ run applicable project checks
223
+
224
+ record observed results with record-check
225
+ ↓ forgeloop next
226
+ advance --to REVIEWING
227
+ ↓ forgeloop next
228
+ complete
85
229
  ↓ VALID
86
230
  COMPLETE
87
231
  ```
88
232
 
233
+ `prepare-completion` creates or refreshes the in-progress execution receipt.
234
+ It does not claim completion. The receipt is the structured container used by
235
+ subsequent `record-check` operations; completion remains invalid until required
236
+ observed evidence, review state, chronology, and validator requirements are
237
+ satisfied.
238
+
239
+ The host agent runs applicable checks after the receipt exists, records their
240
+ observed results with `record-check`, and queries `forgeloop next` before each
241
+ subsequent lifecycle action. `record-check` records results already observed by
242
+ the agent; it never executes the supplied command text.
243
+
89
244
  Continue until the terminal outcome is either validator-backed `COMPLETE` or
90
245
  an explicitly reported `BLOCKED` / `PARTIALLY VERIFIED` result with exact
91
246
  unresolved findings. Record verification evidence before review. If a required
@@ -15,7 +15,10 @@ policy are all present.
15
15
  | Portability | Node 20/22/24 Linux depth, OS smoke coverage, path/line-ending fixtures, and adapter compatibility evidence. |
16
16
  | Observability | `inspect`/`status`/`validate-protocol` shared derived state classification, real schema health, shared evidence, rich doctor findings, receipts, and no telemetry. |
17
17
  | Completion enforcement | Canonical contract, persisted route, guide-declared gates, preflight, phase ledger, structured checks, evidence coverage, `audit`, `report`, and `complete` validators. |
18
- | Pre-contract autonomy | Blocking vs Non-Blocking Decisions policy, explicit ASSUMPTION / source=agent-default recording, safe-boundary invariant, positive and negative tests, and a blind run showing non-blocking ambiguity continues while blocking ambiguity remains user-gated. |
18
+ | Agent lifecycle navigation | Read-only `forgeloop next` decisions, stable action/reason output, persisted-state safety, and adapter guidance at lifecycle boundaries. |
19
+ | Execution → Verification handoff | Legal `EXECUTING` → `VERIFYING` transition, implementation-step reconciliation, and preservation of verification evidence. |
20
+ | Pre-contract autonomy — structural | Blocking vs Non-Blocking Decisions policy, classify-before-ask invariant, PRE-QUESTION CHECK, explicit ASSUMPTION / source=agent-default recording, contract-before-clarification ordering, deterministic reason-code helper, and positive/negative tests. |
21
+ | Pre-contract autonomy — cross-agent live robustness | Independent live-agent behavior across fresh package installs, exact blind prompts, one-process/no-subagent topology, and separate evidence for non-blocking continuation versus blocking clarification. Structural coverage does not imply live cross-agent robustness. |
19
22
  | Resume/checkpoint | Atomic local state, contract/HEAD/artifact freshness, age warning, schema/secret validation, status, safe validation, and bounded clearing without persisting derived freshness fields. |
20
23
  | Multi-agent coordination | Self-contained briefs, write/write and write/read ownership checks, dependency-set validation, reviewer independence, normalized results, and inline fallback. |
21
24
  | Security boundaries | Realpath containment, bounded untrusted JSON, threat model, nested secret scanning, publication evidence, and explicit authority rules. |
@@ -35,6 +38,18 @@ policy are all present.
35
38
  - Literal graph runtime and runtime multi-agent orchestration are `N/A by
36
39
  design`; compatible harnesses own those capabilities.
37
40
 
41
+ ## Blind-run conformance position
42
+
43
+ | Dimension | Classification |
44
+ | --- | --- |
45
+ | Pre-contract autonomy — structural | IMPLEMENTED / LOCAL TESTS PASS — 369 Node tests and 42 Python tests, with focused autonomy/conformance checks green |
46
+ | Pre-contract autonomy — cross-agent live robustness | NOT_PROVEN — the prior third blind run was reported as PASS, the fourth blind run failed on a non-blocking question, and the fifth blind run is pending a newly published package |
47
+ | Execution → Verification | REPRODUCED FAILURE in fourth blind run before implementation |
48
+ | Verification serialization | NOT_REACHED in fourth blind run |
49
+ | Review transition | NOT_REACHED in fourth blind run |
50
+ | Receipt generation | NOT_REACHED in fourth blind run |
51
+ | Full conformance | PARTIAL |
52
+
38
53
  ## Evidence matrix
39
54
 
40
55
  The score is evidence-backed only when the contract and its executable proof
@@ -51,7 +66,8 @@ are both present:
51
66
  | Security boundary | realpath containment, bounded JSON, `THREAT_MODEL.md`, secret-free artifacts, authority and no-runtime rules | `tests/security-limits.test.js`, Markdown/loop validators, and `scripts/scan_secrets.py` |
52
67
  | Cross-artifact conformance | `src/core/conformance.js`, `classifyLoadedWorkState`, and `forgeloop validate-protocol --contract-file` | `tests/conformance.test.js`, `tests/validate-protocol-cli.test.js`, and protocol fixtures covering precedence and stale evidence |
53
68
  | Protocol preparation and completion | `src/core/preflight.js`, `src/core/completion.js`, `src/core/events.js`, policy packs, and portable bundles | `tests/preflight.test.js`, `tests/completion.test.js`, `tests/lifecycle.test.js`, `tests/policy.test.js`, and `tests/bundle.test.js` |
54
- | Pre-contract autonomy | `LOOP_ENGINEERING.md`, `CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`, `.cursor/rules/project-loop.mdc`, and the blind conformance artifacts | `tests/autonomy-policy.test.js`, `tests/conformance-scenarios.test.js` |
69
+ | Pre-contract autonomy — structural | `LOOP_ENGINEERING.md`, `src/core/decision-classification.js`, `CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`, `.cursor/rules/project-loop.mdc` | `tests/decision-classification.test.js`, `tests/autonomy-policy.test.js`, `tests/preflight.test.js` |
70
+ | Pre-contract autonomy — cross-agent live robustness | Prior third blind-run result reported in the hardening brief, `conformance/runs/2026-08-13-codex-fourth-live.md`, and the exact blind request | `tests/conformance-scenarios.test.js`; fifth run remains pending publication and execution |
55
71
 
56
72
  The implementation references above are local observations. OS runners,
57
73
  remote links, provider sessions, publication, and deployment remain `Not
package/README.md CHANGED
@@ -137,6 +137,8 @@ Protocol-support commands are local and do not invoke an agent or model:
137
137
  npx @cassiomc1/forgeloop route --work complete-website --surface ui --risk untrusted-input
138
138
  npx @cassiomc1/forgeloop activate
139
139
  npx @cassiomc1/forgeloop preflight --json
140
+ npx @cassiomc1/forgeloop next
141
+ npx @cassiomc1/forgeloop next --json
140
142
  npx @cassiomc1/forgeloop advance --to EXECUTING
141
143
  npx @cassiomc1/forgeloop advance --to VERIFYING
142
144
  npx @cassiomc1/forgeloop prepare-completion --json
@@ -155,6 +157,25 @@ npx @cassiomc1/forgeloop validate-receipt --file ./execution-receipt.json --json
155
157
  npx @cassiomc1/forgeloop validate-protocol --route-file ./routing-result.json --state-file .forgeloop/work-state.json --receipt-file ./execution-receipt.json --contract-file .forgeloop/current-contract.json --json
156
158
  ```
157
159
 
160
+ The query-driven post-implementation path is:
161
+
162
+ ```text
163
+ implementation
164
+ → forgeloop next
165
+ → advance --to VERIFYING
166
+ → forgeloop next
167
+ → prepare-completion
168
+ → forgeloop next
169
+ → checks + record-check
170
+ → forgeloop next
171
+ → advance --to REVIEWING
172
+ → forgeloop next
173
+ → complete
174
+ ```
175
+
176
+ `forgeloop next` and `forgeloop next --json` read persisted state only. They do
177
+ not run project checks or mutate protocol artifacts.
178
+
158
179
  `route` expands declared signals into deterministic guide IDs and reason codes.
159
180
  `activate` records a session marker without storing prompts or hidden reasoning.
160
181
  Before implementation, write the canonical contract, persist the route, create
@@ -8,6 +8,7 @@ Run a scenario in a disposable target using the Standard profile first:
8
8
 
9
9
  ```bash
10
10
  npx @cassiomc1/forgeloop preflight --json
11
+ npx @cassiomc1/forgeloop next --json
11
12
  npx @cassiomc1/forgeloop audit --json
12
13
  npx @cassiomc1/forgeloop complete --json
13
14
  ```
@@ -15,12 +16,16 @@ npx @cassiomc1/forgeloop complete --json
15
16
  The expected post-implementation path is:
16
17
 
17
18
  ```text
18
- EXECUTING
19
+ implementation
20
+ → forgeloop next
19
21
  → advance --to VERIFYING
22
+ → forgeloop next
20
23
  → prepare-completion
21
- record-check for each observed check
24
+ forgeloop next
25
+ → checks + record-check
26
+ → forgeloop next
22
27
  → advance --to REVIEWING
23
- audit
28
+ forgeloop next
24
29
  → complete
25
30
  ```
26
31