@azure-id/orc 2.1.1 → 2.2.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 (145) hide show
  1. package/CHANGELOG.md +320 -0
  2. package/README.md +48 -23
  3. package/bin/build-agents.js +207 -205
  4. package/bin/cli.js +48188 -47417
  5. package/bin/fix.js +21 -18
  6. package/bin/graph-extract.js +314 -6
  7. package/bin/graph-gain.js +83 -2
  8. package/bin/graph-map.js +23 -1
  9. package/bin/graph-notes.js +1 -1
  10. package/bin/graph-query.js +1362 -37
  11. package/bin/graph-resolve.js +1 -1
  12. package/bin/graph-shard.js +29 -6
  13. package/bin/graph-signals.js +5 -3
  14. package/bin/graph.js +7 -3
  15. package/bin/habit.js +1 -1
  16. package/bin/pricing.json +8 -1
  17. package/bin/trace-write.js +40 -11
  18. package/bin/verify-contracts.js +5661 -5552
  19. package/bin/verify-package.js +716 -716
  20. package/bin/webui/api.js +8 -0
  21. package/bin/webui/fixtures/extra.js +2036 -2036
  22. package/bin/webui/fixtures/flow.js +1 -1
  23. package/bin/webui/fixtures/index.js +2 -2
  24. package/bin/webui/fixtures/knowledge.js +8 -1
  25. package/bin/webui/fixtures/pact.js +112 -111
  26. package/bin/webui/fixtures/stats.js +2 -2
  27. package/bin/webui/i18n/en/knowledge.json +2 -0
  28. package/bin/webui/i18n/id/knowledge.json +2 -0
  29. package/bin/webui/js/panels/knowledge.js +17 -0
  30. package/guides/code-graph-benefit.md +116 -0
  31. package/guides/configuration.md +150 -0
  32. package/guides/documents.md +262 -0
  33. package/guides/extra-models.md +448 -0
  34. package/guides/habits-and-gotchas.md +152 -0
  35. package/guides/knowledge-reads.md +190 -0
  36. package/guides/model-selection.md +186 -0
  37. package/guides/rules.md +305 -0
  38. package/guides/status-line.md +344 -0
  39. package/mock-run/orc-cli.md +3 -2
  40. package/mock-run/orc-doc.md +452 -448
  41. package/mock-run/orc.md +157 -157
  42. package/package.json +2 -1
  43. package/templates/agents/MODEL-MAPPING.md +176 -176
  44. package/templates/agents/{orc-executor-haiku-4-5.md → orc-executor-haiku-5-high.md} +21 -8
  45. package/templates/agents/orc-executor-opus-4-7-high.md +17 -5
  46. package/templates/agents/orc-executor-opus-4-7-med.md +17 -5
  47. package/templates/agents/orc-executor-opus-4-8-high.md +17 -5
  48. package/templates/agents/orc-executor-opus-5-high.md +17 -5
  49. package/templates/agents/orc-executor-opus-5-low.md +17 -5
  50. package/templates/agents/orc-executor-opus-5-med.md +17 -5
  51. package/templates/agents/orc-executor-sonnet-4-6-high.md +17 -5
  52. package/templates/agents/orc-executor-sonnet-5-high.md +17 -5
  53. package/templates/agents/orc-executor-sonnet-5-low.md +17 -5
  54. package/templates/agents/orc-executor-sonnet-5-med.md +17 -5
  55. package/templates/agents/{orc-graph-noter-sonnet-4-6-med.md → orc-graph-noter-haiku-5-high.md} +4 -4
  56. package/templates/agents/orc-planner-mini-opus-5-med.md +3 -1
  57. package/templates/agents/orc-planner-mini-sonnet-5-high.md +3 -1
  58. package/templates/agents/orc-planner-opus-5-med.md +3 -1
  59. package/templates/agents/{orc-trace-writer-haiku-4-5.md → orc-trace-writer-haiku-5-high.md} +4 -3
  60. package/templates/commands/orc-doc.md +128 -128
  61. package/templates/commands/orc-export.md +51 -46
  62. package/templates/hooks/README.md +8 -3
  63. package/templates/hooks/orc-effort-guard.js +105 -27
  64. package/templates/hooks/orc-graph-hook.js +252 -4
  65. package/templates/hooks/orc-statusline.js +13 -6
  66. package/templates/hooks/orc-trace.js +1 -1
  67. package/templates/skills/_shared/README.md +2 -2
  68. package/templates/skills/_shared/code-graph.md +185 -251
  69. package/templates/skills/_shared/extra-dispatch.md +1331 -1331
  70. package/templates/skills/_shared/lane-contract.md +7 -3
  71. package/templates/skills/_shared/opus5-only.md +137 -137
  72. package/templates/skills/_shared/phases/execution.md +13 -11
  73. package/templates/skills/_shared/phases/planning.md +27 -9
  74. package/templates/skills/_shared/phases/preflight.md +3 -3
  75. package/templates/skills/_shared/phases/review.md +4 -3
  76. package/templates/skills/_shared/phases/ship.md +7 -10
  77. package/templates/skills/_shared/phases/summary.md +2 -3
  78. package/templates/skills/_shared/phases/trace-verbs.md +21 -16
  79. package/templates/skills/_shared/phases/trace.md +3 -3
  80. package/templates/skills/_shared/phases/wiki-consult.md +2 -2
  81. package/templates/skills/_shared/pr-templates.md +108 -106
  82. package/templates/skills/_shared/read-ladder.md +8 -2
  83. package/templates/skills/_shared/return-validation.md +10 -6
  84. package/templates/skills/_shared/review-slice.md +1 -1
  85. package/templates/skills/_shared/stack-plan.md +135 -135
  86. package/templates/skills/_shared/wait.md +14 -2
  87. package/templates/skills/context-combiner/SKILL.md +2 -2
  88. package/templates/skills/orc/SKILL.md +227 -227
  89. package/templates/skills/orc/config.md +2 -2
  90. package/templates/skills/orc/examples/full-run-mock.md +74 -74
  91. package/templates/skills/orc/schemas/planning-output.md +3 -0
  92. package/templates/skills/orc-aftermath/SKILL.md +15 -15
  93. package/templates/skills/orc-analyze/SKILL.md +2 -2
  94. package/templates/skills/orc-analyze-mini/SKILL.md +2 -2
  95. package/templates/skills/orc-boundary/SKILL.md +15 -15
  96. package/templates/skills/orc-boundary/references/card.md +81 -78
  97. package/templates/skills/orc-boundary/references/gate.md +113 -113
  98. package/templates/skills/orc-brainstorm/SKILL.md +15 -15
  99. package/templates/skills/orc-budget/SKILL.md +15 -15
  100. package/templates/skills/orc-challenge/README.md +1 -1
  101. package/templates/skills/orc-challenge/SKILL.md +16 -16
  102. package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
  103. package/templates/skills/orc-claude/SKILL.md +4 -4
  104. package/templates/skills/orc-claude/examples/claude-run-mock.md +1 -1
  105. package/templates/skills/orc-diy/SKILL.md +2 -2
  106. package/templates/skills/orc-diy/references/blocks/wiki.md +26 -26
  107. package/templates/skills/orc-diy/references/flow-schema.md +2 -2
  108. package/templates/skills/orc-doc/README.md +2 -2
  109. package/templates/skills/orc-doc/SKILL.md +501 -490
  110. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +12 -1
  111. package/templates/skills/orc-doc/references/chunking.md +6 -4
  112. package/templates/skills/orc-doc/references/gates.md +311 -311
  113. package/templates/skills/orc-doc/references/resume-protocol.md +229 -228
  114. package/templates/skills/orc-explain/SKILL.md +88 -88
  115. package/templates/skills/orc-export/SKILL.md +190 -187
  116. package/templates/skills/orc-fast/SKILL.md +213 -210
  117. package/templates/skills/orc-grill/SKILL.md +245 -245
  118. package/templates/skills/orc-handoff/SKILL.md +11 -11
  119. package/templates/skills/orc-learn/SKILL.md +13 -13
  120. package/templates/skills/orc-learn/examples/learn-run-mock.md +2 -2
  121. package/templates/skills/orc-mini/SKILL.md +12 -12
  122. package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -5
  123. package/templates/skills/orc-pact/SKILL.md +15 -15
  124. package/templates/skills/orc-pact/references/gate.md +70 -70
  125. package/templates/skills/orc-pattern/SKILL.md +3 -3
  126. package/templates/skills/orc-poly/SKILL.md +4 -4
  127. package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -51
  128. package/templates/skills/orc-pr-driver/SKILL.md +4 -3
  129. package/templates/skills/orc-pr-driver/references/orc-run-split.md +108 -99
  130. package/templates/skills/orc-pr-setup/SKILL.md +2 -2
  131. package/templates/skills/orc-quick/README.md +535 -536
  132. package/templates/skills/orc-quick/SKILL.md +29 -32
  133. package/templates/skills/orc-quick/references/context-doc.md +145 -145
  134. package/templates/skills/orc-quick/references/dispatch-gate.md +220 -220
  135. package/templates/skills/orc-quick/references/gh-mode.md +2 -1
  136. package/templates/skills/orc-quick/references/look.md +34 -12
  137. package/templates/skills/orc-retro/SKILL.md +2 -2
  138. package/templates/skills/orc-retro/examples/retro-mock.md +2 -2
  139. package/templates/skills/orc-route/SKILL.md +2 -2
  140. package/templates/skills/orc-test/SKILL.md +6 -3
  141. package/templates/skills/orc-verify/SKILL.md +2 -2
  142. package/templates/skills/orc-wait/SKILL.md +10 -2
  143. package/templates/skills/orc-wiki/SKILL.md +4 -4
  144. package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -19
  145. package/templates/agents/orc-executor-sonnet-4-6-med.md +0 -155
