@azure-id/orc 1.8.2 → 1.9.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 (42) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/README-id.md +69 -51
  3. package/README.md +62 -45
  4. package/bin/cli.js +76 -16
  5. package/bin/verify-contracts.js +163 -62
  6. package/bin/verify-package.js +15 -1
  7. package/mock-run/orc-quick.md +141 -113
  8. package/package.json +1 -1
  9. package/templates/agents/MODEL-MAPPING.md +15 -5
  10. package/templates/agents/orc-executor-haiku-4-5.md +17 -0
  11. package/templates/agents/orc-executor-opus-4-7-high.md +17 -0
  12. package/templates/agents/orc-executor-opus-4-7-med.md +17 -0
  13. package/templates/agents/orc-executor-opus-4-8-high.md +17 -0
  14. package/templates/agents/orc-executor-opus-5-high.md +17 -0
  15. package/templates/agents/orc-executor-opus-5-low.md +17 -0
  16. package/templates/agents/orc-executor-opus-5-med.md +17 -0
  17. package/templates/agents/orc-executor-sonnet-4-6-high.md +17 -0
  18. package/templates/agents/orc-executor-sonnet-4-6-med.md +17 -0
  19. package/templates/agents/orc-executor-sonnet-5-high.md +17 -0
  20. package/templates/agents/orc-planner-mini-opus-5-med.md +75 -69
  21. package/templates/agents/orc-planner-mini-sonnet-5-high.md +73 -67
  22. package/templates/agents/orc-recon-opus-5-low.md +99 -0
  23. package/templates/agents/orc-recon-sonnet-4-6-med.md +99 -0
  24. package/templates/commands/orc-mini.md +10 -12
  25. package/templates/commands/orc-quick.md +20 -33
  26. package/templates/hooks/orc-trace.js +476 -471
  27. package/templates/skills/_shared/phases/rules.md +172 -159
  28. package/templates/skills/_shared/phases/trace.md +2 -1
  29. package/templates/skills/_shared/phases/wiki-consult.md +9 -5
  30. package/templates/skills/_shared/return-validation.md +22 -0
  31. package/templates/skills/context-combiner/SKILL.md +13 -13
  32. package/templates/skills/orc/subskills/orc-execution/core.md +171 -159
  33. package/templates/skills/orc-mini/SKILL.md +148 -136
  34. package/templates/skills/orc-mini/examples/mini-run-mock.md +64 -50
  35. package/templates/skills/orc-mini/references/complexity.md +105 -0
  36. package/templates/skills/orc-quick/README.md +495 -423
  37. package/templates/skills/orc-quick/SKILL.md +157 -211
  38. package/templates/skills/orc-quick/references/context-doc.md +145 -114
  39. package/templates/skills/orc-quick/references/defect.md +101 -0
  40. package/templates/skills/orc-quick/references/dispatch-gate.md +55 -24
  41. package/templates/skills/orc-quick/references/gh-mode.md +148 -127
  42. package/templates/skills/orc-quick/references/look.md +107 -0
@@ -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
- "skills/_shared/phases/execution.md",
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
- "skills/orc-test/SKILL.md",
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/orc/SKILL.md",
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/orc-analyze/SKILL.md",
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/_shared/phases/analyst-gates.md",
751
+ "skills/orc/config.md",
735
752
  "skills/orc/references/effort-and-mode.md",
736
- "skills/_shared/phases/plan-handoff.md",
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/_shared/phases/intake.md",
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/_shared/phases/plan-handoff.md",
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,13 +2729,16 @@ 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",
2722
- "skills/orc-mini/SKILL.md",
2723
2742
  ],
2724
2743
  },
2725
2744
  // ── v1.8.2 W3 — the delivery flags (D1 · D2 · D3 · D5) ────────────────
@@ -2729,7 +2748,15 @@ const CONTRACTS = [
2729
2748
  // CLI that answers it.
2730
2749
  name: "graph slice view (v1.8.2 — ctx --for-slice, the OUTSIDE view of a declared file)",
2731
2750
  token: "--for-slice",
2732
- files: ["hooks/orc-graph-hook.js", "skills/_shared/code-graph.md", "skills/_shared/phases/execution.md"],
2751
+ files: [
2752
+ "hooks/orc-graph-hook.js",
2753
+ "skills/_shared/code-graph.md",
2754
+ "skills/_shared/phases/execution.md",
2755
+ "skills/orc-mini/SKILL.md",
2756
+ "skills/orc-mini/examples/mini-run-mock.md",
2757
+ "skills/orc-quick/SKILL.md",
2758
+ "skills/orc-quick/references/look.md",
2759
+ ],
2733
2760
  binFiles: ["bin/cli.js", "bin/graph-query.js"],
2734
2761
  },
