@azure-id/orc 2.0.2 → 2.1.1

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 (129) hide show
  1. package/CHANGELOG.md +455 -0
  2. package/README-id.md +52 -23
  3. package/README.md +36 -20
  4. package/bin/build-agents.js +205 -206
  5. package/bin/clear-logs.js +620 -0
  6. package/bin/cli.js +47417 -46420
  7. package/bin/fix.js +459 -0
  8. package/bin/gotcha.js +288 -8
  9. package/bin/habit.js +1538 -1453
  10. package/bin/mockrun-catalog.js +3 -0
  11. package/bin/onboarding-content.js +2 -1
  12. package/bin/pricing.json +28 -21
  13. package/bin/trace-write.js +869 -657
  14. package/bin/verify-contracts.js +5552 -5471
  15. package/bin/verify-package.js +716 -705
  16. package/bin/webui/api.js +125 -6
  17. package/bin/webui/css/panels/hookui.css +79 -0
  18. package/bin/webui/fixtures/behaviour.js +30 -0
  19. package/bin/webui/fixtures/extra.js +2036 -2036
  20. package/bin/webui/fixtures/flow.js +81 -81
  21. package/bin/webui/fixtures/hookui.js +506 -431
  22. package/bin/webui/fixtures/index.js +32 -3
  23. package/bin/webui/fixtures/knowledge.js +2 -2
  24. package/bin/webui/fixtures/maintenance.js +123 -42
  25. package/bin/webui/fixtures/rules.js +1007 -1002
  26. package/bin/webui/fixtures/settings.js +6 -7
  27. package/bin/webui/fixtures/stats.js +9 -6
  28. package/bin/webui/fixtures/wait.js +98 -97
  29. package/bin/webui/i18n/en/behaviour.json +13 -0
  30. package/bin/webui/i18n/en/hookui.json +290 -194
  31. package/bin/webui/i18n/en/maintenance.json +71 -52
  32. package/bin/webui/i18n/en/settings.json +60 -60
  33. package/bin/webui/i18n/id/behaviour.json +13 -0
  34. package/bin/webui/i18n/id/hookui.json +290 -194
  35. package/bin/webui/i18n/id/maintenance.json +71 -52
  36. package/bin/webui/i18n/id/settings.json +60 -60
  37. package/bin/webui/js/05-banners.js +181 -172
  38. package/bin/webui/js/06-edit.js +193 -183
  39. package/bin/webui/js/panels/behaviour.js +77 -12
  40. package/bin/webui/js/panels/hookui.js +2196 -1691
  41. package/bin/webui/js/panels/maintenance.js +336 -235
  42. package/bin/webui/js/panels/settings.js +726 -719
  43. package/mock-run/INDEX.md +1 -0
  44. package/mock-run/a-normal-day.md +2 -2
  45. package/mock-run/extra-slots.md +177 -177
  46. package/mock-run/habits.md +1 -1
  47. package/mock-run/orc-aftermath.md +392 -392
  48. package/mock-run/orc-budget.md +29 -33
  49. package/mock-run/orc-cli.md +200 -200
  50. package/mock-run/orc-explain.md +86 -86
  51. package/mock-run/orc-extra.md +389 -392
  52. package/mock-run/orc-fast.md +2 -2
  53. package/mock-run/orc-fix.md +87 -0
  54. package/mock-run/orc-pattern.md +112 -112
  55. package/mock-run/orc-quick.md +146 -146
  56. package/mock-run/orc.md +4 -4
  57. package/package.json +1 -1
  58. package/templates/agents/MODEL-MAPPING.md +176 -173
  59. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +2 -2
  60. package/templates/agents/{orc-claude-writer-opus-5-med.md → orc-claude-writer-opus-5-low.md} +4 -4
  61. package/templates/agents/orc-executor-haiku-4-5.md +1 -1
  62. package/templates/agents/orc-executor-opus-5-low.md +1 -1
  63. package/templates/agents/orc-executor-sonnet-4-6-high.md +1 -1
  64. package/templates/agents/orc-executor-sonnet-4-6-med.md +1 -1
  65. package/templates/agents/orc-executor-sonnet-5-high.md +2 -2
  66. package/templates/agents/orc-executor-sonnet-5-low.md +155 -0
  67. package/templates/agents/orc-executor-sonnet-5-med.md +155 -0
  68. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +2 -2
  69. package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -2
  70. package/templates/agents/{orc-recon-sonnet-4-6-med.md → orc-recon-sonnet-5-med.md} +4 -4
  71. package/templates/agents/orc-retro-sonnet-5-high.md +2 -2
  72. package/templates/agents/{orc-reviewer-opus-5-med.md → orc-reviewer-opus-5-low.md} +4 -4
  73. package/templates/agents/{orc-wiki-scanner-opus-5-med.md → orc-wiki-scanner-opus-5-low.md} +3 -3
  74. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +2 -2
  75. package/templates/commands/orc-fast.md +10 -10
  76. package/templates/commands/orc-fix.md +18 -0
  77. package/templates/commands/orc-wiki.md +64 -64
  78. package/templates/hooks/README.md +75 -7
  79. package/templates/hooks/orc-session-hook.js +78 -3
  80. package/templates/hooks/orc-statusline-render.js +317 -23
  81. package/templates/hooks/orc-statusline.js +162 -49
  82. package/templates/hooks/orc-subagent-line.js +23 -5
  83. package/templates/hooks/orc-weather-fetch.js +123 -0
  84. package/templates/skills/_shared/extra-dispatch.md +1331 -1331
  85. package/templates/skills/_shared/gotchas.md +27 -7
  86. package/templates/skills/_shared/habits.md +2 -2
  87. package/templates/skills/_shared/opus5-only.md +137 -137
  88. package/templates/skills/_shared/phases/review.md +2 -2
  89. package/templates/skills/_shared/phases/trace-verbs.md +17 -3
  90. package/templates/skills/_shared/phases/trace.md +136 -136
  91. package/templates/skills/_shared/review-slice.md +28 -1
  92. package/templates/skills/_shared/wait.md +1 -0
  93. package/templates/skills/orc/README.md +2 -2
  94. package/templates/skills/orc/SKILL.md +227 -227
  95. package/templates/skills/orc/config.md +25 -27
  96. package/templates/skills/orc/examples/full-run-mock.md +74 -73
  97. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  98. package/templates/skills/orc/references/preflight-report.md +3 -3
  99. package/templates/skills/orc/references/ultra-mode.md +1 -1
  100. package/templates/skills/orc/schemas/checkpoint.md +122 -122
  101. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +3 -3
  102. package/templates/skills/orc/subskills/orc-review-verify/core.md +1 -1
  103. package/templates/skills/orc-analyze/SKILL.md +4 -2
  104. package/templates/skills/orc-claude/SKILL.md +14 -14
  105. package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -65
  106. package/templates/skills/orc-diy/SKILL.md +5 -5
  107. package/templates/skills/orc-fast/SKILL.md +210 -208
  108. package/templates/skills/orc-fix/SKILL.md +110 -0
  109. package/templates/skills/orc-grill/SKILL.md +232 -232
  110. package/templates/skills/orc-grill/references/grill-doc.md +1 -1
  111. package/templates/skills/orc-mini/SKILL.md +4 -4
  112. package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -2
  113. package/templates/skills/orc-quick/README.md +536 -536
  114. package/templates/skills/orc-quick/SKILL.md +2 -2
  115. package/templates/skills/orc-quick/references/context-doc.md +145 -145
  116. package/templates/skills/orc-quick/references/dispatch-gate.md +220 -219
  117. package/templates/skills/orc-quick/references/gh-mode.md +4 -2
  118. package/templates/skills/orc-retro/SKILL.md +1 -1
  119. package/templates/skills/orc-retro/examples/retro-mock.md +16 -16
  120. package/templates/skills/orc-wiki/README.md +325 -325
  121. package/templates/skills/orc-wiki/SKILL.md +195 -195
  122. package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -37
  123. package/templates/skills/orc-wiki/references/extra.md +2 -2
  124. package/templates/skills/orc-wiki/references/partial-refresh.md +276 -271
  125. package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -1
  126. package/templates/skills/orc-wiki/references/phases/phase-2.md +3 -3
  127. package/templates/skills/orc-wiki/references/phases/phase-3c.md +3 -2
  128. package/templates/agents/orc-claude-writer-opus-4-8-high.md +0 -48
  129. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +0 -74