@@ -1,74 +1,74 @@
1
- # Example — Annotated Full Run (v2.2, dry run)
2
-
3
- O: = orchestrator (Opus 4.8 high, always) · U: = user. Nothing real. The
4
- orchestrator NEVER implements — it always spawns scored subagents.
5
-
6
- U: Orchestrate: merchant notification system — in-app, email digest, prefs page.
7
-
8
- ## Phase 0 — Intake
9
- O: Creates run folder run/merchant-notifications/ FIRST.
10
- [reads repo: TS/yarn/jest — asks nothing about stack] Rough size: medium+ → 4-question tier (one batched round):
11
- 1) What should exist when done? 2) Out of scope? 3) How do we know it's done? 4) Patterns/files to avoid?
12
- U: [answers] no push, no admin; bell count + both digest schedules + prefs persist; follow services/ pattern, don't touch auth_service.
13
- O: [drafts run/merchant-notifications/intent-spec.md] Sign-off: gate or soft? (default gate)
14
- U: gate → approved
15
-
16
- ## Phase 1 — Planning
17
- O: Planner? U: OpenSpec
18
- O: [6 tasks with declared_files incl. tests + per-file grounding attestations + sliced acceptance[], depends_on, spec_ref] ⚠ T1/T2 share models/notification.ts → scheduling separates them.
19
- Grounding spot-check (Phase 1 exit): globs all `exists` paths — 13/14 present, models/notifcation.ts MISSING (typo) → plan bounced to planner with the miss list → corrected to models/notification.ts ✓.
20
-
21
- ## Phase 2 — Effort, dispatch style, scoring
22
- O: Refined: medium, partially dependent. Recommend PARALLEL waves. Confirm? U: yes. Batch pause? U: every 2 waves.
23
- O: Facet scoring (planner facets → formula → band; facet gate: breadth + fan recomputed, risk cites checked):
24
- T1 3·new-surface·stateful·new-tests·fan0/3·low = 6+18+16+8+9 = 57 → sonnet-5-high (keystone — every later task imports its enum)
25
- T2 3·imitate·branching·new-tests·fan1/0·low = 6+8+8+8+5 = 35 → sonnet-5-high
26
- T3 3·imitate·branching·update-existing·fan1/0·low = 6+8+8+4+5 = 31 → sonnet-5-high
27
- T4 2·imitate·branching·update-existing·fan1/0·low = 6+8+8+4+5 = 31 → sonnet-5-high
28
- T5 1·mechanical·none·update-existing·fan0/0·low = 2+0+0+4 = 6 → haiku-4-5
29
- T6 1·mechanical·none·none·fan0/0·low = 2+0+0+0 = 2 → haiku-4-5
30
- Plan: 6 tasks, 3 waves W1{T1} W2{T2,T3,T4} W3{T5,T6}, all spawned. Anticipated escalations? U: none, go.
31
-
32
- ## Phase 3 — Execution (ALL spawned; orchestrator coordinates only)
33
- O: [checkpoint + state-of-play written into run/merchant-notifications/ BEFORE dispatch]
34
- ▶ W1: spawn Agent-A(T1, sonnet-5-high) — milestones 40%→100% — return validated ✓ (evidence: `yarn jest models/` exit 0, tail quoted; unmet[] empty) — log: DECISION type enum.
35
- ▶ W2: spawn 3 agents (sonnet-5-high each).
36
- Agent-C needs_context (1/2): "needs T1's enum interface" → O adjudicates in-scope → re-slices → resumes. (User never bothered.)
37
- Agent-C user escalation: "digest send time?" → U: 07:00 fixed → ANSWER broadcast to log.
38
- Returns validated ✓ · collision audit clean.
39
- ⏸ BATCH PAUSE (stop sequence):
40
- checkpoint ✓ → state-of-play ✓ → dispatch report shown (models/scores) → "Run /usage to see your remaining limits."
41
- → resume block:
42
- | Continue ORC run `merchant-notifications`.
43
- | Read run/merchant-notifications/state-of-play.md, then run/merchant-notifications/checkpoint.json.
44
- | Resume from checkpoint phase/wave. Intent-spec approved — do not re-plan. Do not redo done tasks.
45
- "Reply continue here, or paste in a fresh session (recommended if long)."
46
-
47
- U: [next day, FRESH session, pastes block]
48
- O: [state-of-play → checkpoint → re-anchored] "Resuming: merchant notifications (in-app+digest+prefs). Still correct?" U: yes.
49
- ▶ W3: spawn T5+T6 (haiku-4-5) → done. All 6 complete.
50
-
51
- ## Phase 5 — Review (spawned worker, Opus 5.5 medium)
52
- O: Code pattern? U: none. Findings (P0–P3 ladder, each P0–P2 anchored file:line + verbatim quote):
53
- P1 T2 no pagination — services/notification_list.ts:88 — O spot-checks: Reads line 88, quote matches ✓ → asks user, U: fix it
54
- · P3 email_digest naming ×2 · 12 tests added. (An unanchored finding would be auto-P3 — never fixed unasked.)
55
-
56
- ## Phase 6 — Verify (spawned worker, Opus 5.5 medium; criteria = definition-of-done)
57
- criteria[] with per-line evidence: bell ✓ (test name) · both schedules ✗ (weekly cron missing = P0, unmet criterion, evidence: no cron entry in scheduler.ts) · prefs ✓ → FAILED → quote spot-check ✓ → P0 auto-fix (single attempt, no ask) → re-verify → PASSED. 14/14.
58
-
59
- ## Phase 7 — Summary
60
- O: 6 tasks/3 waves/6 spawns/1 pause/1 fresh-session resume · 1 needs_context · 1 escalation · verify fixed_then_passed · branch green. P2 fix-batch: none · Apply the 2 P3 cosmetics? U: no.
61
- O: review close → `orc gotcha observe` ×3 (P1 addressed · 2× P3 wontfix, each with `run`) → `FINDING-OUTCOME addressed=1 disputed=0 wontfix=2 open=0 pre=0 suppressed=0 :: functional.check:1/1,evolvability.documentation:0/2`
62
-
63
- ## Phase 8 — Ship (orc-pr, reads pr.md)
64
- O: Branch: feat/notifications. Commit? Push? PR? U: yes all.
65
- O: Ticket/title/target? U: DRP-482 / Add merchant notification system / develop
66
- O: ✓ committed → pushed → run/merchant-notifications/DRP-482-add-merchant-notification-system.md from pr.md (base develop).
67
- Log deleted · checkpoint + dispatch log KEPT · completion dispatch report shown → "Run /usage to see your remaining limits."
68
-
69
- ## What this exercises
70
- always-spawn (even cheap tasks get a subagent) · facet-scored arithmetic · 5-band ladder ·
71
- per-run folder run/merchant-notifications/ · usage reminder (no programmatic /usage) ·
72
- planner grounding spot-check catching a hallucinated path · executor evidence (verbatim
73
- build/test proof) · reviewer quote spot-check before any P0/P1 action ·
74
- definition-of-done catching the weekly-cron gap · needs_context resolved internally · fresh-session resume.
1
+ # Example — Annotated Full Run (v2.2, dry run)
2
+
3
+ O: = orchestrator (Opus 4.8 high, always) · U: = user. Nothing real. The
4
+ orchestrator NEVER implements — it always spawns scored subagents.
5
+
6
+ U: Orchestrate: merchant notification system — in-app, email digest, prefs page.
7
+
8
+ ## Phase 0 — Intake
9
+ O: Creates run folder run/merchant-notifications/ FIRST.
10
+ [reads repo: TS/yarn/jest — asks nothing about stack] Rough size: medium+ → 4-question tier (one batched round):
11
+ 1) What should exist when done? 2) Out of scope? 3) How do we know it's done? 4) Patterns/files to avoid?
12
+ U: [answers] no push, no admin; bell count + both digest schedules + prefs persist; follow services/ pattern, don't touch auth_service.
13
+ O: [drafts run/merchant-notifications/intent-spec.md] Sign-off: gate or soft? (default gate)
14
+ U: gate → approved
15
+
16
+ ## Phase 1 — Planning
17
+ O: Planner? U: OpenSpec
18
+ O: [6 tasks with declared_files incl. tests + per-file grounding attestations + sliced acceptance[], depends_on, spec_ref] ⚠ T1/T2 share models/notification.ts → scheduling separates them.
19
+ Grounding spot-check (Phase 1 exit): globs all `exists` paths — 13/14 present, models/notifcation.ts MISSING (typo) → plan bounced to planner with the miss list → corrected to models/notification.ts ✓.
20
+
21
+ ## Phase 2 — Effort, dispatch style, scoring
22
+ O: Refined: medium, partially dependent. Recommend PARALLEL waves. Confirm? U: yes. Batch pause? U: every 2 waves.
23
+ O: Facet scoring (planner facets → formula → band; facet gate: breadth + fan recomputed, risk cites checked):
24
+ T1 3·new-surface·stateful·new-tests·fan0/3·low = 6+18+16+8+9 = 57 → sonnet-5-high (keystone — every later task imports its enum)
25
+ T2 3·imitate·branching·new-tests·fan1/0·low = 6+8+8+8+5 = 35 → sonnet-5-high
26
+ T3 3·imitate·branching·update-existing·fan1/0·low = 6+8+8+4+5 = 31 → sonnet-5-high
27
+ T4 2·imitate·branching·update-existing·fan1/0·low = 6+8+8+4+5 = 31 → sonnet-5-high
28
+ T5 1·mechanical·none·update-existing·fan0/0·low = 2+0+0+4 = 6 → haiku-5-high
29
+ T6 1·mechanical·none·none·fan0/0·low = 2+0+0+0 = 2 → haiku-5-high
30
+ Plan: 6 tasks, 3 waves W1{T1} W2{T2,T3,T4} W3{T5,T6}, all spawned. Anticipated escalations? U: none, go.
31
+
32
+ ## Phase 3 — Execution (ALL spawned; orchestrator coordinates only)
33
+ O: [checkpoint + state-of-play written into run/merchant-notifications/ BEFORE dispatch]
34
+ ▶ W1: spawn Agent-A(T1, sonnet-5-high) — milestones 40%→100% — return validated ✓ (evidence: `yarn jest models/` exit 0, tail quoted; unmet[] empty) — log: DECISION type enum.
35
+ ▶ W2: spawn 3 agents (sonnet-5-high each).
36
+ Agent-C needs_context (1/2): "needs T1's enum interface" → O adjudicates in-scope → re-slices → resumes. (User never bothered.)
37
+ Agent-C user escalation: "digest send time?" → U: 07:00 fixed → ANSWER broadcast to log.
38
+ Returns validated ✓ · collision audit clean.
39
+ ⏸ BATCH PAUSE (stop sequence):
40
+ checkpoint ✓ → state-of-play ✓ → dispatch report shown (models/scores) → "Run /usage to see your remaining limits."
41
+ → resume block:
42
+ | Continue ORC run `merchant-notifications`.
43
+ | Read run/merchant-notifications/state-of-play.md, then run/merchant-notifications/checkpoint.json.
44
+ | Resume from checkpoint phase/wave. Intent-spec approved — do not re-plan. Do not redo done tasks.
45
+ "Reply continue here, or paste in a fresh session (recommended if long)."
46
+
47
+ U: [next day, FRESH session, pastes block]
48
+ O: [state-of-play → checkpoint → re-anchored] "Resuming: merchant notifications (in-app+digest+prefs). Still correct?" U: yes.
49
+ ▶ W3: spawn T5+T6 (haiku-5-high) → done. All 6 complete.
50
+
51
+ ## Phase 5 — Review (spawned worker, Opus 5.5 medium)
52
+ O: Code pattern? U: none. Findings (P0–P3 ladder, each P0–P2 anchored file:line + verbatim quote):
53
+ P1 T2 no pagination — services/notification_list.ts:88 — O spot-checks: Reads line 88, quote matches ✓ → asks user, U: fix it
54
+ · P3 email_digest naming ×2 · 12 tests added. (An unanchored finding would be auto-P3 — never fixed unasked.)
55
+
56
+ ## Phase 6 — Verify (spawned worker, Opus 5.5 medium; criteria = definition-of-done)
57
+ criteria[] with per-line evidence: bell ✓ (test name) · both schedules ✗ (weekly cron missing = P0, unmet criterion, evidence: no cron entry in scheduler.ts) · prefs ✓ → FAILED → quote spot-check ✓ → P0 auto-fix (single attempt, no ask) → re-verify → PASSED. 14/14.
58
+
59
+ ## Phase 7 — Summary
60
+ O: 6 tasks/3 waves/6 spawns/1 pause/1 fresh-session resume · 1 needs_context · 1 escalation · verify fixed_then_passed · branch green. P2 fix-batch: none · Apply the 2 P3 cosmetics? U: no.
61
+ O: review close → `orc gotcha observe` ×3 (P1 addressed · 2× P3 wontfix, each with `run`) → `FINDING-OUTCOME addressed=1 disputed=0 wontfix=2 open=0 pre=0 suppressed=0 :: functional.check:1/1,evolvability.documentation:0/2`
62
+
63
+ ## Phase 8 — Ship (orc-pr, reads pr.md)
64
+ O: Branch: feat/notifications. Commit? Push? PR? U: yes all.
65
+ O: Ticket/title/target? U: DRP-482 / Add merchant notification system / develop
66
+ O: ✓ committed → pushed → run/merchant-notifications/DRP-482-add-merchant-notification-system.md from pr.md (base develop).
67
+ Log deleted · checkpoint + dispatch log KEPT · completion dispatch report shown → "Run /usage to see your remaining limits."
68
+
69
+ ## What this exercises
70
+ always-spawn (even cheap tasks get a subagent) · facet-scored arithmetic · 5-band ladder ·
71
+ per-run folder run/merchant-notifications/ · usage reminder (no programmatic /usage) ·
72
+ planner grounding spot-check catching a hallucinated path · executor evidence (verbatim
73
+ build/test proof) · reviewer quote spot-check before any P0/P1 action ·
74
+ definition-of-done catching the weekly-cron gap · needs_context resolved internally · fresh-session resume.
@@ -50,6 +50,9 @@ open_questions: [object] # [] or [{question, proposed_default, blocking: bool}
50
50
  declared_files: [string] # HARD GATE: actual files it will touch, incl. tests.
