@azure-id/orc 2.1.0 → 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 +374 -0
- package/README.md +49 -36
- package/bin/build-agents.js +7 -5
- package/bin/cli.js +1006 -235
- 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 +169 -60
- package/bin/verify-package.js +3 -3
- package/bin/webui/api.js +8 -0
- package/bin/webui/fixtures/extra.js +9 -9
- 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/a-normal-day.md +2 -2
- package/mock-run/extra-slots.md +177 -177
- package/mock-run/orc-cli.md +3 -2
- package/mock-run/orc-doc.md +452 -448
- package/mock-run/orc-fast.md +2 -2
- package/mock-run/orc-quick.md +146 -146
- package/mock-run/orc.md +4 -4
- package/package.json +2 -1
- package/templates/agents/MODEL-MAPPING.md +12 -12
- 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-recon-sonnet-4-6-med.md → orc-recon-sonnet-5-med.md} +4 -4
- 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/commands/orc-fast.md +10 -10
- 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 +4 -4
- package/templates/skills/_shared/lane-contract.md +7 -3
- package/templates/skills/_shared/opus5-only.md +3 -3
- 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 +7 -7
- package/templates/skills/orc/config.md +2 -2
- package/templates/skills/orc/examples/full-run-mock.md +7 -7
- package/templates/skills/orc/references/effort-and-mode.md +222 -222
- 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 +17 -14
- package/templates/skills/orc-grill/SKILL.md +16 -16
- package/templates/skills/orc-grill/references/grill-doc.md +1 -1
- 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 +11 -12
- package/templates/skills/orc-quick/SKILL.md +29 -32
- package/templates/skills/orc-quick/references/context-doc.md +5 -5
- package/templates/skills/orc-quick/references/dispatch-gate.md +10 -10
- 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
package/mock-run/orc-fast.md
CHANGED
|
@@ -39,12 +39,12 @@ Fit gate + one question
|
|
|
39
39
|
|
|
40
40
|
> nothing, follow api/orders/
|
|
41
41
|
|
|
42
|
-
Dispatch orc-executor-sonnet-
|
|
42
|
+
Dispatch orc-executor-sonnet-5-med
|
|
43
43
|
slice carries:
|
|
44
44
|
· wiki pointers wiki/orc-feature-orders.md (the route table)
|
|
45
45
|
· the express pattern, copied in literally
|
|
46
46
|
· your one constraint
|
|
47
|
-
returned as: claude-sonnet-
|
|
47
|
+
returned as: claude-sonnet-5-5 / medium ✓
|
|
48
48
|
|
|
49
49
|
Smoke gate
|
|
50
50
|
build ✓
|
package/mock-run/orc-quick.md
CHANGED
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
# Mock run — `/orc-quick`
|
|
2
|
-
|
|
3
|
-
> Ask for anything. Three steps: look → ask once → do. It always asks you
|
|
4
|
-
> which agent should run.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. What it does
|
|
9
|
-
|
|
10
|
-
Every other lane has a fixed job. This one does not. A small fix, a question
|
|
11
|
-
about how something works, a defect hunt, a dependency bump, or the review
|
|
12
|
-
comments on a pull request — all the same three steps.
|
|
13
|
-
|
|
14
|
-
The point of the lane is the **dispatch gate**: before every single dispatch it
|
|
15
|
-
asks you which agent to use. No default. No "same as last time". No setting can
|
|
16
|
-
turn it off — `opus5_only`, `fable5_*` and `rubric_bands_override` are all
|
|
17
|
-
inert here, and the gate says so when they are on.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 2. The run
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
> /orc-quick the refund badge shows "pending" even after the webhook lands
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Q1 — Look (silent)
|
|
28
|
-
|
|
29
|
-
ORC reads first and says nothing until it has something to say. It asks the
|
|
30
|
-
**code graph** before it greps: one call gives the symbol, who calls it, and
|
|
31
|
-
which tests reach it. The request says a behaviour is wrong, so the entry is
|
|
32
|
-
sorted as a **defect** — which means the bug gets reproduced before it is
|
|
33
|
-
fixed.
|
|
34
|
-
|
|
35
|
-
### Q2 — Ask (one turn: questions **and** the agent choice together)
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
I looked. Here is what I found and what I need from you.
|
|
39
|
-
|
|
40
|
-
· web/refunds/RefundBadge.tsx:22 maps status → label
|
|
41
|
-
· the map has no case for `sent_to_bank`, so it falls through to "pending"
|
|
42
|
-
· api/refunds/webhook.ts:52 does write that status
|
|
43
|
-
|
|
44
|
-
Two questions:
|
|
45
|
-
1 Add the missing case only, or review the whole map?
|
|
46
|
-
2 Should the badge colour change too?
|
|
47
|
-
|
|
48
|
-
And which agent should do it?
|
|
49
|
-
a orc-executor-sonnet-
|
|
50
|
-
b orc-executor-opus-5-low thinks harder, about 3× the cost
|
|
51
|
-
c other — name a model
|
|
52
|
-
|
|
53
|
-
Your choice — nothing runs until you answer.
|
|
54
|
-
|
|
55
|
-
> 1 just the missing case. 2 yes, amber. agent a.
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
The `→ suggested` marker always carries its reason, and it never pre-selects.
|
|
59
|
-
The menu still waits for you.
|
|
60
|
-
|
|
61
|
-
### Q3 — Do
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
Dispatch orc-executor-sonnet-
|
|
65
|
-
returned as: claude-sonnet-
|
|
66
|
-
|
|
67
|
-
repro red npm test -- web/refunds/RefundBadge.test.tsx exit 1
|
|
68
|
-
→ expected "sent to bank", received "pending"
|
|
69
|
-
repro green npm test -- web/refunds/RefundBadge.test.tsx exit 0
|
|
70
|
-
|
|
71
|
-
build ✓
|
|
72
|
-
tests reached 1 file (call 1) → 3 passed
|
|
73
|
-
suite ✓ 12 passed
|
|
74
|
-
blast radius 1 symbol · callers 2 in 2 files · tests reach 1 · risk none
|
|
75
|
-
graph gen 18 · 1 file updated
|
|
76
|
-
graph gain paid 0.9K tokens · avoided an estimated 2–6K · measured: not yet (N=1)
|
|
77
|
-
|
|
78
|
-
Entry 1 written to orc-quick/refund-badge/quick-context.md
|
|
79
|
-
|
|
80
|
-
Commit these 2 files? [yes / no]
|
|
81
|
-
|
|
82
|
-
> yes
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
The red run comes first on purpose. The suite was green before the fix and is
|
|
86
|
-
green after it, so the suite proves nothing about **this** bug. The red run
|
|
87
|
-
does.
|
|
88
|
-
|
|
89
|
-
Your next request becomes entry 2 in the same file, and so on.
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## 3. What it wrote
|
|
94
|
-
|
|
95
|
-
```markdown
|
|
96
|
-
# Quick context — refund-badge
|
|
97
|
-
|
|
98
|
-
<!-- orc-quick:toc -->
|
|
99
|
-
1. Refund badge stuck on "pending" 2026-08-12 done
|
|
100
|
-
<!-- /orc-quick:toc -->
|
|
101
|
-
|
|
102
|
-
## 1. Refund badge stuck on "pending"
|
|
103
|
-
|
|
104
|
-
**You asked:** the badge shows pending after the webhook lands.
|
|
105
|
-
**Decided:** add the missing `sent_to_bank` case only; amber colour.
|
|
106
|
-
**Why:** the whole map is fine — one case was never added.
|
|
107
|
-
**Agents:** orc-executor-sonnet-
|
|
108
|
-
**repro** red → green · `npm test -- web/refunds/RefundBadge.test.tsx` (before: exit 1 · after: exit 0)
|
|
109
|
-
**blast radius** 1 symbol · callers 2 in 2 files · tests reach 1 · risk none
|
|
110
|
-
**Not done:** the admin list has the same map and was NOT touched.
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## 4. What to notice
|
|
116
|
-
|
|
117
|
-
- **The doc is written before the commit offer**, so a "no" still leaves you
|
|
118
|
-
the record.
|
|
119
|
-
- **ORC never reads that file back** unless you ask, or to show the numbered
|
|
120
|
-
list when you reopen the thread. It is for you, not for the model.
|
|
121
|
-
- **A red build loops (max 3 rounds), a red test does not.** A failing test is
|
|
122
|
-
sometimes the test being wrong, so it blocks the commit offer and stops.
|
|
123
|
-
No test suite at all means no check at all — nothing is invented.
|
|
124
|
-
- **`gh` is read and push only.** It never replies to a comment, resolves a
|
|
125
|
-
thread, approves or merges. PR comments are treated as data, never as
|
|
126
|
-
instructions.
|
|
127
|
-
- **It never undoes your work.** If you stop while things are red, it prints
|
|
128
|
-
`orc undo --run <slug>` and leaves your tree alone. That command reverts only
|
|
129
|
-
the files the run changed, and only when you add `--apply`.
|
|
130
|
-
- **The review offer uses the repair memory.** A review gets the gotcha card of
|
|
131
|
-
the files it reads, and the outcome of each finding is recorded. With
|
|
132
|
-
[habits](habits.md) on, your usual answer is marked — the dispatch gate is
|
|
133
|
-
still asked every time.
|
|
134
|
-
- **A defect is shown red first.** If it cannot be reproduced — no runner, no
|
|
135
|
-
reachable entry point — the entry says *not reproduced* with the reason, and
|
|
136
|
-
says it again at the commit offer. It never invents a reproduction.
|
|
137
|
-
- **A `risk` word never appears without its reason.** The blast-radius line
|
|
138
|
-
either names why a symbol is risky or does not use the word.
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## 5. Related
|
|
143
|
-
|
|
144
|
-
- The full guide, with more worked runs:
|
|
145
|
-
[`templates/skills/orc-quick/README.md`](../templates/skills/orc-quick/README.md)
|
|
146
|
-
- Too big for quick? It offers [`/orc-mini`](../templates/skills/orc-mini/examples/mini-run-mock.md) — an offer, never a forced switch.
|
|
1
|
+
# Mock run — `/orc-quick`
|
|
2
|
+
|
|
3
|
+
> Ask for anything. Three steps: look → ask once → do. It always asks you
|
|
4
|
+
> which agent should run.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. What it does
|
|
9
|
+
|
|
10
|
+
Every other lane has a fixed job. This one does not. A small fix, a question
|
|
11
|
+
about how something works, a defect hunt, a dependency bump, or the review
|
|
12
|
+
comments on a pull request — all the same three steps.
|
|
13
|
+
|
|
14
|
+
The point of the lane is the **dispatch gate**: before every single dispatch it
|
|
15
|
+
asks you which agent to use. No default. No "same as last time". No setting can
|
|
16
|
+
turn it off — `opus5_only`, `fable5_*` and `rubric_bands_override` are all
|
|
17
|
+
inert here, and the gate says so when they are on.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. The run
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
> /orc-quick the refund badge shows "pending" even after the webhook lands
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Q1 — Look (silent)
|
|
28
|
+
|
|
29
|
+
ORC reads first and says nothing until it has something to say. It asks the
|
|
30
|
+
**code graph** before it greps: one call gives the symbol, who calls it, and
|
|
31
|
+
which tests reach it. The request says a behaviour is wrong, so the entry is
|
|
32
|
+
sorted as a **defect** — which means the bug gets reproduced before it is
|
|
33
|
+
fixed.
|
|
34
|
+
|
|
35
|
+
### Q2 — Ask (one turn: questions **and** the agent choice together)
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
I looked. Here is what I found and what I need from you.
|
|
39
|
+
|
|
40
|
+
· web/refunds/RefundBadge.tsx:22 maps status → label
|
|
41
|
+
· the map has no case for `sent_to_bank`, so it falls through to "pending"
|
|
42
|
+
· api/refunds/webhook.ts:52 does write that status
|
|
43
|
+
|
|
44
|
+
Two questions:
|
|
45
|
+
1 Add the missing case only, or review the whole map?
|
|
46
|
+
2 Should the badge colour change too?
|
|
47
|
+
|
|
48
|
+
And which agent should do it?
|
|
49
|
+
a orc-executor-sonnet-5-med small, one file → suggested: 1 file, no risk class
|
|
50
|
+
b orc-executor-opus-5-low thinks harder, about 3× the cost
|
|
51
|
+
c other — name a model
|
|
52
|
+
|
|
53
|
+
Your choice — nothing runs until you answer.
|
|
54
|
+
|
|
55
|
+
> 1 just the missing case. 2 yes, amber. agent a.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The `→ suggested` marker always carries its reason, and it never pre-selects.
|
|
59
|
+
The menu still waits for you.
|
|
60
|
+
|
|
61
|
+
### Q3 — Do
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Dispatch orc-executor-sonnet-5-med
|
|
65
|
+
returned as: claude-sonnet-5-5 / medium ✓
|
|
66
|
+
|
|
67
|
+
repro red npm test -- web/refunds/RefundBadge.test.tsx exit 1
|
|
68
|
+
→ expected "sent to bank", received "pending"
|
|
69
|
+
repro green npm test -- web/refunds/RefundBadge.test.tsx exit 0
|
|
70
|
+
|
|
71
|
+
build ✓
|
|
72
|
+
tests reached 1 file (call 1) → 3 passed
|
|
73
|
+
suite ✓ 12 passed
|
|
74
|
+
blast radius 1 symbol · callers 2 in 2 files · tests reach 1 · risk none
|
|
75
|
+
graph gen 18 · 1 file updated
|
|
76
|
+
graph gain paid 0.9K tokens · avoided an estimated 2–6K · measured: not yet (N=1)
|
|
77
|
+
|
|
78
|
+
Entry 1 written to orc-quick/refund-badge/quick-context.md
|
|
79
|
+
|
|
80
|
+
Commit these 2 files? [yes / no]
|
|
81
|
+
|
|
82
|
+
> yes
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
The red run comes first on purpose. The suite was green before the fix and is
|
|
86
|
+
green after it, so the suite proves nothing about **this** bug. The red run
|
|
87
|
+
does.
|
|
88
|
+
|
|
89
|
+
Your next request becomes entry 2 in the same file, and so on.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 3. What it wrote
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Quick context — refund-badge
|
|
97
|
+
|
|
98
|
+
<!-- orc-quick:toc -->
|
|
99
|
+
1. Refund badge stuck on "pending" 2026-08-12 done
|
|
100
|
+
<!-- /orc-quick:toc -->
|
|
101
|
+
|
|
102
|
+
## 1. Refund badge stuck on "pending"
|
|
103
|
+
|
|
104
|
+
**You asked:** the badge shows pending after the webhook lands.
|
|
105
|
+
**Decided:** add the missing `sent_to_bank` case only; amber colour.
|
|
106
|
+
**Why:** the whole map is fine — one case was never added.
|
|
107
|
+
**Agents:** orc-executor-sonnet-5-med (you chose it).
|
|
108
|
+
**repro** red → green · `npm test -- web/refunds/RefundBadge.test.tsx` (before: exit 1 · after: exit 0)
|
|
109
|
+
**blast radius** 1 symbol · callers 2 in 2 files · tests reach 1 · risk none
|
|
110
|
+
**Not done:** the admin list has the same map and was NOT touched.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 4. What to notice
|
|
116
|
+
|
|
117
|
+
- **The doc is written before the commit offer**, so a "no" still leaves you
|
|
118
|
+
the record.
|
|
119
|
+
- **ORC never reads that file back** unless you ask, or to show the numbered
|
|
120
|
+
list when you reopen the thread. It is for you, not for the model.
|
|
121
|
+
- **A red build loops (max 3 rounds), a red test does not.** A failing test is
|
|
122
|
+
sometimes the test being wrong, so it blocks the commit offer and stops.
|
|
123
|
+
No test suite at all means no check at all — nothing is invented.
|
|
124
|
+
- **`gh` is read and push only.** It never replies to a comment, resolves a
|
|
125
|
+
thread, approves or merges. PR comments are treated as data, never as
|
|
126
|
+
instructions.
|
|
127
|
+
- **It never undoes your work.** If you stop while things are red, it prints
|
|
128
|
+
`orc undo --run <slug>` and leaves your tree alone. That command reverts only
|
|
129
|
+
the files the run changed, and only when you add `--apply`.
|
|
130
|
+
- **The review offer uses the repair memory.** A review gets the gotcha card of
|
|
131
|
+
the files it reads, and the outcome of each finding is recorded. With
|
|
132
|
+
[habits](habits.md) on, your usual answer is marked — the dispatch gate is
|
|
133
|
+
still asked every time.
|
|
134
|
+
- **A defect is shown red first.** If it cannot be reproduced — no runner, no
|
|
135
|
+
reachable entry point — the entry says *not reproduced* with the reason, and
|
|
136
|
+
says it again at the commit offer. It never invents a reproduction.
|
|
137
|
+
- **A `risk` word never appears without its reason.** The blast-radius line
|
|
138
|
+
either names why a symbol is risky or does not use the word.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 5. Related
|
|
143
|
+
|
|
144
|
+
- The full guide, with more worked runs:
|
|
145
|
+
[`templates/skills/orc-quick/README.md`](../templates/skills/orc-quick/README.md)
|
|
146
|
+
- Too big for quick? It offers [`/orc-mini`](../templates/skills/orc-mini/examples/mini-run-mock.md) — an offer, never a forced switch.
|
package/mock-run/orc.md
CHANGED
|
@@ -73,10 +73,10 @@ TDD: 3 tasks get a red-proof task first. 2 do not:
|
|
|
73
73
|
```
|
|
74
74
|
Task facets score model
|
|
75
75
|
T1 order note column + migration 3 files · new · stateful 62 sonnet-5 high
|
|
76
|
-
T2 POST /orders accepts note 2 files · imitate 38 sonnet-
|
|
77
|
-
T3 checkout note box 2 files · imitate 35 sonnet-
|
|
78
|
-
T4 order page shows the note 1 file · mechanical 12 haiku-
|
|
79
|
-
T5 label text 1 file · mechanical 4 haiku-
|
|
76
|
+
T2 POST /orders accepts note 2 files · imitate 38 sonnet-5 high
|
|
77
|
+
T3 checkout note box 2 files · imitate 35 sonnet-5 high
|
|
78
|
+
T4 order page shows the note 1 file · mechanical 12 haiku-5-high
|
|
79
|
+
T5 label text 1 file · mechanical 4 haiku-5-high
|
|
80
80
|
|
|
81
81
|
Waves: W1 {T1} W2 {T2, T3} W3 {T4, T5}
|
|
82
82
|
Pause every 2 waves. OK to start?
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-id/orc",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "ORC — an orchestrator skill constellation for Claude Code: intake, planning, scored parallel subagents, code-pattern matching, review, verify, ship, plus a project knowledge-base wiki.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"orc": "bin/cli.js"
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"README-id.md",
|
|
11
11
|
"CHANGELOG.md",
|
|
12
12
|
"bin/",
|
|
13
|
+
"guides/",
|
|
13
14
|
"mock-run/",
|
|
14
15
|
"templates/"
|
|
15
16
|
],
|
|
@@ -17,10 +17,10 @@ Score→executor mapping lives in config.md (one canonical 5-band table;
|
|
|
17
17
|
`rubric_bands` is granularity only, not a preset selector).
|
|
18
18
|
|
|
19
19
|
**Executors no band names — they still ship.**
|
|
20
|
-
`orc-executor-haiku-
|
|
20
|
+
`orc-executor-haiku-5-high`,
|
|
21
21
|
`orc-executor-sonnet-4-6-high`, `orc-executor-opus-4-7-med`,
|
|
22
22
|
`orc-executor-opus-4-7-high`, `orc-executor-opus-4-8-high` and
|
|
23
|
-
`orc-executor-opus-5-high` —
|
|
23
|
+
`orc-executor-opus-5-high` — six agents — are still generated
|
|
24
24
|
and still installed. They are reachable only when a user names one
|
|
25
25
|
explicitly: `rubric_bands_override`, `orc diy`'s `fixed_executor`, or
|
|
26
26
|
`extra_fallback_agent`. They are not deleted because a table change is not a
|
|
@@ -38,7 +38,7 @@ model change, and an agent's model change is always a RENAME.
|
|
|
38
38
|
| orc-analyze-mini-sonnet-5-high | claude-sonnet-5-5 | high | mini analysis |
|
|
39
39
|
| orc-planner-mini-sonnet-5-high | claude-sonnet-5-5 | high | mini planning |
|
|
40
40
|
| orc-scout-sonnet-4-6-high | claude-sonnet-4-6 | high | deep-analysis code scout (read-only) |
|
|
41
|
-
| orc-recon-sonnet-
|
|
41
|
+
| orc-recon-sonnet-5-med | claude-sonnet-5-5 | medium | answer ONE repository question with file:line evidence (/orc-quick read-only entries; never edits, never plans) |
|
|
42
42
|
| orc-recon-opus-5-low | claude-opus-5-5 | low | the same contract for a WIDE or SUBTLE question — a blast radius across areas, a defect with no obvious anchor |
|
|
43
43
|
| orc-context-combiner-opus-5-high | claude-opus-5-5 | high | combine 2+ related analyses (full lane) |
|
|
44
44
|
| orc-pattern-codifier-sonnet-5-high | claude-sonnet-5-5 | high | reconcile per-language playbook vs. project files → cached code-pattern (opt-in) |
|
|
@@ -63,8 +63,8 @@ model change, and an agent's model change is always a RENAME.
|
|
|
63
63
|
| orc-doc-checker-opus-5-low | claude-opus-5-5 | low | read ONE LINE RANGE of a document and report anchored findings (/orc-doc only; read-only). LOW ON PURPOSE — the same reasoning that pins the challenge cold reader: a harder-thinking checker reasons its way past a gap a real reader would trip on |
|
|
64
64
|
| orc-test-designer-opus-5-high | claude-opus-5-5 | high | fill the GAPS the free case matrix could not derive, and author the front-end journey SCRIPT (/orc-test only). HIGH IS THE INSTRUMENT: a shallow designer returns the three obvious cases the deterministic expansion already covered, which is the one output that costs money and adds nothing |
|
|
65
65
|
| orc-test-interpreter-opus-5-low | claude-opus-5-5 | low | read ONLY a run’s evidence files and say whether what is in them is a finding (/orc-test only; SEALED slice, `Read` and nothing else). LOW IS A MEASUREMENT CHOICE, NOT A COST ONE, and nothing may ever upgrade it: a harder-thinking interpreter reasons its way to why a leaked stack trace is probably fine in staging |
|
|
66
|
-
| orc-trace-writer-haiku-
|
|
67
|
-
| orc-graph-noter-
|
|
66
|
+
| orc-trace-writer-haiku-5-high | claude-haiku-5-5 | high | append one phase block of behavior-trace narration from an orchestrator packet (every trace-owning lane; append-only, never reads source) |
|
|
67
|
+
| orc-graph-noter-haiku-5-high | claude-haiku-5-5 | high | write ONE sentence per changed function for the local code graph (`orc graph` Layer 2). Reads line RANGES only, pipes its notes to `orc graph notes apply -` (the CLI validates and stores), returns ONE line. Dispatched by code-changing lanes only when `code_graph_notes` is on and a batch reaches its minimum |
|
|
68
68
|
|
|
69
69
|
## Opus-5-only mode agents (hard-gated; dispatched only when `opus5_only: true`)
|
|
70
70
|
|
|
@@ -88,15 +88,15 @@ these. Full mapping + precedence:
|
|
|
88
88
|
The eleven roles already on `claude-opus-5-5` — analyst, planner, reviewer,
|
|
89
89
|
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md
|
|
90
90
|
writer, deep wiki scanner — dispatch
|
|
91
|
-
unchanged under this mode. **Never forced:** `orc-trace-writer-haiku-
|
|
91
|
+
unchanged under this mode. **Never forced:** `orc-trace-writer-haiku-5-high` (it
|
|
92
92
|
transcribes a packet, no reasoning) and orc-diy (its table is compile-owned).
|
|
93
|
-
**Not dispatched at all:** `orc-graph-noter-
|
|
93
|
+
**Not dispatched at all:** `orc-graph-noter-haiku-5-high` has NO Opus 5.5
|
|
94
94
|
variant. Under this mode a lane skips graph notes and prints
|
|
95
95
|
`graph notes: skipped (opus5_only)` — a one-sentence summary does not justify an
|
|
96
96
|
Opus 5.5 dispatch, and the graph's structure layer costs no model at all.
|
|
97
97
|
|
|
98
98
|
Mini execution reuses orc-executor-sonnet-5-high. Fast-lane (orc-fast)
|
|
99
|
-
execution reuses orc-executor-sonnet-
|
|
99
|
+
execution reuses orc-executor-sonnet-5-med — no dedicated agent. Under
|
|
100
100
|
`opus5_only` both reuse orc-executor-opus-5-low.
|
|
101
101
|
|
|
102
102
|
## orc-quick — the user picks, and no config can override it
|
|
@@ -106,8 +106,8 @@ agent to spawn before EVERY dispatch, and reuses shipped agents:
|
|
|
106
106
|
|
|
107
107
|
| Dispatch kind | Offered | Hook-traced |
|
|
108
108
|
|---|---|---|
|
|
109
|
-
| writes code | orc-executor-sonnet-
|
|
110
|
-
| read-only recon | orc-recon-sonnet-
|
|
109
|
+
| writes code | orc-executor-sonnet-5-med · orc-executor-opus-5-low | yes |
|
|
110
|
+
| read-only recon | orc-recon-sonnet-5-med · orc-recon-opus-5-low · or `other — name a model` | yes · yes · no |
|
|
111
111
|
| review | orc-reviewer-opus-5-low · or ad-hoc | yes / no |
|
|
112
112
|
|
|
113
113
|
The only dispatch it does not re-ask is build-repair rounds 1–2, which reuse the
|
|
@@ -141,14 +141,14 @@ The orchestrator (main session) is NOT an agent file.
|
|
|
141
141
|
|
|
142
142
|
Model IDs use the Platform/API dateless format (confirmed at
|
|
143
143
|
platform.claude.com/docs/en/about-claude/models/model-ids-and-versions):
|
|
144
|
-
claude-haiku-
|
|
144
|
+
claude-haiku-5-5, claude-sonnet-4-6, claude-sonnet-5-5, claude-opus-4-7,
|
|
145
145
|
claude-opus-4-8 and claude-opus-5-5 (the top executor band + the core fixed
|
|
146
146
|
roles). **Sonnet 5 runs on `claude-sonnet-5-5` since v2.1.0** — the agent names
|
|
147
147
|
keep `-sonnet-5-` (a point release in one family keeps the name, as Opus did in
|
|
148
148
|
v1.9.2), and `claude-sonnet-5` stays a valid config value.
|
|
149
149
|
|
|
150
150
|
1. **Run `/agents`** to confirm Claude Code accepts these full IDs in agent
|
|
151
|
-
frontmatter — in particular `claude-haiku-
|
|
151
|
+
frontmatter — in particular `claude-haiku-5-5` and `claude-opus-5-5`. If it
|
|
152
152
|
wants short aliases (opus/sonnet/haiku) or dated IDs, adjust
|
|
153
153
|
each `model:` field. The full IDs are valid at the API level but Claude Code
|
|
154
154
|
may normalize differently.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: orc-executor-haiku-
|
|
2
|
+
name: orc-executor-haiku-5-high
|
|
3
3
|
description: >
|
|
4
|
-
ORC executor — claude-haiku-
|
|
5
|
-
model: claude-haiku-
|
|
4
|
+
ORC executor — claude-haiku-5-5, high effort. Dispatched by the build lanes at execution for ONE task, score band none (opt-in only, see MODEL-MAPPING.md).
|
|
5
|
+
model: claude-haiku-5-5
|
|
6
|
+
effort: high
|
|
6
7
|
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
8
|
---
|
|
8
9
|
|
|
@@ -53,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
53
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
54
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
55
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
56
61
|
- worktree_path — work here if set, else the current tree
|
|
57
62
|
|
|
58
63
|
## Procedure (embedded — self-contained)
|
|
@@ -60,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
60
65
|
2. Read spec_ref if provided.
|
|
61
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
62
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
63
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
64
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
65
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
66
72
|
step 0 for the rest of the task.
|
|
@@ -89,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
89
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
90
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
91
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
92
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
93
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
94
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -128,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
128
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
129
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
130
142
|
the slice carried no wiki material.
|
|
131
|
-
- graph_used — REQUIRED when the slice carried `
|
|
132
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
133
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
134
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
135
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
136
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
137
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
138
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
139
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|
|
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
55
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
56
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
57
61
|
- worktree_path — work here if set, else the current tree
|
|
58
62
|
|
|
59
63
|
## Procedure (embedded — self-contained)
|
|
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
61
65
|
2. Read spec_ref if provided.
|
|
62
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
63
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
64
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
65
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
66
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
67
72
|
step 0 for the rest of the task.
|
|
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
90
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
91
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
92
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
93
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
94
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
95
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
129
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
130
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
131
142
|
the slice carried no wiki material.
|
|
132
|
-
- graph_used — REQUIRED when the slice carried `
|
|
133
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
134
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
135
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
136
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
137
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
138
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
139
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
140
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|
|
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
55
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
56
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
57
61
|
- worktree_path — work here if set, else the current tree
|
|
58
62
|
|
|
59
63
|
## Procedure (embedded — self-contained)
|
|
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
61
65
|
2. Read spec_ref if provided.
|
|
62
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
63
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
64
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
65
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
66
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
67
72
|
step 0 for the rest of the task.
|
|
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
90
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
91
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
92
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
93
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
94
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
95
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
129
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
130
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
131
142
|
the slice carried no wiki material.
|
|
132
|
-
- graph_used — REQUIRED when the slice carried `
|
|
133
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
134
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
135
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
136
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
137
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
138
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
139
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
140
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|