@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/AGENT_COMPATIBILITY.md +28 -16
- package/ENG/taste-frontend-eng.md +139 -0
- package/EXECUTION_STATE.md +12 -5
- package/GUIDE_ROUTER.md +24 -1
- package/LOOP_ENGINEERING.md +43 -0
- package/LOOP_SYSTEM_DESIGN.md +50 -49
- package/PROJECT_PROFILE.md +27 -12
- package/QUALITY_SCORECARD.md +7 -0
- package/README.md +141 -75
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/conformance/README.md +7 -1
- package/conformance/blind-premium-website/EXPECTED_ROUTE.json +1 -1
- package/conformance/complete-website/EXPECTED_ROUTE.json +1 -1
- package/conformance/runs/2026-08-13-codex-sixth-live.md +412 -0
- package/package.json +1 -1
- package/src/cli.js +2 -1
- package/src/commands/doctor.js +110 -13
- package/src/commands/init.js +12 -5
- package/src/commands/update.js +215 -2
- package/src/commands/validate-protocol.js +19 -2
- package/src/core/audit.js +16 -1
- package/src/core/events.js +8 -0
- package/src/core/guide-metadata.js +1 -0
- package/src/core/inspect.js +16 -7
- package/src/core/manifest.js +6 -0
- package/src/core/native-adapters.js +74 -0
- package/src/core/next-action.js +42 -1
- package/src/core/preflight.js +220 -46
- package/src/core/profile.js +12 -4
- package/src/core/protocol.js +8 -0
- package/src/core/report.js +4 -1
- package/src/core/resumability.js +61 -0
- package/src/core/route-artifact.js +9 -2
- package/src/core/router.js +2 -1
- package/src/core/target-layout.js +38 -0
- package/src/core/templates.js +14 -2
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
claims --> delegation
|
|
89
|
+
conformance --> verdict["VALID / INCOMPLETE /<br/>STALE / INCONSISTENT / INVALID"]
|
|
90
|
+
audit --> verdict
|
|
75
91
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
|
92
|
-
class
|
|
93
|
-
class
|
|
94
|
-
class
|
|
95
|
-
class conformance
|
|
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
|
|
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:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
|
157
|
-
npx @cassiomc1/forgeloop validate-protocol --route-file
|
|
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
|
-
|
|
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
|
|
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`;
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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
|
|
333
|
-
|
|
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
|
|
370
|
-
|
|
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
|
-
|
|
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,
|
|
451
|
-
files. The agent must
|
|
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 #
|
|
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/ #
|
|
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.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -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.
|
package/conformance/README.md
CHANGED
|
@@ -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
|
}
|