@cassiomc1/forgeloop 0.1.5 → 0.1.8

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/README.md CHANGED
@@ -16,6 +16,11 @@ ForgeLoop is the portable, evidence-first loop that connects deterministic
16
16
  routing, checkpointed state, observable evidence, conformance, and delegation
17
17
  for compatible agent harnesses.
18
18
 
19
+ The npm package also ships the local `forgeloop` CLI. In a target project it
20
+ installs canonical documents under `.forgeloop/kit/`, keeps only small native
21
+ discovery shims at the root, and stores mutable protocol artifacts under
22
+ `.forgeloop/`.
23
+
19
24
  ## Catalog
20
25
 
21
26
  | Topic | When to use it | Guide |
@@ -25,6 +30,7 @@ for compatible agent harnesses.
25
30
  | Testing | Risk-based testing strategy | [`test-code-eng.md`](./ENG/test-code-eng.md) |
26
31
  | Security | Web, mobile, desktop, APIs, and supply chain | [`sec-code-eng.md`](./ENG/sec-code-eng.md) |
27
32
  | Design | Visual direction, UX, motion, and perceived performance | [`design-code-eng.md`](./ENG/design-code-eng.md) |
33
+ | Taste frontend | Contextual design-read, anti-slop, and visual pre-flight for premium frontend work | [`taste-frontend-eng.md`](./ENG/taste-frontend-eng.md) |
28
34
  | Performance | Measurement, diagnosis, budgets, and optimization | [`perf-code-eng.md`](./ENG/perf-code-eng.md) |
29
35
  | Accessibility | WCAG 2.2-oriented protocol for interfaces | [`accessibility-eng.md`](./ENG/accessibility-eng.md) |
30
36
  | Web games | Architecture, design, and operation of 2D, 3D, and procedural games | [`games-code-design-web-eng.md`](./ENG/games-code-design-web-eng.md) |
@@ -38,10 +44,12 @@ and catalog remain synchronized.
38
44
  The kit turns each request into a verifiable cycle: discover the project,
39
45
  define an execution contract, select applicable guides, execute, verify,
40
46
  diagnose, and correct until success or a genuine external blocker.
41
- [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) is the operational source;
47
+ [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) is the operational source (and
48
+ is installed under `.forgeloop/kit/` in a target);
42
49
  [`GUIDE_ROUTER.md`](./GUIDE_ROUTER.md) prevents irrelevant context from being
43
50
  loaded; and [`PROJECT_PROFILE.md`](./PROJECT_PROFILE.md) preserves only durable,
44
- proven project facts.
51
+ proven project facts (installed as `.forgeloop/kit/PROJECT_PROFILE.md` in a
52
+ target).
45
53
 
46
54
  The canonical system map, including the routing/state/evidence architecture, is
47
55
  in [`LOOP_SYSTEM_DESIGN.md`](./LOOP_SYSTEM_DESIGN.md).
@@ -50,60 +58,72 @@ in [`LOOP_SYSTEM_DESIGN.md`](./LOOP_SYSTEM_DESIGN.md).
50
58
  flowchart TB
51
59
  root["FORGELOOP"]
52
60
 
53
- subgraph surfaces["CONTROL SURFACES"]
54
- direction LR
55
- routing["ROUTING"] --> routingFacts["deterministic<br/>decisions"]
56
- state["STATE"] --> checkpoint["checkpoint<br/>facts"]
57
- evidence["EVIDENCE"] --> claims["observable<br/>claims"]
58
-
59
- checkpoint --> repository["repository"]
60
- checkpoint --> contract["contract"]
61
- repository --> freshness["freshness"]
62
- contract --> freshness
63
- end
64
-
65
- root --> routing
66
- root --> state
67
- root --> evidence
68
-
69
- routingFacts --> conformance["CONFORMANCE"]
70
- routingFacts --> delegation["DELEGATION"]
61
+ root --> entry["native adapters<br/>+ .forgeloop/kit/"]
62
+ entry --> discovery["discovery +<br/>project profile"]
63
+ discovery --> contract["current<br/>contract"]
64
+ contract --> routing["deterministic<br/>route"]
65
+
66
+ contract --> preflight["preflight"]
67
+ routing --> preflight
68
+ gates["required<br/>gates"] --> preflight
69
+ preflight -->|READY| ready["PREFLIGHT_READY"]
70
+ preflight -->|BLOCKED| blocker["repair /<br/>blocker"]
71
+
72
+ ready --> state["work-state<br/>checkpoint"]
73
+ ready --> events["append-only<br/>event ledger"]
74
+ state --> lifecycle["plan → execute<br/>→ verify → review"]
75
+ lifecycle --> prepare["prepare<br/>completion receipt"]
76
+ prepare --> checks["checks + structured<br/>evidence"]
77
+ checks --> receipt["updated execution<br/>receipt"]
78
+ checks --> audit["audit +<br/>complete"]
79
+ events --> audit
80
+
81
+ contract --> freshness["freshness<br/>fingerprints"]
82
+ routing --> freshness
83
+ state --> freshness
84
+ checks --> freshness
85
+ routing --> conformance["validate-protocol<br/>/ conformance"]
86
+ state --> conformance
87
+ receipt --> conformance
71
88
  freshness --> conformance