51
51
  # File-level globs. No declaration → no wave assignment.
52
52
  depends_on: [string] # forward = ordering; reverse = stale_review flagging
53
+ precedent: [string] # OPTIONAL. Read-only files this task copies behaviour
54
+ # or style from (max 5); the lane passes them to the
55
+ # pack as `--refs=`. Absent = the map picks them.
53
56
 
54
57
  # grounding attestation (filled by the PLANNER — one entry per declared path)
55
58
  grounding: [object] # {path, disposition: exists|new, evidence}
@@ -144,22 +144,22 @@ preflight line and has no gate to honour.
144
144
  ## Calls
145
145
 
146
146
  **ONE catalogue, and it is not you:** `orc lane calls orc-aftermath --json` names every
147
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
147
+ SHARED CLI call this lane makes, each with its exit-code contract, its cost, when to run
148
148
  it, and what an EMPTY answer means. Never invent a spelling, never re-word an
149
149
  exit code, and never re-derive a state word — the CLI's state words are the only
150
150
  state words, and **an exit code is an ANSWER wherever that contract says so, not
151
- a failure**. A call the answer does not name is a call this lane does not make.
151
+ a failure**. A call that neither it nor this skill names is a call this lane does not make.
152
152
  Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
153
- command you are about to run, out loud, before running it.
154
-
155
- ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
156
-
157
- `orc rules slice --lane orc-aftermath --json` is the ONLY assembler; never build
158
- the card here. It rides under the house rules and above the task —
159
- **house rules > your project's rules > ORC's own packs** — and its `line` prints
160
- VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
161
- never a silent choice) and `rules_overridden[]`.
162
- ## Waiting mid-run (`/orc-wait`)
163
-
164
- Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
165
- Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
153
+ command you are about to run, out loud, before running it.
154
+
155
+ ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
156
+
157
+ `orc rules slice --lane orc-aftermath --json` is the ONLY assembler; never build
158
+ the card here. It rides under the house rules and above the task —
159
+ **house rules > your project's rules > ORC's own packs** — and its `line` prints
160
+ VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
161
+ never a silent choice) and `rules_overridden[]`.
162
+ ## Waiting mid-run (`/orc-wait`)
163
+
164
+ Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
165
+ Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
@@ -210,8 +210,8 @@ exist). Menu rules, relatedness gate, combiner handling:
210
210
 