@@ -39,12 +39,12 @@ Fit gate + one question
39
39
 
40
40
  > nothing, follow api/orders/
41
41
 
42
- Dispatch orc-executor-sonnet-4-6-high
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-4-6 / high ✓
47
+ returned as: claude-sonnet-5-5 / medium ✓
48
48
 
49
49
  Smoke gate
50
50
  build ✓
@@ -0,0 +1,87 @@
1
+ # Mock run — `/orc-fix`
2
+
3
+ > You fixed something, and the fix says something about an earlier review.
4
+ > Type this, and ORC records what the fix fixes, so the next review sees it.
5
+
6
+ ---
7
+
8
+ ## 1. What it does
9
+
10
+ It records ONE fix and what it fixes. It looks at the evidence first: what
11
+ found the problem (Sonar, a failed check, a defect, a PR comment) and who wrote
12
+ the bad lines (an ORC run, an AI tool, a person). It asks you once. Then it
13
+ records the fix and goes back to exactly where you were.
14
+
15
+ It opens no run of its own. You can type it in the middle of another run, also
16
+ while that run waits at a question.
17
+
18
+ - **A run is open** → it only records. The run you are in makes the fix.
19
+ - **No run is open** → it can also make the fix, like `/orc-quick`: you pick
20
+ the agent, the build and the tests must be green, and then it records.
21
+
22
+ ---
23
+
24
+ ## 2. The run
25
+
26
+ Rina is in an `/orc-quick` run. Sonar flagged `computeTotal()` as too complex,
27
+ and those lines came from last week's `/orc-mini` run, which had a review.
28
+
29
+ ```
30
+ > /orc-fix this fixes Sonar typescript:S3776 in src/orders/total.ts:40-58
31
+ ```
32
+
33
+ ```
34
+ This fix: source sonar · introduced by ORC (run-mini-total-290926-101500)
35
+ - a Sonar rule key (typescript:S3776)
36
+ - git blame → 4c1e2a9: the commit falls inside the run's trace window and
37
+ src/orders/total.ts is in the run's changed set
38
+ host run: run-quick-total-fix-021026-091200 — record only, the host lane
39
+ makes the fix
40
+
41
+ 1. confirm 2. change the class 3. cancel
42
+ ```
43
+
44
+ ```
45
+ > 1
46
+ ```
47
+
48
+ ```
49
+ recorded F-9f2c41ab · sonar typescript:S3776 · introduced by ORC
50
+ (run-mini-total-290926-101500) · missed by review run-mini-total-290926-101500
51
+ · the next review sees it
52
+
53
+ Back to the run. Entry 3 is waiting for your "go".
54
+ ```
55
+
56
+ The next time a reviewer looks at `src/orders/total.ts`, its card has this line:
57
+
58
+ ```
59
+ fix: src/orders/total.ts — Sonar typescript:S3776 after ORC run
60
+ run-mini-total-290926-101500 · missed by review
61
+ ```
62
+
63
+ ---
64
+
65
+ ## 3. What to notice
66
+
67
+ - **It classifies from evidence, and your word wins.** `orc fix classify` reads
68
+ `git blame`, the traces and the run snapshots. If you change the class, the
69
+ record says `class_by: user`.
70
+ - **"Missed by review" is computed.** Every review stores the line ranges it
71
+ read. A fix on those lines, from an earlier run, is a miss. ORC never guesses
72
+ it, and you never type it.
73
+ - **A fix is never a review.** The record's author is who FOUND the problem
74
+ (Sonar is a bot, a user report is a person). Review Quality counts reviews
75
+ apart, and shows fixes in their own block: **Fixes after review**.
76
+ - **A Sonar fix and the Sonar import are the same row.** With the issue key, the
77
+ record uses the importer's id, so the next `orc gotcha sync` completes it.
78
+ - **One trace line.** `orc fix record` writes ONE `FIX` line into the run you
79
+ are in. It never writes the run pointer.
80
+
81
+ ---
82
+
83
+ ## 4. Related
84
+
85
+ - The panel: `orc ui` ▸ Behaviour ▸ Review quality ▸ **Fixes after review**
86
+ - The records: `orc fix list`
87
+ - The Sonar import: [gotcha-import](gotcha-import.md)
@@ -1,112 +1,112 @@
1
- # Mock run — `/orc-pattern`
2
-
3
- > Learns how **your** code is actually written, and caches it, so every future
4
- > executor writes code that looks like yours.
5
-
6
- ---
7
-
8
- ## 1. What it does
9
-
10
- ORC ships a generic best-practice playbook for each language (React, Vue,
11
- Next.js, Angular, Express, NestJS, Django, FastAPI, Go, Postgres, plus a11y and
12
- performance rule packs). On its own, a playbook would fight your codebase.
13
-
14
- So the pattern is a **reconciliation** of two things, with two different rules:
15
-
16
- | Rule class | Example | Who wins |
17
- |---|---|---|
18
- | **Conventions** — style and shape | folder layout, naming, how you do DI | **Your project wins**, even if the playbook disagrees |
19
- | **Invariants** — correctness and security | no SQL built by string concat, no stack traces in a response, no index as a React key | **Always applied.** A project breaking these is buggy, not different |
20
-
21
- The result is cached at `.claude/orc/patterns/<lang>-pattern.md` and copied
22
- **word for word** into every executor slice from then on.
23
-
24
- ---
25
-
26
- ## 2. The run
27
-
28
- ```
29
- > /orc-pattern
30
- ```
31
-
32
- ```
33
- Languages I can see in this repo:
34
- express api/ 38 files no cached pattern
35
- react web/ 52 files no cached pattern
36
-
37
- Learning a pattern reads your most recently changed files with a subagent.
38
- That costs tokens once, and every run after it is cheaper and more accurate.
39
-
40
- Codify which? [both / express / react / none]
41
-
42
- > both
43
- ```
44
-
45
- ```
46
- Dispatching orc-pattern-codifier-sonnet-5-high (express) …
47
- returned as: claude-sonnet-5 / high ✓
48
-
49
- PATTERN — express source: reconciled 14 recent files read
50
-
51
- Conventions taken FROM YOUR CODE (the playbook lost these)
52
- · routes live in api/<area>/routes.ts, handlers in the same folder
53
- · every handler is `export async function`, never an arrow const
54
- · errors go through next(err) — you do not try/catch in handlers
55
- · money is always integer minor units (api/payments/*.ts, 6 files)
56
-
57
- Invariants KEPT from the playbook (not negotiable)
58
- · no SQL string interpolation — you use parameterised queries already ✓
59
- · no stack trace or raw error in a response body
60
- · every route that reads :id re-checks ownership
61
-
62
- Conflicts I will not guess about (1)
63
- · api/refunds/ uses try/catch in 3 handlers while api/orders/ uses
64
- next(err). Most recently modified wins → next(err). Say so if that is
65
- backwards and I will flip it.
66
-
67
- Written: .claude/orc/patterns/express-pattern.md
68
-
69
- Dispatching orc-pattern-codifier-sonnet-5-high (react) …
70
- Written: .claude/orc/patterns/react-pattern.md
71
- ```
72
-
73
- ---
74
-
75
- ## 3. How other lanes see it
76
-
77
- ```
78
- $ orc pattern status express
79
- express cached 2026-08-12 (exit 0)
80
-
81
- $ orc pattern status svelte
82
- svelte unknown language key (exit 2)
83
- keys come from orc-pattern/references/INDEX.md — it is a framework
84
- name, never a file extension
85
-
86
- $ orc pattern status go
87
- go not cached (exit 1)
88
- ```
89
-
90
- That exit code is how `/orc-fast` decides whether it is allowed to run. It is
91
- a deterministic probe, never a guess and never a file search — the `.claude/`
92
- folder is hidden, so a plain search would say "missing" from the wrong folder.
93
-
94
- ---
95
-
96
- ## 4. What to notice
97
-
98
- - **ORC does not codify by itself.** It sends a subagent, reads the answer,
99
- and writes the cache itself.
100
- - **The cache survives updates.** It lives outside `templates/`, so
101
- `orc update` never touches it.
102
- - **Ambiguity is reported once, not guessed silently.** The try/catch conflict
103
- above is a real example of that rule.
104
- - **A brand new language folder gets the plain playbook**, marked
105
- `source: generic` — there is nothing to reconcile yet.
106
-
107
- ---
108
-
109
- ## 5. Related
110
-
111
- - The lane that requires this: [`/orc-fast`](orc-fast.md)
112
- - Build the other half of the knowledge: [`/orc-wiki`](../templates/skills/orc-wiki/examples/wiki-run-mock.md)
1
+ # Mock run — `/orc-pattern`
2
+
3
+ > Learns how **your** code is actually written, and caches it, so every future
4
+ > executor writes code that looks like yours.
5
+
6
+ ---
7
+
8
+ ## 1. What it does
9
+
10
+ ORC ships a generic best-practice playbook for each language (React, Vue,
11
+ Next.js, Angular, Express, NestJS, Django, FastAPI, Go, Postgres, plus a11y and
12
+ performance rule packs). On its own, a playbook would fight your codebase.
13
+
14
+ So the pattern is a **reconciliation** of two things, with two different rules:
15
+
16
+ | Rule class | Example | Who wins |
17
+ |---|---|---|
18
+ | **Conventions** — style and shape | folder layout, naming, how you do DI | **Your project wins**, even if the playbook disagrees |
19
+ | **Invariants** — correctness and security | no SQL built by string concat, no stack traces in a response, no index as a React key | **Always applied.** A project breaking these is buggy, not different |
20
+
21
+ The result is cached at `.claude/orc/patterns/<lang>-pattern.md` and copied
22
+ **word for word** into every executor slice from then on.
23
+
24
+ ---
25
+
26
+ ## 2. The run
27
+
28
+ ```
29
+ > /orc-pattern
30
+ ```
31
+
32
+ ```
33
+ Languages I can see in this repo:
34
+ express api/ 38 files no cached pattern
35
+ react web/ 52 files no cached pattern
36
+
37
+ Learning a pattern reads your most recently changed files with a subagent.
38
+ That costs tokens once, and every run after it is cheaper and more accurate.
39
+
40
+ Codify which? [both / express / react / none]
41
+
42
+ > both
43
+ ```
44
+
45
+ ```
46
+ Dispatching orc-pattern-codifier-sonnet-5-high (express) …
47
+ returned as: claude-sonnet-5-5 / high ✓
48
+
49
+ PATTERN — express source: reconciled 14 recent files read
50
+
51
+ Conventions taken FROM YOUR CODE (the playbook lost these)
52
+ · routes live in api/<area>/routes.ts, handlers in the same folder
53
+ · every handler is `export async function`, never an arrow const
54
+ · errors go through next(err) — you do not try/catch in handlers
55
+ · money is always integer minor units (api/payments/*.ts, 6 files)
56
+
57
+ Invariants KEPT from the playbook (not negotiable)
58
+ · no SQL string interpolation — you use parameterised queries already ✓
59
+ · no stack trace or raw error in a response body
60
+ · every route that reads :id re-checks ownership
61
+
62
+ Conflicts I will not guess about (1)
63
+ · api/refunds/ uses try/catch in 3 handlers while api/orders/ uses
64
+ next(err). Most recently modified wins → next(err). Say so if that is
65
+ backwards and I will flip it.
66
+
67
+ Written: .claude/orc/patterns/express-pattern.md
68
+
69
+ Dispatching orc-pattern-codifier-sonnet-5-high (react) …
70
+ Written: .claude/orc/patterns/react-pattern.md
71
+ ```
72
+
73
+ ---
74
+
75
+ ## 3. How other lanes see it
76
+
77
+ ```
78
+ $ orc pattern status express
79
+ express cached 2026-08-12 (exit 0)
80
+
81
+ $ orc pattern status svelte
82
+ svelte unknown language key (exit 2)
83
+ keys come from orc-pattern/references/INDEX.md — it is a framework
84
+ name, never a file extension
85
+
86
+ $ orc pattern status go
87
+ go not cached (exit 1)
88
+ ```
89
+
90
+ That exit code is how `/orc-fast` decides whether it is allowed to run. It is
91
+ a deterministic probe, never a guess and never a file search — the `.claude/`
92
+ folder is hidden, so a plain search would say "missing" from the wrong folder.
93
+
94
+ ---
95
+
96
+ ## 4. What to notice
97
+
98
+ - **ORC does not codify by itself.** It sends a subagent, reads the answer,
99
+ and writes the cache itself.
100
+ - **The cache survives updates.** It lives outside `templates/`, so
101
+ `orc update` never touches it.
102
+ - **Ambiguity is reported once, not guessed silently.** The try/catch conflict
103
+ above is a real example of that rule.
104
+ - **A brand new language folder gets the plain playbook**, marked
105
+ `source: generic` — there is nothing to reconcile yet.
106
+
107
+ ---
108
+
109
+ ## 5. Related
110
+
111
+ - The lane that requires this: [`/orc-fast`](orc-fast.md)
112
+ - Build the other half of the knowledge: [`/orc-wiki`](../templates/skills/orc-wiki/examples/wiki-run-mock.md)
@@ -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-4-6-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-4-6-med
65
- returned as: claude-sonnet-4-6 / 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-4-6-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.
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,8 +73,8 @@ 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-4-6 med
77
- T3 checkout note box 2 files · imitate 35 sonnet-4-6 med
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
78
  T4 order page shows the note 1 file · mechanical 12 haiku-4-5
79
79
  T5 label text 1 file · mechanical 4 haiku-4-5
80
80
 
@@ -89,7 +89,7 @@ Pause every 2 waves. OK to start?
89
89
  ```
90
90
  ▶ W1 orc-executor-sonnet-5-high (T1)
91
91
  40% … 100% returned: build green, `npx vitest run db/` exit 0
92
- answered as: claude-sonnet-5 / high ✓ matches what I asked for
92
+ answered as: claude-sonnet-5-5 / high ✓ matches what I asked for
93
93
 
94
94
  ▶ W2 two agents at the same time
95
95
  T3 asked me a question: "note max length?" → your call:
@@ -113,7 +113,7 @@ Pause every 2 waves. OK to start?
113
113
  ### Phases 5–6 — Review, then verify
114
114
 
115
115
  ```
116
- Review (orc-reviewer-opus-5-med):
116
+ Review (orc-reviewer-opus-5-low):
117
117
  P1 note is not length-checked on the server — api/orders/create.ts:44
118
118
  I re-read line 44 myself. The quote matches. Fix it? > yes
119
119
  P3 naming nit ×2 (counted, not fixed)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-id/orc",
3
- "version": "2.0.2",
3
+ "version": "2.1.1",
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"