@cassiomc1/forgeloop 1.10.0 → 1.10.2
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/DOCS_INDEX.md +12 -1
- package/LOOP_ENGINEERING.md +4 -4
- package/LOOP_SYSTEM_DESIGN.md +23 -0
- package/QUALITY_SCORECARD.md +2 -2
- package/README.md +22 -8
- package/docs/ADVISORY_CONTEXT.md +24 -0
- package/docs/AGENT_PROTOCOL_SUMMARY.md +1 -1
- package/docs/ARTIFACT_REFERENCE.md +15 -0
- package/docs/CODE_ATTESTATION.md +9 -0
- package/docs/DOCUMENTATION_GUIDE.md +4 -4
- package/docs/EXECUTION_PROFILE_BENCHMARKS.md +10 -0
- package/docs/MCP.md +13 -1
- package/docs/PACKAGE_CONTENTS.md +88 -0
- package/docs/RELEASE_CHECKLIST.md +10 -2
- package/docs/REVISION_PROVIDERS.md +9 -0
- package/docs/RIPWIRE_ADAPTER.md +189 -0
- package/docs/TROUBLESHOOTING.md +12 -0
- package/docs/assets/diagrams/forgeloop-code-attestation-flow.html +13 -2
- package/docs/assets/diagrams/forgeloop-code-attestation-flow.receipt.json +6 -6
- package/docs/assets/diagrams/forgeloop-code-attestation-flow.svg +10 -1
- package/docs/assets/diagrams/forgeloop-engineering-flow.html +22 -11
- package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +6 -6
- package/docs/assets/diagrams/forgeloop-engineering-flow.svg +17 -8
- package/docs/assets/diagrams/forgeloop-verification-trust-flow.html +14 -3
- package/docs/assets/diagrams/forgeloop-verification-trust-flow.receipt.json +6 -6
- package/docs/assets/diagrams/forgeloop-verification-trust-flow.svg +10 -1
- package/docs/diagrams/README.md +26 -0
- package/docs/diagrams/forgeloop-code-attestation-flow.workflow.json +383 -57
- package/docs/diagrams/forgeloop-engineering-flow.workflow.json +374 -55
- package/docs/diagrams/forgeloop-verification-trust-flow.workflow.json +328 -47
- package/docs/diagrams/reviews/forgeloop-code-attestation-flow.review.json +4 -4
- package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +4 -4
- package/docs/diagrams/reviews/forgeloop-verification-trust-flow.review.json +4 -4
- package/package.json +14 -4
- package/scripts/CI_VALIDATORS.md +24 -0
- package/scripts/check-critical-coverage.mjs +9 -0
- package/src/adapters/ripwire/normalize.js +352 -0
- package/src/adapters/ripwire/process.js +248 -0
- package/src/adapters/ripwire/provider.js +245 -0
- package/src/commands/doctor.js +11 -10
- package/src/core/actions.js +2 -2
- package/src/core/advisory-context/service.js +36 -14
- package/src/core/approvals.js +2 -2
- package/src/core/artifacts.js +3 -3
- package/src/core/checks.js +0 -33
- package/src/core/completion.js +2 -2
- package/src/core/events.js +5 -5
- package/src/core/execution-profile.js +18 -5
- package/src/core/handoff-acceptance.js +10 -1
- package/src/core/next-action-pending-actions.js +255 -0
- package/src/core/next-action-phases.js +26 -764
- package/src/core/next-action-planned-phase.js +51 -0
- package/src/core/next-action-quality-guidance.js +19 -0
- package/src/core/next-action-recovery-phases.js +97 -0
- package/src/core/next-action-refresh.js +20 -0
- package/src/core/next-action-review-phase.js +189 -0
- package/src/core/next-action-verification-phase.js +192 -0
- package/src/core/task-recovery.js +2 -2
- package/src/core/transaction-maintenance.js +70 -0
- package/src/core/transaction.js +31 -10
- package/src/core/work-state.js +20 -11
- package/src/integration.d.ts +30 -3
- package/src/integration.js +2 -0
- package/src/core/cli-metadata.js +0 -23
- package/src/core/decision-classification.js +0 -55
- package/src/core/gates.js +0 -57
- package/src/core/workflow-compatibility.js +0 -151
|
@@ -11,78 +11,357 @@
|
|
|
11
11
|
{
|
|
12
12
|
"id": "scope-resolution",
|
|
13
13
|
"label": "Resolve verification scope",
|
|
14
|
-
"focus": [
|
|
14
|
+
"focus": [
|
|
15
|
+
"claims",
|
|
16
|
+
"changes",
|
|
17
|
+
"checker",
|
|
18
|
+
"cycle",
|
|
19
|
+
"fingerprints",
|
|
20
|
+
"scope"
|
|
21
|
+
],
|
|
15
22
|
"note": "Follow the trusted inputs that determine whether a checker may narrow its execution."
|
|
16
23
|
},
|
|
17
24
|
{
|
|
18
25
|
"id": "exact-execution",
|
|
19
26
|
"label": "Bind exact execution",
|
|
20
|
-
"focus": [
|
|
21
|
-
|
|
27
|
+
"focus": [
|
|
28
|
+
"scope",
|
|
29
|
+
"argv",
|
|
30
|
+
"observed"
|
|
31
|
+
],
|
|
32
|
+
"note": "run-check proves execution; manual-review is explicit. Test filters do not establish canonical verification scope."
|
|
22
33
|
},
|
|
23
34
|
{
|
|
24
35
|
"id": "fail-closed",
|
|
25
36
|
"label": "Fail closed when trust is missing",
|
|
26
|
-
"focus": [
|
|
37
|
+
"focus": [
|
|
38
|
+
"checker",
|
|
39
|
+
"full",
|
|
40
|
+
"unresolved",
|
|
41
|
+
"reject"
|
|
42
|
+
],
|
|
27
43
|
"note": "No trusted checker means AUTO uses FULL; explicit narrowing without one is unresolved."
|
|
28
44
|
}
|
|
29
45
|
],
|
|
30
46
|
"legend": {
|
|
31
47
|
"mode": "auto",
|
|
32
48
|
"entries": {
|
|
33
|
-
"backend": {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
|
|
49
|
+
"backend": {
|
|
50
|
+
"label": "Task/provider state"
|
|
51
|
+
},
|
|
52
|
+
"database": {
|
|
53
|
+
"label": "Bound evidence"
|
|
54
|
+
},
|
|
55
|
+
"security": {
|
|
56
|
+
"label": "Trust boundary"
|
|
57
|
+
},
|
|
58
|
+
"messagebus": {
|
|
59
|
+
"label": "Fail-closed result"
|
|
60
|
+
},
|
|
61
|
+
"external": {
|
|
62
|
+
"label": "Task input"
|
|
63
|
+
}
|
|
38
64
|
}
|
|
39
65
|
},
|
|
40
|
-
"viewBox": [
|
|
66
|
+
"viewBox": [
|
|
67
|
+
850,
|
|
68
|
+
900
|
|
69
|
+
]
|
|
41
70
|
},
|
|
42
71
|
"lanes": [
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
{
|
|
48
|
-
|
|
72
|
+
{
|
|
73
|
+
"id": "inputs",
|
|
74
|
+
"label": "Task + Revision Inputs"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "policy",
|
|
78
|
+
"label": "Trust and Scope Policy"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "execution",
|
|
82
|
+
"label": "Exact Execution"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "evidence",
|
|
86
|
+
"label": "Observed Evidence"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "exceptions",
|
|
90
|
+
"label": "Fail-Closed Outcomes",
|
|
91
|
+
"variant": "exception"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "closure",
|
|
95
|
+
"label": "Verification Boundary"
|
|
96
|
+
}
|
|
49
97
|
],
|
|
50
98
|
"phases": [
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
|
|
99
|
+
{
|
|
100
|
+
"id": "inputs",
|
|
101
|
+
"label": "Collect bound inputs",
|
|
102
|
+
"fromCol": 0,
|
|
103
|
+
"toCol": 1
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "resolve",
|
|
107
|
+
"label": "Resolve safe scope",
|
|
108
|
+
"fromCol": 2,
|
|
109
|
+
"toCol": 3,
|
|
110
|
+
"variant": "emphasis"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "execute",
|
|
114
|
+
"label": "Execute and observe",
|
|
115
|
+
"fromCol": 4,
|
|
116
|
+
"toCol": 5,
|
|
117
|
+
"variant": "dashed"
|
|
118
|
+
}
|
|
54
119
|
],
|
|
55
120
|
"groups": [
|
|
56
|
-
{
|
|
57
|
-
|
|
121
|
+
{
|
|
122
|
+
"id": "scope_boundary",
|
|
123
|
+
"label": "Verification scope boundary",
|
|
124
|
+
"lane": "policy",
|
|
125
|
+
"fromCol": 2,
|
|
126
|
+
"toCol": 5,
|
|
127
|
+
"variant": "emphasis"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "fail_closed_boundary",
|
|
131
|
+
"label": "No guessed narrowing",
|
|
132
|
+
"lane": "exceptions",
|
|
133
|
+
"fromCol": 2,
|
|
134
|
+
"toCol": 5,
|
|
135
|
+
"variant": "security"
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
"mainPath": [
|
|
139
|
+
"claims",
|
|
140
|
+
"changes",
|
|
141
|
+
"checker",
|
|
142
|
+
"cycle",
|
|
143
|
+
"fingerprints",
|
|
144
|
+
"scope",
|
|
145
|
+
"argv",
|
|
146
|
+
"observed"
|
|
58
147
|
],
|
|
59
|
-
"mainPath": ["claims", "changes", "checker", "cycle", "fingerprints", "scope", "argv", "observed"],
|
|
60
148
|
"nodes": [
|
|
61
|
-
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
{
|
|
71
|
-
|
|
72
|
-
|
|
149
|
+
{
|
|
150
|
+
"id": "claims",
|
|
151
|
+
"lane": "inputs",
|
|
152
|
+
"col": 0,
|
|
153
|
+
"type": "external",
|
|
154
|
+
"label": "Claims",
|
|
155
|
+
"sublabel": "write scope",
|
|
156
|
+
"width": 64
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "changes",
|
|
160
|
+
"lane": "inputs",
|
|
161
|
+
"col": 1,
|
|
162
|
+
"type": "backend",
|
|
163
|
+
"label": "Changes",
|
|
164
|
+
"sublabel": "provider",
|
|
165
|
+
"width": 70
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"id": "checker",
|
|
169
|
+
"lane": "policy",
|
|
170
|
+
"col": 2,
|
|
171
|
+
"type": "security",
|
|
172
|
+
"label": "Checker",
|
|
173
|
+
"sublabel": "trusted scope",
|
|
174
|
+
"tag": "capability",
|
|
175
|
+
"width": 64
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "cycle",
|
|
179
|
+
"lane": "policy",
|
|
180
|
+
"col": 3,
|
|
181
|
+
"type": "backend",
|
|
182
|
+
"label": "Cycle",
|
|
183
|
+
"sublabel": "fresh",
|
|
184
|
+
"width": 50
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": "fingerprints",
|
|
188
|
+
"lane": "policy",
|
|
189
|
+
"col": 4,
|
|
190
|
+
"type": "security",
|
|
191
|
+
"label": "Bind",
|
|
192
|
+
"sublabel": "contract/repo",
|
|
193
|
+
"width": 58
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"id": "scope",
|
|
197
|
+
"lane": "evidence",
|
|
198
|
+
"col": 4,
|
|
199
|
+
"type": "database",
|
|
200
|
+
"label": "verify-scope",
|
|
201
|
+
"sublabel": "AUTO / explicit",
|
|
202
|
+
"tag": "scope",
|
|
203
|
+
"width": 82
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "argv",
|
|
207
|
+
"lane": "execution",
|
|
208
|
+
"col": 5,
|
|
209
|
+
"type": "security",
|
|
210
|
+
"label": "argv",
|
|
211
|
+
"sublabel": "paths",
|
|
212
|
+
"tag": "exact",
|
|
213
|
+
"width": 50
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"id": "observed",
|
|
217
|
+
"lane": "evidence",
|
|
218
|
+
"col": 5,
|
|
219
|
+
"type": "database",
|
|
220
|
+
"label": "Evidence",
|
|
221
|
+
"sublabel": "executionRef",
|
|
222
|
+
"tag": "observed",
|
|
223
|
+
"width": 70
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"id": "full",
|
|
227
|
+
"lane": "exceptions",
|
|
228
|
+
"col": 2,
|
|
229
|
+
"type": "messagebus",
|
|
230
|
+
"label": "AUTO \u2192 FULL",
|
|
231
|
+
"sublabel": "no checker",
|
|
232
|
+
"tag": "safe",
|
|
233
|
+
"width": 76
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": "unresolved",
|
|
237
|
+
"lane": "exceptions",
|
|
238
|
+
"col": 3,
|
|
239
|
+
"type": "security",
|
|
240
|
+
"label": "Open",
|
|
241
|
+
"sublabel": "narrow",
|
|
242
|
+
"tag": "unresolved",
|
|
243
|
+
"width": 50
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"id": "reject",
|
|
247
|
+
"lane": "exceptions",
|
|
248
|
+
"col": 4,
|
|
249
|
+
"type": "security",
|
|
250
|
+
"label": "Reject",
|
|
251
|
+
"sublabel": "pre-launch",
|
|
252
|
+
"tag": "argv drift",
|
|
253
|
+
"width": 50
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"id": "boundary",
|
|
257
|
+
"lane": "closure",
|
|
258
|
+
"col": 5,
|
|
259
|
+
"type": "security",
|
|
260
|
+
"label": "Boundary",
|
|
261
|
+
"sublabel": "scope/coverage",
|
|
262
|
+
"width": 64
|
|
263
|
+
}
|
|
73
264
|
],
|
|
74
265
|
"edges": [
|
|
75
|
-
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
{
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
266
|
+
{
|
|
267
|
+
"id": "claims-changes",
|
|
268
|
+
"from": "claims",
|
|
269
|
+
"to": "changes",
|
|
270
|
+
"variant": "emphasis"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"id": "changes-checker",
|
|
274
|
+
"from": "changes",
|
|
275
|
+
"to": "checker",
|
|
276
|
+
"variant": "default",
|
|
277
|
+
"route": "drop",
|
|
278
|
+
"fromSide": "bottom",
|
|
279
|
+
"toSide": "top"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"id": "checker-cycle",
|
|
283
|
+
"from": "checker",
|
|
284
|
+
"to": "cycle",
|
|
285
|
+
"variant": "emphasis"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"id": "cycle-fingerprints",
|
|
289
|
+
"from": "cycle",
|
|
290
|
+
"to": "fingerprints",
|
|
291
|
+
"variant": "security",
|
|
292
|
+
"fromSide": "bottom",
|
|
293
|
+
"toSide": "bottom",
|
|
294
|
+
"route": "bottom-channel",
|
|
295
|
+
"channelY": 312
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"id": "fingerprints-scope",
|
|
299
|
+
"from": "fingerprints",
|
|
300
|
+
"to": "scope",
|
|
301
|
+
"variant": "emphasis",
|
|
302
|
+
"fromSide": "bottom",
|
|
303
|
+
"toSide": "top",
|
|
304
|
+
"route": "drop"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"id": "scope-argv",
|
|
308
|
+
"from": "scope",
|
|
309
|
+
"to": "argv",
|
|
310
|
+
"variant": "security",
|
|
311
|
+
"fromSide": "right",
|
|
312
|
+
"toSide": "left",
|
|
313
|
+
"route": "bottom-channel",
|
|
314
|
+
"channelY": 408
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"id": "argv-observed",
|
|
318
|
+
"from": "argv",
|
|
319
|
+
"to": "observed",
|
|
320
|
+
"variant": "dashed",
|
|
321
|
+
"fromSide": "bottom",
|
|
322
|
+
"toSide": "top",
|
|
323
|
+
"route": "drop"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"id": "checker-full",
|
|
327
|
+
"from": "checker",
|
|
328
|
+
"to": "full",
|
|
329
|
+
"variant": "dashed",
|
|
330
|
+
"role": "branch",
|
|
331
|
+
"fromSide": "left",
|
|
332
|
+
"toSide": "right",
|
|
333
|
+
"route": "return-left"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"id": "checker-unresolved",
|
|
337
|
+
"from": "checker",
|
|
338
|
+
"to": "unresolved",
|
|
339
|
+
"variant": "security",
|
|
340
|
+
"role": "error",
|
|
341
|
+
"fromSide": "bottom",
|
|
342
|
+
"toSide": "top",
|
|
343
|
+
"route": "drop"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"id": "scope-reject",
|
|
347
|
+
"from": "scope",
|
|
348
|
+
"to": "reject",
|
|
349
|
+
"variant": "security",
|
|
350
|
+
"role": "error",
|
|
351
|
+
"fromSide": "bottom",
|
|
352
|
+
"toSide": "top",
|
|
353
|
+
"route": "drop"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"id": "observed-boundary",
|
|
357
|
+
"from": "observed",
|
|
358
|
+
"to": "boundary",
|
|
359
|
+
"variant": "dashed",
|
|
360
|
+
"role": "branch",
|
|
361
|
+
"fromSide": "left",
|
|
362
|
+
"toSide": "right",
|
|
363
|
+
"route": "return-left"
|
|
364
|
+
}
|
|
86
365
|
],
|
|
87
366
|
"cards": [
|
|
88
367
|
{
|
|
@@ -91,7 +370,8 @@
|
|
|
91
370
|
"items": [
|
|
92
371
|
"AUTO uses CHANGED or CLAIMED only with a trusted scoped checker",
|
|
93
372
|
"Without that capability, AUTO resolves safely to FULL",
|
|
94
|
-
"Explicit CHANGED or CLAIMED without a checker returns unresolved"
|
|
373
|
+
"Explicit CHANGED or CLAIMED without a checker returns unresolved",
|
|
374
|
+
"A test name or file filter is not a canonical scope boundary"
|
|
95
375
|
]
|
|
96
376
|
},
|
|
97
377
|
{
|
|
@@ -100,7 +380,8 @@
|
|
|
100
380
|
"items": [
|
|
101
381
|
"RevisionProvider changes and task claims are canonical inputs",
|
|
102
382
|
"Contract, repository, and cycle fingerprints bind the scope",
|
|
103
|
-
"argv prefix and selected paths are checked before launch"
|
|
383
|
+
"argv prefix and selected paths are checked before launch",
|
|
384
|
+
"Manual evidence declares manual-review; command metadata is not execution"
|
|
104
385
|
]
|
|
105
386
|
},
|
|
106
387
|
{
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"diagramId": "forgeloop-code-attestation-flow",
|
|
4
4
|
"status": "approved",
|
|
5
5
|
"binding": {
|
|
6
|
-
"sourceSha256": "
|
|
7
|
-
"svgSha256": "
|
|
6
|
+
"sourceSha256": "33bb9c3c4f3fb4a793febeab34b2d07ca7bf2c058d4f5e7575dba3a6065eedeb",
|
|
7
|
+
"svgSha256": "3a768148886ffdfcce75221c11e51ee77a3702510e90917bf6e8ba0581ebdb44"
|
|
8
8
|
},
|
|
9
9
|
"checks": {
|
|
10
10
|
"darkThemeLegible": true,
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"textFallbackEquivalent": true,
|
|
16
16
|
"accessibleMetadataPresent": true
|
|
17
17
|
},
|
|
18
|
-
"reviewedBy": "
|
|
19
|
-
"reviewedAt": "2026-
|
|
18
|
+
"reviewedBy": "Codex visual review",
|
|
19
|
+
"reviewedAt": "2026-09-05"
|
|
20
20
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"diagramId": "forgeloop-engineering-flow",
|
|
4
4
|
"status": "approved",
|
|
5
5
|
"binding": {
|
|
6
|
-
"sourceSha256": "
|
|
7
|
-
"svgSha256": "
|
|
6
|
+
"sourceSha256": "0bfd5bbf8d6bbeaec23db543deb1e99844321c77b3c7feb21ee0cc877bbba9a9",
|
|
7
|
+
"svgSha256": "ef3effe7e756494c7dffef9ee315e970bbbdb9fddc0ee0a1e4bfccfbb0c05534"
|
|
8
8
|
},
|
|
9
9
|
"checks": {
|
|
10
10
|
"darkThemeLegible": true,
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"textFallbackEquivalent": true,
|
|
16
16
|
"accessibleMetadataPresent": true
|
|
17
17
|
},
|
|
18
|
-
"reviewedBy": "
|
|
19
|
-
"reviewedAt": "2026-
|
|
18
|
+
"reviewedBy": "Codex visual review",
|
|
19
|
+
"reviewedAt": "2026-09-05"
|
|
20
20
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"diagramId": "forgeloop-verification-trust-flow",
|
|
4
4
|
"status": "approved",
|
|
5
5
|
"binding": {
|
|
6
|
-
"sourceSha256": "
|
|
7
|
-
"svgSha256": "
|
|
6
|
+
"sourceSha256": "ba0016d705a7d89be0cdff7529b29112e844ef806ae9f87a1bbff8db8c109043",
|
|
7
|
+
"svgSha256": "5c63af3190251de5b6268c62ea5a6ae6fb325fe20fd9a69e996a95566fe6ebd0"
|
|
8
8
|
},
|
|
9
9
|
"checks": {
|
|
10
10
|
"darkThemeLegible": true,
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"textFallbackEquivalent": true,
|
|
16
16
|
"accessibleMetadataPresent": true
|
|
17
17
|
},
|
|
18
|
-
"reviewedBy": "
|
|
19
|
-
"reviewedAt": "2026-
|
|
18
|
+
"reviewedBy": "Codex visual review",
|
|
19
|
+
"reviewedAt": "2026-09-05"
|
|
20
20
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cassiomc1/forgeloop",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.2",
|
|
4
4
|
"description": "Portable, verifiable engineering protocol for AI coding environments and developer workflows",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"docs/GETTING_STARTED.md",
|
|
53
53
|
"docs/CROSS_HARNESS_CONTINUITY.md",
|
|
54
54
|
"docs/ADVISORY_CONTEXT.md",
|
|
55
|
+
"docs/RIPWIRE_ADAPTER.md",
|
|
55
56
|
"docs/CLI_REFERENCE.md",
|
|
56
57
|
"docs/ARTIFACT_REFERENCE.md",
|
|
57
58
|
"docs/TROUBLESHOOTING.md",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"docs/STRUCTURAL_QUALITY.md",
|
|
60
61
|
"docs/DOCUMENTATION_GUIDE.md",
|
|
61
62
|
"docs/RELEASE_CHECKLIST.md",
|
|
63
|
+
"docs/PACKAGE_CONTENTS.md",
|
|
62
64
|
"scripts/CI_VALIDATORS.md",
|
|
63
65
|
"docs/MCP.md",
|
|
64
66
|
"docs/UNIVERSAL_INTEGRATION.md",
|
|
@@ -85,7 +87,11 @@
|
|
|
85
87
|
"scripts/check-changelog-freshness.mjs",
|
|
86
88
|
"scripts/write-forgeloop-attestation-summary.mjs",
|
|
87
89
|
"completions",
|
|
88
|
-
"integrations/generic-ci"
|
|
90
|
+
"integrations/generic-ci",
|
|
91
|
+
"!src/core/gates.js",
|
|
92
|
+
"!src/core/decision-classification.js",
|
|
93
|
+
"!src/core/workflow-compatibility.js",
|
|
94
|
+
"!src/core/cli-metadata.js"
|
|
89
95
|
],
|
|
90
96
|
"scripts": {
|
|
91
97
|
"test": "node scripts/run-tests.js",
|
|
@@ -123,11 +129,15 @@
|
|
|
123
129
|
"benchmark:profiles:check": "node scripts/validate-execution-profile-benchmarks.mjs",
|
|
124
130
|
"benchmark:profiles:outliers": "node scripts/report-execution-profile-outliers.mjs",
|
|
125
131
|
"benchmark:profiles:tail-analysis": "node scripts/report-tail-interpretation.mjs",
|
|
126
|
-
"benchmark:profiles:regression": "node scripts/check-efficiency-regression.mjs"
|
|
132
|
+
"benchmark:profiles:regression": "node scripts/check-efficiency-regression.mjs",
|
|
133
|
+
"transactions:compact": "node scripts/compact-transactions.mjs",
|
|
134
|
+
"complexity:check": "node scripts/check-complexity.mjs"
|
|
127
135
|
},
|
|
128
136
|
"devDependencies": {
|
|
129
137
|
"c8": "^12.0.0",
|
|
130
|
-
"eslint": "^9.39.5"
|
|
138
|
+
"eslint": "^9.39.5",
|
|
139
|
+
"typescript": "7.0.2",
|
|
140
|
+
"yaml": "2.9.0"
|
|
131
141
|
},
|
|
132
142
|
"exports": {
|
|
133
143
|
".": "./src/cli.js",
|
package/scripts/CI_VALIDATORS.md
CHANGED
|
@@ -40,3 +40,27 @@ Maintainers should distinguish between actual documentation link failures and ex
|
|
|
40
40
|
|
|
41
41
|
- **Link-content failure (`Lychee`)**: The link checking step runs with `--verbose` and outputs the exact failing URL along with the HTTP status code (e.g. 404, 403). If a documentation URL is broken, update the link in the source Markdown. If a legitimate external host blocks shared CI runners or aggressively rate-limits CI automation, add a minimal, targeted exclusion in `.lychee.toml` with an explanatory comment.
|
|
42
42
|
- **Action-download / Runner infrastructure failure (GitHub 429/502/503)**: When GitHub Actions fails during action checkout or tool download before running the test steps, this is a transient infrastructure issue rather than a project defect. Rerun the workflow without modifying project files.
|
|
43
|
+
|
|
44
|
+
## Node verification and receipt availability
|
|
45
|
+
|
|
46
|
+
The documentation workflow runs the documentation/tooling gates once on
|
|
47
|
+
Linux with Node 24. Full suites cover Linux 20/22/24 and macOS/Windows 20/24,
|
|
48
|
+
with no repeated platform/version pair in that workflow. Node 24 Linux also
|
|
49
|
+
collects coverage. Package-content tests share one pack listing within their
|
|
50
|
+
process. The dedicated Windows main-branch workflow remains separate.
|
|
51
|
+
|
|
52
|
+
The historical required status `validate (22)` is retained as an aggregate
|
|
53
|
+
gate over validation, the full portability matrix, and diagram checks. It
|
|
54
|
+
fails if any prerequisite fails, is cancelled, or is skipped. This preserves
|
|
55
|
+
the existing branch ruleset without running another duplicate test suite.
|
|
56
|
+
|
|
57
|
+
`npm run lint`, `npm run complexity:check`, and
|
|
58
|
+
`npm run critical-coverage:check` retain independent purposes: syntax and
|
|
59
|
+
usage correctness, hotspot growth, and coverage of critical modules. Packed
|
|
60
|
+
TypeScript consumers validate the public declarations; YAML-based tests
|
|
61
|
+
validate workflow semantics. The core runtime remains dependency-free.
|
|
62
|
+
|
|
63
|
+
`scripts/audit-receipts.mjs` runs after checkout. It audits supplied scoped
|
|
64
|
+
receipts with explicit task IDs, fails on an invalid audit, and reports
|
|
65
|
+
`NOT_VERIFIED` when none are supplied. This repository job does not create
|
|
66
|
+
lifecycle evidence from CI test results.
|
|
@@ -8,6 +8,15 @@ const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url))
|
|
|
8
8
|
const summaryPath = path.join(repositoryRoot, "coverage", "coverage-summary.json");
|
|
9
9
|
|
|
10
10
|
export const CRITICAL_COVERAGE_THRESHOLDS = Object.freeze({
|
|
11
|
+
"src/core/next-action.js": { lines: 90, branches: 80 },
|
|
12
|
+
"src/core/next-action-phases.js": { lines: 70, branches: 70 },
|
|
13
|
+
"src/core/verification-execution.js": { lines: 85, branches: 70 },
|
|
14
|
+
"src/core/transaction.js": { lines: 90, branches: 75 },
|
|
15
|
+
"src/core/completion.js": { lines: 85, branches: 55 },
|
|
16
|
+
"src/core/preflight.js": { lines: 90, branches: 75 },
|
|
17
|
+
"src/core/events.js": { lines: 85, branches: 75 },
|
|
18
|
+
"src/core/installation-authority.js": { lines: 95, branches: 90 },
|
|
19
|
+
"src/core/trusted-authority.js": { lines: 85, branches: 70 },
|
|
11
20
|
"src/core/repository.js": { lines: 80, branches: 60 },
|
|
12
21
|
"src/core/policy-discovery.js": { lines: 75, branches: 45 },
|
|
13
22
|
"src/core/policy-adapters.js": { lines: 70, branches: 45 },
|