@azure-id/orc 1.8.2 → 1.9.1
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 +299 -0
- package/README-id.md +68 -51
- package/README.md +60 -45
- package/bin/cli.js +301 -39
- package/bin/graph-audit.js +235 -0
- package/bin/graph-extract.js +308 -3
- package/bin/graph-gain.js +23 -3
- package/bin/graph-map.js +9 -1
- package/bin/graph-query.js +152 -10
- package/bin/graph-shard.js +6 -1
- package/bin/graph-signals.js +287 -4
- package/bin/graph.js +717 -658
- package/bin/verify-contracts.js +277 -61
- package/bin/verify-package.js +19 -1
- package/bin/webui/fixtures/knowledge.js +21 -4
- package/bin/webui/i18n/en/knowledge.json +5 -2
- package/bin/webui/i18n/id/knowledge.json +5 -2
- package/bin/webui/js/panels/knowledge.js +21 -2
- package/mock-run/orc-quick.md +141 -113
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +15 -5
- package/templates/agents/orc-executor-haiku-4-5.md +19 -1
- package/templates/agents/orc-executor-opus-4-7-high.md +19 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +19 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +19 -1
- package/templates/agents/orc-executor-opus-5-high.md +19 -1
- package/templates/agents/orc-executor-opus-5-low.md +19 -1
- package/templates/agents/orc-executor-opus-5-med.md +19 -1
- package/templates/agents/orc-executor-sonnet-4-6-high.md +19 -1
- package/templates/agents/orc-executor-sonnet-4-6-med.md +19 -1
- package/templates/agents/orc-executor-sonnet-5-high.md +19 -1
- package/templates/agents/orc-planner-mini-opus-5-med.md +75 -69
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +73 -67
- package/templates/agents/orc-recon-opus-5-low.md +109 -0
- package/templates/agents/orc-recon-sonnet-4-6-med.md +109 -0
- package/templates/commands/orc-mini.md +10 -12
- package/templates/commands/orc-quick.md +20 -33
- package/templates/hooks/README.md +11 -1
- package/templates/hooks/orc-graph-hook.js +53 -7
- package/templates/hooks/orc-trace.js +476 -471
- package/templates/skills/_shared/code-graph.md +56 -17
- package/templates/skills/_shared/phases/execution.md +4 -4
- package/templates/skills/_shared/phases/planning.md +3 -3
- package/templates/skills/_shared/phases/preflight.md +1 -1
- package/templates/skills/_shared/phases/review.md +3 -1
- package/templates/skills/_shared/phases/rules.md +172 -159
- package/templates/skills/_shared/phases/ship.md +1 -1
- package/templates/skills/_shared/phases/trace.md +4 -2
- package/templates/skills/_shared/phases/wiki-consult.md +9 -5
- package/templates/skills/_shared/read-ladder.md +14 -1
- package/templates/skills/_shared/return-validation.md +22 -0
- package/templates/skills/context-combiner/SKILL.md +13 -13
- package/templates/skills/orc/SKILL.md +1 -1
- package/templates/skills/orc/subskills/orc-execution/core.md +171 -159
- package/templates/skills/orc-fast/SKILL.md +3 -3
- package/templates/skills/orc-mini/SKILL.md +145 -137
- package/templates/skills/orc-mini/examples/mini-run-mock.md +64 -50
- package/templates/skills/orc-mini/references/complexity.md +119 -0
- package/templates/skills/orc-quick/README.md +495 -423
- package/templates/skills/orc-quick/SKILL.md +157 -212
- package/templates/skills/orc-quick/references/context-doc.md +145 -114
- package/templates/skills/orc-quick/references/defect.md +101 -0
- package/templates/skills/orc-quick/references/dispatch-gate.md +55 -24
- package/templates/skills/orc-quick/references/gh-mode.md +148 -127
- package/templates/skills/orc-quick/references/look.md +107 -0
package/bin/verify-contracts.js
CHANGED
|
@@ -27,8 +27,6 @@ const CONTRACTS = [
|
|
|
27
27
|
token: "actual_model",
|
|
28
28
|
files: [
|
|
29
29
|
"agents/MODEL-MAPPING.md",
|
|
30
|
-
// v1.8.0 — the graph noter reports its model like every other role.
|
|
31
|
-
"agents/orc-graph-noter-sonnet-4-6-med.md",
|
|
32
30
|
"agents/orc-advisor-opus-5-xhigh.md",
|
|
33
31
|
"agents/orc-analyze-mini-opus-5-med.md",
|
|
34
32
|
"agents/orc-analyze-mini-sonnet-5-high.md",
|
|
@@ -62,6 +60,8 @@ const CONTRACTS = [
|
|
|
62
60
|
"agents/orc-planner-mini-opus-5-med.md",
|
|
63
61
|
"agents/orc-planner-mini-sonnet-5-high.md",
|
|
64
62
|
"agents/orc-planner-opus-5-med.md",
|
|
63
|
+
"agents/orc-recon-opus-5-low.md",
|
|
64
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
65
65
|
"agents/orc-retro-opus-5-med.md",
|
|
66
66
|
"agents/orc-retro-sonnet-5-high.md",
|
|
67
67
|
"agents/orc-reviewer-opus-5-med.md",
|
|
@@ -76,6 +76,9 @@ const CONTRACTS = [
|
|
|
76
76
|
"agents/orc-wiki-scanner-sonnet-5-high.md",
|
|
77
77
|
"hooks/orc-trace.js",
|
|
78
78
|
"skills/_shared/extra-dispatch.md",
|
|
79
|
+
"skills/_shared/phases/execution.md",
|
|
80
|
+
"skills/_shared/phases/trace.md",
|
|
81
|
+
"skills/_shared/phases/trace.md",
|
|
79
82
|
"skills/_shared/return-validation.md",
|
|
80
83
|
"skills/orc-advisor/SKILL.md",
|
|
81
84
|
"skills/orc-analyze-mini/SKILL.md",
|
|
@@ -88,7 +91,6 @@ const CONTRACTS = [
|
|
|
88
91
|
"skills/orc-challenge/references/council.md",
|
|
89
92
|
"skills/orc-claude/SKILL.md",
|
|
90
93
|
"skills/orc-claude/examples/claude-run-mock.md",
|
|
91
|
-
"skills/_shared/phases/trace.md",
|
|
92
94
|
"skills/orc-doc/SKILL.md",
|
|
93
95
|
"skills/orc-doc/examples/orc-doc-prd-run.md",
|
|
94
96
|
"skills/orc-fast/SKILL.md",
|
|
@@ -104,7 +106,6 @@ const CONTRACTS = [
|
|
|
104
106
|
"skills/orc-wiki/references/extra.md",
|
|
105
107
|
"skills/orc/README.md",
|
|
106
108
|
"skills/orc/SKILL.md",
|
|
107
|
-
"skills/_shared/phases/trace.md",
|
|
108
109
|
"skills/orc/schemas/checkpoint.md",
|
|
109
110
|
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
110
111
|
"skills/orc/subskills/orc-execution/core.md",
|
|
@@ -112,7 +113,8 @@ const CONTRACTS = [
|
|
|
112
113
|
"skills/orc/subskills/orc-review-verify/SKILL.md",
|
|
113
114
|
"skills/orc/subskills/orc-review-verify/core.md",
|
|
114
115
|
"skills/orc/subskills/orc-testgen/core.md",
|
|
115
|
-
|
|
116
|
+
// v1.8.0 — the graph noter reports its model like every other role.
|
|
117
|
+
"agents/orc-graph-noter-sonnet-4-6-med.md",
|
|
116
118
|
],
|
|
117
119
|
},
|
|
118
120
|
{
|
|
@@ -440,16 +442,18 @@ const CONTRACTS = [
|
|
|
440
442
|
token: "orc run inflight",
|
|
441
443
|
binFiles: ["bin/cli.js"],
|
|
442
444
|
files: [
|
|
443
|
-
"
|
|
445
|
+
"agents/MODEL-MAPPING.md",
|
|
444
446
|
"hooks/README.md",
|
|
445
|
-
"skills/_shared/return-validation.md",
|
|
446
447
|
"skills/_shared/phases/execution.md",
|
|
447
|
-
"skills/
|
|
448
|
+
"skills/_shared/return-validation.md",
|
|
448
449
|
"skills/orc-doc/SKILL.md",
|
|
449
|
-
"skills/orc-wiki/SKILL.md",
|
|
450
|
-
"skills/orc-quick/SKILL.md",
|
|
451
|
-
"skills/orc-mini/SKILL.md",
|
|
452
450
|
"skills/orc-fast/SKILL.md",
|
|
451
|
+
"skills/orc-mini/SKILL.md",
|
|
452
|
+
"skills/orc-quick/SKILL.md",
|
|
453
|
+
"skills/orc-quick/references/dispatch-gate.md",
|
|
454
|
+
"skills/orc-test/SKILL.md",
|
|
455
|
+
"skills/orc-wiki/SKILL.md",
|
|
456
|
+
"skills/orc/SKILL.md",
|
|
453
457
|
],
|
|
454
458
|
},
|
|
455
459
|
{
|
|
@@ -624,10 +628,9 @@ const CONTRACTS = [
|
|
|
624
628
|
files: [
|
|
625
629
|
"agents/orc-analyze-mini-opus-5-med.md",
|
|
626
630
|
"agents/orc-analyze-mini-sonnet-5-high.md",
|
|
631
|
+
"agents/orc-recon-opus-5-low.md",
|
|
632
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
627
633
|
"agents/orc-system-analyst-opus-5-high.md",
|
|
628
|
-
// v0.39.0: the read ladder's anti-chain rule ends in a `searched:` return,
|
|
629
|
-
// so a rename of the attestation field has to reach it too.
|
|
630
|
-
"skills/_shared/read-ladder.md",
|
|
631
634
|
"skills/orc-analyze-mini/SKILL.md",
|
|
632
635
|
"skills/orc-analyze/SKILL.md",
|
|
633
636
|
"skills/orc-analyze/references/deep-mode.md",
|
|
@@ -635,6 +638,9 @@ const CONTRACTS = [
|
|
|
635
638
|
"skills/orc-analyze/schemas/report-prose.md",
|
|
636
639
|
"skills/orc-analyze/schemas/report-requirement.md",
|
|
637
640
|
"skills/orc-analyze/schemas/requirement-spec.md",
|
|
641
|
+
// so a rename of the attestation field has to reach it too.
|
|
642
|
+
"skills/_shared/read-ladder.md",
|
|
643
|
+
// v0.39.0: the read ladder's anti-chain rule ends in a `searched:` return,
|
|
638
644
|
],
|
|
639
645
|
},
|
|
640
646
|
{
|
|
@@ -722,29 +728,31 @@ const CONTRACTS = [
|
|
|
722
728
|
files: [
|
|
723
729
|
"agents/orc-retro-opus-5-med.md",
|
|
724
730
|
"agents/orc-retro-sonnet-5-high.md",
|
|
725
|
-
"skills/
|
|
731
|
+
"skills/_shared/phases/analyst-gates.md",
|
|
732
|
+
"skills/_shared/phases/execution.md",
|
|
733
|
+
"skills/_shared/phases/plan-handoff.md",
|
|
734
|
+
"skills/_shared/phases/planning.md",
|
|
735
|
+
"skills/_shared/phases/preflight.md",
|
|
736
|
+
"skills/_shared/phases/ship.md",
|
|
737
|
+
"skills/_shared/phases/stop-resume.md",
|
|
738
|
+
"skills/_shared/phases/trace.md",
|
|
726
739
|
"skills/_shared/phases/trace.md",
|
|
740
|
+
"skills/orc-analyze/SKILL.md",
|
|
727
741
|
"skills/orc-fast/SKILL.md",
|
|
728
742
|
"skills/orc-mini/SKILL.md",
|
|
743
|
+
"skills/orc-mini/references/complexity.md",
|
|
729
744
|
"skills/orc-poly/SKILL.md",
|
|
730
745
|
"skills/orc-poly/examples/poly-run-mock.md",
|
|
746
|
+
"skills/orc-pr-driver/SKILL.md",
|
|
731
747
|
"skills/orc-quick/SKILL.md",
|
|
748
|
+
"skills/orc-quick/references/look.md",
|
|
732
749
|
"skills/orc-retro/SKILL.md",
|
|
733
750
|
"skills/orc/SKILL.md",
|
|
734
|
-
"skills/
|
|
751
|
+
"skills/orc/config.md",
|
|
735
752
|
"skills/orc/references/effort-and-mode.md",
|
|
736
|
-
"skills/
|
|
737
|
-
"skills/_shared/phases/stop-resume.md",
|
|
738
|
-
"skills/_shared/phases/trace.md",
|
|
753
|
+
"skills/orc/references/preflight-report.md",
|
|
739
754
|
"skills/orc/references/ultra-mode.md",
|
|
740
|
-
"skills/orc-pr-driver/SKILL.md",
|
|
741
755
|
"skills/orc/subskills/orc-pr/stack-gate.md",
|
|
742
|
-
"skills/orc/config.md",
|
|
743
|
-
"skills/orc/references/preflight-report.md",
|
|
744
|
-
"skills/_shared/phases/preflight.md",
|
|
745
|
-
"skills/_shared/phases/execution.md",
|
|
746
|
-
"skills/_shared/phases/planning.md",
|
|
747
|
-
"skills/_shared/phases/ship.md",
|
|
748
756
|
],
|
|
749
757
|
},
|
|
750
758
|
{
|
|
@@ -1161,6 +1169,7 @@ const CONTRACTS = [
|
|
|
1161
1169
|
"skills/_shared/README.md",
|
|
1162
1170
|
"skills/_shared/interview.md",
|
|
1163
1171
|
"skills/_shared/lane-suspend.md",
|
|
1172
|
+
"skills/_shared/phases/intake.md",
|
|
1164
1173
|
"skills/orc-boundary/SKILL.md",
|
|
1165
1174
|
"skills/orc-brainstorm/SKILL.md",
|
|
1166
1175
|
"skills/orc-challenge/SKILL.md",
|
|
@@ -1170,7 +1179,8 @@ const CONTRACTS = [
|
|
|
1170
1179
|
"skills/orc-doc/references/gates.md",
|
|
1171
1180
|
"skills/orc-grill/SKILL.md",
|
|
1172
1181
|
"skills/orc-pact/SKILL.md",
|
|
1173
|
-
"skills/
|
|
1182
|
+
"skills/orc-quick/SKILL.md",
|
|
1183
|
+
"skills/orc-quick/references/dispatch-gate.md",
|
|
1174
1184
|
],
|
|
1175
1185
|
},
|
|
1176
1186
|
{
|
|
@@ -1893,25 +1903,26 @@ const CONTRACTS = [
|
|
|
1893
1903
|
"agents/orc-planner-opus-5-med.md",
|
|
1894
1904
|
"agents/orc-retro-opus-5-med.md",
|
|
1895
1905
|
"agents/orc-retro-sonnet-5-high.md",
|
|
1906
|
+
"commands/orc-route.md",
|
|
1907
|
+
"skills/_shared/phases/analyst-gates.md",
|
|
1908
|
+
"skills/_shared/phases/plan-handoff.md",
|
|
1909
|
+
"skills/_shared/phases/planning.md",
|
|
1910
|
+
"skills/_shared/phases/scoring.md",
|
|
1911
|
+
"skills/_shared/phases/trace.md",
|
|
1912
|
+
"skills/_shared/phases/wave-grouping.md",
|
|
1896
1913
|
"skills/orc-mini/SKILL.md",
|
|
1914
|
+
"skills/orc-mini/references/complexity.md",
|
|
1897
1915
|
"skills/orc-retro/SKILL.md",
|
|
1916
|
+
"skills/orc-route/SKILL.md",
|
|
1898
1917
|
"skills/orc/README.md",
|
|
1899
1918
|
"skills/orc/SKILL.md",
|
|
1900
1919
|
"skills/orc/config.md",
|
|
1901
1920
|
"skills/orc/examples/full-run-mock.md",
|
|
1902
|
-
"skills/_shared/phases/analyst-gates.md",
|
|
1903
1921
|
"skills/orc/references/effort-and-mode.md",
|
|
1904
|
-
"skills/
|
|
1905
|
-
"skills/_shared/phases/trace.md",
|
|
1906
|
-
"skills/_shared/phases/wave-grouping.md",
|
|
1922
|
+
"skills/orc/references/preflight-report.md",
|
|
1907
1923
|
"skills/orc/schemas/planning-output.md",
|
|
1908
1924
|
"skills/orc/subskills/orc-planner-mini/SKILL.md",
|
|
1909
1925
|
"skills/orc/subskills/orc-planner/SKILL.md",
|
|
1910
|
-
"commands/orc-route.md",
|
|
1911
|
-
"skills/orc-route/SKILL.md",
|
|
1912
|
-
"skills/orc/references/preflight-report.md",
|
|
1913
|
-
"skills/_shared/phases/planning.md",
|
|
1914
|
-
"skills/_shared/phases/scoring.md",
|
|
1915
1926
|
],
|
|
1916
1927
|
},
|
|
1917
1928
|
{
|
|
@@ -2521,23 +2532,24 @@ const CONTRACTS = [
|
|
|
2521
2532
|
binFiles: ["bin/cli.js"],
|
|
2522
2533
|
files: [
|
|
2523
2534
|
"skills/_shared/fallback-handoff.md",
|
|
2535
|
+
"skills/_shared/phases/intake.md",
|
|
2536
|
+
"skills/_shared/phases/stop-resume.md",
|
|
2524
2537
|
"skills/_shared/stack-plan.md",
|
|
2525
2538
|
"skills/orc-diy/references/blocks/header.md",
|
|
2526
2539
|
"skills/orc-diy/references/locked-blocks.md",
|
|
2540
|
+
"skills/orc-doc/README.md",
|
|
2541
|
+
"skills/orc-doc/references/chunking.md",
|
|
2542
|
+
"skills/orc-doc/references/gates.md",
|
|
2543
|
+
"skills/orc-doc/references/resume-protocol.md",
|
|
2527
2544
|
"skills/orc-export/SKILL.md",
|
|
2528
2545
|
"skills/orc-fast/SKILL.md",
|
|
2529
2546
|
"skills/orc-mini/SKILL.md",
|
|
2547
|
+
"skills/orc-quick/SKILL.md",
|
|
2530
2548
|
"skills/orc-quick/references/context-doc.md",
|
|
2531
2549
|
"skills/orc-wiki/SKILL.md",
|
|
2532
2550
|
"skills/orc/README.md",
|
|
2533
2551
|
"skills/orc/SKILL.md",
|
|
2534
2552
|
"skills/orc/config.md",
|
|
2535
|
-
"skills/_shared/phases/intake.md",
|
|
2536
|
-
"skills/_shared/phases/stop-resume.md",
|
|
2537
|
-
"skills/orc-doc/README.md",
|
|
2538
|
-
"skills/orc-doc/references/chunking.md",
|
|
2539
|
-
"skills/orc-doc/references/gates.md",
|
|
2540
|
-
"skills/orc-doc/references/resume-protocol.md",
|
|
2541
2553
|
],
|
|
2542
2554
|
},
|
|
2543
2555
|
// ── Stacked pull requests (v0.37.0) ──────────────────────────────────────
|
|
@@ -2673,15 +2685,16 @@ const CONTRACTS = [
|
|
|
2673
2685
|
"skills/_shared/phases/wiki-consult.md",
|
|
2674
2686
|
"skills/_shared/read-ladder.md",
|
|
2675
2687
|
"skills/_shared/return-validation.md",
|
|
2676
|
-
// W6 — the six code lanes open it (S5: a declared capability no lane
|
|
2677
|
-
// points at is a gate that is always off).
|
|
2678
|
-
"skills/orc-diy/references/flow-schema.md",
|
|
2679
2688
|
"skills/orc-fast/SKILL.md",
|
|
2680
2689
|
"skills/orc-mini/SKILL.md",
|
|
2681
2690
|
"skills/orc-quick/SKILL.md",
|
|
2682
2691
|
"skills/orc-quick/references/dispatch-gate.md",
|
|
2692
|
+
"skills/orc-quick/references/look.md",
|
|
2683
2693
|
"skills/orc-wiki/references/staleness.md",
|
|
2684
2694
|
"skills/orc/SKILL.md",
|
|
2695
|
+
// W6 — the six code lanes open it (S5: a declared capability no lane
|
|
2696
|
+
// points at is a gate that is always off).
|
|
2697
|
+
"skills/orc-diy/references/flow-schema.md",
|
|
2685
2698
|
],
|
|
2686
2699
|
},
|
|
2687
2700
|
{
|
|
@@ -2691,9 +2704,12 @@ const CONTRACTS = [
|
|
|
2691
2704
|
name: "graph precedence (v1.8.0 — code > graph structure > fresh wiki > stale wiki > graph notes > priors)",
|
|
2692
2705
|
token: "code > graph structure",
|
|
2693
2706
|
files: [
|
|
2707
|
+
"agents/orc-recon-opus-5-low.md",
|
|
2708
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2694
2709
|
"skills/_shared/code-graph.md",
|
|
2695
2710
|
"skills/_shared/phases/wiki-consult.md",
|
|
2696
2711
|
"skills/_shared/read-ladder.md",
|
|
2712
|
+
"skills/orc-quick/references/look.md",
|
|
2697
2713
|
"skills/orc-wiki/references/staleness.md",
|
|
2698
2714
|
],
|
|
2699
2715
|
},
|
|
@@ -2713,14 +2729,86 @@ const CONTRACTS = [
|
|
|
2713
2729
|
"agents/orc-executor-sonnet-4-6-high.md",
|
|
2714
2730
|
"agents/orc-executor-sonnet-4-6-med.md",
|
|
2715
2731
|
"agents/orc-executor-sonnet-5-high.md",
|
|
2732
|
+
"agents/orc-recon-opus-5-low.md",
|
|
2733
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2716
2734
|
"skills/_shared/code-graph.md",
|
|
2717
2735
|
"skills/_shared/phases/execution.md",
|
|
2718
2736
|
"skills/_shared/read-ladder.md",
|
|
2719
2737
|
"skills/_shared/return-validation.md",
|
|
2738
|
+
"skills/orc-mini/SKILL.md",
|
|
2739
|
+
"skills/orc-quick/SKILL.md",
|
|
2720
2740
|
// W9: the two single-executor spines name it in their code-graph step.
|
|
2721
2741
|
"skills/orc-fast/SKILL.md",
|
|
2742
|
+
],
|
|
2743
|
+
},
|
|
2744
|
+
// ── v1.9.1 W3 — the brief answer, and the lines the CLI now computes ──
|
|
2745
|
+
{
|
|
2746
|
+
// Every `--json` read a lane makes carries it, and the CLI is the only
|
|
2747
|
+
// thing that can answer it. A rename that reached one side and not the
|
|
2748
|
+
// other would leave every lane asking for a flag nothing knows.
|
|
2749
|
+
name: "graph brief answer (v1.9.1 — --brief on every --json read a lane makes)",
|
|
2750
|
+
token: "--brief",
|
|
2751
|
+
files: [
|
|
2752
|
+
"agents/orc-executor-haiku-4-5.md",
|
|
2753
|
+
"agents/orc-executor-opus-4-7-high.md",
|
|
2754
|
+
"agents/orc-executor-opus-4-7-med.md",
|
|
2755
|
+
"agents/orc-executor-opus-4-8-high.md",
|
|
2756
|
+
"agents/orc-executor-opus-5-high.md",
|
|
2757
|
+
"agents/orc-executor-opus-5-low.md",
|
|
2758
|
+
"agents/orc-executor-opus-5-med.md",
|
|
2759
|
+
"agents/orc-executor-sonnet-4-6-high.md",
|
|
2760
|
+
"agents/orc-executor-sonnet-4-6-med.md",
|
|
2761
|
+
"agents/orc-executor-sonnet-5-high.md",
|
|
2762
|
+
"agents/orc-recon-opus-5-low.md",
|
|
2763
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2764
|
+
"skills/_shared/code-graph.md",
|
|
2765
|
+
"skills/_shared/phases/execution.md",
|
|
2766
|
+
"skills/_shared/phases/planning.md",
|
|
2767
|
+
"skills/_shared/phases/preflight.md",
|
|
2768
|
+
// review.md names it to say where it is deliberately NOT used.
|
|
2769
|
+
"skills/_shared/phases/review.md",
|
|
2770
|
+
"skills/_shared/phases/ship.md",
|
|
2771
|
+
// trace.md names the call each trace verb is copied from.
|
|
2772
|
+
"skills/_shared/phases/trace.md",
|
|
2773
|
+
"skills/_shared/read-ladder.md",
|
|
2774
|
+
"skills/orc/SKILL.md",
|
|
2775
|
+
"skills/orc-fast/SKILL.md",
|
|
2722
2776
|
"skills/orc-mini/SKILL.md",
|
|
2777
|
+
"skills/orc-mini/references/complexity.md",
|
|
2778
|
+
"skills/orc-quick/SKILL.md",
|
|
2779
|
+
"skills/orc-quick/references/gh-mode.md",
|
|
2780
|
+
"skills/orc-quick/references/look.md",
|
|
2723
2781
|
],
|
|
2782
|
+
binFiles: ["bin/cli.js"],
|
|
2783
|
+
},
|
|
2784
|
+
{
|
|
2785
|
+
// The blast radius is the CLI's line now. A lane that assembled it by hand
|
|
2786
|
+
// would drift from the CLI's grammar the first time either side moved.
|
|
2787
|
+
name: "graph blast line (v1.9.1 — changes computes the blast radius, the lane prints it)",
|
|
2788
|
+
token: "blast_line",
|
|
2789
|
+
files: ["skills/orc-mini/SKILL.md", "skills/orc-quick/SKILL.md"],
|
|
2790
|
+
binFiles: ["bin/graph-signals.js"],
|
|
2791
|
+
},
|
|
2792
|
+
{
|
|
2793
|
+
// Mini's one call. The flag, the prose that explains it and the engine that
|
|
2794
|
+
// answers it move together or not at all.
|
|
2795
|
+
name: "graph complexity read (v1.9.1 — impact --complexity, one call, one line)",
|
|
2796
|
+
token: "--complexity",
|
|
2797
|
+
files: [
|
|
2798
|
+
"skills/_shared/code-graph.md",
|
|
2799
|
+
"skills/_shared/phases/trace.md",
|
|
2800
|
+
"skills/orc-mini/SKILL.md",
|
|
2801
|
+
"skills/orc-mini/references/complexity.md",
|
|
2802
|
+
],
|
|
2803
|
+
binFiles: ["bin/cli.js"],
|
|
2804
|
+
},
|
|
2805
|
+
{
|
|
2806
|
+
// The four thresholds live in ONE place. The prose quotes them by NAME, so
|
|
2807
|
+
// a rename that reaches only the engine fails here.
|
|
2808
|
+
name: "graph complexity thresholds (v1.9.1 — the constants the prose quotes)",
|
|
2809
|
+
token: "COMPLEXITY_CALLER_FILES",
|
|
2810
|
+
files: ["skills/orc-mini/references/complexity.md"],
|
|
2811
|
+
binFiles: ["bin/graph-signals.js"],
|
|
2724
2812
|
},
|
|
2725
2813
|
// ── v1.8.2 W3 — the delivery flags (D1 · D2 · D3 · D5) ────────────────
|
|
2726
2814
|
{
|
|
@@ -2729,7 +2817,15 @@ const CONTRACTS = [
|
|
|
2729
2817
|
// CLI that answers it.
|
|
2730
2818
|
name: "graph slice view (v1.8.2 — ctx --for-slice, the OUTSIDE view of a declared file)",
|
|
2731
2819
|
token: "--for-slice",
|
|
2732
|
-
files: [
|
|
2820
|
+
files: [
|
|
2821
|
+
"hooks/orc-graph-hook.js",
|
|
2822
|
+
"skills/_shared/code-graph.md",
|
|
2823
|
+
"skills/_shared/phases/execution.md",
|
|
2824
|
+
"skills/orc-mini/SKILL.md",
|
|
2825
|
+
"skills/orc-mini/examples/mini-run-mock.md",
|
|
2826
|
+
"skills/orc-quick/SKILL.md",
|
|
2827
|
+
"skills/orc-quick/references/look.md",
|
|
2828
|
+
],
|
|
2733
2829
|
binFiles: ["bin/cli.js", "bin/graph-query.js"],
|
|
2734
2830
|
},
|
|
2735
2831
|
{
|
|
@@ -2737,7 +2833,88 @@ const CONTRACTS = [
|
|
|
2737
2833
|
// bare `--source` is also `orc doc`'s own flag.
|
|
2738
2834
|
name: "graph source block (v1.8.2 — ctx --source [N], charged to the same budget)",
|
|
2739
2835
|
token: "--source [N]",
|
|
2740
|
-
files: [
|
|
2836
|
+
files: [
|
|
2837
|
+
"agents/orc-recon-opus-5-low.md",
|
|
2838
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2839
|
+
"skills/_shared/code-graph.md",
|
|
2840
|
+
"skills/_shared/read-ladder.md",
|
|
2841
|
+
"skills/orc-quick/references/look.md",
|
|
2842
|
+
],
|
|
2843
|
+
binFiles: ["bin/cli.js"],
|
|
2844
|
+
},
|
|
2845
|
+
// ── v1.9.1 W5 — delivery where the paid reads are (R1 · R4) ─────────────
|
|
2846
|
+
{
|
|
2847
|
+
// The call sites WITH the card. The recon agents ask for it, the ladder
|
|
2848
|
+
// and the contract say what it may never print, and the CLI answers it.
|
|
2849
|
+
name: "graph callers source (v1.9.1 — ctx --callers-source, six lines per confident call site)",
|
|
2850
|
+
token: "--callers-source",
|
|
2851
|
+
files: [
|
|
2852
|
+
"agents/orc-recon-opus-5-low.md",
|
|
2853
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2854
|
+
"skills/_shared/code-graph.md",
|
|
2855
|
+
"skills/_shared/read-ladder.md",
|
|
2856
|
+
],
|
|
2857
|
+
binFiles: ["bin/cli.js", "bin/graph-query.js"],
|
|
2858
|
+
},
|
|
2859
|
+
{
|
|
2860
|
+
// Where a language server is asked. Every reader that is told to use it
|
|
2861
|
+
// names the field, and the engine is the only thing that computes it.
|
|
2862
|
+
name: "graph LSP anchor (v1.9.1 — lsp_at on a symbol card: file, line, 1-based character)",
|
|
2863
|
+
token: "lsp_at",
|
|
2864
|
+
files: [
|
|
2865
|
+
"agents/orc-executor-haiku-4-5.md",
|
|
2866
|
+
"agents/orc-executor-opus-4-7-high.md",
|
|
2867
|
+
"agents/orc-executor-opus-4-7-med.md",
|
|
2868
|
+
"agents/orc-executor-opus-4-8-high.md",
|
|
2869
|
+
"agents/orc-executor-opus-5-high.md",
|
|
2870
|
+
"agents/orc-executor-opus-5-low.md",
|
|
2871
|
+
"agents/orc-executor-opus-5-med.md",
|
|
2872
|
+
"agents/orc-executor-sonnet-4-6-high.md",
|
|
2873
|
+
"agents/orc-executor-sonnet-4-6-med.md",
|
|
2874
|
+
"agents/orc-executor-sonnet-5-high.md",
|
|
2875
|
+
"agents/orc-recon-opus-5-low.md",
|
|
2876
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2877
|
+
"skills/_shared/code-graph.md",
|
|
2878
|
+
"skills/_shared/read-ladder.md",
|
|
2879
|
+
],
|
|
2880
|
+
binFiles: ["bin/graph-query.js"],
|
|
2881
|
+
},
|
|
2882
|
+
// ── v1.9.0 — the lean lanes reproduce before they fix ───────────────────
|
|
2883
|
+
{
|
|
2884
|
+
// The slice field that makes a defect entry show the bug RED first. It is
|
|
2885
|
+
// a CONDITIONAL, and the conditional is the contract: `repro` alone also
|
|
2886
|
+
// matches "reproducible" and "reproduce" in files that owe nothing here.
|
|
2887
|
+
// Every executor carries the step, the shared return contract validates it
|
|
2888
|
+
// (§5d), and the full lane's execution core states it once.
|
|
2889
|
+
name: "reproduce-first slice field (v1.9.0 — repro.required)",
|
|
2890
|
+
token: "repro.required: true",
|
|
2891
|
+
files: [
|
|
2892
|
+
"agents/orc-executor-haiku-4-5.md",
|
|
2893
|
+
"agents/orc-executor-opus-4-7-high.md",
|
|
2894
|
+
"agents/orc-executor-opus-4-7-med.md",
|
|
2895
|
+
"agents/orc-executor-opus-4-8-high.md",
|
|
2896
|
+
"agents/orc-executor-opus-5-high.md",
|
|
2897
|
+
"agents/orc-executor-opus-5-low.md",
|
|
2898
|
+
"agents/orc-executor-opus-5-med.md",
|
|
2899
|
+
"agents/orc-executor-sonnet-4-6-high.md",
|
|
2900
|
+
"agents/orc-executor-sonnet-4-6-med.md",
|
|
2901
|
+
"agents/orc-executor-sonnet-5-high.md",
|
|
2902
|
+
"skills/_shared/return-validation.md",
|
|
2903
|
+
"skills/orc/subskills/orc-execution/core.md",
|
|
2904
|
+
],
|
|
2905
|
+
},
|
|
2906
|
+
{
|
|
2907
|
+
// The trace verb. `/orc-retro` counts a reproduction apart from a TDD
|
|
2908
|
+
// cycle, so the verb is defined in the protocol, emitted by the lane that
|
|
2909
|
+
// asks for it, explained in that lane's reference, and declared in the
|
|
2910
|
+
// CLI's own phase manifest — one place each, pinned together.
|
|
2911
|
+
name: "reproduce-first trace verb (v1.9.0 — REPRO red|green)",
|
|
2912
|
+
token: "REPRO",
|
|
2913
|
+
files: [
|
|
2914
|
+
"skills/_shared/phases/trace.md",
|
|
2915
|
+
"skills/orc-quick/SKILL.md",
|
|
2916
|
+
"skills/orc-quick/references/defect.md",
|
|
2917
|
+
],
|
|
2741
2918
|
binFiles: ["bin/cli.js"],
|
|
2742
2919
|
},
|
|
2743
2920
|
{
|
|
@@ -2745,7 +2922,12 @@ const CONTRACTS = [
|
|
|
2745
2922
|
// uses this one, so the flag has to exist wherever the text says it does.
|
|
2746
2923
|
name: "graph one-call update (v1.8.2 — update --notes-pending)",
|
|
2747
2924
|
token: "--notes-pending",
|
|
2748
|
-
files: [
|
|
2925
|
+
files: [
|
|
2926
|
+
"skills/_shared/code-graph.md",
|
|
2927
|
+
"skills/_shared/phases/execution.md",
|
|
2928
|
+
"skills/orc-mini/SKILL.md",
|
|
2929
|
+
"skills/orc-quick/SKILL.md",
|
|
2930
|
+
],
|
|
2749
2931
|
binFiles: ["bin/cli.js"],
|
|
2750
2932
|
},
|
|
2751
2933
|
{
|
|
@@ -2818,8 +3000,11 @@ const CONTRACTS = [
|
|
|
2818
3000
|
"skills/_shared/code-graph.md",
|
|
2819
3001
|
"skills/_shared/phases/planning.md",
|
|
2820
3002
|
"skills/_shared/phases/trace.md",
|
|
2821
|
-
"skills/orc/SKILL.md",
|
|
2822
3003
|
"skills/orc-diy/references/flow-schema.md",
|
|
3004
|
+
"skills/orc-mini/SKILL.md",
|
|
3005
|
+
"skills/orc-quick/SKILL.md",
|
|
3006
|
+
"skills/orc-quick/references/look.md",
|
|
3007
|
+
"skills/orc/SKILL.md",
|
|
2823
3008
|
],
|
|
2824
3009
|
binFiles: ["bin/cli.js", "bin/graph-map.js"],
|
|
2825
3010
|
},
|
|
@@ -2829,8 +3014,9 @@ const CONTRACTS = [
|
|
|
2829
3014
|
name: "graph map trace (v1.8.2 — GRAPH-MAP, one line at the start of planning)",
|
|
2830
3015
|
token: "GRAPH-MAP",
|
|
2831
3016
|
files: [
|
|
2832
|
-
"skills/_shared/phases/trace.md",
|
|
2833
3017
|
"skills/_shared/phases/planning.md",
|
|
3018
|
+
"skills/_shared/phases/trace.md",
|
|
3019
|
+
"skills/orc-mini/examples/mini-run-mock.md",
|
|
2834
3020
|
],
|
|
2835
3021
|
binFiles: ["bin/cli.js"],
|
|
2836
3022
|
},
|
|
@@ -2880,12 +3066,6 @@ const CONTRACTS = [
|
|
|
2880
3066
|
name: "read ladder (escalating read discipline for read-heavy roles)",
|
|
2881
3067
|
token: "read-ladder.md",
|
|
2882
3068
|
files: [
|
|
2883
|
-
// v1.6.0 — the ENFORCEMENT half. The ladder was advisory prose in three
|
|
2884
|
-
// places and enforced in none; this hook is the layer that can refuse.
|
|
2885
|
-
// It cites the ladder by name because its two carve-outs ARE the
|
|
2886
|
-
// ladder's two exceptions — rename the file and the gate's reason text
|
|
2887
|
-
// stops naming anything real.
|
|
2888
|
-
"hooks/orc-read-gate.js",
|
|
2889
3069
|
"agents/orc-executor-haiku-4-5.md",
|
|
2890
3070
|
"agents/orc-executor-opus-4-7-high.md",
|
|
2891
3071
|
"agents/orc-executor-opus-4-7-med.md",
|
|
@@ -2896,29 +3076,40 @@ const CONTRACTS = [
|
|
|
2896
3076
|
"agents/orc-executor-sonnet-4-6-high.md",
|
|
2897
3077
|
"agents/orc-executor-sonnet-4-6-med.md",
|
|
2898
3078
|
"agents/orc-executor-sonnet-5-high.md",
|
|
3079
|
+
"agents/orc-recon-opus-5-low.md",
|
|
3080
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2899
3081
|
"skills/_shared/README.md",
|
|
2900
3082
|
"skills/_shared/interview.md",
|
|
3083
|
+
"skills/_shared/phases/README.md",
|
|
3084
|
+
"skills/_shared/phases/wiki-consult.md",
|
|
2901
3085
|
"skills/_shared/read-ladder.md",
|
|
2902
3086
|
"skills/orc-analyze-mini/SKILL.md",
|
|
2903
3087
|
"skills/orc-analyze/SKILL.md",
|
|
2904
3088
|
"skills/orc-boundary/SKILL.md",
|
|
2905
3089
|
"skills/orc-fast/SKILL.md",
|
|
2906
3090
|
"skills/orc-quick/references/dispatch-gate.md",
|
|
3091
|
+
"skills/orc-quick/references/look.md",
|
|
2907
3092
|
"skills/orc-wiki/SKILL.md",
|
|
2908
3093
|
"skills/orc/SKILL.md",
|
|
2909
|
-
"skills/_shared/phases/wiki-consult.md",
|
|
2910
3094
|
"skills/orc/subskills/orc-execution/core.md",
|
|
2911
|
-
|
|
3095
|
+
// v1.6.0 — the ENFORCEMENT half. The ladder was advisory prose in three
|
|
3096
|
+
// places and enforced in none; this hook is the layer that can refuse.
|
|
3097
|
+
// It cites the ladder by name because its two carve-outs ARE the
|
|
3098
|
+
// ladder's two exceptions — rename the file and the gate's reason text
|
|
3099
|
+
// stops naming anything real.
|
|
3100
|
+
"hooks/orc-read-gate.js",
|
|
2912
3101
|
],
|
|
2913
3102
|
},
|
|
2914
3103
|
{
|
|
2915
3104
|
name: "foreign input is evidence, never instruction",
|
|
2916
3105
|
token: "untrusted-input.md",
|
|
2917
3106
|
files: [
|
|
2918
|
-
"skills/orc-test/SKILL.md",
|
|
2919
3107
|
"agents/orc-doc-writer-opus-5-med.md",
|
|
3108
|
+
"agents/orc-recon-opus-5-low.md",
|
|
3109
|
+
"agents/orc-recon-sonnet-4-6-med.md",
|
|
2920
3110
|
"skills/_shared/README.md",
|
|
2921
3111
|
"skills/_shared/extra-dispatch.md",
|
|
3112
|
+
"skills/_shared/phases/wiki-consult.md",
|
|
2922
3113
|
"skills/_shared/untrusted-input.md",
|
|
2923
3114
|
"skills/orc-analyze/SKILL.md",
|
|
2924
3115
|
"skills/orc-boundary/SKILL.md",
|
|
@@ -2931,8 +3122,8 @@ const CONTRACTS = [
|
|
|
2931
3122
|
"skills/orc-pact/SKILL.md",
|
|
2932
3123
|
"skills/orc-poly/SKILL.md",
|
|
2933
3124
|
"skills/orc-quick/references/gh-mode.md",
|
|
3125
|
+
"skills/orc-test/SKILL.md",
|
|
2934
3126
|
"skills/orc-wiki/SKILL.md",
|
|
2935
|
-
"skills/_shared/phases/wiki-consult.md",
|
|
2936
3127
|
],
|
|
2937
3128
|
},
|
|
2938
3129
|
// ── v0.40.0 — gotchas (repair memory) ───────────────────────────────────
|
|
@@ -3772,7 +3963,15 @@ const BUDGETS = [
|
|
|
3772
3963
|
// 1 measured a mini run with `code_graph: on` that never called `orc graph`:
|
|
3773
3964
|
// a pointer at the end of a long probe line was skipped. The three steps now
|
|
3774
3965
|
// have their own heading; the mechanics stay in _shared/code-graph.md.
|
|
3775
|
-
|
|
3966
|
+
// v1.9.0: deliberate raise 270→280 — the lean-lane revamp. W1 trimmed the
|
|
3967
|
+
// spine to 246 by moving the Phase X/T narration and the fallback and switch
|
|
3968
|
+
// paragraphs into _shared and the phase's own reference. W4 spent that room on
|
|
3969
|
+
// contracts that must survive compaction: the graph_facts planner slice, the
|
|
3970
|
+
// complexity read's four thresholds, the wiki POINTERS-not-bodies rule, the
|
|
3971
|
+
// affected-tests-first smoke gate and the `none is an answer` record. The
|
|
3972
|
+
// arithmetic (how to count, why each threshold is that number, the
|
|
3973
|
+
// graph_facts shape) lives in references/complexity.md.
|
|
3974
|
+
{ file: "skills/orc-mini/SKILL.md", maxLines: 280 },
|
|
3776
3975
|
// v0.39.0: deliberate raises 195→201 / 179→182 — the analyst gains hard rules
|
|
3777
3976
|
// 2b (a source it did not author is FOREIGN input) and 4a (the read ladder);
|
|
3778
3977
|
// fast gains the ladder as a slice line. Both are hard rules by nature: they
|
|
@@ -3835,6 +4034,14 @@ const BUDGETS = [
|
|
|
3835
4034
|
// v1.8.0 W9: deliberate raise 230→240 — the F0 code-graph step (e.), for the
|
|
3836
4035
|
// same measured reason as orc-mini's raise: a lengthened line was skipped.
|
|
3837
4036
|
{ file: "skills/orc-fast/SKILL.md", maxLines: 240 },
|
|
4037
|
+
// v1.9.0: a FIRST pin for the quick spine, at 325. It had none, and it grew
|
|
4038
|
+
// to 379 lines. W1 trimmed it to 298 by moving the step table, the gate menu,
|
|
4039
|
+
// the repair-loop example and the doc shape into references/ and README.md;
|
|
4040
|
+
// W2 and W3 spent the rest on the graph-first dig, the reproduce-first step,
|
|
4041
|
+
// the blast-radius line and the one-call cache update. 325 is where that
|
|
4042
|
+
// lands plus nothing — a spine that grows past its own references has moved
|
|
4043
|
+
// prose the wrong way.
|
|
4044
|
+
{ file: "skills/orc-quick/SKILL.md", maxLines: 325 },
|
|
3838
4045
|
];
|
|
3839
4046
|
|
|
3840
4047
|
function walk(dir, out) {
|
|
@@ -4461,6 +4668,15 @@ for (const b of BUDGETS) {
|
|
|
4461
4668
|
// one. design-05 §6.3: a call one lane makes belongs to that lane.
|
|
4462
4669
|
for (const [id, c] of Object.entries(CALLS)) {
|
|
4463
4670
|
const want = [...(measured[prefixOf(c.cmd)] || new Set())].sort();
|
|
4671
|
+
// v1.9.1: a row with `lanes: []` is a USER command — catalogued so
|
|
4672
|
+
// `orc lane calls --all` documents it, and asserted the OTHER way round:
|
|
4673
|
+
// no lane may name it. `orc graph audit` is the first one. The assertion is
|
|
4674
|
+
// stronger than the >= 2 rule, not an exception to it.
|
|
4675
|
+
if (Array.isArray(c.lanes) && c.lanes.length === 0) {
|
|
4676
|
+
if (want.length)
|
|
4677
|
+
errs.push(`${id}: a user command, and ${want.join(", ")} name it — remove the call, or give the row its lanes`);
|
|
4678
|
+
continue;
|
|
4679
|
+
}
|
|
4464
4680
|
if (want.length < 2)
|
|
4465
4681
|
errs.push(
|
|
4466
4682
|
`${id}: only ${want.length} lane names it — a call one lane makes belongs to that lane and is not catalogued`
|
package/bin/verify-package.js
CHANGED
|
@@ -198,6 +198,10 @@ const required = [
|
|
|
198
198
|
// every read falls back to the full model. It breaks the SPEED, silently, on
|
|
199
199
|
// the one call every lane makes — which is the worst kind of missing file.
|
|
200
200
|
"bin/graph-shard.js",
|
|
201
|
+
// v1.9.1 W4 — the audit (A2). Dropping it breaks `orc graph audit`, which is
|
|
202
|
+
// the only answer that says WHY a THIN map is thin. Without it the status
|
|
203
|
+
// line still says THIN and names a command that is not there.
|
|
204
|
+
"bin/graph-audit.js",
|
|
201
205
|
|
|
202
206
|
// The two DATED data files (v0.50.0). Both ship inside the package and both
|
|
203
207
|
// are load-bearing on absence rather than on content: without the catalog
|
|
@@ -434,6 +438,10 @@ const required = [
|
|
|
434
438
|
"templates/agents/orc-reviewer-opus-5-med.md",
|
|
435
439
|
"templates/agents/orc-verifier-opus-5-med.md",
|
|
436
440
|
"templates/agents/orc-scout-sonnet-4-6-high.md",
|
|
441
|
+
// v1.9.0 — the /orc-quick recon pair. Both halves must ship: the gate offers
|
|
442
|
+
// them side by side, so a missing file makes half the menu a dead option.
|
|
443
|
+
"templates/agents/orc-recon-sonnet-4-6-med.md",
|
|
444
|
+
"templates/agents/orc-recon-opus-5-low.md",
|
|
437
445
|
"templates/agents/orc-test-author-opus-5-med.md",
|
|
438
446
|
"templates/agents/orc-pattern-codifier-sonnet-5-high.md",
|
|
439
447
|
"templates/agents/orc-retro-sonnet-5-high.md",
|
|
@@ -590,8 +598,18 @@ const agentCount = walkCount(path.join(ROOT, "templates/agents"), ".md");
|
|
|
590
598
|
// by model+effort and earns no agent, the v0.38.0/v0.45.0 precedent, and that
|
|
591
599
|
// limit is stated in the skill: no `SPAWN` line, so `/orc-retro` cannot
|
|
592
600
|
// aggregate it.
|
|
601
|
+
// v1.9.0: +0 skills and +2 agents — the /orc-quick recon PAIR. This reverses
|
|
602
|
+
// the v0.38.0/v0.45.0 precedent for ONE lane, on purpose: recon stayed ad-hoc
|
|
603
|
+
// because it was cheap and varied, and the cost was measured — the trace hook
|
|
604
|
+
// only sees an agent whose name starts with `orc-`, so every read-only entry
|
|
605
|
+
// was invisible to `SPAWN`/`RETURN`, to `orc run inflight` and to /orc-retro,
|
|
606
|
+
// and the gate offered an "effort" the Agent tool has no per-call knob for. Two
|
|
607
|
+
// files, one per model, with one shared return contract. The ad-hoc escape
|
|
608
|
+
// hatch survives on the menu as line 3 (model only). Both names earn an
|
|
609
|
+
// explicit guard entry above and a MODEL-MAPPING row; `opus5_only` adds no
|
|
610
|
+
// pair, because orc-quick is the lane that key is inert in.
|
|
593
611
|
if (skillCount < 39) missing.push(`templates/skills (expected >=39 SKILL.md, found ${skillCount})`);
|
|
594
|
-
if (agentCount <
|
|
612
|
+
if (agentCount < 50) missing.push(`templates/agents (expected >=50 .md, found ${agentCount})`);
|
|
595
613
|
|
|
596
614
|
// B4 — encoding/mojibake guard. The OneDrive corruption rule becomes a gate:
|
|
597
615
|
// scan every shipped text file for the U+FFFD replacement char (invalid UTF-8
|