211
211
  ## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
212
212
 
213
- - **Calls:** `orc lane calls orc-analyze --json` names every call and its exit codes.
214
- **An exit code is an ANSWER where it says so, not a failure.** Make no other call.
213
+ - **Calls:** `orc lane calls orc-analyze --json` names shared calls and exit codes.
214
+ **An exit code is an ANSWER where it says so, not a failure.** Own calls are here; make no other.
215
215
  - **Config:** `orc lane config orc-analyze --json`. Obey `effective`, print every line
216
216
  in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
217
217
  Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
@@ -92,8 +92,8 @@ Never build or spawn.
92
92
 
93
93
  ## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
94
94
 
95
- - **Calls:** `orc lane calls orc-analyze-mini --json` names every call and its exit codes.
96
- **An exit code is an ANSWER where it says so, not a failure.** Make no other call.
95
+ - **Calls:** `orc lane calls orc-analyze-mini --json` names shared calls and exit codes.
96
+ **An exit code is an ANSWER where it says so, not a failure.** Own calls are here; make no other.
97
97
  - **Config:** `orc lane config orc-analyze-mini --json`. Obey `effective`. Never merge
98
98
  `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`). Nothing
99
99
  here is contested, gated or a stop: no preflight line, no gate to honour.
@@ -235,22 +235,22 @@ documented defaults, out loud. Priorities and families:
235
235
  ## Calls