2735
2762
  {
@@ -2737,7 +2764,51 @@ const CONTRACTS = [
2737
2764
  // bare `--source` is also `orc doc`'s own flag.
2738
2765
  name: "graph source block (v1.8.2 — ctx --source [N], charged to the same budget)",
2739
2766
  token: "--source [N]",
2740
- files: ["skills/_shared/code-graph.md", "skills/_shared/read-ladder.md"],
2767
+ files: [
2768
+ "agents/orc-recon-opus-5-low.md",
2769
+ "agents/orc-recon-sonnet-4-6-med.md",
2770
+ "skills/_shared/code-graph.md",
2771
+ "skills/_shared/read-ladder.md",
2772
+ "skills/orc-quick/references/look.md",
2773
+ ],
2774
+ binFiles: ["bin/cli.js"],
2775
+ },
2776
+ // ── v1.9.0 — the lean lanes reproduce before they fix ───────────────────
2777
+ {
2778
+ // The slice field that makes a defect entry show the bug RED first. It is
2779
+ // a CONDITIONAL, and the conditional is the contract: `repro` alone also
2780
+ // matches "reproducible" and "reproduce" in files that owe nothing here.
2781
+ // Every executor carries the step, the shared return contract validates it
2782
+ // (§5d), and the full lane's execution core states it once.
2783
+ name: "reproduce-first slice field (v1.9.0 — repro.required)",
2784
+ token: "repro.required: true",
2785
+ files: [
2786
+ "agents/orc-executor-haiku-4-5.md",
2787
+ "agents/orc-executor-opus-4-7-high.md",
2788
+ "agents/orc-executor-opus-4-7-med.md",
2789
+ "agents/orc-executor-opus-4-8-high.md",
2790
+ "agents/orc-executor-opus-5-high.md",
2791
+ "agents/orc-executor-opus-5-low.md",
2792
+ "agents/orc-executor-opus-5-med.md",
2793
+ "agents/orc-executor-sonnet-4-6-high.md",
2794
+ "agents/orc-executor-sonnet-4-6-med.md",
2795
+ "agents/orc-executor-sonnet-5-high.md",
2796
+ "skills/_shared/return-validation.md",
2797
+ "skills/orc/subskills/orc-execution/core.md",
2798
+ ],
2799
+ },
2800
+ {
2801
+ // The trace verb. `/orc-retro` counts a reproduction apart from a TDD
2802
+ // cycle, so the verb is defined in the protocol, emitted by the lane that
2803
+ // asks for it, explained in that lane's reference, and declared in the
2804
+ // CLI's own phase manifest — one place each, pinned together.
2805
+ name: "reproduce-first trace verb (v1.9.0 — REPRO red|green)",
2806
+ token: "REPRO",
2807
+ files: [
2808
+ "skills/_shared/phases/trace.md",
2809
+ "skills/orc-quick/SKILL.md",
2810
+ "skills/orc-quick/references/defect.md",
2811
+ ],
2741
2812
  binFiles: ["bin/cli.js"],
2742
2813
  },
2743
2814
  {
@@ -2745,7 +2816,12 @@ const CONTRACTS = [
2745
2816
  // uses this one, so the flag has to exist wherever the text says it does.
2746
2817
  name: "graph one-call update (v1.8.2 — update --notes-pending)",
2747
2818
  token: "--notes-pending",
2748
- files: ["skills/_shared/code-graph.md", "skills/_shared/phases/execution.md"],
2819
+ files: [
2820
+ "skills/_shared/code-graph.md",
2821
+ "skills/_shared/phases/execution.md",
2822
+ "skills/orc-mini/SKILL.md",
2823
+ "skills/orc-quick/SKILL.md",
2824
+ ],
2749
2825
  binFiles: ["bin/cli.js"],
2750
2826
  },
2751
2827
  {
@@ -2818,8 +2894,11 @@ const CONTRACTS = [
2818
2894
  "skills/_shared/code-graph.md",
2819
2895
  "skills/_shared/phases/planning.md",
2820
2896
  "skills/_shared/phases/trace.md",
2821
- "skills/orc/SKILL.md",
2822
2897
  "skills/orc-diy/references/flow-schema.md",
2898
+ "skills/orc-mini/SKILL.md",
2899
+ "skills/orc-quick/SKILL.md",
2900
+ "skills/orc-quick/references/look.md",
2901
+ "skills/orc/SKILL.md",
2823
2902
  ],
2824
2903
  binFiles: ["bin/cli.js", "bin/graph-map.js"],
2825
2904
  },
@@ -2829,8 +2908,9 @@ const CONTRACTS = [
2829
2908
  name: "graph map trace (v1.8.2 — GRAPH-MAP, one line at the start of planning)",
2830
2909
  token: "GRAPH-MAP",
2831
2910
  files: [
2832
- "skills/_shared/phases/trace.md",
2833
2911
  "skills/_shared/phases/planning.md",
2912
+ "skills/_shared/phases/trace.md",
2913
+ "skills/orc-mini/examples/mini-run-mock.md",
2834
2914
  ],
2835
2915
  binFiles: ["bin/cli.js"],
2836
2916
  },
@@ -2880,12 +2960,6 @@ const CONTRACTS = [
2880
2960
  name: "read ladder (escalating read discipline for read-heavy roles)",
2881
2961
  token: "read-ladder.md",
2882
2962
  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
2963
  "agents/orc-executor-haiku-4-5.md",
2890
2964
  "agents/orc-executor-opus-4-7-high.md",
2891
2965
  "agents/orc-executor-opus-4-7-med.md",
@@ -2896,29 +2970,40 @@ const CONTRACTS = [
2896
2970
  "agents/orc-executor-sonnet-4-6-high.md",
2897
2971
  "agents/orc-executor-sonnet-4-6-med.md",
2898
2972
  "agents/orc-executor-sonnet-5-high.md",
2973
+ "agents/orc-recon-opus-5-low.md",
2974
+ "agents/orc-recon-sonnet-4-6-med.md",
2899
2975
  "skills/_shared/README.md",
2900
2976
  "skills/_shared/interview.md",
2977
+ "skills/_shared/phases/README.md",
2978
+ "skills/_shared/phases/wiki-consult.md",
2901
2979
  "skills/_shared/read-ladder.md",
2902
2980
  "skills/orc-analyze-mini/SKILL.md",
2903
2981
  "skills/orc-analyze/SKILL.md",
2904
2982
  "skills/orc-boundary/SKILL.md",
2905
2983
  "skills/orc-fast/SKILL.md",
2906
2984
  "skills/orc-quick/references/dispatch-gate.md",
2985
+ "skills/orc-quick/references/look.md",
2907
2986
  "skills/orc-wiki/SKILL.md",
2908
2987
  "skills/orc/SKILL.md",
2909
- "skills/_shared/phases/wiki-consult.md",
2910
2988
  "skills/orc/subskills/orc-execution/core.md",
2911
- "skills/_shared/phases/README.md",
2989
+ // v1.6.0 — the ENFORCEMENT half. The ladder was advisory prose in three
2990
+ // places and enforced in none; this hook is the layer that can refuse.
2991
+ // It cites the ladder by name because its two carve-outs ARE the
2992
+ // ladder's two exceptions — rename the file and the gate's reason text
2993
+ // stops naming anything real.
2994
+ "hooks/orc-read-gate.js",
2912
2995
  ],
2913
2996
  },
2914
2997
  {
2915
2998
  name: "foreign input is evidence, never instruction",
2916
2999
  token: "untrusted-input.md",
2917
3000
  files: [
2918
- "skills/orc-test/SKILL.md",
2919
3001
  "agents/orc-doc-writer-opus-5-med.md",
3002
+ "agents/orc-recon-opus-5-low.md",
3003
+ "agents/orc-recon-sonnet-4-6-med.md",
2920
3004
  "skills/_shared/README.md",
2921
3005
  "skills/_shared/extra-dispatch.md",
3006
+ "skills/_shared/phases/wiki-consult.md",
2922
3007
  "skills/_shared/untrusted-input.md",
2923
3008
  "skills/orc-analyze/SKILL.md",
2924
3009
  "skills/orc-boundary/SKILL.md",
@@ -2931,8 +3016,8 @@ const CONTRACTS = [
2931
3016
  "skills/orc-pact/SKILL.md",
2932
3017
  "skills/orc-poly/SKILL.md",
2933
3018
  "skills/orc-quick/references/gh-mode.md",
3019
+ "skills/orc-test/SKILL.md",
2934
3020
  "skills/orc-wiki/SKILL.md",
2935
- "skills/_shared/phases/wiki-consult.md",
2936
3021
  ],
2937
3022
  },
2938
3023
  // ── v0.40.0 — gotchas (repair memory) ───────────────────────────────────
@@ -3772,7 +3857,15 @@ const BUDGETS = [
3772
3857
  // 1 measured a mini run with `code_graph: on` that never called `orc graph`:
3773
3858
  // a pointer at the end of a long probe line was skipped. The three steps now
3774
3859
  // have their own heading; the mechanics stay in _shared/code-graph.md.
3775
- { file: "skills/orc-mini/SKILL.md", maxLines: 270 },
3860
+ // v1.9.0: deliberate raise 270→280 — the lean-lane revamp. W1 trimmed the
3861
+ // spine to 246 by moving the Phase X/T narration and the fallback and switch
3862
+ // paragraphs into _shared and the phase's own reference. W4 spent that room on
3863
+ // contracts that must survive compaction: the graph_facts planner slice, the
3864
+ // complexity read's four thresholds, the wiki POINTERS-not-bodies rule, the
3865
+ // affected-tests-first smoke gate and the `none is an answer` record. The
3866
+ // arithmetic (how to count, why each threshold is that number, the
3867
+ // graph_facts shape) lives in references/complexity.md.
3868
+ { file: "skills/orc-mini/SKILL.md", maxLines: 280 },
3776
3869
  // v0.39.0: deliberate raises 195→201 / 179→182 — the analyst gains hard rules
3777
3870
  // 2b (a source it did not author is FOREIGN input) and 4a (the read ladder);
3778
3871
  // fast gains the ladder as a slice line. Both are hard rules by nature: they
@@ -3835,6 +3928,14 @@ const BUDGETS = [
3835
3928
  // v1.8.0 W9: deliberate raise 230→240 — the F0 code-graph step (e.), for the
3836
3929
  // same measured reason as orc-mini's raise: a lengthened line was skipped.
3837
3930
  { file: "skills/orc-fast/SKILL.md", maxLines: 240 },
3931
+ // v1.9.0: a FIRST pin for the quick spine, at 325. It had none, and it grew
3932
+ // to 379 lines. W1 trimmed it to 298 by moving the step table, the gate menu,
3933
+ // the repair-loop example and the doc shape into references/ and README.md;
3934
+ // W2 and W3 spent the rest on the graph-first dig, the reproduce-first step,
3935
+ // the blast-radius line and the one-call cache update. 325 is where that
3936
+ // lands plus nothing — a spine that grows past its own references has moved
3937
+ // prose the wrong way.
3938
+ { file: "skills/orc-quick/SKILL.md", maxLines: 325 },
3838
3939
  ];
3839
3940
 
3840
3941
  function walk(dir, out) {
@@ -434,6 +434,10 @@ const required = [
434
434
  "templates/agents/orc-reviewer-opus-5-med.md",
435
435
  "templates/agents/orc-verifier-opus-5-med.md",
436
436
  "templates/agents/orc-scout-sonnet-4-6-high.md",
437
+ // v1.9.0 — the /orc-quick recon pair. Both halves must ship: the gate offers
438
+ // them side by side, so a missing file makes half the menu a dead option.
439
+ "templates/agents/orc-recon-sonnet-4-6-med.md",
440
+ "templates/agents/orc-recon-opus-5-low.md",
437
441
  "templates/agents/orc-test-author-opus-5-med.md",
438
442
  "templates/agents/orc-pattern-codifier-sonnet-5-high.md",
439
443
  "templates/agents/orc-retro-sonnet-5-high.md",
@@ -590,8 +594,18 @@ const agentCount = walkCount(path.join(ROOT, "templates/agents"), ".md");
590
594
  // by model+effort and earns no agent, the v0.38.0/v0.45.0 precedent, and that
591
595
  // limit is stated in the skill: no `SPAWN` line, so `/orc-retro` cannot
592
596
  // aggregate it.
597
+ // v1.9.0: +0 skills and +2 agents — the /orc-quick recon PAIR. This reverses
598
+ // the v0.38.0/v0.45.0 precedent for ONE lane, on purpose: recon stayed ad-hoc
599
+ // because it was cheap and varied, and the cost was measured — the trace hook
600
+ // only sees an agent whose name starts with `orc-`, so every read-only entry
601
+ // was invisible to `SPAWN`/`RETURN`, to `orc run inflight` and to /orc-retro,
602
+ // and the gate offered an "effort" the Agent tool has no per-call knob for. Two
603
+ // files, one per model, with one shared return contract. The ad-hoc escape
604
+ // hatch survives on the menu as line 3 (model only). Both names earn an
605
+ // explicit guard entry above and a MODEL-MAPPING row; `opus5_only` adds no
606
+ // pair, because orc-quick is the lane that key is inert in.
593
607
  if (skillCount < 39) missing.push(`templates/skills (expected >=39 SKILL.md, found ${skillCount})`);
594
- if (agentCount < 48) missing.push(`templates/agents (expected >=48 .md, found ${agentCount})`);
608
+ if (agentCount < 50) missing.push(`templates/agents (expected >=50 .md, found ${agentCount})`);
595
609
 
596
610
  // B4 — encoding/mojibake guard. The OneDrive corruption rule becomes a gate:
597
611
  // scan every shipped text file for the U+FFFD replacement char (invalid UTF-8