72
- freshness --> delegation
73
- claims --> conformance
74
- claims --> delegation
89
+ conformance --> verdict["VALID / INCOMPLETE /<br/>STALE / INCONSISTENT / INVALID"]
90
+ audit --> verdict
75
91
 
76
- conformance --> verdict["VALID / STALE / INVALID"]
77
- delegation --> verdict
78
- verdict --> harness["compatible harness"]
92
+ routing --> delegation["optional bundle /<br/>delegation"]
93
+ checks --> delegation
94
+ delegation --> handoff["handoff to<br/>compatible harness"]
95
+ verdict --> handoff
96
+ blocker --> handoff
79
97
 
80
98
  classDef root fill:#08090C,stroke:#6E6AF5,stroke-width:3px,color:#EDEEF0;
99
+ classDef entry fill:#101218,stroke:#3EDBB8,stroke-width:2px,color:#EDEEF0;
81
100
  classDef routing fill:#4F46E5,stroke:#A5B4FC,stroke-width:2px,color:#FFFFFF;
82
101
  classDef state fill:#373A46,stroke:#A1A1AA,stroke-width:2px,color:#FFFFFF;
83
102
  classDef evidence fill:#3EDBB8,stroke:#99F6E4,stroke-width:2px,color:#08090C;
84
103
  classDef fact fill:#181B24,stroke:#6E6AF5,stroke-width:1px,color:#EDEEF0;
85
- classDef support fill:#181B24,stroke:#8A8F98,stroke-width:1px,color:#EDEEF0;
86
104
  classDef gate fill:#3730A3,stroke:#A5B4FC,stroke-width:2px,color:#FFFFFF;
87
105
  classDef result fill:#C9A876,stroke:#F5D9A6,stroke-width:2px,color:#08090C;
88
106
  classDef harness fill:#101218,stroke:#3EDBB8,stroke-width:2px,color:#EDEEF0;
89
107
 
90
108
  class root root;
91
- class routing,routingFacts routing;
92
- class state,checkpoint state;
93
- class evidence,claims evidence;
94
- class repository,contract,freshness fact;
95
- class conformance,delegation gate;
109
+ class entry,discovery,delegation entry;
110
+ class routing,preflight,ready routing;
111
+ class state,events,lifecycle state;
112
+ class checks,receipt,audit evidence;
113
+ class contract,freshness,conformance fact;
114
+ class gates,blocker gate;
96
115
  class verdict result;
97
- class harness harness;
98
- style surfaces fill:#101218,stroke:#2D3340,stroke-width:1px,color:#EDEEF0;
116
+ class handoff harness;
99
117
  linkStyle default stroke:#8A8F98,stroke-width:1.5px;
