@azure-id/orc 1.8.1 → 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 (69) hide show
  1. package/CHANGELOG.md +386 -0
  2. package/README-id.md +110 -73
  3. package/README.md +96 -33
  4. package/bin/cli.js +45520 -44867
  5. package/bin/graph-extract.js +2409 -120
  6. package/bin/graph-gain.js +404 -0
  7. package/bin/graph-map.js +232 -0
  8. package/bin/graph-notes.js +49 -8
  9. package/bin/graph-query.js +1770 -808
  10. package/bin/graph-resolve.js +93 -16
  11. package/bin/graph-shard.js +325 -0
  12. package/bin/graph.js +658 -605
  13. package/bin/verify-contracts.js +297 -56
  14. package/bin/verify-package.js +29 -1
  15. package/bin/webui/api.js +6 -0
  16. package/bin/webui/fixtures/index.js +6 -1
  17. package/bin/webui/fixtures/knowledge.js +41 -1
  18. package/bin/webui/fixtures/stats.js +107 -104
  19. package/bin/webui/i18n/en/knowledge.json +16 -1
  20. package/bin/webui/i18n/id/knowledge.json +16 -1
  21. package/bin/webui/js/panels/knowledge.js +68 -3
  22. package/mock-run/orc-quick.md +141 -113
  23. package/package.json +1 -1
  24. package/templates/agents/MODEL-MAPPING.md +15 -5
  25. package/templates/agents/orc-executor-haiku-4-5.md +25 -13
  26. package/templates/agents/orc-executor-opus-4-7-high.md +25 -13
  27. package/templates/agents/orc-executor-opus-4-7-med.md +25 -13
  28. package/templates/agents/orc-executor-opus-4-8-high.md +25 -13
  29. package/templates/agents/orc-executor-opus-5-high.md +25 -13
  30. package/templates/agents/orc-executor-opus-5-low.md +25 -13
  31. package/templates/agents/orc-executor-opus-5-med.md +25 -13
  32. package/templates/agents/orc-executor-sonnet-4-6-high.md +25 -13
  33. package/templates/agents/orc-executor-sonnet-4-6-med.md +25 -13
  34. package/templates/agents/orc-executor-sonnet-5-high.md +25 -13
  35. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +15 -12
  36. package/templates/agents/orc-planner-mini-opus-5-med.md +75 -69
  37. package/templates/agents/orc-planner-mini-sonnet-5-high.md +73 -67
  38. package/templates/agents/orc-recon-opus-5-low.md +99 -0
  39. package/templates/agents/orc-recon-sonnet-4-6-med.md +99 -0
  40. package/templates/commands/orc-mini.md +10 -12
  41. package/templates/commands/orc-quick.md +20 -33
  42. package/templates/hooks/README.md +13 -3
  43. package/templates/hooks/orc-graph-hook.js +148 -13
  44. package/templates/hooks/orc-trace.js +476 -471
  45. package/templates/skills/_shared/code-graph.md +148 -20
  46. package/templates/skills/_shared/phases/execution.md +13 -11
  47. package/templates/skills/_shared/phases/planning.md +8 -1
  48. package/templates/skills/_shared/phases/rules.md +172 -159
  49. package/templates/skills/_shared/phases/ship.md +5 -1
  50. package/templates/skills/_shared/phases/trace.md +4 -1
  51. package/templates/skills/_shared/phases/wiki-consult.md +10 -6
  52. package/templates/skills/_shared/read-ladder.md +10 -2
  53. package/templates/skills/_shared/return-validation.md +22 -0
  54. package/templates/skills/context-combiner/SKILL.md +13 -13
  55. package/templates/skills/orc/SKILL.md +1 -1
  56. package/templates/skills/orc/subskills/orc-execution/core.md +171 -159
  57. package/templates/skills/orc-analyze/SKILL.md +13 -13
  58. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  59. package/templates/skills/orc-mini/SKILL.md +148 -136
  60. package/templates/skills/orc-mini/examples/mini-run-mock.md +64 -50
  61. package/templates/skills/orc-mini/references/complexity.md +105 -0
  62. package/templates/skills/orc-quick/README.md +495 -423
  63. package/templates/skills/orc-quick/SKILL.md +157 -211
  64. package/templates/skills/orc-quick/references/context-doc.md +145 -114
  65. package/templates/skills/orc-quick/references/defect.md +101 -0
  66. package/templates/skills/orc-quick/references/dispatch-gate.md +55 -24
  67. package/templates/skills/orc-quick/references/gh-mode.md +148 -127
  68. package/templates/skills/orc-quick/references/look.md +107 -0
  69. package/templates/skills/orc-wiki/references/staleness.md +1 -1
