@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.
- package/CHANGELOG.md +320 -0
- package/README.md +48 -23
- package/bin/build-agents.js +207 -205
- package/bin/cli.js +48188 -47417
- package/bin/fix.js +21 -18
- package/bin/graph-extract.js +314 -6
- package/bin/graph-gain.js +83 -2
- package/bin/graph-map.js +23 -1
- package/bin/graph-notes.js +1 -1
- package/bin/graph-query.js +1362 -37
- package/bin/graph-resolve.js +1 -1
- package/bin/graph-shard.js +29 -6
- package/bin/graph-signals.js +5 -3
- package/bin/graph.js +7 -3
- package/bin/habit.js +1 -1
- package/bin/pricing.json +8 -1
- package/bin/trace-write.js +40 -11
- package/bin/verify-contracts.js +5661 -5552
- package/bin/verify-package.js +716 -716
- package/bin/webui/api.js +8 -0
- package/bin/webui/fixtures/extra.js +2036 -2036
- package/bin/webui/fixtures/flow.js +1 -1
- package/bin/webui/fixtures/index.js +2 -2
- package/bin/webui/fixtures/knowledge.js +8 -1
- package/bin/webui/fixtures/pact.js +112 -111
- package/bin/webui/fixtures/stats.js +2 -2
- package/bin/webui/i18n/en/knowledge.json +2 -0
- package/bin/webui/i18n/id/knowledge.json +2 -0
- package/bin/webui/js/panels/knowledge.js +17 -0
- package/guides/code-graph-benefit.md +116 -0
- package/guides/configuration.md +150 -0
- package/guides/documents.md +262 -0
- package/guides/extra-models.md +448 -0
- package/guides/habits-and-gotchas.md +152 -0
- package/guides/knowledge-reads.md +190 -0
- package/guides/model-selection.md +186 -0
- package/guides/rules.md +305 -0
- package/guides/status-line.md +344 -0
- package/mock-run/orc-cli.md +3 -2
- package/mock-run/orc-doc.md +452 -448
- package/mock-run/orc.md +157 -157
- package/package.json +2 -1
- package/templates/agents/MODEL-MAPPING.md +176 -176
- package/templates/agents/{orc-executor-haiku-4-5.md → orc-executor-haiku-5-high.md} +21 -8
- package/templates/agents/orc-executor-opus-4-7-high.md +17 -5
- package/templates/agents/orc-executor-opus-4-7-med.md +17 -5
- package/templates/agents/orc-executor-opus-4-8-high.md +17 -5
- package/templates/agents/orc-executor-opus-5-high.md +17 -5
- package/templates/agents/orc-executor-opus-5-low.md +17 -5
- package/templates/agents/orc-executor-opus-5-med.md +17 -5
- package/templates/agents/orc-executor-sonnet-4-6-high.md +17 -5
- package/templates/agents/orc-executor-sonnet-5-high.md +17 -5
- package/templates/agents/orc-executor-sonnet-5-low.md +17 -5
- package/templates/agents/orc-executor-sonnet-5-med.md +17 -5
- package/templates/agents/{orc-graph-noter-sonnet-4-6-med.md → orc-graph-noter-haiku-5-high.md} +4 -4
- package/templates/agents/orc-planner-mini-opus-5-med.md +3 -1
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +3 -1
- package/templates/agents/orc-planner-opus-5-med.md +3 -1
- package/templates/agents/{orc-trace-writer-haiku-4-5.md → orc-trace-writer-haiku-5-high.md} +4 -3
- package/templates/commands/orc-doc.md +128 -128
- package/templates/commands/orc-export.md +51 -46
- package/templates/hooks/README.md +8 -3
- package/templates/hooks/orc-effort-guard.js +105 -27
- package/templates/hooks/orc-graph-hook.js +252 -4
- package/templates/hooks/orc-statusline.js +13 -6
- package/templates/hooks/orc-trace.js +1 -1
- package/templates/skills/_shared/README.md +2 -2
- package/templates/skills/_shared/code-graph.md +185 -251
- package/templates/skills/_shared/extra-dispatch.md +1331 -1331
- package/templates/skills/_shared/lane-contract.md +7 -3
- package/templates/skills/_shared/opus5-only.md +137 -137
- package/templates/skills/_shared/phases/execution.md +13 -11
- package/templates/skills/_shared/phases/planning.md +27 -9
- package/templates/skills/_shared/phases/preflight.md +3 -3
- package/templates/skills/_shared/phases/review.md +4 -3
- package/templates/skills/_shared/phases/ship.md +7 -10
- package/templates/skills/_shared/phases/summary.md +2 -3
- package/templates/skills/_shared/phases/trace-verbs.md +21 -16
- package/templates/skills/_shared/phases/trace.md +3 -3
- package/templates/skills/_shared/phases/wiki-consult.md +2 -2
- package/templates/skills/_shared/pr-templates.md +108 -106
- package/templates/skills/_shared/read-ladder.md +8 -2
- package/templates/skills/_shared/return-validation.md +10 -6
- package/templates/skills/_shared/review-slice.md +1 -1
- package/templates/skills/_shared/stack-plan.md +135 -135
- package/templates/skills/_shared/wait.md +14 -2
- package/templates/skills/context-combiner/SKILL.md +2 -2
- package/templates/skills/orc/SKILL.md +227 -227
- package/templates/skills/orc/config.md +2 -2
- package/templates/skills/orc/examples/full-run-mock.md +74 -74
- package/templates/skills/orc/schemas/planning-output.md +3 -0
- package/templates/skills/orc-aftermath/SKILL.md +15 -15
- package/templates/skills/orc-analyze/SKILL.md +2 -2
- package/templates/skills/orc-analyze-mini/SKILL.md +2 -2
- package/templates/skills/orc-boundary/SKILL.md +15 -15
- package/templates/skills/orc-boundary/references/card.md +81 -78
- package/templates/skills/orc-boundary/references/gate.md +113 -113
- package/templates/skills/orc-brainstorm/SKILL.md +15 -15
- package/templates/skills/orc-budget/SKILL.md +15 -15
- package/templates/skills/orc-challenge/README.md +1 -1
- package/templates/skills/orc-challenge/SKILL.md +16 -16
- package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
- package/templates/skills/orc-claude/SKILL.md +4 -4
- package/templates/skills/orc-claude/examples/claude-run-mock.md +1 -1
- package/templates/skills/orc-diy/SKILL.md +2 -2
- package/templates/skills/orc-diy/references/blocks/wiki.md +26 -26
- package/templates/skills/orc-diy/references/flow-schema.md +2 -2
- package/templates/skills/orc-doc/README.md +2 -2
- package/templates/skills/orc-doc/SKILL.md +501 -490
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +12 -1
- package/templates/skills/orc-doc/references/chunking.md +6 -4
- package/templates/skills/orc-doc/references/gates.md +311 -311
- package/templates/skills/orc-doc/references/resume-protocol.md +229 -228
- package/templates/skills/orc-explain/SKILL.md +88 -88
- package/templates/skills/orc-export/SKILL.md +190 -187
- package/templates/skills/orc-fast/SKILL.md +213 -210
- package/templates/skills/orc-grill/SKILL.md +245 -245
- package/templates/skills/orc-handoff/SKILL.md +11 -11
- package/templates/skills/orc-learn/SKILL.md +13 -13
- package/templates/skills/orc-learn/examples/learn-run-mock.md +2 -2
- package/templates/skills/orc-mini/SKILL.md +12 -12
- package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -5
- package/templates/skills/orc-pact/SKILL.md +15 -15
- package/templates/skills/orc-pact/references/gate.md +70 -70
- package/templates/skills/orc-pattern/SKILL.md +3 -3
- package/templates/skills/orc-poly/SKILL.md +4 -4
- package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -51
- package/templates/skills/orc-pr-driver/SKILL.md +4 -3
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +108 -99
- package/templates/skills/orc-pr-setup/SKILL.md +2 -2
- package/templates/skills/orc-quick/README.md +535 -536
- package/templates/skills/orc-quick/SKILL.md +29 -32
- package/templates/skills/orc-quick/references/context-doc.md +145 -145
- package/templates/skills/orc-quick/references/dispatch-gate.md +220 -220
- package/templates/skills/orc-quick/references/gh-mode.md +2 -1
- package/templates/skills/orc-quick/references/look.md +34 -12
- package/templates/skills/orc-retro/SKILL.md +2 -2
- package/templates/skills/orc-retro/examples/retro-mock.md +2 -2
- package/templates/skills/orc-route/SKILL.md +2 -2
- package/templates/skills/orc-test/SKILL.md +6 -3
- package/templates/skills/orc-verify/SKILL.md +2 -2
- package/templates/skills/orc-wait/SKILL.md +10 -2
- package/templates/skills/orc-wiki/SKILL.md +4 -4
- package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -19
- 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-
|
|
29
|
-
T6 1·mechanical·none·none·fan0/0·low = 2+0+0+0 = 2 → haiku-
|
|
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-
|
|
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
|
|
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
|
|
214
|
-
**An exit code is an ANSWER where it says so, not a failure.**
|
|
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
|
|
96
|
-
**An exit code is an ANSWER where it says so, not a failure.**
|
|
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
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
**`
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**`
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
**`
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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.
|