100
118
  ```
101
119
 
102
- Equivalent reading for text-only environments: ForgeLoop turns routing into
103
- deterministic decisions, state into checkpoint facts, and evidence into
104
- observable claims. Repository and contract facts establish freshness; all
105
- three control surfaces feed conformance and delegation, which produce a
106
- `VALID`, `STALE`, or `INVALID` result for the compatible harness.
120
+ Equivalent reading for text-only environments: adapters load the canonical kit;
121
+ discovery creates the contract and deterministic route; contract, route, and
122
+ required gates must produce `PREFLIGHT_READY` before the resumable state and
123
+ append-only event ledger authorize the lifecycle. Verification produces
124
+ structured evidence and a receipt. `audit`/`complete` and `validate-protocol`
125
+ then classify the result as `VALID`, `INCOMPLETE`, `STALE`, `INCONSISTENT`, or
126
+ `INVALID`. Optional delegation creates a handoff; it is not an agent runtime.
107
127
 
108
128
  The operational request loop remains:
109
129
 
@@ -133,16 +153,22 @@ npx @cassiomc1/forgeloop update
133
153
 
134
154
  Protocol-support commands are local and do not invoke an agent or model:
135
155
 
156
+ The lifecycle example assumes that the harness has already written a
157
+ schema-valid `.forgeloop/current-contract.json` and the required
158
+ `.forgeloop/gates/*.json` files. `route` persists routing; `preflight` validates
159
+ the contract, route, and gates before execution.
160
+
136
161
  ```bash
137
162
  npx @cassiomc1/forgeloop route --work complete-website --surface ui --risk untrusted-input
138
163
  npx @cassiomc1/forgeloop activate
139
164
  npx @cassiomc1/forgeloop preflight --json
140
165
  npx @cassiomc1/forgeloop next
141
166
  npx @cassiomc1/forgeloop next --json
167
+ npx @cassiomc1/forgeloop advance --to PLANNED
142
168
  npx @cassiomc1/forgeloop advance --to EXECUTING
143
169
  npx @cassiomc1/forgeloop advance --to VERIFYING
144
170
  npx @cassiomc1/forgeloop prepare-completion --json
145
- npx @cassiomc1/forgeloop record-check --id tests --requirement tests --status passed --evidence-kind OBSERVED --command "npm test" --result "exit 0" --json
171
+ npx @cassiomc1/forgeloop record-check --id tests --requirement tests --status passed --evidence-kind OBSERVED --command "npm test" --result "exit 0" --exit-code 0 --json
146
172
  npx @cassiomc1/forgeloop advance --to REVIEWING
147
173
  npx @cassiomc1/forgeloop audit --json
148
174
  npx @cassiomc1/forgeloop complete --json
@@ -153,10 +179,15 @@ npx @cassiomc1/forgeloop inspect --json
153
179
  npx @cassiomc1/forgeloop status --json
154
180
  npx @cassiomc1/forgeloop status --contract-file .forgeloop/current-contract.json --json
155
181
  npx @cassiomc1/forgeloop validate-state --json
156
- npx @cassiomc1/forgeloop validate-receipt --file ./execution-receipt.json --json
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
182
+ npx @cassiomc1/forgeloop validate-receipt --file .forgeloop/execution-receipt.json --json
183
+ npx @cassiomc1/forgeloop validate-protocol --route-file .forgeloop/routing-result.json --state-file .forgeloop/work-state.json --receipt-file .forgeloop/execution-receipt.json --contract-file .forgeloop/current-contract.json --json
158
184
  ```
159
185
 
186
+ For `complete-website`, record one structured check for each required success
187
+ criterion before `complete`; the single `tests` entry above only illustrates the
188
+ command shape. Route, receipt, state, and contract artifacts all live under
189
+ `.forgeloop/` in the target.
190
+
160
191
  The query-driven post-implementation path is:
161
192
 
162
193
  ```text
@@ -176,6 +207,13 @@ implementation
176
207
  `forgeloop next` and `forgeloop next --json` read persisted state only. They do
177
208
  not run project checks or mutate protocol artifacts.
178
209
 
210
+ A `READY` preflight is a resumable checkpoint, not only a status value. It must
211
+ reconcile the contract, route, required gates, `.forgeloop/work-state.json`,
212
+ `.forgeloop/events.ndjson`, and a matching `.forgeloop/preflight.json`. If
213
+ `READY` remains while the work state is missing, `next` returns
214
+ `RESOLVE_BLOCKER` with `E_STATE_MISSING_AFTER_PREFLIGHT_READY`; it does not
215
+ silently fall back to discovery.
216
+
179
217
  `route` expands declared signals into deterministic guide IDs and reason codes.
180
218
  `activate` records a session marker without storing prompts or hidden reasoning.
181
219
  Before implementation, write the canonical contract, persist the route, create
@@ -202,6 +240,11 @@ cross-artifact relationships plus the same derived freshness classification
202
240
  used by `inspect` and `status`. Supply `--contract-file` to compare the saved
203
241
  contract fingerprint with the current contract; omitting it leaves contract
204
242
  freshness as `NOT_VERIFIED` and a complete artifact set requires revalidation.
243
+ When delegation is in scope, also supply the matching repeated
244
+ `--task-brief <path>` and `--delegated-result <path>` inputs. Without those
245
+ inputs it reports `INCOMPLETE` with
246
+ `task briefs and delegated results were not supplied`; that classification is
247
+ separate from a local `complete --json` result of `VALID`.
205
248
  It returns `VALID`, `INCOMPLETE`, `STALE`, `INCONSISTENT`, or `INVALID` with
206
249
  exact invariant codes and derived stale reasons. The persisted
207
250
  `.forgeloop/work-state.json` schema is unchanged: `status`, `stale`, and `fresh`
@@ -224,7 +267,7 @@ forgeloop preflight
224
267
  ```
225
268
 
226
269
  Strict blind conformance is a separate profile. First verify the target
227
- `PROJECT_PROFILE.md`, then use `--strict` consistently with `preflight`,
270
+ `.forgeloop/kit/PROJECT_PROFILE.md`, then use `--strict` consistently with `preflight`,
228
271
  `audit`, and `complete`. Do not evaluate a Standard run with Strict criteria
229
272
  unless that escalation is explicitly recorded.
230
273
 
@@ -260,7 +303,7 @@ target project. Its main threat boundaries are:
260
303
  | Untrusted state or profile data | JSON schemas, semantic checks, secret-like field checks, and non-execution rules apply before state or profile data is used. |
261
304
  | Command injection | Git inspection uses fixed arguments without a shell; the CLI never treats project text as a command. |
262
305
  | Data exposure | Receipts and checkpoints reject secret-like keys and values; examples use placeholders, and the repository secret scanner runs in CI. |
263
- | Unsafe update overwrite | `update` preserves locally modified files and `PROJECT_PROFILE.md`; adoption and writes remain bounded to the selected target. |
306
+ | Unsafe update overwrite | `update` preserves locally modified files and the target's `.forgeloop/kit/PROJECT_PROFILE.md`; adoption and writes remain bounded to the selected target. |
264
307
  | Dependency supply chain | Runtime code uses Node built-ins only; the package does not install agents, providers, plugins, or remote services. |
265
308
  | Stale replay | Work state records contract and repository fingerprints; drift requires revalidation and never reruns destructive or publication actions automatically. |
266
309
  | Unverified publication | Receipts carry explicit publication booleans; local success never implies a push, pull request, merge, release, or deployment. |
@@ -306,11 +349,18 @@ The target must already exist and be a directory; the CLI will not create or
306
349
  replace an arbitrary path. Use `--dry-run` to preview writes before `init` or
307
350
  `update`. `--json`, `--strict`, and `--adopt <path>` are supported by `doctor`;
308
351
  adoption is limited to a supported adapter that has been reviewed locally. The
309
- CLI records managed files and their hashes in `.forgeloop/manifest.json`; `update`
310
- leaves locally modified files and `PROJECT_PROFILE.md` untouched. If a target
311
- already has a manifest, rerun `update` instead of `init`. Symlinked targets or
312
- template parents are rejected, and unadopted pre-existing adapters are reported
313
- for manual merge with the loop reference.
352
+ CLI records managed files and their hashes in `.forgeloop/manifest.json`; a new
353
+ target receives canonical documents under `.forgeloop/kit/` and only small
354
+ native shims at the root. `update` leaves locally modified files and the
355
+ project profile untouched. If a target already has a manifest, rerun `update`
356
+ instead of `init`. Symlinked targets or template parents are rejected, and
357
+ unadopted pre-existing adapters are reported for manual merge with the loop
358
+ reference.
359
+
360
+ Targets created by an older package layout are migrated by `update`: unchanged
361
+ managed root files move into the hidden kit, while modified or unowned root
362
+ files are preserved and reported as conflicts. The migration never follows a
363
+ symlink or deletes a file whose managed hash no longer matches.
314
364
 
315
365
  ### Migrate an existing mdfiles installation
316
366
 
@@ -329,32 +379,40 @@ ForgeLoop does not automatically migrate, dual-write, or delete a legacy
329
379
  ### Install in a target project
330
380
 
331
381
  If npm is unavailable, download this public repository as a ZIP or clone it
332
- into a temporary directory. Copy this structure to the target project's root
333
- while preserving relative paths:
382
+ into a temporary directory, then invoke the bundled CLI against the target:
383
+
384
+ ```bash
385
+ node /path/to/forgeloop/src/cli.js init --path /path/to/my-project
386
+ node /path/to/forgeloop/src/cli.js doctor --path /path/to/my-project
387
+ ```
388
+
389
+ Copying source-root files directly is not equivalent to initialization: the
390
+ canonical documents must be mapped into the hidden kit and the native adapters
391
+ must remain thin. The resulting target layout is:
334
392
 
335
393
  ```text
336
394
  AGENTS.md
337
395
  CLAUDE.md
338
- AGENT_COMPATIBILITY.md
339
- LOOP_ENGINEERING.md
340
- GUIDE_ROUTER.md
341
- PROJECT_PROFILE.md
342
- LOOP_SYSTEM_DESIGN.md
343
- QUALITY_SCORECARD.md
344
- TERMINOLOGY.md
345
- EXECUTION_STATE.md
346
- DELEGATION_PROTOCOL.md
347
- ORCHESTRATOR_INTEGRATION.md
348
- THREAT_MODEL.md
349
- CONTRACT_COVERAGE.md
350
- THIRD_PARTY_NOTICES.md
351
- LICENSE
352
- LICENSE-DOCS.md
353
396
  .forgeloop/.gitignore
397
+ .forgeloop/kit/AGENT_COMPATIBILITY.md
398
+ .forgeloop/kit/LOOP_ENGINEERING.md
399
+ .forgeloop/kit/GUIDE_ROUTER.md
400
+ .forgeloop/kit/PROJECT_PROFILE.md
401
+ .forgeloop/kit/LOOP_SYSTEM_DESIGN.md
402
+ .forgeloop/kit/QUALITY_SCORECARD.md
403
+ .forgeloop/kit/TERMINOLOGY.md
404
+ .forgeloop/kit/EXECUTION_STATE.md
405
+ .forgeloop/kit/DELEGATION_PROTOCOL.md
406
+ .forgeloop/kit/ORCHESTRATOR_INTEGRATION.md
407
+ .forgeloop/kit/THREAT_MODEL.md
408
+ .forgeloop/kit/CONTRACT_COVERAGE.md
409
+ .forgeloop/kit/THIRD_PARTY_NOTICES.md
410
+ .forgeloop/kit/LICENSE
411
+ .forgeloop/kit/LICENSE-DOCS.md
412
+ .forgeloop/kit/ENG/
413
+ .forgeloop/kit/schemas/
354
414
  .github/copilot-instructions.md
355
415
  .cursor/rules/project-loop.mdc
356
- ENG/
357
- schemas/
358
416
  ```
359
417
 
360
418
  If the target already has `AGENTS.md`, `CLAUDE.md`, Copilot instructions, or
@@ -366,8 +424,10 @@ maintain and validate this source repository.
366
424
  ### First run
367
425
 
368
426
  On the first task in a target project with code or manifests, change
369
- `profile-mode` from `template` to `project`, discover the stack, and record only
370
- confirmed facts in `PROJECT_PROFILE.md`. Keep `language: en`.
427
+ `profile-mode` from `template` to `project` in
428
+ `.forgeloop/kit/PROJECT_PROFILE.md`, discover the stack, and record only
429
+ confirmed facts there. In this source checkout, the canonical profile is the
430
+ root `PROJECT_PROFILE.md`. Keep `language: en`.
371
431
 
372
432
  The profile must not store tokens, passwords, keys, credentials, or task logs.
373
433
  Unknown commands remain unverified until a real source identifies them.
@@ -392,7 +452,7 @@ package installation or its automated tests.
392
452
  ### Update the kit
393
453
 
394
454
  When adopting a newer version, preserve target-specific facts from
395
- `PROJECT_PROFILE.md`. Compare adapters before replacing them, update the loop,
455
+ `.forgeloop/kit/PROJECT_PROFILE.md`. Compare adapters before replacing them, update the loop,
396
456
  router, notices, and guides as one coherent set, and never erase local
397
457
  instructions. If validators were copied, run:
398
458
 
@@ -447,8 +507,9 @@ Optional provider-backed operations follow this boundary:
447
507
 
448
508
  Provide optional credentials through the process environment or the official
449
509
  Qwen configuration file at `~/.qwen-mm-plugins/config` (or its documented
450
- override). Never put keys in Git, `PROJECT_PROFILE.md`, or copied instruction
451
- files. The agent must leave an API-backed capability disabled when its key or
510
+ override). Never put keys in Git, the target's
511
+ `.forgeloop/kit/PROJECT_PROFILE.md`, or copied instruction files. The agent must
512
+ leave an API-backed capability disabled when its key or
452
513
  service endpoint is absent, and report missing system dependencies instead of
453
514
  claiming that the feature is available.
454
515
 
@@ -477,12 +538,12 @@ adoption. Local rendering requires Node.js 22+ and FFmpeg.
477
538
  ├── AGENT_COMPATIBILITY.md # supported agents and official sources
478
539
  ├── LOOP_ENGINEERING.md # canonical operating cycle
479
540
  ├── GUIDE_ROUTER.md # contextual guide selection
480
- ├── PROJECT_PROFILE.md # verified project facts
541
+ ├── PROJECT_PROFILE.md # source profile (target copy is under .forgeloop/kit/)
481
542
  ├── LOOP_SYSTEM_DESIGN.md # architecture and boundaries
482
543
  ├── THIRD_PARTY_NOTICES.md # provenance and rights
483
544
  ├── LICENSE # CLI and validator code license
484
545
  ├── LICENSE-DOCS.md # original documentation license boundary
485
- ├── ENG/ # eight English guides
546
+ ├── ENG/ # package-source English guides
486
547
  ├── .cursor/rules/ # always-active Cursor rule
487
548
  ├── .github/copilot-instructions.md # GitHub Copilot entry point
488
549
  ├── .github/workflows/ # quality automation
@@ -495,6 +556,11 @@ adoption. Local rendering requires Node.js 22+ and FFmpeg.
495
556
  └── README.md
496
557
  ```
497
558
 
559
+ The source repository keeps canonical documents at the root for package
560
+ development and validation. A bootstrapped target uses the hidden-kit layout
561
+ shown above; mutable contract, route, state, gate, event, preflight, and
562
+ receipt artifacts remain directly under `.forgeloop/`.
563
+
498
564
  ## Maintenance
499
565
 
500
566
  - Preserve guide requirements, exceptions, numbers, examples, and references when editing.
@@ -127,3 +127,14 @@ collection. Do not host, redistribute, or infer rights for a font, image,
127
127
  template, prompt, audio asset, or other premium material from a citation or
128
128
  catalog listing. Verify the exact resource's author, license, attribution,
129
129
  hosting, and current terms before use.
130
+
131
+ ## Taste Skill
132
+
133
+ The contextual frontend taste guide is informed by Taste Skill:
134
+
135
+ - Taste Skill, Copyright (c) 2026 Leonxlnx, MIT License.
136
+ - Source: <https://github.com/leonxlnx/taste-skill>
137
+
138
+ ForgeLoop includes a short, adapted guide under `ENG/taste-frontend-eng.md`.
139
+ It does not vendor upstream runtime code, depend on its repository at runtime,
140
+ or make its prescriptive examples universal.
@@ -32,7 +32,7 @@ implementation
32
32
  Use the Strict profile only as a separate experiment:
33
33
 
34
34
  ```bash
35
- # PROJECT_PROFILE.md must be verified before this profile starts.
35
+ # .forgeloop/kit/PROJECT_PROFILE.md must be verified before this profile starts.
36
36
  npx @cassiomc1/forgeloop preflight --strict --json
37
37
  npx @cassiomc1/forgeloop audit --strict --json
38
38
  npx @cassiomc1/forgeloop complete --strict --json
@@ -73,3 +73,9 @@ cannot disable a mandatory approval workflow, record `TEST_NOT_STARTED` and do
73
73
  not interpret the run as a conformance failure or success. An installed
74
74
  workflow and a compatible workflow are separate claims; use
75
75
  `INCOMPATIBLE WITH AUTONOMOUS MODE`, not "broken", for the former.
76
+
77
+ Every live-run report must classify how it ended with exactly one
78
+ `terminationSource`: `AGENT`, `OPERATOR`, `HARNESS`, `TIMEOUT`, or `BLOCKER`.
79
+ An operator-terminated run is recorded as `RUN_STATUS: OPERATOR_INTERRUPTED`,
80
+ `CONFORMANCE: PARTIAL`, with post-termination capabilities marked
81
+ `NOT_REACHED` and the smallest failure class `OPERATOR_INTERRUPTION`.
@@ -3,5 +3,5 @@
3
3
  "surfaces": ["ui", "forms"],
4
4
  "risks": ["accessibility"],
5
5
  "platforms": ["web"],
6
- "guides": ["premium", "design", "accessibility", "clean", "test", "security", "performance"]
6
+ "guides": ["premium", "design", "taste", "accessibility", "clean", "test", "security", "performance"]
7
7
  }
@@ -3,5 +3,5 @@
3
3
  "surfaces": ["ui", "forms"],
4
4
  "risks": ["accessibility"],
5
5
  "platforms": ["web"],
6
- "guides": ["premium", "design", "accessibility", "clean", "test", "security", "performance"]
6
+ "guides": ["premium", "design", "taste", "accessibility", "clean", "test", "security", "performance"]
7
7
  }