@@ -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,14 +2729,216 @@ 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.8.2 W3 — the delivery flags (D1 · D2 · D3 · D5) ────────────────
2745
+ {
2746
+ // The slice call. A rename must reach the contract, the phase file that
2747
+ // makes the call, the hook that dedupes against what it delivered, and the
2748
+ // CLI that answers it.
2749
+ name: "graph slice view (v1.8.2 — ctx --for-slice, the OUTSIDE view of a declared file)",
2750
+ token: "--for-slice",
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
+ ],
2760
+ binFiles: ["bin/cli.js", "bin/graph-query.js"],
2761
+ },
2762
+ {
2763
+ // The card and the range in one call. Pinned WITH its argument, because a
2764
+ // bare `--source` is also `orc doc`'s own flag.
2765
+ name: "graph source block (v1.8.2 — ctx --source [N], charged to the same budget)",
2766
+ token: "--source [N]",
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
+ ],
2812
+ binFiles: ["bin/cli.js"],
2813
+ },
2814
+ {
2815
+ // One call at a wave close. The two-call form still works; the lane text
2816
+ // uses this one, so the flag has to exist wherever the text says it does.
2817
+ name: "graph one-call update (v1.8.2 — update --notes-pending)",
2818
+ token: "--notes-pending",
2819
+ files: [
2820
+ "skills/_shared/code-graph.md",
2821
+ "skills/_shared/phases/execution.md",
2722
2822
  "skills/orc-mini/SKILL.md",
2823
+ "skills/orc-quick/SKILL.md",
2824
+ ],
2825
+ binFiles: ["bin/cli.js"],
2826
+ },
2827
+ {
2828
+ // The fourth value of `code_graph_hooks`. It arms the whole-file READ hint
2829
+ // and nothing else, and it is off until somebody types it.
2830
+ name: "graph read hint (v1.8.2 — code_graph_hooks: on,read)",
2831
+ token: "on,read",
2832
+ files: ["hooks/orc-graph-hook.js", "hooks/README.md", "skills/_shared/code-graph.md"],
2833
+ binFiles: ["bin/cli.js"],
2834
+ },
2835
+ // ── v1.8.2 W4 — the paid layer, paid less (N1 · N2) ──────────────────
2836
+ {
2837
+ // The noter's ONE call. The flag lives in the agent that makes it and in
2838
+ // the contract that describes it; the CLI has to answer it.
2839
+ name: "graph noter source (v1.8.2 — notes pending --with-source, so the noter reads nothing)",
2840
+ token: "--with-source",
2841
+ files: ["agents/orc-graph-noter-sonnet-4-6-med.md", "skills/_shared/code-graph.md"],
2842
+ binFiles: ["bin/cli.js", "bin/graph-notes.js"],
2843
+ },
2844
+ {
2845
+ // The doc note, at 0 model tokens. It is a note, not a fact, so it sits
2846
+ // beside graph notes in the precedence line everywhere that line appears.
2847
+ name: "doc notes precedence (v1.8.2 — graph notes AND doc notes, below a stale wiki)",
2848
+ token: "graph notes and doc notes",
2849
+ files: [
2850
+ "skills/_shared/code-graph.md",
2851
+ "skills/_shared/phases/wiki-consult.md",
2852
+ "skills/_shared/read-ladder.md",
2853
+ "skills/orc-wiki/references/staleness.md",
2723
2854
  ],
2855
+ binFiles: ["bin/graph-notes.js"],
2856
+ },
2857
+ // ── v1.8.2 W5 — the five new languages (G6) ──────────────────────────
2858
+ {
2859
+ // A language the contract claims and the engine cannot read is a promise
2860
+ // the card breaks in silence. The claim and `LANG_BY_EXT` move together.
2861
+ name: "graph languages (v1.8.2 — Ruby, Rust, Kotlin, plus SFC and C/C++)",
2862
+ token: "Ruby, Rust, Kotlin",
2863
+ files: ["skills/_shared/code-graph.md"],
2864
+ binFiles: ["bin/graph.js"],
2865
+ },
2866
+ // ── v1.8.2 W6 — the borrowed toolchains (G7) ─────────────────────────
2867
+ {
2868
+ // The escape hatch. If the contract names it and the engine stops reading
2869
+ // it, a project with a misbehaving toolchain has no way out.
2870
+ name: "graph borrow escape (v1.8.2 — ORC_GRAPH_NO_BORROW forces the heuristic)",
2871
+ token: "ORC_GRAPH_NO_BORROW",
2872
+ files: ["skills/_shared/code-graph.md"],
2873
+ binFiles: ["bin/graph-extract.js"],
2874
+ },
2875
+ // ── v1.8.2 W8 — the sharded read path (S1) ────────────
2876
+ {
2877
+ // The shards are a DERIVED store, and the contract's promise about every
2878
+ // derived store is the one that keeps them safe: generation-pinned, and a
2879
+ // missing one costs time and no answer. If the engine stops writing them,
2880
+ // the sentence that tells a reader they exist has to go with it.
2881
+ name: "graph shards (v1.8.2 — the resolved/ shards a one-symbol ctx reads)",
2882
+ token: "resolved/<ab>.json",
2883
+ files: ["skills/_shared/code-graph.md"],
2884
+ binFiles: ["bin/graph-shard.js"],
2885
+ },
2886
+ // ── v1.8.2 W7 — the ranked map (D4) ──────────────────
2887
+ {
2888
+ // The command itself. Three lanes are told to run it at the START of
2889
+ // planning; if the CLI stops offering it, every one of them opens a run
2890
+ // with a call that does not exist.
2891
+ name: "graph map (v1.8.2 — the ranked repository map, the orientation call)",
2892
+ token: "orc graph map",
2893
+ files: [
2894
+ "skills/_shared/code-graph.md",
2895
+ "skills/_shared/phases/planning.md",
2896
+ "skills/_shared/phases/trace.md",
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",
2902
+ ],
2903
+ binFiles: ["bin/cli.js", "bin/graph-map.js"],
2904
+ },
2905
+ {
2906
+ // The trace verb. A lane that emits a verb the trace table does not hold
2907
+ // writes a line `/orc-retro` cannot aggregate.
2908
+ name: "graph map trace (v1.8.2 — GRAPH-MAP, one line at the start of planning)",
2909
+ token: "GRAPH-MAP",
2910
+ files: [
2911
+ "skills/_shared/phases/planning.md",
2912
+ "skills/_shared/phases/trace.md",
2913
+ "skills/orc-mini/examples/mini-run-mock.md",
2914
+ ],
2915
+ binFiles: ["bin/cli.js"],
2916
+ },
2917
+ {
2918
+ // The claim that keeps the map safe to read. It is the map's whole
2919
+ // equivalent of "the graph is a LOCATOR": a rank is where to look first,
2920
+ // never proof that a file matters to this change.
2921
+ name: "graph map rank is a hint (v1.8.2 — never proof a file matters)",
2922
+ token: "a HINT about where to look first",
2923
+ files: ["skills/_shared/code-graph.md", "skills/_shared/phases/planning.md"],
2924
+ binFiles: ["bin/graph-query.js"],
2925
+ },
2926
+ // ── v1.8.2 W4b — the gain meter (K) ─────────────────────────────
2927
+ {
2928
+ // The one line a run prints about what the graph cost and probably saved.
2929
+ // The verb lives in the trace table and in the phase that emits it.
2930
+ name: "graph gain line (v1.8.2 — GRAPH-GAIN, one line at ship, copied verbatim)",
2931
+ token: "GRAPH-GAIN",
2932
+ files: ["skills/_shared/phases/ship.md", "skills/_shared/phases/trace.md"],
2933
+ binFiles: ["bin/cli.js"],
2934
+ },
2935
+ {
2936
+ // `avoided` is a COUNTERFACTUAL. The word has to survive every rewrite of
2937
+ // the contract and of the panel, because it is the claim.
2938
+ name: "graph gain estimate (v1.8.2 — avoided is an estimate, never a bill)",
2939
+ token: "AN ESTIMATE",
2940
+ files: ["skills/_shared/code-graph.md"],
2941
+ binFiles: ["bin/graph-gain.js"],
2724
2942
  },
