@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.
- package/.cursor/rules/project-loop.mdc +16 -0
- package/.github/copilot-instructions.md +16 -0
- package/AGENTS.md +16 -1
- package/CLAUDE.md +16 -1
- package/LOOP_ENGINEERING.md +176 -21
- package/QUALITY_SCORECARD.md +18 -2
- package/README.md +21 -0
- package/conformance/README.md +8 -3
- package/conformance/runs/2026-08-13-codex-fourth-live.md +309 -0
- package/package.json +1 -1
- package/src/cli.js +25 -6
- package/src/commands/next.js +29 -0
- package/src/core/completion-artifacts.js +49 -9
- package/src/core/completion-relationships.js +141 -0
- package/src/core/completion.js +33 -62
- package/src/core/decision-classification.js +55 -0
- package/src/core/events.js +34 -0
- package/src/core/execution-prerequisites.js +200 -0
- package/src/core/next-action.js +709 -0
- package/src/core/phase.js +142 -18
- package/src/core/preflight.js +165 -2
|
@@ -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
|
-
|
|
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
|
-
|
|
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`.
|
package/LOOP_ENGINEERING.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
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
|
-
|
|
94
|
+
`BLOCKING` applies when proceeding requires any of the following:
|
|
29
95
|
|
|
30
96
|
```text
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
↓
|
|
80
|
-
VERIFYING
|
|
81
|
-
↓
|
|
82
|
-
|
|
83
|
-
↓
|
|
84
|
-
|
|
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
|
package/QUALITY_SCORECARD.md
CHANGED
|
@@ -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
|
-
|
|
|
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
|
|
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
|
package/conformance/README.md
CHANGED
|
@@ -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
|
-
|
|
19
|
+
implementation
|
|
20
|
+
→ forgeloop next
|
|
19
21
|
→ advance --to VERIFYING
|
|
22
|
+
→ forgeloop next
|
|
20
23
|
→ prepare-completion
|
|
21
|
-
→
|
|
24
|
+
→ forgeloop next
|
|
25
|
+
→ checks + record-check
|
|
26
|
+
→ forgeloop next
|
|
22
27
|
→ advance --to REVIEWING
|
|
23
|
-
→
|
|
28
|
+
→ forgeloop next
|
|
24
29
|
→ complete
|
|
25
30
|
```
|
|
26
31
|
|