@azure-id/orc 2.0.2 → 2.1.0

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.
Files changed (121) hide show
  1. package/CHANGELOG.md +401 -0
  2. package/README-id.md +52 -23
  3. package/README.md +50 -22
  4. package/bin/build-agents.js +24 -25
  5. package/bin/clear-logs.js +620 -0
  6. package/bin/cli.js +1155 -158
  7. package/bin/fix.js +459 -0
  8. package/bin/gotcha.js +288 -8
  9. package/bin/habit.js +1538 -1453
  10. package/bin/mockrun-catalog.js +3 -0
  11. package/bin/onboarding-content.js +2 -1
  12. package/bin/pricing.json +28 -21
  13. package/bin/trace-write.js +869 -657
  14. package/bin/verify-contracts.js +108 -27
  15. package/bin/verify-package.js +17 -6
  16. package/bin/webui/api.js +125 -6
  17. package/bin/webui/css/panels/hookui.css +79 -0
  18. package/bin/webui/fixtures/behaviour.js +30 -0
  19. package/bin/webui/fixtures/extra.js +9 -9
  20. package/bin/webui/fixtures/flow.js +81 -81
  21. package/bin/webui/fixtures/hookui.js +506 -431
  22. package/bin/webui/fixtures/index.js +32 -3
  23. package/bin/webui/fixtures/knowledge.js +2 -2
  24. package/bin/webui/fixtures/maintenance.js +123 -42
  25. package/bin/webui/fixtures/rules.js +1007 -1002
  26. package/bin/webui/fixtures/settings.js +6 -7
  27. package/bin/webui/fixtures/stats.js +9 -6
  28. package/bin/webui/fixtures/wait.js +98 -97
  29. package/bin/webui/i18n/en/behaviour.json +13 -0
  30. package/bin/webui/i18n/en/hookui.json +290 -194
  31. package/bin/webui/i18n/en/maintenance.json +71 -52
  32. package/bin/webui/i18n/en/settings.json +60 -60
  33. package/bin/webui/i18n/id/behaviour.json +13 -0
  34. package/bin/webui/i18n/id/hookui.json +290 -194
  35. package/bin/webui/i18n/id/maintenance.json +71 -52
  36. package/bin/webui/i18n/id/settings.json +60 -60
  37. package/bin/webui/js/05-banners.js +181 -172
  38. package/bin/webui/js/06-edit.js +193 -183
  39. package/bin/webui/js/panels/behaviour.js +77 -12
  40. package/bin/webui/js/panels/hookui.js +2196 -1691
  41. package/bin/webui/js/panels/maintenance.js +336 -235
  42. package/bin/webui/js/panels/settings.js +726 -719
  43. package/mock-run/INDEX.md +1 -0
  44. package/mock-run/extra-slots.md +1 -1
  45. package/mock-run/habits.md +1 -1
  46. package/mock-run/orc-aftermath.md +392 -392
  47. package/mock-run/orc-budget.md +29 -33
  48. package/mock-run/orc-cli.md +200 -200
  49. package/mock-run/orc-explain.md +86 -86
  50. package/mock-run/orc-extra.md +389 -392
  51. package/mock-run/orc-fix.md +87 -0
  52. package/mock-run/orc-pattern.md +112 -112
  53. package/mock-run/orc.md +157 -157
  54. package/package.json +1 -1
  55. package/templates/agents/MODEL-MAPPING.md +32 -29
  56. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +2 -2
  57. package/templates/agents/{orc-claude-writer-opus-5-med.md → orc-claude-writer-opus-5-low.md} +4 -4
  58. package/templates/agents/orc-executor-haiku-4-5.md +1 -1
  59. package/templates/agents/orc-executor-opus-5-low.md +1 -1
  60. package/templates/agents/orc-executor-sonnet-4-6-high.md +1 -1
  61. package/templates/agents/orc-executor-sonnet-4-6-med.md +1 -1
  62. package/templates/agents/orc-executor-sonnet-5-high.md +2 -2
  63. package/templates/agents/orc-executor-sonnet-5-low.md +155 -0
  64. package/templates/agents/orc-executor-sonnet-5-med.md +155 -0
  65. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +2 -2
  66. package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -2
  67. package/templates/agents/orc-retro-sonnet-5-high.md +2 -2
  68. package/templates/agents/{orc-reviewer-opus-5-med.md → orc-reviewer-opus-5-low.md} +4 -4
  69. package/templates/agents/{orc-wiki-scanner-opus-5-med.md → orc-wiki-scanner-opus-5-low.md} +3 -3
  70. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +2 -2
  71. package/templates/commands/orc-fix.md +18 -0
  72. package/templates/commands/orc-wiki.md +64 -64
  73. package/templates/hooks/README.md +75 -7
  74. package/templates/hooks/orc-session-hook.js +78 -3
  75. package/templates/hooks/orc-statusline-render.js +317 -23
  76. package/templates/hooks/orc-statusline.js +162 -49
  77. package/templates/hooks/orc-subagent-line.js +23 -5
  78. package/templates/hooks/orc-weather-fetch.js +123 -0
  79. package/templates/skills/_shared/extra-dispatch.md +5 -5
  80. package/templates/skills/_shared/gotchas.md +27 -7
  81. package/templates/skills/_shared/habits.md +2 -2
  82. package/templates/skills/_shared/opus5-only.md +14 -14
  83. package/templates/skills/_shared/phases/review.md +2 -2
  84. package/templates/skills/_shared/phases/trace-verbs.md +17 -3
  85. package/templates/skills/_shared/phases/trace.md +136 -136
  86. package/templates/skills/_shared/review-slice.md +28 -1
  87. package/templates/skills/_shared/wait.md +1 -0
  88. package/templates/skills/orc/README.md +2 -2
  89. package/templates/skills/orc/SKILL.md +1 -1
  90. package/templates/skills/orc/config.md +25 -27
  91. package/templates/skills/orc/examples/full-run-mock.md +2 -1
  92. package/templates/skills/orc/references/effort-and-mode.md +17 -17
  93. package/templates/skills/orc/references/preflight-report.md +3 -3
  94. package/templates/skills/orc/references/ultra-mode.md +1 -1
  95. package/templates/skills/orc/schemas/checkpoint.md +122 -122
  96. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +3 -3
  97. package/templates/skills/orc/subskills/orc-review-verify/core.md +1 -1
  98. package/templates/skills/orc-analyze/SKILL.md +4 -2
  99. package/templates/skills/orc-claude/SKILL.md +14 -14
  100. package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -65
  101. package/templates/skills/orc-diy/SKILL.md +5 -5
  102. package/templates/skills/orc-fast/SKILL.md +8 -6
  103. package/templates/skills/orc-fix/SKILL.md +110 -0
  104. package/templates/skills/orc-mini/SKILL.md +4 -4
  105. package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -2
  106. package/templates/skills/orc-quick/README.md +1 -1
  107. package/templates/skills/orc-quick/SKILL.md +2 -2
  108. package/templates/skills/orc-quick/references/dispatch-gate.md +3 -2
  109. package/templates/skills/orc-quick/references/gh-mode.md +4 -2
  110. package/templates/skills/orc-retro/SKILL.md +1 -1
  111. package/templates/skills/orc-retro/examples/retro-mock.md +16 -16
  112. package/templates/skills/orc-wiki/README.md +325 -325
  113. package/templates/skills/orc-wiki/SKILL.md +195 -195
  114. package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -37
  115. package/templates/skills/orc-wiki/references/extra.md +2 -2
  116. package/templates/skills/orc-wiki/references/partial-refresh.md +276 -271
  117. package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -1
  118. package/templates/skills/orc-wiki/references/phases/phase-2.md +3 -3
  119. package/templates/skills/orc-wiki/references/phases/phase-3c.md +3 -2
  120. package/templates/agents/orc-claude-writer-opus-4-8-high.md +0 -48
  121. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +0 -74