236
236
 
237
237
  **ONE catalogue, and it is not you:** `orc lane calls orc-boundary --json` names every
238
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
238
+ SHARED CLI call this lane makes, each with its exit-code contract, its cost, when to run
239
239
  it, and what an EMPTY answer means. Never invent a spelling, never re-word an
240
240
  exit code, and never re-derive a state word — the CLI's state words are the only
241
241
  state words, and **an exit code is an ANSWER wherever that contract says so, not
242
- a failure**. A call the answer does not name is a call this lane does not make.
242
+ a failure**. A call that neither it nor this skill names is a call this lane does not make.
243
243
  Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
244
- command you are about to run, out loud, before running it.
245
-
246
- ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
247
-
248
- `orc rules slice --lane orc-boundary --json` is the ONLY assembler; never build
249
- the card here. It rides under the house rules and above the task —
250
- **house rules > your project's rules > ORC's own packs** — and its `line` prints
251
- VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
252
- never a silent choice) and `rules_overridden[]`.
253
- ## Waiting mid-run (`/orc-wait`)
254
-
255
- Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
256
- Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
244
+ command you are about to run, out loud, before running it.
245
+
246
+ ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
247
+
248
+ `orc rules slice --lane orc-boundary --json` is the ONLY assembler; never build
249
+ the card here. It rides under the house rules and above the task —
250
+ **house rules > your project's rules > ORC's own packs** — and its `line` prints
251
+ VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
252
+ never a silent choice) and `rules_overridden[]`.
253
+ ## Waiting mid-run (`/orc-wait`)
254
+
255
+ Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
256
+ Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
@@ -1,78 +1,81 @@
1
- # Reference — the boundary card
2
-
3
- Loaded at B4. One file per area: `.claude/orc/boundary/<area-slug>.md`. The slug
4
- is the area path with `/` → `-` (`src/payments` → `src-payments.md`), the same
5
- sanitisation `wiki/crosslink/<kind>/` uses — a nested path a single-level readdir
6
- never sees is a card that is invisible with the status check still green.
7
-
8
- ## Shape
9
-
10
- ```markdown
11
- ---
12
- area: src/payments # verbatim — this is the identity
13
- verdict: EXECUTE | ESCALATE | REFUSE
14
- anchored_files: # what staleness is computed against
15
- - src/payments/ledger.ts
16
- - src/payments/idempotency.ts
17
- verified_commit: 8a62b4f # HEAD when the four questions were answered
18
- scanned_at: 100826 14:11:30
19
- reasons: # the four answers, compressed. Required.
20
- - "self-verify: no — no test runner in this package"
21
- - "reversible: no — writes to a live ledger"
22
- checklist: # REQUIRED when verdict is REFUSE
23
- - add a test runner to this package
24
- - cover the idempotency path
25
- escalate_to: "the payments owner" # REQUIRED when verdict is ESCALATE
26
- ---
27
-
28
- # src/payments — REFUSE
29
-
30
- ## Why
31
- <the derivation, in prose. Two or three sentences.>
32
-
33
- ## What would make this a yes
34
- <the checklist again, with the lane that clears each item named.>
35
-
36
- ## What an agent MAY do here today
37
- <the part that is fine. A card that reads as "hands off entirely" when only one
38
- file is dangerous costs more than it saves.>
39
- ```
40
-
41
- ## Field rules
42
-
43
- **`area`** — verbatim, never sanitised. The filename is sanitised; the identity is
44
- not. Same split as a crosslink kind.
45
-
46
- **`anchored_files`** — the files whose change should make this verdict
47
- re-examined. Over-broad (`src/**`) makes every card permanently stale; empty makes
48
- every card permanently fresh. Both defeat the point.
49
-
50
- **`verified_commit`** — HEAD at the moment the four questions were answered. Moved
51
- only by a real re-examination, never bumped to quiet a stale flag.
52
-
53
- **`reasons`** — at least the answers that DROVE the verdict. This is what makes a
54
- verdict arguable, and a verdict nobody can argue with is one people route around.
55
-
56
- **`checklist`** — required on REFUSE, and each item must be a thing somebody could
57
- actually finish. "Be more careful" is not a checklist item. Where another lane
58
- clears it, name the lane (`→ /orc-pact`, `→ /orc-pattern`).
59
-
60
- **`escalate_to`** — required on ESCALATE. A role is fine ("the payments owner"); a
61
- shrug is not.
62
-
63
- ## The last section is not optional
64
-
65
- **"What an agent MAY do here today"** is what stops a card from reading as a wall.
66
- Most REFUSE areas contain plenty of safe work — tests, docs, a rename, a log line.
67
- A card that does not say so gets ignored, and an ignored card is worse than none,
68
- because it looks like coverage.
69
-
70
- ## Staleness
71
-
72
- Computed on read by `orc boundary status`, never stored:
73
- `git rev-list --count <verified_commit>..HEAD -- <anchored_files>`. Non-zero =
74
- stale. **The skill never computes this** — same rule as the wiki tier
75
- (`../../_shared/detecting-artifacts.md`).
76
-
77
- A stale card is not a wrong card; it is one whose evidence has moved. Refresh is
78
- cheap: re-run the four questions for that area only.
1
+ # Reference — the boundary card
2
+
3
+ Loaded at B4. One file per area: `.claude/orc/boundary/<area-slug>.md`. The slug
4
+ is the area path with `/` → `-` (`src/payments` → `src-payments.md`), the same
5
+ sanitisation `wiki/crosslink/<kind>/` uses — a nested path a single-level readdir
6
+ never sees is a card that is invisible with the status check still green.
7
+
8
+ ## Shape
9
+
10
+ ```markdown
11
+ ---
12
+ area: src/payments # verbatim — this is the identity
13
+ verdict: EXECUTE | ESCALATE | REFUSE
14
+ anchored_files: # what staleness is computed against
15
+ - src/payments/ledger.ts
16
+ - src/payments/idempotency.ts
17
+ verified_commit: 8a62b4f # HEAD when the four questions were answered
18
+ scanned_at: 100826 14:11:30
19
+ reasons: # the four answers, compressed. Required.
20
+ - "self-verify: no — no test runner in this package"
21
+ - "reversible: no — writes to a live ledger"
22
+ checklist: # REQUIRED when verdict is REFUSE
23
+ - add a test runner to this package
24
+ - cover the idempotency path
25
+ escalate_to: "the payments owner" # REQUIRED when verdict is ESCALATE
26
+ ---
27
+
28
+ # src/payments — REFUSE
29
+
30
+ ## Why
31
+ <the derivation, in prose. Two or three sentences.>
32
+
33
+ ## What would make this a yes
34
+ <the checklist again, with the lane that clears each item named.>
35
+
36
+ ## What an agent MAY do here today
37
+ <the part that is fine. A card that reads as "hands off entirely" when only one
38
+ file is dangerous costs more than it saves.>
39
+ ```
40
+
41
+ Lists may be block (`- item`) or inline (`[a, b]`). `orc boundary status` reads
42
+ both (v2.1.2). An item that holds a comma or a `#` goes in quotes.
43
+
44
+ ## Field rules
45
+
46
+ **`area`** — verbatim, never sanitised. The filename is sanitised; the identity is
47
+ not. Same split as a crosslink kind.
48
+
49
+ **`anchored_files`** — the files whose change should make this verdict
50
+ re-examined. Over-broad (`src/**`) makes every card permanently stale; empty makes
51
+ every card permanently fresh. Both defeat the point.
52
+
53
+ **`verified_commit`** — HEAD at the moment the four questions were answered. Moved
54
+ only by a real re-examination, never bumped to quiet a stale flag.
55
+
56
+ **`reasons`** — at least the answers that DROVE the verdict. This is what makes a
57
+ verdict arguable, and a verdict nobody can argue with is one people route around.
58
+
59
+ **`checklist`** — required on REFUSE, and each item must be a thing somebody could
60
+ actually finish. "Be more careful" is not a checklist item. Where another lane
61
+ clears it, name the lane (`→ /orc-pact`, `→ /orc-pattern`).
62
+
63
+ **`escalate_to`** — required on ESCALATE. A role is fine ("the payments owner"); a
64
+ shrug is not.
65
+
66
+ ## The last section is not optional
67
+
68
+ **"What an agent MAY do here today"** is what stops a card from reading as a wall.
69
+ Most REFUSE areas contain plenty of safe work — tests, docs, a rename, a log line.
70
+ A card that does not say so gets ignored, and an ignored card is worse than none,
71
+ because it looks like coverage.
72
+
73
+ ## Staleness
74
+
75
+ Computed on read by `orc boundary status`, never stored:
76
+ `git rev-list --count <verified_commit>..HEAD -- <anchored_files>`. Non-zero =
77
+ stale. **The skill never computes this** — same rule as the wiki tier
78
+ (`../../_shared/detecting-artifacts.md`).
79
+
80
+ A stale card is not a wrong card; it is one whose evidence has moved. Refresh is
81
+ cheap: re-run the four questions for that area only.