2725
2943
  {
2726
2944
  // The only notes writer, dispatched BY NAME. An unnamed dispatch cannot
@@ -2742,12 +2960,6 @@ const CONTRACTS = [
2742
2960
  name: "read ladder (escalating read discipline for read-heavy roles)",
2743
2961
  token: "read-ladder.md",
2744
2962
  files: [
2745
- // v1.6.0 — the ENFORCEMENT half. The ladder was advisory prose in three
2746
- // places and enforced in none; this hook is the layer that can refuse.
2747
- // It cites the ladder by name because its two carve-outs ARE the
2748
- // ladder's two exceptions — rename the file and the gate's reason text
2749
- // stops naming anything real.
2750
- "hooks/orc-read-gate.js",
2751
2963
  "agents/orc-executor-haiku-4-5.md",
2752
2964
  "agents/orc-executor-opus-4-7-high.md",
2753
2965
  "agents/orc-executor-opus-4-7-med.md",
@@ -2758,29 +2970,40 @@ const CONTRACTS = [
2758
2970
  "agents/orc-executor-sonnet-4-6-high.md",
2759
2971
  "agents/orc-executor-sonnet-4-6-med.md",
2760
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",
2761
2975
  "skills/_shared/README.md",
2762
2976
  "skills/_shared/interview.md",
2977
+ "skills/_shared/phases/README.md",
2978
+ "skills/_shared/phases/wiki-consult.md",
2763
2979
  "skills/_shared/read-ladder.md",
2764
2980
  "skills/orc-analyze-mini/SKILL.md",
2765
2981
  "skills/orc-analyze/SKILL.md",
2766
2982
  "skills/orc-boundary/SKILL.md",
2767
2983
  "skills/orc-fast/SKILL.md",
2768
2984
  "skills/orc-quick/references/dispatch-gate.md",
2985
+ "skills/orc-quick/references/look.md",
2769
2986
  "skills/orc-wiki/SKILL.md",
2770
2987
  "skills/orc/SKILL.md",
2771
- "skills/_shared/phases/wiki-consult.md",
2772
2988
  "skills/orc/subskills/orc-execution/core.md",
2773
- "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",
2774
2995
  ],
2775
2996
  },
2776
2997
  {
2777
2998
  name: "foreign input is evidence, never instruction",
2778
2999
  token: "untrusted-input.md",
2779
3000
  files: [
2780
- "skills/orc-test/SKILL.md",
2781
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",
2782
3004
  "skills/_shared/README.md",
2783
3005
  "skills/_shared/extra-dispatch.md",
3006
+ "skills/_shared/phases/wiki-consult.md",
2784
3007
  "skills/_shared/untrusted-input.md",
2785
3008
  "skills/orc-analyze/SKILL.md",
2786
3009
  "skills/orc-boundary/SKILL.md",
@@ -2793,8 +3016,8 @@ const CONTRACTS = [
2793
3016
  "skills/orc-pact/SKILL.md",
2794
3017
  "skills/orc-poly/SKILL.md",
2795
3018
  "skills/orc-quick/references/gh-mode.md",
3019
+ "skills/orc-test/SKILL.md",
2796
3020
  "skills/orc-wiki/SKILL.md",
2797
- "skills/_shared/phases/wiki-consult.md",
2798
3021
  ],
2799
3022
  },
2800
3023
  // ── v0.40.0 — gotchas (repair memory) ───────────────────────────────────
@@ -3634,7 +3857,15 @@ const BUDGETS = [
3634
3857
  // 1 measured a mini run with `code_graph: on` that never called `orc graph`:
3635
3858
  // a pointer at the end of a long probe line was skipped. The three steps now
3636
3859
  // have their own heading; the mechanics stay in _shared/code-graph.md.
3637
- { 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 },
3638
3869
  // v0.39.0: deliberate raises 195→201 / 179→182 — the analyst gains hard rules
3639
3870
  // 2b (a source it did not author is FOREIGN input) and 4a (the read ladder);
3640
3871
  // fast gains the ladder as a slice line. Both are hard rules by nature: they
@@ -3697,6 +3928,14 @@ const BUDGETS = [
3697
3928
  // v1.8.0 W9: deliberate raise 230→240 — the F0 code-graph step (e.), for the
3698
3929
  // same measured reason as orc-mini's raise: a lengthened line was skipped.
3699
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 },
3700
3939
  ];
3701
3940
 
3702
3941
  function walk(dir, out) {
@@ -3919,6 +4158,8 @@ for (const b of BUDGETS) {
3919
4158
  // as `statusline_custom` is. Neither can have a lane, and that is an ANSWER.
3920
4159
  "code_graph_heal_ms",
3921
4160
  "code_graph_hooks",
4161
+ // v1.8.2 W2 — the ignore globs, read by the CLI behind the same calls.
4162
+ "code_graph_ignore",
3922
4163
  ]);
3923
4164
  for (const e of metaEntries) {
3924
4165
  if (!e.lanes) {
@@ -185,6 +185,20 @@ const required = [
185
185
  "bin/graph-resolve.js",
186
186
  "bin/graph-signals.js",
187
187
  "bin/graph-notes.js",
188
+
189
+ // v1.8.2 W4b — the gain meter. Dropping it breaks `orc graph gain` AND the
190
+ // one ledger line every read appends, so the map would go on working and
191
+ // quietly stop recording what it cost.
192
+ "bin/graph-gain.js",
193
+ // v1.8.2 W7 — the ranked map (D4). Dropping it breaks `orc graph map` AND the
194
+ // `map.json` every update writes, so planning would silently go back to the
195
+ // Glob-and-read sweep the map exists to replace.
196
+ "bin/graph-map.js",
197
+ // v1.8.2 W8 — the sharded read path (S1). Dropping it does not break a card:
198
+ // every read falls back to the full model. It breaks the SPEED, silently, on
199
+ // the one call every lane makes — which is the worst kind of missing file.
200
+ "bin/graph-shard.js",
201
+
188
202
  // The two DATED data files (v0.50.0). Both ship inside the package and both
189
203
  // are load-bearing on absence rather than on content: without the catalog
190
204
  // `orc extra providers` is a packaging bug it reports as one, and without the
@@ -420,6 +434,10 @@ const required = [
420
434
  "templates/agents/orc-reviewer-opus-5-med.md",
421
435
  "templates/agents/orc-verifier-opus-5-med.md",
422
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",
423
441
  "templates/agents/orc-test-author-opus-5-med.md",
424
442
  "templates/agents/orc-pattern-codifier-sonnet-5-high.md",
425
443
  "templates/agents/orc-retro-sonnet-5-high.md",
@@ -576,8 +594,18 @@ const agentCount = walkCount(path.join(ROOT, "templates/agents"), ".md");
576
594
  // by model+effort and earns no agent, the v0.38.0/v0.45.0 precedent, and that
577
595
  // limit is stated in the skill: no `SPAWN` line, so `/orc-retro` cannot
578
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.
579
607
  if (skillCount < 39) missing.push(`templates/skills (expected >=39 SKILL.md, found ${skillCount})`);
580
- 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})`);
581
609
 
582
610
  // B4 — encoding/mojibake guard. The OneDrive corruption rule becomes a gate:
583
611
  // scan every shipped text file for the U+FFFD replacement char (invalid UTF-8
package/bin/webui/api.js CHANGED
@@ -224,6 +224,12 @@ const READS = {
224
224
  // v1.8.0 — the code graph. A READ whose exit code is DATA (0 fresh · 1 none ·
225
225
  // 2 drifted · 3 off), exactly like `wiki status` above.
226
226
  "/api/graph": () => ["graph", "status"],
227
+ // v1.8.2 W4b — the gain meter. Two READS, both with exit codes that are DATA
228
+ // (0 rows · 1 no ledger or no rows · 3 off). `--measured` is its OWN route
229
+ // because it reads Claude Code's transcripts and takes longer; the panel
230
+ // asks for it on a button, never on load.
231
+ "/api/graph/gain": () => ["graph", "gain"],
232
+ "/api/graph/gain/measured": () => ["graph", "gain", "--measured"],
227
233
  "/api/wiki/impact": () => ["wiki", "impact"],
228
234
  // v0.46.0. Every one is a READ with an exit-code contract, so the exit code is
229
235
  // DATA here exactly like `pattern status` and `wiki impact` above: pact 0/1/2/3,