@azure-id/orc 1.9.2 → 2.0.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/CHANGELOG.md +321 -0
- package/README-id.md +21 -36
- package/README.md +25 -36
- package/bin/build-agents.js +117 -20
- package/bin/cli.js +725 -29
- package/bin/gotcha-import.js +1081 -0
- package/bin/gotcha.js +1286 -0
- package/bin/graph-query.js +1 -1
- package/bin/graph.js +717 -717
- package/bin/habit.js +1453 -0
- package/bin/mockrun-catalog.js +281 -276
- package/bin/run-undo.js +398 -0
- package/bin/trace-write.js +657 -0
- package/bin/verify-contracts.js +525 -79
- package/bin/verify-package.js +51 -4
- package/bin/webui/api.js +26 -0
- package/bin/webui/app.html +239 -232
- package/bin/webui/css/00-tokens.css +110 -92
- package/bin/webui/css/04-motion.css +87 -0
- package/bin/webui/css/06-responsive.css +203 -178
- package/bin/webui/css/panels/behaviour.css +205 -0
- package/bin/webui/fixtures/behaviour.js +532 -0
- package/bin/webui/fixtures/index.js +34 -0
- package/bin/webui/fixtures/knowledge.js +7 -1
- package/bin/webui/fixtures/stats.js +16 -0
- package/bin/webui/i18n/en/behaviour.json +143 -0
- package/bin/webui/i18n/en/nav.json +25 -24
- package/bin/webui/i18n/en/tour.json +37 -35
- package/bin/webui/i18n/id/behaviour.json +143 -0
- package/bin/webui/i18n/id/nav.json +25 -24
- package/bin/webui/i18n/id/tour.json +37 -35
- package/bin/webui/js/01-i18n.js +155 -154
- package/bin/webui/js/90-tour.js +498 -494
- package/bin/webui/js/91-shortcuts.js +126 -126
- package/bin/webui/js/99-boot.js +121 -118
- package/bin/webui/js/panels/behaviour.js +1022 -0
- package/mock-run/INDEX.md +109 -107
- package/mock-run/gotcha-import.md +118 -0
- package/mock-run/habits.md +129 -0
- package/mock-run/orc-quick.md +6 -1
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +7 -7
- package/templates/agents/orc-advisor-opus-5-xhigh.md +1 -7
- package/templates/agents/orc-analyze-mini-opus-5-med.md +1 -6
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +1 -4
- package/templates/agents/orc-claude-writer-opus-4-8-high.md +48 -53
- package/templates/agents/orc-claude-writer-opus-5-med.md +1 -8
- package/templates/agents/orc-context-combiner-opus-5-high.md +1 -11
- package/templates/agents/orc-executor-haiku-4-5.md +14 -6
- package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
- package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
- package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
- package/templates/agents/orc-executor-opus-5-high.md +14 -6
- package/templates/agents/orc-executor-opus-5-low.md +14 -6
- package/templates/agents/orc-executor-opus-5-med.md +14 -6
- package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
- package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
- package/templates/agents/orc-executor-sonnet-5-high.md +14 -6
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
- package/templates/agents/orc-judge-opus-5-xhigh.md +5 -9
- package/templates/agents/orc-learn-writer-opus-5-low.md +1 -7
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +1 -8
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
- package/templates/agents/orc-planner-mini-opus-5-med.md +1 -4
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +1 -2
- package/templates/agents/orc-planner-opus-5-med.md +1 -4
- package/templates/agents/orc-recon-opus-5-low.md +1 -8
- package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
- package/templates/agents/orc-retro-opus-5-med.md +6 -8
- package/templates/agents/orc-retro-sonnet-5-high.md +6 -7
- package/templates/agents/orc-reviewer-opus-5-med.md +52 -16
- package/templates/agents/orc-scout-opus-5-low.md +1 -6
- package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
- package/templates/agents/orc-system-analyst-opus-5-high.md +1 -6
- package/templates/agents/orc-test-author-opus-5-med.md +4 -5
- package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
- package/templates/agents/orc-verifier-opus-5-med.md +16 -8
- package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +74 -79
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +1 -8
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
- package/templates/commands/orc-analyze.md +13 -21
- package/templates/commands/orc-fast.md +10 -15
- package/templates/commands/orc-poly.md +12 -21
- package/templates/commands/orc-pr-driver.md +11 -30
- package/templates/commands/orc-pr-setup.md +10 -31
- package/templates/commands/orc-route.md +11 -41
- package/templates/commands/orc-test.md +5 -60
- package/templates/hooks/README.md +34 -0
- package/templates/hooks/orc-session-hook.js +264 -0
- package/templates/hooks/orc-statusline.js +3 -1
- package/templates/skills/_shared/README.md +9 -0
- package/templates/skills/_shared/code-graph.md +47 -55
- package/templates/skills/_shared/config-precedence.md +3 -1
- package/templates/skills/_shared/extra-dispatch.md +73 -88
- package/templates/skills/_shared/gotchas.md +228 -177
- package/templates/skills/_shared/habits.md +101 -0
- package/templates/skills/_shared/lane-contract.md +84 -0
- package/templates/skills/_shared/phases/README.md +142 -83
- package/templates/skills/_shared/phases/analyst-gates.md +10 -21
- package/templates/skills/_shared/phases/execution.md +8 -14
- package/templates/skills/_shared/phases/house-rules.md +27 -32
- package/templates/skills/_shared/phases/intake.md +127 -133
- package/templates/skills/_shared/phases/mock-example.md +46 -56
- package/templates/skills/_shared/phases/plan-handoff.md +91 -97
- package/templates/skills/_shared/phases/planning.md +7 -17
- package/templates/skills/_shared/phases/preflight.md +19 -42
- package/templates/skills/_shared/phases/review.md +23 -27
- package/templates/skills/_shared/phases/rules.md +18 -42
- package/templates/skills/_shared/phases/scoring.md +55 -65
- package/templates/skills/_shared/phases/security-checklist.md +46 -50
- package/templates/skills/_shared/phases/security.md +45 -55
- package/templates/skills/_shared/phases/ship.md +6 -15
- package/templates/skills/_shared/phases/stop-resume.md +2 -5
- package/templates/skills/_shared/phases/summary.md +73 -48
- package/templates/skills/_shared/phases/testgen.md +41 -51
- package/templates/skills/_shared/phases/trace-verbs.md +433 -0
- package/templates/skills/_shared/phases/trace.md +136 -367
- package/templates/skills/_shared/phases/verify.md +62 -70
- package/templates/skills/_shared/phases/wave-grouping.md +128 -133
- package/templates/skills/_shared/phases/wiki-consult.md +10 -6
- package/templates/skills/_shared/read-ladder.md +2 -55
- package/templates/skills/_shared/return-validation.md +17 -70
- package/templates/skills/_shared/review-slice.md +79 -0
- package/templates/skills/_shared/smoke-gate.md +46 -28
- package/templates/skills/context-combiner/SKILL.md +15 -44
- package/templates/skills/orc/SKILL.md +34 -62
- package/templates/skills/orc/references/pattern-gate.md +89 -89
- package/templates/skills/orc/references/phases/intake.md +41 -47
- package/templates/skills/orc/references/phases/integration.md +13 -19
- package/templates/skills/orc/references/preflight-report.md +8 -9
- package/templates/skills/orc/references/ultra-mode.md +8 -6
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
- package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
- package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +11 -52
- package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
- package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +11 -22
- package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
- package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
- package/templates/skills/orc-advisor/SKILL.md +56 -60
- package/templates/skills/orc-analyze/SKILL.md +30 -66
- package/templates/skills/orc-analyze/schemas/report-audit.md +2 -1
- package/templates/skills/orc-analyze/schemas/report-prose.md +2 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
- package/templates/skills/orc-diy/README.md +31 -0
- package/templates/skills/orc-diy/SKILL.md +23 -74
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
- package/templates/skills/orc-fast/SKILL.md +44 -72
- package/templates/skills/orc-judge/SKILL.md +77 -82
- package/templates/skills/orc-mini/SKILL.md +61 -109
- package/templates/skills/orc-pattern/SKILL.md +27 -48
- package/templates/skills/orc-poly/SKILL.md +32 -61
- package/templates/skills/orc-pr-driver/SKILL.md +25 -51
- package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
- package/templates/skills/orc-pr-setup/SKILL.md +20 -45
- package/templates/skills/orc-quick/README.md +43 -2
- package/templates/skills/orc-quick/SKILL.md +76 -107
- package/templates/skills/orc-quick/references/dispatch-gate.md +16 -5
- package/templates/skills/orc-quick/references/gh-mode.md +48 -1
- package/templates/skills/orc-quick/references/look.md +3 -1
- package/templates/skills/orc-retro/SKILL.md +19 -18
- package/templates/skills/orc-retro/examples/retro-mock.md +1 -1
- package/templates/skills/orc-route/SKILL.md +25 -45
- package/templates/skills/orc-test/SKILL.md +16 -37
- package/templates/skills/orc-verify/SKILL.md +14 -32
- package/templates/skills/orc-wait/SKILL.md +156 -163
- package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-2.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +1 -6
package/bin/verify-contracts.js
CHANGED
|
@@ -107,14 +107,10 @@ const CONTRACTS = [
|
|
|
107
107
|
"skills/orc/README.md",
|
|
108
108
|
"skills/orc/SKILL.md",
|
|
109
109
|
"skills/orc/schemas/checkpoint.md",
|
|
110
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
111
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
112
110
|
"skills/orc/subskills/orc-planner-mini/SKILL.md",
|
|
113
|
-
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
114
|
-
"skills/orc/subskills/orc-review-verify/core.md",
|
|
115
|
-
"skills/orc/subskills/orc-testgen/core.md",
|
|
116
111
|
// v1.8.0 — the graph noter reports its model like every other role.
|
|
117
112
|
"agents/orc-graph-noter-sonnet-4-6-med.md",
|
|
113
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
118
114
|
],
|
|
119
115
|
},
|
|
120
116
|
{
|
|
@@ -137,8 +133,6 @@ const CONTRACTS = [
|
|
|
137
133
|
"skills/orc/README.md",
|
|
138
134
|
"skills/orc/SKILL.md",
|
|
139
135
|
"skills/orc/references/pattern-gate.md",
|
|
140
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
141
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
142
136
|
"skills/_shared/phases/execution.md",
|
|
143
137
|
],
|
|
144
138
|
},
|
|
@@ -162,7 +156,6 @@ const CONTRACTS = [
|
|
|
162
156
|
"skills/orc-quick/SKILL.md",
|
|
163
157
|
"skills/_shared/phases/execution.md",
|
|
164
158
|
"skills/_shared/phases/house-rules.md",
|
|
165
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
166
159
|
"skills/orc/subskills/orc-execution/core.md",
|
|
167
160
|
],
|
|
168
161
|
},
|
|
@@ -170,6 +163,10 @@ const CONTRACTS = [
|
|
|
170
163
|
name: "rules_card slice field (v1.7.1 — the anti-slop card rides every dispatch slice, not only the preflight line)",
|
|
171
164
|
token: "rules_card",
|
|
172
165
|
files: [
|
|
166
|
+
// v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
|
|
167
|
+
"skills/_shared/review-slice.md",
|
|
168
|
+
"skills/orc/subskills/orc-review-verify/core.md",
|
|
169
|
+
"agents/orc-reviewer-opus-5-med.md",
|
|
173
170
|
"agents/orc-executor-haiku-4-5.md",
|
|
174
171
|
"agents/orc-executor-opus-4-7-high.md",
|
|
175
172
|
"agents/orc-executor-opus-4-7-med.md",
|
|
@@ -185,7 +182,6 @@ const CONTRACTS = [
|
|
|
185
182
|
"skills/_shared/phases/rules.md",
|
|
186
183
|
"skills/orc/SKILL.md",
|
|
187
184
|
"skills/orc/references/preflight-report.md",
|
|
188
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
189
185
|
"skills/orc/subskills/orc-execution/core.md",
|
|
190
186
|
"skills/orc-fast/SKILL.md",
|
|
191
187
|
"skills/orc-mini/SKILL.md",
|
|
@@ -196,6 +192,8 @@ const CONTRACTS = [
|
|
|
196
192
|
name: "validation_gate[] flow (codify -> slice -> review -> verify)",
|
|
197
193
|
token: "validation_gate",
|
|
198
194
|
files: [
|
|
195
|
+
// v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
|
|
196
|
+
"skills/_shared/review-slice.md",
|
|
199
197
|
"agents/orc-executor-haiku-4-5.md",
|
|
200
198
|
"agents/orc-executor-opus-4-7-high.md",
|
|
201
199
|
"agents/orc-executor-opus-4-7-med.md",
|
|
@@ -214,9 +212,7 @@ const CONTRACTS = [
|
|
|
214
212
|
"skills/orc-pattern/schemas/pattern-doc.md",
|
|
215
213
|
"skills/orc/SKILL.md",
|
|
216
214
|
"skills/orc/references/pattern-gate.md",
|
|
217
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
218
215
|
"skills/orc/subskills/orc-execution/core.md",
|
|
219
|
-
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
220
216
|
"skills/orc/subskills/orc-review-verify/core.md",
|
|
221
217
|
"skills/_shared/phases/verify.md",
|
|
222
218
|
],
|
|
@@ -237,8 +233,6 @@ const CONTRACTS = [
|
|
|
237
233
|
"agents/orc-executor-sonnet-5-high.md",
|
|
238
234
|
"skills/_shared/return-validation.md",
|
|
239
235
|
"skills/_shared/phases/execution.md",
|
|
240
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
241
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
242
236
|
],
|
|
243
237
|
},
|
|
244
238
|
{
|
|
@@ -266,8 +260,6 @@ const CONTRACTS = [
|
|
|
266
260
|
"skills/orc/README.md",
|
|
267
261
|
"skills/_shared/phases/execution.md",
|
|
268
262
|
"skills/orc/examples/full-run-mock.md",
|
|
269
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
270
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
271
263
|
],
|
|
272
264
|
},
|
|
273
265
|
{
|
|
@@ -303,7 +295,6 @@ const CONTRACTS = [
|
|
|
303
295
|
files: [
|
|
304
296
|
"agents/orc-reviewer-opus-5-med.md",
|
|
305
297
|
"agents/orc-verifier-opus-5-med.md",
|
|
306
|
-
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
307
298
|
"skills/orc/subskills/orc-review-verify/core.md",
|
|
308
299
|
"skills/orc-verify/SKILL.md",
|
|
309
300
|
],
|
|
@@ -315,8 +306,6 @@ const CONTRACTS = [
|
|
|
315
306
|
"agents/orc-reviewer-opus-5-med.md",
|
|
316
307
|
"agents/orc-verifier-opus-5-med.md",
|
|
317
308
|
"skills/orc-quick/SKILL.md",
|
|
318
|
-
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
319
|
-
"skills/orc/subskills/orc-review-verify/core.md",
|
|
320
309
|
],
|
|
321
310
|
},
|
|
322
311
|
{
|
|
@@ -327,7 +316,7 @@ const CONTRACTS = [
|
|
|
327
316
|
name: "EXTRA trace verb — substitution continuation (v0.50.0)",
|
|
328
317
|
token: "EXTRA substitution",
|
|
329
318
|
binFiles: ["bin/cli.js"],
|
|
330
|
-
files: ["skills/_shared/phases/trace.md"],
|
|
319
|
+
files: ["skills/_shared/phases/trace-verbs.md"],
|
|
331
320
|
},
|
|
332
321
|
{
|
|
333
322
|
// The additive tail on SCORE and DISPATCH. One token, two sides: the
|
|
@@ -338,7 +327,7 @@ const CONTRACTS = [
|
|
|
338
327
|
"hooks/orc-trace.js",
|
|
339
328
|
"skills/_shared/extra-dispatch.md",
|
|
340
329
|
"skills/_shared/phases/execution.md",
|
|
341
|
-
"skills/_shared/phases/trace.md",
|
|
330
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
342
331
|
"skills/_shared/phases/scoring.md",
|
|
343
332
|
],
|
|
344
333
|
},
|
|
@@ -356,7 +345,6 @@ const CONTRACTS = [
|
|
|
356
345
|
"skills/orc-doc/SKILL.md",
|
|
357
346
|
"skills/orc-fast/SKILL.md",
|
|
358
347
|
"skills/orc-quick/references/dispatch-gate.md",
|
|
359
|
-
"skills/orc-quick/SKILL.md",
|
|
360
348
|
"skills/orc-wiki/references/phases/phase-2.md",
|
|
361
349
|
"skills/orc-wiki/references/extra.md",
|
|
362
350
|
],
|
|
@@ -368,7 +356,7 @@ const CONTRACTS = [
|
|
|
368
356
|
name: "a slot dispatch's band is `slot:<slot>` (v0.55.0)",
|
|
369
357
|
token: "slot:<slot>",
|
|
370
358
|
binFiles: ["bin/cli.js"],
|
|
371
|
-
files: ["skills/_shared/extra-dispatch.md", "skills/_shared/phases/trace.md"],
|
|
359
|
+
files: ["skills/_shared/extra-dispatch.md", "skills/_shared/phases/trace-verbs.md"],
|
|
372
360
|
},
|
|
373
361
|
// ── v0.54.0 — RECOVERY. A failure is a POSITION, not a blank page ────────
|
|
374
362
|
{
|
|
@@ -479,7 +467,7 @@ const CONTRACTS = [
|
|
|
479
467
|
name: "the resume trace verb, composed once (v0.54.0)",
|
|
480
468
|
token: "EXTRA resume",
|
|
481
469
|
binFiles: ["bin/cli.js"],
|
|
482
|
-
files: ["skills/_shared/extra-dispatch.md", "skills/_shared/phases/trace.md"],
|
|
470
|
+
files: ["skills/_shared/extra-dispatch.md", "skills/_shared/phases/trace-verbs.md"],
|
|
483
471
|
},
|
|
484
472
|
{
|
|
485
473
|
// v1.0.0 W5 — same shape, same reason: a demotion that leaves no line
|
|
@@ -488,7 +476,7 @@ const CONTRACTS = [
|
|
|
488
476
|
name: "the demotion trace verb, composed once (v1.0.0)",
|
|
489
477
|
token: "EXTRA demote",
|
|
490
478
|
binFiles: ["bin/cli.js"],
|
|
491
|
-
files: ["skills/_shared/extra-dispatch.md", "skills/_shared/phases/trace.md"],
|
|
479
|
+
files: ["skills/_shared/extra-dispatch.md", "skills/_shared/phases/trace-verbs.md"],
|
|
492
480
|
},
|
|
493
481
|
{
|
|
494
482
|
// The trigger's own sentence. It is the half a "simplification" would
|
|
@@ -686,7 +674,7 @@ const CONTRACTS = [
|
|
|
686
674
|
"skills/_shared/phases/analyst-gates.md",
|
|
687
675
|
"skills/_shared/phases/plan-handoff.md",
|
|
688
676
|
"skills/orc/references/preflight-report.md",
|
|
689
|
-
"skills/_shared/phases/trace.md",
|
|
677
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
690
678
|
"skills/orc/schemas/planning-output.md",
|
|
691
679
|
"skills/orc/subskills/orc-planner-mini/SKILL.md",
|
|
692
680
|
"skills/orc/subskills/orc-planner/SKILL.md",
|
|
@@ -726,6 +714,8 @@ const CONTRACTS = [
|
|
|
726
714
|
name: "GATE trace verb (v0.9.0 — deterministic exit-gate pass/bounce lines)",
|
|
727
715
|
token: "`GATE",
|
|
728
716
|
files: [
|
|
717
|
+
"skills/_shared/phases/summary.md",
|
|
718
|
+
"skills/_shared/smoke-gate.md",
|
|
729
719
|
"agents/orc-retro-opus-5-med.md",
|
|
730
720
|
"agents/orc-retro-sonnet-5-high.md",
|
|
731
721
|
"skills/_shared/phases/analyst-gates.md",
|
|
@@ -753,6 +743,7 @@ const CONTRACTS = [
|
|
|
753
743
|
"skills/orc/references/preflight-report.md",
|
|
754
744
|
"skills/orc/references/ultra-mode.md",
|
|
755
745
|
"skills/orc/subskills/orc-pr/stack-gate.md",
|
|
746
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
756
747
|
],
|
|
757
748
|
},
|
|
758
749
|
{
|
|
@@ -769,6 +760,7 @@ const CONTRACTS = [
|
|
|
769
760
|
"skills/_shared/phases/trace.md",
|
|
770
761
|
"skills/orc/references/ultra-mode.md",
|
|
771
762
|
"skills/orc/schemas/checkpoint.md",
|
|
763
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
772
764
|
],
|
|
773
765
|
},
|
|
774
766
|
{
|
|
@@ -829,6 +821,8 @@ const CONTRACTS = [
|
|
|
829
821
|
"skills/orc-challenge/SKILL.md",
|
|
830
822
|
"skills/orc-pattern/SKILL.md",
|
|
831
823
|
"skills/orc/subskills/orc-planner/SKILL.md",
|
|
824
|
+
// v2.0.2 (eval D9): the session hook's narration guard quotes the rule.
|
|
825
|
+
"hooks/orc-session-hook.js",
|
|
832
826
|
],
|
|
833
827
|
},
|
|
834
828
|
{
|
|
@@ -913,6 +907,9 @@ const CONTRACTS = [
|
|
|
913
907
|
// writes its hint counters beside the run it names. A graph hint outside
|
|
914
908
|
// an ORC run would be context nobody asked ORC for.
|
|
915
909
|
"hooks/orc-graph-hook.js",
|
|
910
|
+
// v2.0.0 W6c: the session hook READS the pointer — the bell and the
|
|
911
|
+
// compact line both say nothing unless an ORC run is open.
|
|
912
|
+
"hooks/orc-session-hook.js",
|
|
916
913
|
// v1.2.1: the statusline READS the pointer to decide which run `status:`
|
|
917
914
|
// is about. "The newest file" would be a different, wrong answer during
|
|
918
915
|
// a lane suspend, when two traces are live and only one is the run.
|
|
@@ -956,6 +953,7 @@ const CONTRACTS = [
|
|
|
956
953
|
"skills/orc/subskills/orc-planner/SKILL.md",
|
|
957
954
|
"skills/_shared/phases/preflight.md",
|
|
958
955
|
"skills/_shared/phases/ship.md",
|
|
956
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
959
957
|
],
|
|
960
958
|
},
|
|
961
959
|
{
|
|
@@ -979,6 +977,30 @@ const CONTRACTS = [
|
|
|
979
977
|
"skills/orc-pact/references/gate.md",
|
|
980
978
|
"skills/orc/SKILL.md",
|
|
981
979
|
"skills/_shared/phases/trace.md",
|
|
980
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
981
|
+
],
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
// v2.0.0 T21 — the CLI holds the trace pen. The command renders the .txt
|
|
985
|
+
// AND the .jsonl from ONE packet; the Haiku writer above is the fallback on
|
|
986
|
+
// exit ≠ 0. Pinned to the protocol, its detail, the writer (which names
|
|
987
|
+
// itself the fallback), the two spines that named the writer, and the CLI.
|
|
988
|
+
name: "trace write command (v2.0.0 T21 — the CLI writes the trace pair)",
|
|
989
|
+
token: "orc trace write --packet -",
|
|
990
|
+
binFiles: ["bin/cli.js", "bin/trace-write.js"],
|
|
991
|
+
files: [
|
|
992
|
+
"agents/orc-trace-writer-haiku-4-5.md",
|
|
993
|
+
"skills/orc/SKILL.md",
|
|
994
|
+
"skills/orc-test/SKILL.md",
|
|
995
|
+
// v2.0.0 W3 — quick and mini pipe their packets to the CLI too.
|
|
996
|
+
"skills/orc-mini/SKILL.md",
|
|
997
|
+
"skills/orc-quick/SKILL.md",
|
|
998
|
+
// v2.0.0 W3c — and fast (its two packets carry the `ASK` events).
|
|
999
|
+
"skills/orc-fast/SKILL.md",
|
|
1000
|
+
"skills/_shared/phases/trace.md",
|
|
1001
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1002
|
+
// v2.0.2 (eval D9): the narration guard names the command.
|
|
1003
|
+
"hooks/orc-session-hook.js",
|
|
982
1004
|
],
|
|
983
1005
|
},
|
|
984
1006
|
{
|
|
@@ -1015,6 +1037,7 @@ const CONTRACTS = [
|
|
|
1015
1037
|
// only refine it — so a rename of this verb would silently blank the one
|
|
1016
1038
|
// segment on line 2 that changes minute to minute.
|
|
1017
1039
|
"hooks/orc-statusline.js",
|
|
1040
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1018
1041
|
],
|
|
1019
1042
|
},
|
|
1020
1043
|
{
|
|
@@ -1032,6 +1055,7 @@ const CONTRACTS = [
|
|
|
1032
1055
|
"skills/_shared/phases/trace.md",
|
|
1033
1056
|
"skills/orc/schemas/checkpoint.md",
|
|
1034
1057
|
"skills/_shared/phases/preflight.md",
|
|
1058
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1035
1059
|
],
|
|
1036
1060
|
},
|
|
1037
1061
|
{
|
|
@@ -1093,14 +1117,16 @@ const CONTRACTS = [
|
|
|
1093
1117
|
token: "wiki-meta.json",
|
|
1094
1118
|
binFiles: ["bin/cli.js"],
|
|
1095
1119
|
files: [
|
|
1120
|
+
// v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
|
|
1121
|
+
"skills/_shared/review-slice.md",
|
|
1096
1122
|
"hooks/orc-statusline.js",
|
|
1097
1123
|
"skills/_shared/detecting-artifacts.md",
|
|
1098
1124
|
"skills/orc-challenge/references/cycle-state.md",
|
|
1099
1125
|
"skills/orc-fast/SKILL.md",
|
|
1100
1126
|
"skills/orc-learn/SKILL.md",
|
|
1101
|
-
|
|
1127
|
+
// v2.0.0 Q10: orc-mini and orc-poly left — they read the tier from
|
|
1128
|
+
// `orc wiki status --json` → `.tier`, never the manifest by hand.
|
|
1102
1129
|
"skills/orc-pact/SKILL.md",
|
|
1103
|
-
"skills/orc-poly/SKILL.md",
|
|
1104
1130
|
"skills/orc-poly/examples/poly-run-mock.md",
|
|
1105
1131
|
"skills/orc-quick/SKILL.md",
|
|
1106
1132
|
"skills/orc-wiki/README.md",
|
|
@@ -1464,7 +1490,7 @@ const CONTRACTS = [
|
|
|
1464
1490
|
"skills/orc-challenge/examples/council-full-roster.md",
|
|
1465
1491
|
"skills/orc-challenge/examples/tsd-two-iterations.md",
|
|
1466
1492
|
"skills/orc-challenge/references/council.md",
|
|
1467
|
-
"skills/_shared/phases/trace.md",
|
|
1493
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1468
1494
|
],
|
|
1469
1495
|
binFiles: ["bin/cli.js"],
|
|
1470
1496
|
},
|
|
@@ -1588,7 +1614,7 @@ const CONTRACTS = [
|
|
|
1588
1614
|
binFiles: ["bin/cli.js"],
|
|
1589
1615
|
files: [
|
|
1590
1616
|
"skills/_shared/phases/ship.md",
|
|
1591
|
-
"skills/_shared/phases/trace.md",
|
|
1617
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1592
1618
|
],
|
|
1593
1619
|
},
|
|
1594
1620
|
{
|
|
@@ -1602,7 +1628,6 @@ const CONTRACTS = [
|
|
|
1602
1628
|
"skills/orc-fast/SKILL.md",
|
|
1603
1629
|
"skills/orc-learn/SKILL.md",
|
|
1604
1630
|
"skills/orc-learn/references/refresh.md",
|
|
1605
|
-
"skills/orc-mini/SKILL.md",
|
|
1606
1631
|
"skills/orc-poly/SKILL.md",
|
|
1607
1632
|
"skills/orc-poly/examples/poly-run-mock.md",
|
|
1608
1633
|
"skills/orc-poly/references/gather.md",
|
|
@@ -1759,7 +1784,7 @@ const CONTRACTS = [
|
|
|
1759
1784
|
"skills/orc-poly/examples/poly-run-mock.md",
|
|
1760
1785
|
"skills/orc-quick/SKILL.md",
|
|
1761
1786
|
"skills/orc/SKILL.md",
|
|
1762
|
-
"skills/_shared/phases/trace.md",
|
|
1787
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1763
1788
|
"skills/_shared/phases/wiki-consult.md",
|
|
1764
1789
|
"skills/_shared/phases/planning.md",
|
|
1765
1790
|
],
|
|
@@ -1773,7 +1798,7 @@ const CONTRACTS = [
|
|
|
1773
1798
|
token: "`CROSSLINK ",
|
|
1774
1799
|
files: [
|
|
1775
1800
|
"skills/_shared/phases/planning.md",
|
|
1776
|
-
"skills/_shared/phases/trace.md",
|
|
1801
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1777
1802
|
"skills/_shared/phases/wiki-consult.md",
|
|
1778
1803
|
],
|
|
1779
1804
|
},
|
|
@@ -1793,7 +1818,7 @@ const CONTRACTS = [
|
|
|
1793
1818
|
"skills/orc-fast/SKILL.md",
|
|
1794
1819
|
"skills/orc-mini/SKILL.md",
|
|
1795
1820
|
"skills/orc-pattern/SKILL.md",
|
|
1796
|
-
"skills/orc-quick/
|
|
1821
|
+
"skills/orc-quick/references/dispatch-gate.md",
|
|
1797
1822
|
"skills/orc-retro/SKILL.md",
|
|
1798
1823
|
"skills/orc-wiki/SKILL.md",
|
|
1799
1824
|
"skills/orc-wiki/references/partial-refresh.md",
|
|
@@ -1824,7 +1849,6 @@ const CONTRACTS = [
|
|
|
1824
1849
|
"agents/orc-retro-opus-5-med.md",
|
|
1825
1850
|
"agents/orc-scout-opus-5-low.md",
|
|
1826
1851
|
"agents/orc-wiki-scanner-opus-5-med.md",
|
|
1827
|
-
"agents/orc-wiki-scanner-sonnet-5-high.md",
|
|
1828
1852
|
"commands/orc-pattern.md",
|
|
1829
1853
|
"skills/_shared/drift-recovery.md",
|
|
1830
1854
|
"skills/_shared/extra-dispatch.md",
|
|
@@ -1842,7 +1866,6 @@ const CONTRACTS = [
|
|
|
1842
1866
|
"skills/orc-mini/SKILL.md",
|
|
1843
1867
|
"skills/orc-pattern/SKILL.md",
|
|
1844
1868
|
"skills/orc-quick/README.md",
|
|
1845
|
-
"skills/orc-quick/SKILL.md",
|
|
1846
1869
|
"skills/orc-quick/references/dispatch-gate.md",
|
|
1847
1870
|
"skills/orc-retro/SKILL.md",
|
|
1848
1871
|
"skills/orc-wiki/SKILL.md",
|
|
@@ -1856,7 +1879,7 @@ const CONTRACTS = [
|
|
|
1856
1879
|
"skills/orc/references/effort-and-mode.md",
|
|
1857
1880
|
"skills/orc/references/pattern-gate.md",
|
|
1858
1881
|
"skills/orc/references/preflight-report.md",
|
|
1859
|
-
"skills/_shared/phases/trace.md",
|
|
1882
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1860
1883
|
"skills/orc/references/ultra-mode.md",
|
|
1861
1884
|
"skills/_shared/config-precedence.md",
|
|
1862
1885
|
"skills/_shared/phases/planning.md",
|
|
@@ -1867,7 +1890,7 @@ const CONTRACTS = [
|
|
|
1867
1890
|
token: "`CONFIG ",
|
|
1868
1891
|
files: [
|
|
1869
1892
|
"skills/_shared/phases/planning.md",
|
|
1870
|
-
"skills/_shared/phases/trace.md",
|
|
1893
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1871
1894
|
],
|
|
1872
1895
|
},
|
|
1873
1896
|
{
|
|
@@ -1908,7 +1931,7 @@ const CONTRACTS = [
|
|
|
1908
1931
|
"skills/_shared/phases/plan-handoff.md",
|
|
1909
1932
|
"skills/_shared/phases/planning.md",
|
|
1910
1933
|
"skills/_shared/phases/scoring.md",
|
|
1911
|
-
"skills/_shared/phases/trace.md",
|
|
1934
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
1912
1935
|
"skills/_shared/phases/wave-grouping.md",
|
|
1913
1936
|
"skills/orc-mini/SKILL.md",
|
|
1914
1937
|
"skills/orc-mini/references/complexity.md",
|
|
@@ -1949,7 +1972,6 @@ const CONTRACTS = [
|
|
|
1949
1972
|
"skills/_shared/phases/planning.md",
|
|
1950
1973
|
"skills/_shared/phases/wiki-consult.md",
|
|
1951
1974
|
"skills/orc-fast/SKILL.md",
|
|
1952
|
-
"skills/orc-mini/SKILL.md",
|
|
1953
1975
|
"skills/orc-wiki/references/phases/phase-1.md",
|
|
1954
1976
|
"skills/orc-wiki/references/crosslink.md",
|
|
1955
1977
|
"skills/orc-wiki/references/staleness.md",
|
|
@@ -2003,11 +2025,12 @@ const CONTRACTS = [
|
|
|
2003
2025
|
"hooks/orc-statusline.js",
|
|
2004
2026
|
"skills/orc-diy/README.md",
|
|
2005
2027
|
"skills/orc-diy/SKILL.md",
|
|
2006
|
-
// v1.0.0 W13 — read-ladder.md rule 5 names this artifact to explain why
|
|
2007
|
-
// orc-diy reads its phases at `compile-time` and never during a run.
|
|
2008
|
-
"skills/_shared/read-ladder.md",
|
|
2009
2028
|
"skills/orc-diy/references/compile.md",
|
|
2010
2029
|
"skills/orc-diy/references/flow-schema.md",
|
|
2030
|
+
// v1.0.0 W13 — the partial-read rule 5 names this artifact to explain why
|
|
2031
|
+
// orc-diy reads its phases at `compile-time` and never during a run.
|
|
2032
|
+
// v2.0.0 T6 — the rule moved from read-ladder.md to phases/README.md.
|
|
2033
|
+
"skills/_shared/phases/README.md",
|
|
2011
2034
|
],
|
|
2012
2035
|
},
|
|
2013
2036
|
{
|
|
@@ -2075,7 +2098,6 @@ const CONTRACTS = [
|
|
|
2075
2098
|
token: "crosslink/needs.json",
|
|
2076
2099
|
files: [
|
|
2077
2100
|
"skills/orc-fast/SKILL.md",
|
|
2078
|
-
"skills/orc-mini/SKILL.md",
|
|
2079
2101
|
"skills/orc-wiki/README.md",
|
|
2080
2102
|
"skills/orc-wiki/SKILL.md",
|
|
2081
2103
|
"skills/orc-wiki/references/crosslink-compile.md",
|
|
@@ -2083,7 +2105,6 @@ const CONTRACTS = [
|
|
|
2083
2105
|
"skills/orc-wiki/schemas/crosslink-tag.md",
|
|
2084
2106
|
"skills/_shared/phases/planning.md",
|
|
2085
2107
|
"skills/_shared/phases/wiki-consult.md",
|
|
2086
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
2087
2108
|
"skills/orc/subskills/orc-execution/core.md",
|
|
2088
2109
|
],
|
|
2089
2110
|
},
|
|
@@ -2099,7 +2120,7 @@ const CONTRACTS = [
|
|
|
2099
2120
|
"skills/orc-wiki/references/staleness.md",
|
|
2100
2121
|
"skills/orc-wiki/schemas/crosslink-tag.md",
|
|
2101
2122
|
"skills/_shared/phases/wiki-consult.md",
|
|
2102
|
-
"skills/orc/subskills/orc-execution/
|
|
2123
|
+
"skills/orc/subskills/orc-execution/core.md",
|
|
2103
2124
|
],
|
|
2104
2125
|
},
|
|
2105
2126
|
{
|
|
@@ -2356,7 +2377,7 @@ const CONTRACTS = [
|
|
|
2356
2377
|
"skills/orc-fast/SKILL.md",
|
|
2357
2378
|
"skills/orc-mini/SKILL.md",
|
|
2358
2379
|
"skills/orc/config.md",
|
|
2359
|
-
"skills/_shared/phases/trace.md",
|
|
2380
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2360
2381
|
"skills/orc/references/ultra-mode.md",
|
|
2361
2382
|
"skills/_shared/phases/wave-grouping.md",
|
|
2362
2383
|
"skills/_shared/phases/ship.md",
|
|
@@ -2409,7 +2430,6 @@ const CONTRACTS = [
|
|
|
2409
2430
|
"skills/orc/references/preflight-report.md",
|
|
2410
2431
|
"skills/_shared/phases/wave-grouping.md",
|
|
2411
2432
|
"skills/orc/schemas/planning-output.md",
|
|
2412
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
2413
2433
|
"skills/orc/subskills/orc-execution/core.md",
|
|
2414
2434
|
"skills/orc/subskills/orc-planner-mini/SKILL.md",
|
|
2415
2435
|
"skills/orc/subskills/orc-planner/SKILL.md",
|
|
@@ -2437,10 +2457,8 @@ const CONTRACTS = [
|
|
|
2437
2457
|
"skills/_shared/phases/verify.md",
|
|
2438
2458
|
"skills/orc-mini/SKILL.md",
|
|
2439
2459
|
"skills/orc/config.md",
|
|
2440
|
-
"skills/_shared/phases/trace.md",
|
|
2441
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
2460
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2442
2461
|
"skills/orc/subskills/orc-execution/core.md",
|
|
2443
|
-
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
2444
2462
|
"skills/orc/subskills/orc-review-verify/core.md",
|
|
2445
2463
|
],
|
|
2446
2464
|
},
|
|
@@ -2461,8 +2479,6 @@ const CONTRACTS = [
|
|
|
2461
2479
|
"agents/orc-executor-sonnet-5-high.md",
|
|
2462
2480
|
"skills/_shared/return-validation.md",
|
|
2463
2481
|
"skills/_shared/phases/execution.md",
|
|
2464
|
-
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
2465
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
2466
2482
|
],
|
|
2467
2483
|
},
|
|
2468
2484
|
{
|
|
@@ -2472,7 +2488,6 @@ const CONTRACTS = [
|
|
|
2472
2488
|
files: [
|
|
2473
2489
|
"agents/orc-verifier-opus-5-med.md",
|
|
2474
2490
|
"skills/_shared/phases/verify.md",
|
|
2475
|
-
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
2476
2491
|
"skills/orc/subskills/orc-review-verify/core.md",
|
|
2477
2492
|
],
|
|
2478
2493
|
},
|
|
@@ -2486,7 +2501,7 @@ const CONTRACTS = [
|
|
|
2486
2501
|
"skills/orc-mini/SKILL.md",
|
|
2487
2502
|
"skills/orc-retro/SKILL.md",
|
|
2488
2503
|
"skills/orc/SKILL.md",
|
|
2489
|
-
"skills/_shared/phases/trace.md",
|
|
2504
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2490
2505
|
],
|
|
2491
2506
|
},
|
|
2492
2507
|
{
|
|
@@ -2550,6 +2565,8 @@ const CONTRACTS = [
|
|
|
2550
2565
|
"skills/orc/README.md",
|
|
2551
2566
|
"skills/orc/SKILL.md",
|
|
2552
2567
|
"skills/orc/config.md",
|
|
2568
|
+
// v2.0.0 W6c: the session hook's compact line names the run folder.
|
|
2569
|
+
"hooks/orc-session-hook.js",
|
|
2553
2570
|
],
|
|
2554
2571
|
},
|
|
2555
2572
|
// ── Stacked pull requests (v0.37.0) ──────────────────────────────────────
|
|
@@ -2673,6 +2690,8 @@ const CONTRACTS = [
|
|
|
2673
2690
|
name: "code graph contract (v1.8.0 — _shared/code-graph.md)",
|
|
2674
2691
|
token: "code-graph.md",
|
|
2675
2692
|
files: [
|
|
2693
|
+
// v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
|
|
2694
|
+
"skills/_shared/review-slice.md",
|
|
2676
2695
|
"skills/_shared/README.md",
|
|
2677
2696
|
"skills/_shared/code-graph.md",
|
|
2678
2697
|
"skills/_shared/opus5-only.md",
|
|
@@ -2681,7 +2700,7 @@ const CONTRACTS = [
|
|
|
2681
2700
|
"skills/_shared/phases/preflight.md",
|
|
2682
2701
|
"skills/_shared/phases/review.md",
|
|
2683
2702
|
"skills/_shared/phases/ship.md",
|
|
2684
|
-
"skills/_shared/phases/trace.md",
|
|
2703
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2685
2704
|
"skills/_shared/phases/wiki-consult.md",
|
|
2686
2705
|
"skills/_shared/read-ladder.md",
|
|
2687
2706
|
"skills/_shared/return-validation.md",
|
|
@@ -2733,6 +2752,8 @@ const CONTRACTS = [
|
|
|
2733
2752
|
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2734
2753
|
"skills/_shared/code-graph.md",
|
|
2735
2754
|
"skills/_shared/phases/execution.md",
|
|
2755
|
+
// v2.0.0 T11: the mini `none is an answer` paragraph moved here from its spine.
|
|
2756
|
+
"skills/_shared/phases/wiki-consult.md",
|
|
2736
2757
|
"skills/_shared/read-ladder.md",
|
|
2737
2758
|
"skills/_shared/return-validation.md",
|
|
2738
2759
|
"skills/orc-mini/SKILL.md",
|
|
@@ -2749,6 +2770,8 @@ const CONTRACTS = [
|
|
|
2749
2770
|
name: "graph brief answer (v1.9.1 — --brief on every --json read a lane makes)",
|
|
2750
2771
|
token: "--brief",
|
|
2751
2772
|
files: [
|
|
2773
|
+
// v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
|
|
2774
|
+
"skills/_shared/review-slice.md",
|
|
2752
2775
|
"agents/orc-executor-haiku-4-5.md",
|
|
2753
2776
|
"agents/orc-executor-opus-4-7-high.md",
|
|
2754
2777
|
"agents/orc-executor-opus-4-7-med.md",
|
|
@@ -2769,7 +2792,7 @@ const CONTRACTS = [
|
|
|
2769
2792
|
"skills/_shared/phases/review.md",
|
|
2770
2793
|
"skills/_shared/phases/ship.md",
|
|
2771
2794
|
// trace.md names the call each trace verb is copied from.
|
|
2772
|
-
"skills/_shared/phases/trace.md",
|
|
2795
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2773
2796
|
"skills/_shared/read-ladder.md",
|
|
2774
2797
|
"skills/orc/SKILL.md",
|
|
2775
2798
|
"skills/orc-fast/SKILL.md",
|
|
@@ -2786,7 +2809,7 @@ const CONTRACTS = [
|
|
|
2786
2809
|
// would drift from the CLI's grammar the first time either side moved.
|
|
2787
2810
|
name: "graph blast line (v1.9.1 — changes computes the blast radius, the lane prints it)",
|
|
2788
2811
|
token: "blast_line",
|
|
2789
|
-
files: ["skills/orc-mini/SKILL.md", "skills/orc-quick/SKILL.md"],
|
|
2812
|
+
files: ["skills/_shared/phases/summary.md", "skills/orc-mini/SKILL.md", "skills/orc-quick/SKILL.md"],
|
|
2790
2813
|
binFiles: ["bin/graph-signals.js"],
|
|
2791
2814
|
},
|
|
2792
2815
|
{
|
|
@@ -2796,7 +2819,7 @@ const CONTRACTS = [
|
|
|
2796
2819
|
token: "--complexity",
|
|
2797
2820
|
files: [
|
|
2798
2821
|
"skills/_shared/code-graph.md",
|
|
2799
|
-
"skills/_shared/phases/trace.md",
|
|
2822
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2800
2823
|
"skills/orc-mini/SKILL.md",
|
|
2801
2824
|
"skills/orc-mini/references/complexity.md",
|
|
2802
2825
|
],
|
|
@@ -2900,7 +2923,6 @@ const CONTRACTS = [
|
|
|
2900
2923
|
"agents/orc-executor-sonnet-4-6-med.md",
|
|
2901
2924
|
"agents/orc-executor-sonnet-5-high.md",
|
|
2902
2925
|
"skills/_shared/return-validation.md",
|
|
2903
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
2904
2926
|
],
|
|
2905
2927
|
},
|
|
2906
2928
|
{
|
|
@@ -2911,7 +2933,8 @@ const CONTRACTS = [
|
|
|
2911
2933
|
name: "reproduce-first trace verb (v1.9.0 — REPRO red|green)",
|
|
2912
2934
|
token: "REPRO",
|
|
2913
2935
|
files: [
|
|
2914
|
-
"skills/_shared/
|
|
2936
|
+
"skills/_shared/gotchas.md",
|
|
2937
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
2915
2938
|
"skills/orc-quick/SKILL.md",
|
|
2916
2939
|
"skills/orc-quick/references/defect.md",
|
|
2917
2940
|
],
|
|
@@ -2999,7 +3022,7 @@ const CONTRACTS = [
|
|
|
2999
3022
|
files: [
|
|
3000
3023
|
"skills/_shared/code-graph.md",
|
|
3001
3024
|
"skills/_shared/phases/planning.md",
|
|
3002
|
-
"skills/_shared/phases/trace.md",
|
|
3025
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
3003
3026
|
"skills/orc-diy/references/flow-schema.md",
|
|
3004
3027
|
"skills/orc-mini/SKILL.md",
|
|
3005
3028
|
"skills/orc-quick/SKILL.md",
|
|
@@ -3015,7 +3038,7 @@ const CONTRACTS = [
|
|
|
3015
3038
|
token: "GRAPH-MAP",
|
|
3016
3039
|
files: [
|
|
3017
3040
|
"skills/_shared/phases/planning.md",
|
|
3018
|
-
"skills/_shared/phases/trace.md",
|
|
3041
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
3019
3042
|
"skills/orc-mini/examples/mini-run-mock.md",
|
|
3020
3043
|
],
|
|
3021
3044
|
binFiles: ["bin/cli.js"],
|
|
@@ -3035,7 +3058,7 @@ const CONTRACTS = [
|
|
|
3035
3058
|
// The verb lives in the trace table and in the phase that emits it.
|
|
3036
3059
|
name: "graph gain line (v1.8.2 — GRAPH-GAIN, one line at ship, copied verbatim)",
|
|
3037
3060
|
token: "GRAPH-GAIN",
|
|
3038
|
-
files: ["skills/_shared/phases/ship.md", "skills/_shared/phases/trace.md"],
|
|
3061
|
+
files: ["skills/_shared/phases/ship.md", "skills/_shared/phases/trace-verbs.md"],
|
|
3039
3062
|
binFiles: ["bin/cli.js"],
|
|
3040
3063
|
},
|
|
3041
3064
|
{
|
|
@@ -3091,7 +3114,6 @@ const CONTRACTS = [
|
|
|
3091
3114
|
"skills/orc-quick/references/look.md",
|
|
3092
3115
|
"skills/orc-wiki/SKILL.md",
|
|
3093
3116
|
"skills/orc/SKILL.md",
|
|
3094
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
3095
3117
|
// v1.6.0 — the ENFORCEMENT half. The ladder was advisory prose in three
|
|
3096
3118
|
// places and enforced in none; this hook is the layer that can refuse.
|
|
3097
3119
|
// It cites the ladder by name because its two carve-outs ARE the
|
|
@@ -3130,7 +3152,9 @@ const CONTRACTS = [
|
|
|
3130
3152
|
{
|
|
3131
3153
|
name: "gotchas artifact location (repair memory)",
|
|
3132
3154
|
token: ".claude/orc/gotchas.md",
|
|
3155
|
+
// v2.0.0 Q10: the statusline hook counts `## G-` headings in this file.
|
|
3133
3156
|
files: [
|
|
3157
|
+
"hooks/orc-statusline.js",
|
|
3134
3158
|
"skills/_shared/README.md",
|
|
3135
3159
|
"skills/_shared/gotchas.md",
|
|
3136
3160
|
"skills/_shared/phases/execution.md",
|
|
@@ -3146,6 +3170,8 @@ const CONTRACTS = [
|
|
|
3146
3170
|
name: "gotcha_recorded return field (repair-loop capture)",
|
|
3147
3171
|
token: "gotcha_recorded",
|
|
3148
3172
|
files: [
|
|
3173
|
+
// v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
|
|
3174
|
+
"skills/_shared/phases/review.md",
|
|
3149
3175
|
"agents/orc-executor-haiku-4-5.md",
|
|
3150
3176
|
"agents/orc-executor-opus-4-7-high.md",
|
|
3151
3177
|
"agents/orc-executor-opus-4-7-med.md",
|
|
@@ -3162,8 +3188,6 @@ const CONTRACTS = [
|
|
|
3162
3188
|
"skills/_shared/return-validation.md",
|
|
3163
3189
|
"skills/_shared/phases/execution.md",
|
|
3164
3190
|
"skills/orc-mini/SKILL.md",
|
|
3165
|
-
"skills/orc/subskills/orc-execution/core.md",
|
|
3166
|
-
"skills/orc/subskills/orc-review-verify/core.md",
|
|
3167
3191
|
],
|
|
3168
3192
|
},
|
|
3169
3193
|
{
|
|
@@ -3457,7 +3481,7 @@ const CONTRACTS = [
|
|
|
3457
3481
|
"skills/orc-doc/examples/orc-doc-prd-run.md",
|
|
3458
3482
|
// v0.49.2 — the doc lane's DISPATCH tail names the section FILE, which is
|
|
3459
3483
|
// the only thing that makes `orc doc cost` per-section honest.
|
|
3460
|
-
"skills/_shared/phases/trace.md",
|
|
3484
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
3461
3485
|
],
|
|
3462
3486
|
binFiles: ["bin/cli.js"],
|
|
3463
3487
|
},
|
|
@@ -3614,7 +3638,7 @@ const CONTRACTS = [
|
|
|
3614
3638
|
"skills/orc-doc/references/chunking.md",
|
|
3615
3639
|
// The DISPATCH tail that makes per-section attribution honest is defined
|
|
3616
3640
|
// there, so the command's name has to move with it.
|
|
3617
|
-
"skills/_shared/phases/trace.md",
|
|
3641
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
3618
3642
|
"skills/orc-doc/README.md",
|
|
3619
3643
|
"commands/orc-doc.md",
|
|
3620
3644
|
],
|
|
@@ -3646,8 +3670,12 @@ const CONTRACTS = [
|
|
|
3646
3670
|
token: "orc lane calls",
|
|
3647
3671
|
files: [
|
|
3648
3672
|
"skills/orc-test/SKILL.md",
|
|
3649
|
-
|
|
3673
|
+
// v2.0.0 T3 — the full catalogue rules, read only on exit ≠ 0.
|
|
3674
|
+
"skills/_shared/lane-contract.md",
|
|
3650
3675
|
"skills/_shared/phases/preflight.md",
|
|
3676
|
+
// v2.0.0 T12 — code-graph.md §3 lists the graph calls and points here
|
|
3677
|
+
// for their exit codes instead of a second copy of LANE_CALLS.
|
|
3678
|
+
"skills/_shared/code-graph.md",
|
|
3651
3679
|
// v1.0.0 W14 — every lane that makes a catalogued call carries the
|
|
3652
3680
|
// `## Calls` contract. orc-advisor and orc-judge make none, so they
|
|
3653
3681
|
// have no block: an empty pointer is worse than no pointer.
|
|
@@ -3680,9 +3708,258 @@ const CONTRACTS = [
|
|
|
3680
3708
|
"skills/orc-verify/SKILL.md",
|
|
3681
3709
|
"skills/orc-wiki/SKILL.md",
|
|
3682
3710
|
"skills/orc/SKILL.md",
|
|
3711
|
+
"skills/_shared/phases/README.md",
|
|
3712
|
+
],
|
|
3713
|
+
binFiles: ["bin/cli.js"],
|
|
3714
|
+
},
|
|
3715
|
+
{
|
|
3716
|
+
// v2.0.0 T3 — the six boilerplate blocks of the coding-lane spines (Calls ·
|
|
3717
|
+
// Config · Rules · Behavior trace · Phases · Waiting) hold their COMMON text
|
|
3718
|
+
// once, in `_shared/lane-contract.md`. It is NOT a PHASE_FILES row on
|
|
3719
|
+
// purpose: a lane reads it only when a CLI call exits ≠ 0, which is exactly
|
|
3720
|
+
// when `orc lane phases` cannot tell it where the file is. So the spine names
|
|
3721
|
+
// the file itself, and this row is the reachability check — every coding
|
|
3722
|
+
// spine points at it, and no other spine does until it is converted too.
|
|
3723
|
+
name: "the lane contract is read only on exit ≠ 0 (v2.0.0 T3)",
|
|
3724
|
+
token: "lane-contract.md",
|
|
3725
|
+
files: [
|
|
3726
|
+
"skills/_shared/README.md",
|
|
3727
|
+
"skills/_shared/config-precedence.md",
|
|
3728
|
+
"skills/_shared/lane-contract.md",
|
|
3729
|
+
"skills/context-combiner/SKILL.md",
|
|
3730
|
+
"skills/orc-analyze-mini/SKILL.md",
|
|
3731
|
+
"skills/orc-analyze/SKILL.md",
|
|
3732
|
+
"skills/orc-diy/SKILL.md",
|
|
3733
|
+
"skills/orc-fast/SKILL.md",
|
|
3734
|
+
"skills/orc-mini/SKILL.md",
|
|
3735
|
+
"skills/orc-pattern/SKILL.md",
|
|
3736
|
+
"skills/orc-poly/SKILL.md",
|
|
3737
|
+
"skills/orc-pr-driver/SKILL.md",
|
|
3738
|
+
"skills/orc-pr-setup/SKILL.md",
|
|
3739
|
+
"skills/orc-quick/SKILL.md",
|
|
3740
|
+
"skills/orc-route/SKILL.md",
|
|
3741
|
+
"skills/orc-test/SKILL.md",
|
|
3742
|
+
"skills/orc-verify/SKILL.md",
|
|
3743
|
+
"skills/orc/SKILL.md",
|
|
3744
|
+
],
|
|
3745
|
+
},
|
|
3746
|
+
{
|
|
3747
|
+
// v2.0.0 W5a — the ONE review slice. Read ON DEMAND, only when a review
|
|
3748
|
+
// dispatch is about to be built; not a PHASE_FILES row, so this row is the
|
|
3749
|
+
// reachability check: every surface that builds a review (or, in
|
|
3750
|
+
// orc-pr-driver, only its gotcha card) points at the one file.
|
|
3751
|
+
name: "the one review slice every lane builds (v2.0.0 W5a)",
|
|
3752
|
+
token: "review-slice.md",
|
|
3753
|
+
files: [
|
|
3754
|
+
"skills/_shared/README.md",
|
|
3755
|
+
"skills/_shared/gotchas.md",
|
|
3756
|
+
"skills/_shared/phases/review.md",
|
|
3757
|
+
"skills/orc/subskills/orc-review-verify/core.md",
|
|
3758
|
+
"skills/orc/references/ultra-mode.md",
|
|
3759
|
+
"skills/orc-mini/SKILL.md",
|
|
3760
|
+
"skills/orc-quick/references/dispatch-gate.md",
|
|
3761
|
+
"skills/orc-pr-driver/references/green-gate.md",
|
|
3762
|
+
],
|
|
3763
|
+
},
|
|
3764
|
+
// v2.0.0 W5a — the review v2 contract tokens. Each is pinned to the EXACT
|
|
3765
|
+
// files that carry it, so a lane that grows its own copy of a field fails.
|
|
3766
|
+
{
|
|
3767
|
+
name: "gotcha_card — the reviewer / verifier / judge card field (v2.0.0 W5a)",
|
|
3768
|
+
token: "gotcha_card",
|
|
3769
|
+
files: [
|
|
3770
|
+
"agents/orc-judge-opus-5-xhigh.md",
|
|
3771
|
+
"agents/orc-reviewer-opus-5-med.md",
|
|
3772
|
+
"agents/orc-verifier-opus-5-med.md",
|
|
3773
|
+
"skills/_shared/README.md",
|
|
3774
|
+
"skills/_shared/gotchas.md",
|
|
3775
|
+
"skills/_shared/review-slice.md",
|
|
3776
|
+
"skills/orc-pr-driver/references/green-gate.md",
|
|
3777
|
+
"skills/orc/references/ultra-mode.md",
|
|
3778
|
+
"skills/orc/subskills/orc-review-verify/core.md",
|
|
3779
|
+
],
|
|
3780
|
+
},
|
|
3781
|
+
{
|
|
3782
|
+
name: "tool_findings[] — the R1 free check's output, never re-reported (v2.0.0 W5a)",
|
|
3783
|
+
token: "tool_findings",
|
|
3784
|
+
files: [
|
|
3785
|
+
"agents/orc-judge-opus-5-xhigh.md",
|
|
3786
|
+
"agents/orc-reviewer-opus-5-med.md",
|
|
3787
|
+
"agents/orc-verifier-opus-5-med.md",
|
|
3788
|
+
"skills/_shared/README.md",
|
|
3789
|
+
"skills/_shared/review-slice.md",
|
|
3790
|
+
"skills/orc/references/ultra-mode.md",
|
|
3791
|
+
"skills/orc/subskills/orc-review-verify/core.md",
|
|
3792
|
+
],
|
|
3793
|
+
},
|
|
3794
|
+
{
|
|
3795
|
+
name: "pre_existing — a finding outside diff_ranges never gates (v2.0.0 W5a)",
|
|
3796
|
+
token: "pre_existing",
|
|
3797
|
+
files: [
|
|
3798
|
+
"agents/orc-reviewer-opus-5-med.md",
|
|
3799
|
+
"skills/_shared/phases/summary.md",
|
|
3800
|
+
"skills/_shared/review-slice.md",
|
|
3801
|
+
],
|
|
3802
|
+
},
|
|
3803
|
+
{
|
|
3804
|
+
// The line `orc gotcha quality` reads; TRACE_VERBS holds its grammar.
|
|
3805
|
+
name: "FINDING-OUTCOME — the review-close outcome line (v2.0.0 W5a)",
|
|
3806
|
+
token: "FINDING-OUTCOME",
|
|
3807
|
+
files: [
|
|
3808
|
+
"skills/_shared/gotchas.md",
|
|
3809
|
+
"skills/_shared/phases/summary.md",
|
|
3810
|
+
"skills/_shared/phases/trace-verbs.md",
|
|
3811
|
+
"skills/_shared/review-slice.md",
|
|
3812
|
+
"skills/orc-quick/references/dispatch-gate.md",
|
|
3683
3813
|
],
|
|
3684
3814
|
binFiles: ["bin/cli.js"],
|
|
3685
3815
|
},
|
|
3816
|
+
{
|
|
3817
|
+
name: "orc gotcha card — the reviewer card call (v2.0.0 W5a)",
|
|
3818
|
+
token: "orc gotcha card",
|
|
3819
|
+
files: [
|
|
3820
|
+
"agents/orc-verifier-opus-5-med.md",
|
|
3821
|
+
"skills/_shared/review-slice.md",
|
|
3822
|
+
"skills/orc-pr-driver/references/green-gate.md",
|
|
3823
|
+
// v2.0.2 (eval D13): the session hook hands the card to reviewers.
|
|
3824
|
+
"hooks/orc-session-hook.js",
|
|
3825
|
+
"hooks/README.md",
|
|
3826
|
+
],
|
|
3827
|
+
binFiles: ["bin/gotcha.js"],
|
|
3828
|
+
},
|
|
3829
|
+
{
|
|
3830
|
+
name: "orc gotcha filter — the after-filter call, never removes a P0/P1 (v2.0.0 W5a)",
|
|
3831
|
+
token: "orc gotcha filter",
|
|
3832
|
+
files: ["agents/orc-reviewer-opus-5-med.md", "skills/_shared/review-slice.md"],
|
|
3833
|
+
binFiles: ["bin/gotcha.js"],
|
|
3834
|
+
},
|
|
3835
|
+
{
|
|
3836
|
+
// The one recording call (`_shared/gotchas.md` §10) and the file only the CLI writes.
|
|
3837
|
+
name: "orc gotcha observe — the one recording call (v2.0.0 W5a)",
|
|
3838
|
+
token: "orc gotcha observe",
|
|
3839
|
+
files: ["skills/_shared/gotchas.md"],
|
|
3840
|
+
binFiles: ["bin/gotcha.js"],
|
|
3841
|
+
},
|
|
3842
|
+
// v2.0.0 W6a — the importers, the review-step sync (DE-29) and the two
|
|
3843
|
+
// read-only `gh` reads. Each call is pinned to the exact files that name it.
|
|
3844
|
+
{
|
|
3845
|
+
name: "orc gotcha sync — at every review step, before the card (v2.0.0 W6a, DE-29)",
|
|
3846
|
+
token: "orc gotcha sync",
|
|
3847
|
+
files: ["skills/_shared/review-slice.md", "skills/orc-pr-driver/references/green-gate.md"],
|
|
3848
|
+
binFiles: ["bin/gotcha.js", "bin/gotcha-import.js"],
|
|
3849
|
+
},
|
|
3850
|
+
{
|
|
3851
|
+
name: "orc gotcha import — Sonar / SARIF issues as a quick request (v2.0.0 W6a, Q4)",
|
|
3852
|
+
token: "orc gotcha import",
|
|
3853
|
+
files: ["skills/orc-quick/references/gh-mode.md", "skills/orc-quick/README.md"],
|
|
3854
|
+
binFiles: ["bin/gotcha.js", "bin/gotcha-import.js"],
|
|
3855
|
+
},
|
|
3856
|
+
{
|
|
3857
|
+
// DE-14: the token is read from the environment only — never a config key.
|
|
3858
|
+
name: "SONAR_TOKEN — the Sonar token lives in the environment only (v2.0.0 W6a, DE-14)",
|
|
3859
|
+
token: "SONAR_TOKEN",
|
|
3860
|
+
files: ["skills/orc-quick/references/gh-mode.md", "skills/orc-quick/README.md"],
|
|
3861
|
+
binFiles: ["bin/cli.js", "bin/gotcha-import.js"],
|
|
3862
|
+
},
|
|
3863
|
+
{
|
|
3864
|
+
name: "orc pr threads — the unresolved review threads via GraphQL (v2.0.0 W6a, Q1)",
|
|
3865
|
+
token: "orc pr threads",
|
|
3866
|
+
files: ["skills/orc-quick/references/gh-mode.md", "skills/orc-quick/README.md"],
|
|
3867
|
+
binFiles: ["bin/cli.js", "bin/gotcha-import.js"],
|
|
3868
|
+
},
|
|
3869
|
+
{
|
|
3870
|
+
name: "orc ci failed — failing CI steps, flaky named (v2.0.0 W6a, Q3)",
|
|
3871
|
+
token: "orc ci failed",
|
|
3872
|
+
files: ["skills/orc-quick/references/gh-mode.md", "skills/orc-quick/README.md"],
|
|
3873
|
+
binFiles: ["bin/gotcha-import.js"],
|
|
3874
|
+
},
|
|
3875
|
+
// v2.0.0 W6b — the undo that cannot eat a user edit (Q2), the flaky
|
|
3876
|
+
// classifier (Q5), the one end-of-run card (Q6) and questions per run (Q7).
|
|
3877
|
+
{
|
|
3878
|
+
name: "orc run snapshot — the pre-run tree, at the run-start pointer step (v2.0.0 W6b, Q2)",
|
|
3879
|
+
token: "orc run snapshot --run",
|
|
3880
|
+
// eval E1/E2 (27-09-2026): quick took the snapshot in 3 of 8 runs — its own Q0 step names it.
|
|
3881
|
+
files: ["skills/_shared/phases/trace.md", "skills/orc-quick/SKILL.md"],
|
|
3882
|
+
binFiles: ["bin/cli.js", "bin/run-undo.js"],
|
|
3883
|
+
},
|
|
3884
|
+
{
|
|
3885
|
+
name: "orc undo — PRINTS the revert of ONLY the run's own files, never `git checkout -- .` (v2.0.0 W6b, Q2)",
|
|
3886
|
+
token: "orc undo --run",
|
|
3887
|
+
files: ["skills/_shared/phases/summary.md", "skills/orc-quick/README.md"],
|
|
3888
|
+
binFiles: ["bin/cli.js", "bin/run-undo.js"],
|
|
3889
|
+
},
|
|
3890
|
+
{
|
|
3891
|
+
// 08 Q2 / S6: nothing runs by itself — the undo prints, `--apply` runs it.
|
|
3892
|
+
name: "orc undo --apply — the undo is print-only by default (v2.0.0 W6b, Q2)",
|
|
3893
|
+
token: "`--apply` runs",
|
|
3894
|
+
files: ["skills/_shared/phases/summary.md", "skills/orc-quick/README.md"],
|
|
3895
|
+
binFiles: ["bin/run-undo.js"],
|
|
3896
|
+
},
|
|
3897
|
+
{
|
|
3898
|
+
name: "orc ci flaky — the ONE flaky classifier, before any repair round (v2.0.0 W6b, Q5)",
|
|
3899
|
+
token: "orc ci flaky",
|
|
3900
|
+
files: ["skills/_shared/smoke-gate.md"],
|
|
3901
|
+
binFiles: ["bin/gotcha-import.js"],
|
|
3902
|
+
},
|
|
3903
|
+
{
|
|
3904
|
+
name: "§Flaky — every test step that repairs points at the one rule (v2.0.0 W6b, Q5)",
|
|
3905
|
+
token: "§Flaky",
|
|
3906
|
+
files: ["skills/_shared/smoke-gate.md", "skills/_shared/phases/verify.md", "skills/orc-quick/SKILL.md"],
|
|
3907
|
+
},
|
|
3908
|
+
{
|
|
3909
|
+
name: "GATE flaky — the trace line of a flaky run (v2.0.0 W6b, Q5)",
|
|
3910
|
+
token: "GATE flaky",
|
|
3911
|
+
files: ["skills/_shared/smoke-gate.md", "skills/_shared/phases/summary.md"],
|
|
3912
|
+
binFiles: ["bin/gotcha-import.js"],
|
|
3913
|
+
},
|
|
3914
|
+
{
|
|
3915
|
+
// ONE template (08 Q6). /orc and /orc-diy reach it from the summary phase's
|
|
3916
|
+
// own layers; the three lanes with no summary phase point from the spine.
|
|
3917
|
+
name: "§End-of-run card — every coding lane ends in the one card (v2.0.0 W6b, Q6)",
|
|
3918
|
+
token: "§End-of-run card",
|
|
3919
|
+
files: [
|
|
3920
|
+
"skills/_shared/phases/summary.md",
|
|
3921
|
+
"skills/orc-fast/SKILL.md",
|
|
3922
|
+
"skills/orc-mini/SKILL.md",
|
|
3923
|
+
"skills/orc-quick/SKILL.md",
|
|
3924
|
+
],
|
|
3925
|
+
},
|
|
3926
|
+
{
|
|
3927
|
+
name: "questions{} — `orc stats` measures the questions per run (v2.0.0 W6b, Q7)",
|
|
3928
|
+
token: "questions{}",
|
|
3929
|
+
files: ["skills/_shared/habits.md"],
|
|
3930
|
+
binFiles: ["bin/habit.js"],
|
|
3931
|
+
},
|
|
3932
|
+
{
|
|
3933
|
+
name: "observations.jsonl — the raw layer, written by the CLI only (v2.0.0 W5a)",
|
|
3934
|
+
token: ".claude/orc/observations.jsonl",
|
|
3935
|
+
files: ["skills/_shared/gotchas.md"],
|
|
3936
|
+
binFiles: ["bin/gotcha.js"],
|
|
3937
|
+
},
|
|
3938
|
+
{
|
|
3939
|
+
// v2.0.0 W3 — the lane side of habits is held ONCE, in `_shared/habits.md`,
|
|
3940
|
+
// and read ON DEMAND: only when `orc lane config` answers with a `habits{}`
|
|
3941
|
+
// block (`habits` is observe or propose). Under `habits: off` (the default)
|
|
3942
|
+
// no lane opens it. Like lane-contract.md it is not a PHASE_FILES row, so
|
|
3943
|
+
// this row is the reachability check: every spine that marks a `(H <qid>)`
|
|
3944
|
+
// question points at it.
|
|
3945
|
+
name: "the habits contract is read only when habits{} is present (v2.0.0 W3)",
|
|
3946
|
+
token: "habits.md",
|
|
3947
|
+
files: [
|
|
3948
|
+
"skills/_shared/README.md",
|
|
3949
|
+
"skills/_shared/habits.md",
|
|
3950
|
+
"skills/orc-mini/SKILL.md",
|
|
3951
|
+
"skills/orc-quick/SKILL.md",
|
|
3952
|
+
"skills/orc-quick/references/dispatch-gate.md",
|
|
3953
|
+
// v2.0.0 W3c — the rest of the lanes that mark a question, and the Phase
|
|
3954
|
+
// 8 completion report that carries the one run-end proposal.
|
|
3955
|
+
"skills/orc-diy/SKILL.md",
|
|
3956
|
+
"skills/orc-wait/SKILL.md",
|
|
3957
|
+
"skills/orc-analyze/SKILL.md",
|
|
3958
|
+
"skills/_shared/phases/ship.md",
|
|
3959
|
+
// eval E2 (27-09-2026): the pointer moved to the step that reads the answer.
|
|
3960
|
+
"skills/_shared/phases/preflight.md",
|
|
3961
|
+
],
|
|
3962
|
+
},
|
|
3686
3963
|
{
|
|
3687
3964
|
// v1.0.0 W10 — the partial-read discipline. The sentence that stops pillar 2
|
|
3688
3965
|
// from making the payload SLOWER: a manifest of pointers read whole is more
|
|
@@ -3690,7 +3967,6 @@ const CONTRACTS = [
|
|
|
3690
3967
|
name: "a pointer declares how much of it to read (v1.0.0 W10)",
|
|
3691
3968
|
token: "on-phase",
|
|
3692
3969
|
files: [
|
|
3693
|
-
"skills/_shared/read-ladder.md",
|
|
3694
3970
|
"skills/_shared/phases/README.md",
|
|
3695
3971
|
"skills/orc/SKILL.md",
|
|
3696
3972
|
],
|
|
@@ -3707,6 +3983,10 @@ const CONTRACTS = [
|
|
|
3707
3983
|
"skills/orc-test/SKILL.md",
|
|
3708
3984
|
"skills/_shared/README.md",
|
|
3709
3985
|
"skills/_shared/config-precedence.md",
|
|
3986
|
+
// v2.0.0 T3 — both config forms and the exit ≠ 0 fallback, once.
|
|
3987
|
+
"skills/_shared/lane-contract.md",
|
|
3988
|
+
// v2.0.0 W3 — the `habits{}` block rides in the same answer.
|
|
3989
|
+
"skills/_shared/habits.md",
|
|
3710
3990
|
"skills/_shared/extra-dispatch.md",
|
|
3711
3991
|
"skills/context-combiner/SKILL.md",
|
|
3712
3992
|
"skills/orc-aftermath/SKILL.md",
|
|
@@ -3796,6 +4076,30 @@ const CONTRACTS = [
|
|
|
3796
4076
|
files: ["agents/orc-test-interpreter-opus-5-low.md", "skills/_shared/live-target.md"],
|
|
3797
4077
|
binFiles: ["bin/cli.js"],
|
|
3798
4078
|
},
|
|
4079
|
+
// v2.0.0 T16 — read the SECTION, not the file. Every lane reads
|
|
4080
|
+
// return-validation.md §1–§3 on a return, then ONLY the § of each field the
|
|
4081
|
+
// slice carried; the spines and the file header name the § numbers. So the
|
|
4082
|
+
// § headings are ANCHORS: a renumbered or renamed one is a pointer into
|
|
4083
|
+
// nothing. One row per anchor, each pinned to the one file that owns it.
|
|
4084
|
+
...[
|
|
4085
|
+
"## 0. Is the previous attempt still ALIVE?",
|
|
4086
|
+
"## 1. Contract shape",
|
|
4087
|
+
"## 2. Claimed-vs-actual model",
|
|
4088
|
+
"## 2b. A FOREIGN return",
|
|
4089
|
+
"## 3. Honest-status rules",
|
|
4090
|
+
"## 4. Pattern attestation",
|
|
4091
|
+
"## 5. TDD attestation",
|
|
4092
|
+
"## 5b. Wiki attestation",
|
|
4093
|
+
"## 5b.1 Graph attestation",
|
|
4094
|
+
"## 5c. Rules attestation",
|
|
4095
|
+
"## 5d. Reproduce-first attestation",
|
|
4096
|
+
"## 6. Worktree delta",
|
|
4097
|
+
"## 7. Gotcha capture",
|
|
4098
|
+
].map((token) => ({
|
|
4099
|
+
name: `return-validation.md § anchor (v2.0.0 T16): ${token}`,
|
|
4100
|
+
token,
|
|
4101
|
+
files: ["skills/_shared/return-validation.md"],
|
|
4102
|
+
})),
|
|
3799
4103
|
];
|
|
3800
4104
|
|
|
3801
4105
|
// Spine size budgets (v0.19.0). These SKILL.md files are ALWAYS loaded when
|
|
@@ -3804,6 +4108,13 @@ const CONTRACTS = [
|
|
|
3804
4108
|
// them. Detail belongs in load-on-demand references/ (free until the phase
|
|
3805
4109
|
// fires). A new feature that would blow a budget lands as a reference + a
|
|
3806
4110
|
// pointer, not as spine prose. Raising a budget is a deliberate, reviewed act.
|
|
4111
|
+
//
|
|
4112
|
+
// v2.0.0 (DE-21): `maxBytes` is a second cap, in LF bytes (CRLF counts as LF, so
|
|
4113
|
+
// a Windows checkout measures the same). 16 384 B is about 4k tokens: a coding
|
|
4114
|
+
// spine at or under it survives compaction WHOLE (the 5 000-token re-attach
|
|
4115
|
+
// rule). If a spine cannot fit without losing a rule, move the rule to a
|
|
4116
|
+
// reference loaded at its phase — never raise this cap.
|
|
4117
|
+
const CODING_SPINE_BYTES = 16384;
|
|
3807
4118
|
const BUDGETS = [
|
|
3808
4119
|
// v0.28.0: deliberate raise 335→350 — the run-integrity work adds inline
|
|
3809
4120
|
// trace imperatives to every phase body (fix for SPAWN/RETURN-only traces),
|
|
@@ -3905,7 +4216,11 @@ const BUDGETS = [
|
|
|
3905
4216
|
// v1.0.0 W11: 532→535. The preflight section gained the three-line pointer at
|
|
3906
4217
|
// `_shared/phases/preflight.md`; W12 turns this spine into a manifest and the
|
|
3907
4218
|
// budget comes down properly then.
|
|
3908
|
-
|
|
4219
|
+
// v2.0.0 W1 (T14): 535→240 — the promised come-down, finally. T3 moved the
|
|
4220
|
+
// lane contract, trace, phases and wait blocks to _shared/lane-contract.md and
|
|
4221
|
+
// the phase files; the spine is 231 lines. The byte cap is DE-21: 16 KB (LF)
|
|
4222
|
+
// per coding spine, so every spine survives compaction whole.
|
|
4223
|
+
{ file: "skills/orc/SKILL.md", maxLines: 240, maxBytes: CODING_SPINE_BYTES },
|
|
3909
4224
|
// v0.33.0: deliberate raises 264→289 / 197→219 / 171→179 — orc-wiki gains the
|
|
3910
4225
|
// crosslink-compile entry branch, the delta-refresh default (impact probe),
|
|
3911
4226
|
// and the orientation/atlas assemble steps (detail in references/); mini
|
|
@@ -3971,7 +4286,10 @@ const BUDGETS = [
|
|
|
3971
4286
|
// affected-tests-first smoke gate and the `none is an answer` record. The
|
|
3972
4287
|
// arithmetic (how to count, why each threshold is that number, the
|
|
3973
4288
|
// graph_facts shape) lives in references/complexity.md.
|
|
3974
|
-
|
|
4289
|
+
// v2.0.0 W1 (T11/T14): 280→240 — the mock-example, still-enforces, wiki and
|
|
4290
|
+
// Phase T restatements now point at their one home (_shared/drift-recovery.md,
|
|
4291
|
+
// phases/wiki-consult.md, phases/testgen.md). 235 lines, 16 342 B.
|
|
4292
|
+
{ file: "skills/orc-mini/SKILL.md", maxLines: 240, maxBytes: CODING_SPINE_BYTES },
|
|
3975
4293
|
// v0.39.0: deliberate raises 195→201 / 179→182 — the analyst gains hard rules
|
|
3976
4294
|
// 2b (a source it did not author is FOREIGN input) and 4a (the read ladder);
|
|
3977
4295
|
// fast gains the ladder as a slice line. Both are hard rules by nature: they
|
|
@@ -4006,7 +4324,9 @@ const BUDGETS = [
|
|
|
4006
4324
|
// a reference the slice-builder never loads is not applied (the hard-rule-13
|
|
4007
4325
|
// precedent). Six lines: the assembler, the precedence order, the preflight
|
|
4008
4326
|
// line and the three return fields. Everything else is _shared/phases/rules.md.
|
|
4009
|
-
|
|
4327
|
+
// v2.0.0 W1 (T11/T14): 260→235 — the `Mini variant` restatement is gone
|
|
4328
|
+
// (orc-analyze-mini owns it). 229 lines.
|
|
4329
|
+
{ file: "skills/orc-analyze/SKILL.md", maxLines: 235, maxBytes: CODING_SPINE_BYTES },
|
|
4010
4330
|
// v0.40.0: deliberate raise 182→187 — gotchas as an explicit NON-gate. It has
|
|
4011
4331
|
// to be stated where the two prerequisites are stated, or a later reader adds
|
|
4012
4332
|
// a third gate and breaks the lane's entire premise.
|
|
@@ -4033,7 +4353,9 @@ const BUDGETS = [
|
|
|
4033
4353
|
// line and the three return fields. Everything else is _shared/phases/rules.md.
|
|
4034
4354
|
// v1.8.0 W9: deliberate raise 230→240 — the F0 code-graph step (e.), for the
|
|
4035
4355
|
// same measured reason as orc-mini's raise: a lengthened line was skipped.
|
|
4036
|
-
|
|
4356
|
+
// v2.0.0 W1 (T11/T14): 240→215 — mock example and still-enforces point at
|
|
4357
|
+
// their one home. 211 lines.
|
|
4358
|
+
{ file: "skills/orc-fast/SKILL.md", maxLines: 215, maxBytes: CODING_SPINE_BYTES },
|
|
4037
4359
|
// v1.9.0: a FIRST pin for the quick spine, at 325. It had none, and it grew
|
|
4038
4360
|
// to 379 lines. W1 trimmed it to 298 by moving the step table, the gate menu,
|
|
4039
4361
|
// the repair-loop example and the doc shape into references/ and README.md;
|
|
@@ -4041,7 +4363,24 @@ const BUDGETS = [
|
|
|
4041
4363
|
// the blast-radius line and the one-call cache update. 325 is where that
|
|
4042
4364
|
// lands plus nothing — a spine that grows past its own references has moved
|
|
4043
4365
|
// prose the wrong way.
|
|
4044
|
-
|
|
4366
|
+
// v2.0.0 W1 (T11/T13/T14): 325→300 — the inert-key paragraph points at
|
|
4367
|
+
// references/dispatch-gate.md rule 4, and the example CLI lines are gone (the
|
|
4368
|
+
// CLI prints them). 296 lines, 16 288 B.
|
|
4369
|
+
{ file: "skills/orc-quick/SKILL.md", maxLines: 300, maxBytes: CODING_SPINE_BYTES },
|
|
4370
|
+
// v2.0.0 W1 (T14): FIRST pins, at the line count after the W1 trims + 5.
|
|
4371
|
+
// They had no budget, so nothing stopped them growing. orc-wait is not a
|
|
4372
|
+
// coding spine and carries no byte cap.
|
|
4373
|
+
{ file: "skills/orc-test/SKILL.md", maxLines: 228, maxBytes: CODING_SPINE_BYTES },
|
|
4374
|
+
{ file: "skills/orc-poly/SKILL.md", maxLines: 235, maxBytes: CODING_SPINE_BYTES },
|
|
4375
|
+
{ file: "skills/context-combiner/SKILL.md", maxLines: 209, maxBytes: CODING_SPINE_BYTES },
|
|
4376
|
+
{ file: "skills/orc-pr-setup/SKILL.md", maxLines: 205, maxBytes: CODING_SPINE_BYTES },
|
|
4377
|
+
{ file: "skills/orc-pr-driver/SKILL.md", maxLines: 188, maxBytes: CODING_SPINE_BYTES },
|
|
4378
|
+
{ file: "skills/orc-route/SKILL.md", maxLines: 183, maxBytes: CODING_SPINE_BYTES },
|
|
4379
|
+
{ file: "skills/orc-wait/SKILL.md", maxLines: 169 },
|
|
4380
|
+
{ file: "skills/orc-pattern/SKILL.md", maxLines: 142, maxBytes: CODING_SPINE_BYTES },
|
|
4381
|
+
{ file: "skills/orc-diy/SKILL.md", maxLines: 101, maxBytes: CODING_SPINE_BYTES },
|
|
4382
|
+
{ file: "skills/orc-analyze-mini/SKILL.md", maxLines: 114, maxBytes: CODING_SPINE_BYTES },
|
|
4383
|
+
{ file: "skills/orc-verify/SKILL.md", maxLines: 100, maxBytes: CODING_SPINE_BYTES },
|
|
4045
4384
|
];
|
|
4046
4385
|
|
|
4047
4386
|
function walk(dir, out) {
|
|
@@ -4098,9 +4437,11 @@ for (const c of CONTRACTS) {
|
|
|
4098
4437
|
|
|
4099
4438
|
for (const b of BUDGETS) {
|
|
4100
4439
|
const p = path.join(ROOT, b.file);
|
|
4101
|
-
let lines;
|
|
4440
|
+
let lines, bytes;
|
|
4102
4441
|
try {
|
|
4103
|
-
|
|
4442
|
+
const text = fs.readFileSync(p, "utf8");
|
|
4443
|
+
lines = text.split("\n").length;
|
|
4444
|
+
bytes = Buffer.byteLength(text.replace(/\r\n/g, "\n"), "utf8");
|
|
4104
4445
|
} catch (_) {
|
|
4105
4446
|
failures++;
|
|
4106
4447
|
console.error(`\n❌ spine budget: templates/${b.file} is missing.`);
|
|
@@ -4115,6 +4456,14 @@ for (const b of BUDGETS) {
|
|
|
4115
4456
|
`the trigger + contract tokens + pointer in the spine.`
|
|
4116
4457
|
);
|
|
4117
4458
|
}
|
|
4459
|
+
if (b.maxBytes && bytes > b.maxBytes) {
|
|
4460
|
+
failures++;
|
|
4461
|
+
console.error(
|
|
4462
|
+
`\n❌ spine byte budget exceeded: templates/${b.file} is ${bytes} bytes (LF) ` +
|
|
4463
|
+
`(budget ${b.maxBytes}).\n A coding spine must survive compaction whole — ` +
|
|
4464
|
+
`move detail into a references/ file loaded at its phase; never raise the cap.`
|
|
4465
|
+
);
|
|
4466
|
+
}
|
|
4118
4467
|
}
|
|
4119
4468
|
|
|
4120
4469
|
// ── The two-way registry lint (C.3) ────────────────────────────────────────
|
|
@@ -4266,6 +4615,29 @@ for (const b of BUDGETS) {
|
|
|
4266
4615
|
"code_graph_hooks",
|
|
4267
4616
|
// v1.8.2 W2 — the ignore globs, read by the CLI behind the same calls.
|
|
4268
4617
|
"code_graph_ignore",
|
|
4618
|
+
// v2.0.0 W2 — the habits master key, the `code_graph` answer: `orc lane
|
|
4619
|
+
// config` resolves it and hands a lane its `habits{}` block, so no spine
|
|
4620
|
+
// reads the key. An empty lanes[] here is an ANSWER.
|
|
4621
|
+
"habits",
|
|
4622
|
+
// v2.0.0 W2 — the three offer keys a habit can answer. W3 wires the lanes
|
|
4623
|
+
// that read them (DE-7: orc-mini, orc-fast, orc-quick), and each then LEAVES
|
|
4624
|
+
// this list — the check below fails until it does.
|
|
4625
|
+
"review_before_push",
|
|
4626
|
+
"mini_tdd",
|
|
4627
|
+
"quick_update_tests",
|
|
4628
|
+
// v2.0.0 W4 — operating keys of the gotchas ENGINE, the `code_graph_card_budget`
|
|
4629
|
+
// answer: `orc gotcha card`, `import` and `sync` read them, never a spine.
|
|
4630
|
+
"gotcha_card_budget",
|
|
4631
|
+
"gotcha_sync_hours",
|
|
4632
|
+
"sonar_url",
|
|
4633
|
+
"sonar_project",
|
|
4634
|
+
"sonar_org",
|
|
4635
|
+
// v2.0.0 W6c — `notify` is an operating key of the SESSION HOOK, the
|
|
4636
|
+
// `read_gate` answer: orc-session-hook.js reads the raw key off the file.
|
|
4637
|
+
// `rules_card_compact` is read by `rulesSlice()` behind `orc rules slice`,
|
|
4638
|
+
// never by a spine (a lane never picks its own card). Both are ANSWERS.
|
|
4639
|
+
"notify",
|
|
4640
|
+
"rules_card_compact",
|
|
4269
4641
|
]);
|
|
4270
4642
|
for (const e of metaEntries) {
|
|
4271
4643
|
if (!e.lanes) {
|
|
@@ -4652,7 +5024,7 @@ for (const b of BUDGETS) {
|
|
|
4652
5024
|
"orc was updated",
|
|
4653
5025
|
"orc is installed",
|
|
4654
5026
|
"orc and orc-mini",
|
|
4655
|
-
"orc lane calls", // the catalogue's own reader, named in
|
|
5027
|
+
"orc lane calls", // the catalogue's own reader, named in _shared/phases/README.md (v2.0.0 T6)
|
|
4656
5028
|
]);
|
|
4657
5029
|
const catalogued = new Set(Object.values(CALLS).map((c) => prefixOf(c.cmd)));
|
|
4658
5030
|
for (const [call, lanes] of Object.entries(measured)) {
|
|
@@ -4875,6 +5247,23 @@ for (const b of BUDGETS) {
|
|
|
4875
5247
|
// context-combiner point at trace.md to describe it and never run it.
|
|
4876
5248
|
for (const [id, def] of Object.entries(FILES)) {
|
|
4877
5249
|
const base = def.file.split("/").pop();
|
|
5250
|
+
// v2.0.0 T1 — an ON-DEMAND file is reached through the phase file named
|
|
5251
|
+
// in `via`, which every one of its readers already reads. So the pointer
|
|
5252
|
+
// must be in THAT file, and every reader must be a reader of it too.
|
|
5253
|
+
if (def.via) {
|
|
5254
|
+
const viaDef = FILES[def.via];
|
|
5255
|
+
if (!viaDef) {
|
|
5256
|
+
errs.push(`phase "${id}" names via "${def.via}", which is not a PHASE_FILES entry`);
|
|
5257
|
+
continue;
|
|
5258
|
+
}
|
|
5259
|
+
const viaAbs = path.join(skillsDir, viaDef.file);
|
|
5260
|
+
if (fs.existsSync(viaAbs) && !fs.readFileSync(viaAbs, "utf8").includes(base))
|
|
5261
|
+
errs.push(`phase "${id}" is reached via ${viaDef.file}, but that file never names ${base}`);
|
|
5262
|
+
for (const lane of PHASES[id] || [])
|
|
5263
|
+
if (!(PHASES[def.via] || []).includes(lane))
|
|
5264
|
+
errs.push(`LANE_PHASES["${id}"] names "${lane}", which does not read "${def.via}" — the only road to ${base}`);
|
|
5265
|
+
continue;
|
|
5266
|
+
}
|
|
4878
5267
|
for (const lane of PHASES[id] || []) {
|
|
4879
5268
|
const dir = path.join(skillsDir, lane);
|
|
4880
5269
|
if (!fs.existsSync(dir)) continue;
|
|
@@ -4917,7 +5306,7 @@ for (const b of BUDGETS) {
|
|
|
4917
5306
|
if (!r.heading && !r.layers)
|
|
4918
5307
|
errs.push(`LANE_OWN_PHASES["${lane}"] phase "${r.id}" declares neither a heading nor layers — nothing tells the lane where to read it`);
|
|
4919
5308
|
if (r.heading) {
|
|
4920
|
-
// /orc-doc rule 2 and read
|
|
5309
|
+
// /orc-doc rule 2 and the partial-read rule 2 (_shared/phases/README.md): a section anchor is a
|
|
4921
5310
|
// HEADING, never a line number. Assert the heading really is there,
|
|
4922
5311
|
// verbatim — a renamed heading is a pointer into nothing.
|
|
4923
5312
|
if (r.read !== "section")
|
|
@@ -5005,6 +5394,63 @@ for (const b of BUDGETS) {
|
|
|
5005
5394
|
}
|
|
5006
5395
|
}
|
|
5007
5396
|
|
|
5397
|
+
// 2c. v2.0.0 T1 — THE TRACE VERB REGISTRY, three ways. `TRACE_VERBS` in
|
|
5398
|
+
// bin/cli.js is the data; `_shared/phases/trace-verbs.md` is its table for
|
|
5399
|
+
// a human; every `trace_verbs` (PHASE_FILES, LANE_OWN_PHASES) and
|
|
5400
|
+
// `spine_verbs` (LANE_TRACE) entry plus TRACE_ALWAYS_VERBS is a CLAIM that
|
|
5401
|
+
// a phase emits that verb. A claimed verb the registry lacks FAILS (the
|
|
5402
|
+
// lane would be handed no grammar for it); a registry verb missing from
|
|
5403
|
+
// the table FAILS; a table verb missing from the registry FAILS; and a row
|
|
5404
|
+
// whose grammar, emitter, meaning or owner disagrees FAILS.
|
|
5405
|
+
{
|
|
5406
|
+
let VERBS = null, ALWAYS = null;
|
|
5407
|
+
try {
|
|
5408
|
+
VERBS = new Function("return " + cliText.match(/const TRACE_VERBS = \{[\s\S]*?\n\};/)[0].replace(/^const TRACE_VERBS = /, "").replace(/;$/, ""))();
|
|
5409
|
+
ALWAYS = new Function("return " + cliText.match(/const TRACE_ALWAYS_VERBS = \[[\s\S]*?\];/)[0].replace(/^const TRACE_ALWAYS_VERBS = /, "").replace(/;$/, ""))();
|
|
5410
|
+
} catch (e) {
|
|
5411
|
+
errs.push("could not parse TRACE_VERBS / TRACE_ALWAYS_VERBS from bin/cli.js: " + e.message);
|
|
5412
|
+
}
|
|
5413
|
+
const tablePath = path.join(skillsDir, "_shared", "phases", "trace-verbs.md");
|
|
5414
|
+
if (VERBS && !fs.existsSync(tablePath)) errs.push("_shared/phases/trace-verbs.md is missing — TRACE_VERBS has no human table");
|
|
5415
|
+
if (VERBS && fs.existsSync(tablePath)) {
|
|
5416
|
+
const unesc = (s) => s.replace(/\\\|/g, "|");
|
|
5417
|
+
const table = {};
|
|
5418
|
+
for (const line of fs.readFileSync(tablePath, "utf8").split(/\r?\n/)) {
|
|
5419
|
+
const m = /^\| `(.+?)` \| (.+?) \| (.+) \| `([^`]+)` \|$/.exec(line);
|
|
5420
|
+
if (!m) continue;
|
|
5421
|
+
const grammar = unesc(m[1]);
|
|
5422
|
+
const verb = grammar.split(" ")[0];
|
|
5423
|
+
if (table[verb]) errs.push(`trace-verbs.md has two rows for ${verb}`);
|
|
5424
|
+
table[verb] = { grammar, emitter: m[2], meaning: unesc(m[3]), owner: m[4] };
|
|
5425
|
+
}
|
|
5426
|
+
for (const [v, d] of Object.entries(VERBS)) {
|
|
5427
|
+
const row = table[v];
|
|
5428
|
+
if (!row) {
|
|
5429
|
+
errs.push(`TRACE_VERBS has ${v}, but trace-verbs.md has no row for it`);
|
|
5430
|
+
continue;
|
|
5431
|
+
}
|
|
5432
|
+
for (const k of ["grammar", "emitter", "meaning", "owner"])
|
|
5433
|
+
if (row[k] !== d[k]) errs.push(`trace-verbs.md row ${v}: ${k} ${JSON.stringify(row[k])} ≠ TRACE_VERBS ${JSON.stringify(d[k])}`);
|
|
5434
|
+
if (!d.grammar.startsWith(v + " ") && d.grammar !== v)
|
|
5435
|
+
errs.push(`TRACE_VERBS.${v}.grammar does not start with the verb`);
|
|
5436
|
+
const ownerAbs = path.join(ROOT, d.owner.startsWith("agents/") || d.owner.startsWith("hooks/") ? d.owner : path.join("skills", d.owner));
|
|
5437
|
+
if (!fs.existsSync(ownerAbs)) errs.push(`TRACE_VERBS.${v}.owner names ${d.owner}, which does not exist`);
|
|
5438
|
+
}
|
|
5439
|
+
for (const v of Object.keys(table))
|
|
5440
|
+
if (!VERBS[v]) errs.push(`trace-verbs.md has a row for ${v}, which TRACE_VERBS does not declare — the set is CLOSED`);
|
|
5441
|
+
}
|
|
5442
|
+
if (VERBS) {
|
|
5443
|
+
const claims = [];
|
|
5444
|
+
for (const v of ALWAYS || []) claims.push(["TRACE_ALWAYS_VERBS", v]);
|
|
5445
|
+
for (const [id, def] of Object.entries(FILES || {})) for (const v of def.trace_verbs || []) claims.push([`PHASE_FILES["${id}"].trace_verbs`, v]);
|
|
5446
|
+
for (const [lane, rows] of Object.entries(OWN || {}))
|
|
5447
|
+
for (const r of rows) for (const v of r.trace_verbs || []) claims.push([`LANE_OWN_PHASES["${lane}"] phase "${r.id}"`, v]);
|
|
5448
|
+
for (const [lane, t] of Object.entries(TRACE || {})) for (const v of t.spine_verbs || []) claims.push([`LANE_TRACE["${lane}"].spine_verbs`, v]);
|
|
5449
|
+
for (const [where, v] of claims)
|
|
5450
|
+
if (!VERBS[v]) errs.push(`${where} lists ${v}, which TRACE_VERBS does not declare — a lane would get no grammar for it`);
|
|
5451
|
+
}
|
|
5452
|
+
}
|
|
5453
|
+
|
|
5008
5454
|
if (errs.length) {
|
|
5009
5455
|
failures++;
|
|
5010
5456
|
console.error("\n❌ phase library drift:");
|