@@ -38,8 +38,7 @@ const CONTRACTS = [
38
38
  "agents/orc-challenge-outsider-opus-5-low.md",
39
39
  "agents/orc-challenge-principles-opus-5-high.md",
40
40
  "agents/orc-challenge-reader-opus-5-low.md",
41
- "agents/orc-claude-writer-opus-4-8-high.md",
42
- "agents/orc-claude-writer-opus-5-med.md",
41
+ "agents/orc-claude-writer-opus-5-low.md",
43
42
  "agents/orc-context-combiner-opus-5-high.md",
44
43
  "agents/orc-doc-checker-opus-5-low.md",
45
44
  "agents/orc-doc-writer-opus-5-med.md",
@@ -53,6 +52,8 @@ const CONTRACTS = [
53
52
  "agents/orc-executor-sonnet-4-6-high.md",
54
53
  "agents/orc-executor-sonnet-4-6-med.md",
55
54
  "agents/orc-executor-sonnet-5-high.md",
55
+ "agents/orc-executor-sonnet-5-low.md",
56
+ "agents/orc-executor-sonnet-5-med.md",
56
57
  "agents/orc-judge-opus-5-xhigh.md",
57
58
  "agents/orc-learn-writer-opus-5-low.md",
58
59
  "agents/orc-pattern-codifier-opus-5-med.md",
@@ -64,15 +65,14 @@ const CONTRACTS = [
64
65
  "agents/orc-recon-sonnet-4-6-med.md",
65
66
  "agents/orc-retro-opus-5-med.md",
66
67
  "agents/orc-retro-sonnet-5-high.md",
67
- "agents/orc-reviewer-opus-5-med.md",
68
+ "agents/orc-reviewer-opus-5-low.md",
68
69
  "agents/orc-scout-opus-5-low.md",
69
70
  "agents/orc-scout-sonnet-4-6-high.md",
70
71
  "agents/orc-system-analyst-opus-5-high.md",
71
72
  "agents/orc-test-author-opus-5-med.md",
72
73
  "agents/orc-trace-writer-haiku-4-5.md",
73
74
  "agents/orc-verifier-opus-5-med.md",
74
- "agents/orc-wiki-scanner-opus-4-8-high.md",
75
- "agents/orc-wiki-scanner-opus-5-med.md",
75
+ "agents/orc-wiki-scanner-opus-5-low.md",
76
76
  "agents/orc-wiki-scanner-sonnet-5-high.md",
77
77
  "hooks/orc-trace.js",
78
78
  "skills/_shared/extra-dispatch.md",
@@ -127,6 +127,8 @@ const CONTRACTS = [
127
127
  "agents/orc-executor-sonnet-4-6-high.md",
128
128
  "agents/orc-executor-sonnet-4-6-med.md",
129
129
  "agents/orc-executor-sonnet-5-high.md",
130
+ "agents/orc-executor-sonnet-5-low.md",
131
+ "agents/orc-executor-sonnet-5-med.md",
130
132
  "skills/_shared/return-validation.md",
131
133
  "skills/orc-fast/SKILL.md",
132
134
  "skills/orc-quick/SKILL.md",
@@ -150,6 +152,8 @@ const CONTRACTS = [
150
152
  "agents/orc-executor-sonnet-4-6-high.md",
151
153
  "agents/orc-executor-sonnet-4-6-med.md",
152
154
  "agents/orc-executor-sonnet-5-high.md",
155
+ "agents/orc-executor-sonnet-5-low.md",
156
+ "agents/orc-executor-sonnet-5-med.md",
153
157
  "skills/_shared/extra-dispatch.md",
154
158
  "skills/orc-fast/SKILL.md",
155
159
  "skills/orc-mini/SKILL.md",
@@ -166,7 +170,7 @@ const CONTRACTS = [
166
170
  // v2.0.0 W5a — the ONE review slice (`_shared/review-slice.md`).
167
171
  "skills/_shared/review-slice.md",
168
172
  "skills/orc/subskills/orc-review-verify/core.md",
169
- "agents/orc-reviewer-opus-5-med.md",
173
+ "agents/orc-reviewer-opus-5-low.md",
170
174
  "agents/orc-executor-haiku-4-5.md",
171
175
  "agents/orc-executor-opus-4-7-high.md",
172
176
  "agents/orc-executor-opus-4-7-med.md",
@@ -177,6 +181,8 @@ const CONTRACTS = [
177
181
  "agents/orc-executor-sonnet-4-6-high.md",
178
182
  "agents/orc-executor-sonnet-4-6-med.md",
179
183
  "agents/orc-executor-sonnet-5-high.md",
184
+ "agents/orc-executor-sonnet-5-low.md",
185
+ "agents/orc-executor-sonnet-5-med.md",
180
186
  "skills/_shared/extra-dispatch.md",
181
187
  "skills/_shared/phases/execution.md",
182
188
  "skills/_shared/phases/rules.md",
@@ -204,9 +210,11 @@ const CONTRACTS = [
204
210
  "agents/orc-executor-sonnet-4-6-high.md",
205
211
  "agents/orc-executor-sonnet-4-6-med.md",
206
212
  "agents/orc-executor-sonnet-5-high.md",
213
+ "agents/orc-executor-sonnet-5-low.md",
214
+ "agents/orc-executor-sonnet-5-med.md",
207
215
  "agents/orc-pattern-codifier-opus-5-med.md",
208
216
  "agents/orc-pattern-codifier-sonnet-5-high.md",
209
- "agents/orc-reviewer-opus-5-med.md",
217
+ "agents/orc-reviewer-opus-5-low.md",
210
218
  "agents/orc-verifier-opus-5-med.md",
211
219
  "skills/orc-pattern/SKILL.md",
212
220
  "skills/orc-pattern/schemas/pattern-doc.md",
@@ -231,6 +239,8 @@ const CONTRACTS = [
231
239
  "agents/orc-executor-sonnet-4-6-high.md",
232
240
  "agents/orc-executor-sonnet-4-6-med.md",
233
241
  "agents/orc-executor-sonnet-5-high.md",
242
+ "agents/orc-executor-sonnet-5-low.md",
243
+ "agents/orc-executor-sonnet-5-med.md",
234
244
  "skills/_shared/return-validation.md",
235
245
  "skills/_shared/phases/execution.md",
236
246
  ],
@@ -252,6 +262,8 @@ const CONTRACTS = [
252
262
  "agents/orc-executor-sonnet-4-6-high.md",
253
263
  "agents/orc-executor-sonnet-4-6-med.md",
254
264
  "agents/orc-executor-sonnet-5-high.md",
265
+ "agents/orc-executor-sonnet-5-low.md",
266
+ "agents/orc-executor-sonnet-5-med.md",
255
267
  "skills/_shared/return-validation.md",
256
268
  "skills/orc-fast/SKILL.md",
257
269
  "skills/orc-mini/SKILL.md",
@@ -293,7 +305,7 @@ const CONTRACTS = [
293
305
  name: "findings evidence-or-advisory rule (v0.7.0 — unanchored => AUTO-P3)",
294
306
  token: "AUTO-P3",
295
307
  files: [
296
- "agents/orc-reviewer-opus-5-med.md",
308
+ "agents/orc-reviewer-opus-5-low.md",
297
309
  "agents/orc-verifier-opus-5-med.md",
298
310
  "skills/orc/subskills/orc-review-verify/core.md",
299
311
  "skills/orc-verify/SKILL.md",
@@ -303,7 +315,7 @@ const CONTRACTS = [
303
315
  name: "P0-P3 severity enum (findings shape)",
304
316
  token: "P0|P1|P2|P3",
305
317
  files: [
306
- "agents/orc-reviewer-opus-5-med.md",
318
+ "agents/orc-reviewer-opus-5-low.md",
307
319
  "agents/orc-verifier-opus-5-med.md",
308
320
  "skills/orc-quick/SKILL.md",
309
321
  ],
@@ -536,6 +548,8 @@ const CONTRACTS = [
536
548
  "skills/orc-explain/SKILL.md",
537
549
  "skills/orc-export/SKILL.md",
538
550
  "skills/orc-fast/SKILL.md",
551
+ // v2.1.0 W6 — the rider lane joins the table.
552
+ "skills/orc-fix/SKILL.md",
539
553
  "skills/orc-grill/SKILL.md",
540
554
  "skills/orc-learn/SKILL.md",
541
555
  "skills/orc-mini/SKILL.md",
@@ -897,6 +911,9 @@ const CONTRACTS = [
897
911
  token: ".current",
898
912
  files: [
899
913
  "skills/orc-test/SKILL.md",
914
+ // v2.1.0 W6: /orc-fix states that it never WRITES the pointer — `orc fix
915
+ // record` only reads it to find the host run.
916
+ "skills/orc-fix/SKILL.md",
900
917
  "agents/orc-trace-writer-haiku-4-5.md",
901
918
  "hooks/orc-trace.js",
902
919
  // v1.6.0: the read gate READS the pointer to decide whether an ORC run
@@ -1064,8 +1081,7 @@ const CONTRACTS = [
1064
1081
  binFiles: ["bin/cli.js"],
1065
1082
  files: [
1066
1083
  "hooks/README.md",
1067
- "agents/orc-wiki-scanner-opus-4-8-high.md",
1068
- "agents/orc-wiki-scanner-opus-5-med.md",
1084
+ "agents/orc-wiki-scanner-opus-5-low.md",
1069
1085
  "agents/orc-wiki-scanner-sonnet-5-high.md",
1070
1086
  "commands/orc-export.md",
1071
1087
  "commands/orc-wiki.md",
@@ -1688,8 +1704,7 @@ const CONTRACTS = [
1688
1704
  name: "wiki pointer-block marker (owned by orc-wiki; orc-claude byte-preserves it)",
1689
1705
  token: "ORC-WIKI:START",
1690
1706
  files: [
1691
- "agents/orc-claude-writer-opus-4-8-high.md",
1692
- "agents/orc-claude-writer-opus-5-med.md",
1707
+ "agents/orc-claude-writer-opus-5-low.md",
1693
1708
  "skills/orc-claude/SKILL.md",
1694
1709
  "skills/orc-claude/references/refresh.md",
1695
1710
  "skills/orc-wiki/references/claude-md-injection.md",
@@ -1737,8 +1752,7 @@ const CONTRACTS = [
1737
1752
  token: "covered_files",
1738
1753
  files: [
1739
1754
  "agents/orc-learn-writer-opus-5-low.md",
1740
- "agents/orc-wiki-scanner-opus-4-8-high.md",
1741
- "agents/orc-wiki-scanner-opus-5-med.md",
1755
+ "agents/orc-wiki-scanner-opus-5-low.md",
1742
1756
  "agents/orc-wiki-scanner-sonnet-5-high.md",
1743
1757
  "skills/orc-learn/references/refresh.md",
1744
1758
  "skills/orc-learn/references/template-knowledge.md",
@@ -1843,12 +1857,10 @@ const CONTRACTS = [
1843
1857
  "agents/orc-graph-noter-sonnet-4-6-med.md",
1844
1858
  "skills/_shared/code-graph.md",
1845
1859
  "agents/orc-analyze-mini-opus-5-med.md",
1846
- "agents/orc-claude-writer-opus-5-med.md",
1847
1860
  "agents/orc-pattern-codifier-opus-5-med.md",
1848
1861
  "agents/orc-planner-mini-opus-5-med.md",
1849
1862
  "agents/orc-retro-opus-5-med.md",
1850
1863
  "agents/orc-scout-opus-5-low.md",
1851
- "agents/orc-wiki-scanner-opus-5-med.md",
1852
1864
  "commands/orc-pattern.md",
1853
1865
  "skills/_shared/drift-recovery.md",
1854
1866
  "skills/_shared/extra-dispatch.md",
@@ -2154,8 +2166,7 @@ const CONTRACTS = [
2154
2166
  token: "crosslink_provided",
2155
2167
  binFiles: ["bin/cli.js"],
2156
2168
  files: [
2157
- "agents/orc-wiki-scanner-opus-4-8-high.md",
2158
- "agents/orc-wiki-scanner-opus-5-med.md",
2169
+ "agents/orc-wiki-scanner-opus-5-low.md",
2159
2170
  "agents/orc-wiki-scanner-sonnet-5-high.md",
2160
2171
  "skills/orc-wiki/README.md",
2161
2172
  "skills/orc-wiki/SKILL.md",
@@ -2172,8 +2183,7 @@ const CONTRACTS = [
2172
2183
  name: "crosslink per-scan-task emission (v0.24.0 — always-on; scan agent returns crosslink_tags | none)",
2173
2184
  token: "crosslink_tags",
2174
2185
  files: [
2175
- "agents/orc-wiki-scanner-opus-4-8-high.md",
2176
- "agents/orc-wiki-scanner-opus-5-med.md",
2186
+ "agents/orc-wiki-scanner-opus-5-low.md",
2177
2187
  "agents/orc-wiki-scanner-sonnet-5-high.md",
2178
2188
  "skills/orc-wiki/SKILL.md",
2179
2189
  "skills/orc-wiki/references/phases/phase-2.md",
@@ -2417,6 +2427,8 @@ const CONTRACTS = [
2417
2427
  "agents/orc-executor-sonnet-4-6-high.md",
2418
2428
  "agents/orc-executor-sonnet-4-6-med.md",
2419
2429
  "agents/orc-executor-sonnet-5-high.md",
2430
+ "agents/orc-executor-sonnet-5-low.md",
2431
+ "agents/orc-executor-sonnet-5-med.md",
2420
2432
  "agents/orc-planner-mini-opus-5-med.md",
2421
2433
  "agents/orc-planner-mini-sonnet-5-high.md",
2422
2434
  "agents/orc-planner-opus-5-med.md",
@@ -2451,6 +2463,8 @@ const CONTRACTS = [
2451
2463
  "agents/orc-executor-sonnet-4-6-high.md",
2452
2464
  "agents/orc-executor-sonnet-4-6-med.md",
2453
2465
  "agents/orc-executor-sonnet-5-high.md",
2466
+ "agents/orc-executor-sonnet-5-low.md",
2467
+ "agents/orc-executor-sonnet-5-med.md",
2454
2468
  "agents/orc-verifier-opus-5-med.md",
2455
2469
  "skills/_shared/return-validation.md",
2456
2470
  "skills/_shared/phases/execution.md",
@@ -2477,6 +2491,8 @@ const CONTRACTS = [
2477
2491
  "agents/orc-executor-sonnet-4-6-high.md",
2478
2492
  "agents/orc-executor-sonnet-4-6-med.md",
2479
2493
  "agents/orc-executor-sonnet-5-high.md",
2494
+ "agents/orc-executor-sonnet-5-low.md",
2495
+ "agents/orc-executor-sonnet-5-med.md",
2480
2496
  "skills/_shared/return-validation.md",
2481
2497
  "skills/_shared/phases/execution.md",
2482
2498
  ],
@@ -2748,6 +2764,8 @@ const CONTRACTS = [
2748
2764
  "agents/orc-executor-sonnet-4-6-high.md",
2749
2765
  "agents/orc-executor-sonnet-4-6-med.md",
2750
2766
  "agents/orc-executor-sonnet-5-high.md",
2767
+ "agents/orc-executor-sonnet-5-low.md",
2768
+ "agents/orc-executor-sonnet-5-med.md",
2751
2769
  "agents/orc-recon-opus-5-low.md",
2752
2770
  "agents/orc-recon-sonnet-4-6-med.md",
2753
2771
  "skills/_shared/code-graph.md",
@@ -2782,6 +2800,8 @@ const CONTRACTS = [
2782
2800
  "agents/orc-executor-sonnet-4-6-high.md",
2783
2801
  "agents/orc-executor-sonnet-4-6-med.md",
2784
2802
  "agents/orc-executor-sonnet-5-high.md",
2803
+ "agents/orc-executor-sonnet-5-low.md",
2804
+ "agents/orc-executor-sonnet-5-med.md",
2785
2805
  "agents/orc-recon-opus-5-low.md",
2786
2806
  "agents/orc-recon-sonnet-4-6-med.md",
2787
2807
  "skills/_shared/code-graph.md",
@@ -2895,6 +2915,8 @@ const CONTRACTS = [
2895
2915
  "agents/orc-executor-sonnet-4-6-high.md",
2896
2916
  "agents/orc-executor-sonnet-4-6-med.md",
2897
2917
  "agents/orc-executor-sonnet-5-high.md",
2918
+ "agents/orc-executor-sonnet-5-low.md",
2919
+ "agents/orc-executor-sonnet-5-med.md",
2898
2920
  "agents/orc-recon-opus-5-low.md",
2899
2921
  "agents/orc-recon-sonnet-4-6-med.md",
2900
2922
  "skills/_shared/code-graph.md",
@@ -2922,6 +2944,8 @@ const CONTRACTS = [
2922
2944
  "agents/orc-executor-sonnet-4-6-high.md",
2923
2945
  "agents/orc-executor-sonnet-4-6-med.md",
2924
2946
  "agents/orc-executor-sonnet-5-high.md",
2947
+ "agents/orc-executor-sonnet-5-low.md",
2948
+ "agents/orc-executor-sonnet-5-med.md",
2925
2949
  "skills/_shared/return-validation.md",
2926
2950
  ],
2927
2951
  },
@@ -3099,6 +3123,8 @@ const CONTRACTS = [
3099
3123
  "agents/orc-executor-sonnet-4-6-high.md",
3100
3124
  "agents/orc-executor-sonnet-4-6-med.md",
3101
3125
  "agents/orc-executor-sonnet-5-high.md",
3126
+ "agents/orc-executor-sonnet-5-low.md",
3127
+ "agents/orc-executor-sonnet-5-med.md",
3102
3128
  "agents/orc-recon-opus-5-low.md",
3103
3129
  "agents/orc-recon-sonnet-4-6-med.md",
3104
3130
  "skills/_shared/README.md",
@@ -3182,7 +3208,9 @@ const CONTRACTS = [
3182
3208
  "agents/orc-executor-sonnet-4-6-high.md",
3183
3209
  "agents/orc-executor-sonnet-4-6-med.md",
3184
3210
  "agents/orc-executor-sonnet-5-high.md",
3185
- "agents/orc-reviewer-opus-5-med.md",
3211
+ "agents/orc-executor-sonnet-5-low.md",
3212
+ "agents/orc-executor-sonnet-5-med.md",
3213
+ "agents/orc-reviewer-opus-5-low.md",
3186
3214
  "agents/orc-verifier-opus-5-med.md",
3187
3215
  "skills/_shared/gotchas.md",
3188
3216
  "skills/_shared/return-validation.md",
@@ -3768,7 +3796,7 @@ const CONTRACTS = [
3768
3796
  token: "gotcha_card",
3769
3797
  files: [
3770
3798
  "agents/orc-judge-opus-5-xhigh.md",
3771
- "agents/orc-reviewer-opus-5-med.md",
3799
+ "agents/orc-reviewer-opus-5-low.md",
3772
3800
  "agents/orc-verifier-opus-5-med.md",
3773
3801
  "skills/_shared/README.md",
3774
3802
  "skills/_shared/gotchas.md",
@@ -3783,7 +3811,7 @@ const CONTRACTS = [
3783
3811
  token: "tool_findings",
3784
3812
  files: [
3785
3813
  "agents/orc-judge-opus-5-xhigh.md",
3786
- "agents/orc-reviewer-opus-5-med.md",
3814
+ "agents/orc-reviewer-opus-5-low.md",
3787
3815
  "agents/orc-verifier-opus-5-med.md",
3788
3816
  "skills/_shared/README.md",
3789
3817
  "skills/_shared/review-slice.md",
@@ -3795,7 +3823,7 @@ const CONTRACTS = [
3795
3823
  name: "pre_existing — a finding outside diff_ranges never gates (v2.0.0 W5a)",
3796
3824
  token: "pre_existing",
3797
3825
  files: [
3798
- "agents/orc-reviewer-opus-5-med.md",
3826
+ "agents/orc-reviewer-opus-5-low.md",
3799
3827
  "skills/_shared/phases/summary.md",
3800
3828
  "skills/_shared/review-slice.md",
3801
3829
  ],
@@ -3810,6 +3838,9 @@ const CONTRACTS = [
3810
3838
  "skills/_shared/phases/trace-verbs.md",
3811
3839
  "skills/_shared/review-slice.md",
3812
3840
  "skills/orc-quick/references/dispatch-gate.md",
3841
+ "skills/orc/examples/full-run-mock.md",
3842
+ // v2.1.0 (E21 D8) — the review guard reads it (a clean review is quiet).
3843
+ "hooks/orc-session-hook.js",
3813
3844
  ],
3814
3845
  binFiles: ["bin/cli.js"],
3815
3846
  },
@@ -3829,14 +3860,24 @@ const CONTRACTS = [
3829
3860
  {
3830
3861
  name: "orc gotcha filter — the after-filter call, never removes a P0/P1 (v2.0.0 W5a)",
3831
3862
  token: "orc gotcha filter",
3832
- files: ["agents/orc-reviewer-opus-5-med.md", "skills/_shared/review-slice.md"],
3863
+ files: ["agents/orc-reviewer-opus-5-low.md", "skills/_shared/review-slice.md"],
3833
3864
  binFiles: ["bin/gotcha.js"],
3834
3865
  },
3835
3866
  {
3836
3867
  // The one recording call (`_shared/gotchas.md` §10) and the file only the CLI writes.
3837
3868
  name: "orc gotcha observe — the one recording call (v2.0.0 W5a)",
3838
3869
  token: "orc gotcha observe",
3839
- files: ["skills/_shared/gotchas.md"],
3870
+ files: [
3871
+ "skills/_shared/gotchas.md",
3872
+ // v2.1.0 W6 (DE-13) — §3 step 6 stores the reviewed ranges.
3873
+ "skills/_shared/review-slice.md",
3874
+ "skills/orc-mini/examples/mini-run-mock.md",
3875
+ "skills/orc-quick/references/dispatch-gate.md",
3876
+ "skills/orc/examples/full-run-mock.md",
3877
+ // v2.1.0 (E21 D7) — the narration guard names it when a lane wrote its
3878
+ // trace lines by hand and the observe reminder never ran.
3879
+ "hooks/orc-session-hook.js",
3880
+ ],
3840
3881
  binFiles: ["bin/gotcha.js"],
3841
3882
  },
3842
3883
  // v2.0.0 W6a — the importers, the review-step sync (DE-29) and the two
@@ -3894,6 +3935,27 @@ const CONTRACTS = [
3894
3935
  files: ["skills/_shared/phases/summary.md", "skills/orc-quick/README.md"],
3895
3936
  binFiles: ["bin/run-undo.js"],
3896
3937
  },
3938
+ // v2.1.0 W7 — the "never auto-deleted" promise is GONE. Every copy names the
3939
+ // command and the opt-in sweep, so a copy that still promises the opposite
3940
+ // fails here (06-clear-logs-spec §7).
3941
+ {
3942
+ name: "orc clear logs --apply — traces are kept until the command or the opt-in sweep (v2.1.0 W7)",
3943
+ token: "orc clear logs --apply",
3944
+ files: ["skills/_shared/phases/trace.md", "skills/_shared/phases/trace-verbs.md", "skills/orc/config.md"],
3945
+ binFiles: ["bin/cli.js", "bin/clear-logs.js"],
3946
+ },
3947
+ {
3948
+ name: "log_retention_auto — the FINISH sweep switch, named beside the command (v2.1.0 W7)",
3949
+ token: "log_retention_auto",
3950
+ files: ["skills/_shared/phases/trace.md", "skills/_shared/phases/trace-verbs.md", "skills/orc/config.md"],
3951
+ binFiles: ["bin/cli.js", "bin/clear-logs.js", "bin/trace-write.js"],
3952
+ },
3953
+ {
3954
+ name: "logs-rollup.json — the pruned runs `orc stats` still counts (v2.1.0 W7, DE-19 a)",
3955
+ token: "logs-rollup.json",
3956
+ files: [],
3957
+ binFiles: ["bin/cli.js", "bin/clear-logs.js"],
3958
+ },
3897
3959
  {
3898
3960
  name: "orc ci flaky — the ONE flaky classifier, before any repair round (v2.0.0 W6b, Q5)",
3899
3961
  token: "orc ci flaky",
@@ -3956,6 +4018,11 @@ const CONTRACTS = [
3956
4018
  "skills/orc-wait/SKILL.md",
3957
4019
  "skills/orc-analyze/SKILL.md",
3958
4020
  "skills/_shared/phases/ship.md",
4021
+ // v2.1.0 W6 — /orc-fix marks `fix.f1.class` (class never).
4022
+ "skills/orc-fix/SKILL.md",
4023
+ // v2.1.0 (A4) — /orc-fast wrote no ASK: the pointer now lives in its F0
4024
+ // config step, the step that reads `habits{}`.
4025
+ "skills/orc-fast/SKILL.md",
3959
4026
  // eval E2 (27-09-2026): the pointer moved to the step that reads the answer.
3960
4027
  "skills/_shared/phases/preflight.md",
3961
4028
  ],
@@ -3990,6 +4057,8 @@ const CONTRACTS = [
3990
4057
  "skills/_shared/extra-dispatch.md",
3991
4058
  "skills/context-combiner/SKILL.md",
3992
4059
  "skills/orc-aftermath/SKILL.md",
4060
+ // v2.1.0 W6 — reads `log_dir` (the host trace), so the short pointer.
4061
+ "skills/orc-fix/SKILL.md",
3993
4062
  "skills/orc-analyze-mini/SKILL.md",
3994
4063
  "skills/orc-analyze/SKILL.md",
3995
4064
  "skills/orc-boundary/SKILL.md",
@@ -4377,6 +4446,9 @@ const BUDGETS = [
4377
4446
  { file: "skills/orc-pr-driver/SKILL.md", maxLines: 188, maxBytes: CODING_SPINE_BYTES },
4378
4447
  { file: "skills/orc-route/SKILL.md", maxLines: 183, maxBytes: CODING_SPINE_BYTES },
4379
4448
  { file: "skills/orc-wait/SKILL.md", maxLines: 169 },
4449
+ // v2.1.0 W6 — a rider, but it writes code in the no-run case (DE-12 c), so
4450
+ // the coding cap applies. Target ≤ 6 KB.
4451
+ { file: "skills/orc-fix/SKILL.md", maxLines: 130, maxBytes: CODING_SPINE_BYTES },
4380
4452
  { file: "skills/orc-pattern/SKILL.md", maxLines: 142, maxBytes: CODING_SPINE_BYTES },
4381
4453
  { file: "skills/orc-diy/SKILL.md", maxLines: 101, maxBytes: CODING_SPINE_BYTES },
4382
4454
  { file: "skills/orc-analyze-mini/SKILL.md", maxLines: 114, maxBytes: CODING_SPINE_BYTES },
@@ -4638,6 +4710,15 @@ for (const b of BUDGETS) {
4638
4710
  // never by a spine (a lane never picks its own card). Both are ANSWERS.
4639
4711
  "notify",
4640
4712
  "rules_card_compact",
4713
+ // v2.1.0 W7 — operating keys of `orc clear logs` and of the FINISH sweep
4714
+ // inside `orc trace write`. The CLI reads both; no spine ever reads the
4715
+ // retention age or the sweep switch, exactly as no spine reads
4716
+ // `extra_timeout_s`. An empty lanes[] here is an ANSWER.
4717
+ "log_retention_days",
4718
+ "log_retention_auto",
4719
+ // v2.1.0 W8 — a WRITE-THROUGH key: its value lives in settings.json
4720
+ // (statusLine.refreshInterval) and Claude Code reads it, never a lane.
4721
+ "statusline_refresh",
4641
4722
  ]);
4642
4723
  for (const e of metaEntries) {
4643
4724
  if (!e.lanes) {
@@ -223,6 +223,14 @@ const required = [
223
223
  // v2.0.0 W6b — `orc run snapshot` + `orc undo`. A publish that drops it
224
224
  // leaves every end-of-run card printing an undo command that crashes.
225
225
  "bin/run-undo.js",
226
+ // v2.1.0 W7 — `orc clear logs` and the FINISH sweep. A publish that drops it
227
+ // breaks the Maintenance row, and `orc trace write` loses the sweep (it
228
+ // never blocks, so the loss would be silent).
229
+ "bin/clear-logs.js",
230
+ // v2.1.0 W6 — `orc fix classify|record|list`, the deterministic half of
231
+ // /orc-fix. A publish that drops it leaves the lane naming a command that
232
+ // crashes, and no fix ever reaches the review card.
233
+ "bin/fix.js",
226
234
 
227
235
  // The two DATED data files (v0.50.0). Both ship inside the package and both
228
236
  // are load-bearing on absence rather than on content: without the catalog
@@ -372,6 +380,7 @@ const required = [
372
380
  "templates/commands/orc-export.md",
373
381
  "templates/skills/orc-route/SKILL.md",
374
382
  "templates/skills/orc-explain/SKILL.md",
383
+ "templates/skills/orc-fix/SKILL.md",
375
384
  "templates/skills/orc-analyze/references/thin-input.md",
376
385
  // v1.0.0 W7 — the ONE config doc. `orc/config.md` stopped restating 72 key
377
386
  // defaults and now points here for the ranks, the families, the gates, the
@@ -445,6 +454,7 @@ const required = [
445
454
  "templates/commands/orc-grill.md",
446
455
  "templates/commands/orc-route.md",
447
456
  "templates/commands/orc-explain.md",
457
+ "templates/commands/orc-fix.md",
448
458
  "templates/commands/orc.md",
449
459
  "templates/commands/orc-quick.md",
450
460
  "templates/commands/orc-diy.md",
@@ -458,7 +468,7 @@ const required = [
458
468
  "templates/agents/MODEL-MAPPING.md",
459
469
  "templates/agents/orc-advisor-opus-5-xhigh.md",
460
470
  "templates/agents/orc-judge-opus-5-xhigh.md",
461
- "templates/agents/orc-claude-writer-opus-4-8-high.md",
471
+ "templates/agents/orc-claude-writer-opus-5-low.md",
462
472
  "templates/agents/orc-learn-writer-opus-5-low.md",
463
473
  "templates/agents/orc-trace-writer-haiku-4-5.md",
464
474
  // v1.8.0 — the code graph's notes writer (Layer 2).
@@ -470,7 +480,7 @@ const required = [
470
480
  // guards their content; this list still guards that each one ships.)
471
481
  "templates/agents/orc-system-analyst-opus-5-high.md",
472
482
  "templates/agents/orc-planner-opus-5-med.md",
473
- "templates/agents/orc-reviewer-opus-5-med.md",
483
+ "templates/agents/orc-reviewer-opus-5-low.md",
474
484
  "templates/agents/orc-verifier-opus-5-med.md",
475
485
  "templates/agents/orc-scout-sonnet-4-6-high.md",
476
486
  // v1.9.0 — the /orc-quick recon pair. Both halves must ship: the gate offers
@@ -480,7 +490,7 @@ const required = [
480
490
  "templates/agents/orc-test-author-opus-5-med.md",
481
491
  "templates/agents/orc-pattern-codifier-sonnet-5-high.md",
482
492
  "templates/agents/orc-retro-sonnet-5-high.md",
483
- "templates/agents/orc-wiki-scanner-opus-4-8-high.md",
493
+ "templates/agents/orc-wiki-scanner-opus-5-low.md",
484
494
  // v0.46.0 — the LIGHT half of the wiki scan tier ladder. Both halves must ship:
485
495
  // the ladder resolves at dispatch time, so a missing light scanner makes every
486
496
  // small-delta refresh dispatch a nonexistent agent.
@@ -498,8 +508,6 @@ const required = [
498
508
  "templates/agents/orc-planner-mini-opus-5-med.md",
499
509
  "templates/agents/orc-scout-opus-5-low.md",
500
510
  "templates/agents/orc-pattern-codifier-opus-5-med.md",
501
- "templates/agents/orc-wiki-scanner-opus-5-med.md",
502
- "templates/agents/orc-claude-writer-opus-5-med.md",
503
511
  "templates/agents/orc-retro-opus-5-med.md",
504
512
  // v0.47.0 — the three /orc-challenge agents. All THREE must ship: a cycle that
505
513
  // cannot dispatch the reader silently loses D4, and one that cannot dispatch
@@ -549,6 +557,7 @@ const required = [
549
557
  // the panel's preview and the bar's real output byte-identical BY
550
558
  // CONSTRUCTION. A missing file here breaks the status line AND the panel.
551
559
  "templates/hooks/orc-statusline-render.js",
560
+ "templates/hooks/orc-weather-fetch.js",
552
561
  // v1.4.0 — the SECOND board, and the per-agent token record that rides with
553
562
  // it. Wired even with the board off, because the measurement is handed over
554
563
  // either way.
@@ -646,7 +655,9 @@ const agentCount = walkCount(path.join(ROOT, "templates/agents"), ".md");
646
655
  // hatch survives on the menu as line 3 (model only). Both names earn an
647
656
  // explicit guard entry above and a MODEL-MAPPING row; `opus5_only` adds no
648
657
  // pair, because orc-quick is the lane that key is inert in.
649
- if (skillCount < 39) missing.push(`templates/skills (expected >=39 SKILL.md, found ${skillCount})`);
658
+ // v2.1.0 W6: +1 skill (orc-fix, a rider lane) and NO new agent — the no-run
659
+ // fix reuses the /orc-quick dispatch gate and its shipped executors.
660
+ if (skillCount < 41) missing.push(`templates/skills (expected >=41 SKILL.md, found ${skillCount})`);
650
661
  if (agentCount < 50) missing.push(`templates/agents (expected >=50 .md, found ${agentCount})`);
651
662
 
652
663
  // B4 — encoding/mojibake guard. The OneDrive corruption rule becomes a gate: