@azure-id/orc 1.9.0 → 1.9.2

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 (134) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/README-id.md +57 -59
  3. package/README.md +53 -54
  4. package/bin/build-agents.js +109 -109
  5. package/bin/cli.js +262 -58
  6. package/bin/graph-audit.js +235 -0
  7. package/bin/graph-extract.js +308 -3
  8. package/bin/graph-gain.js +23 -3
  9. package/bin/graph-map.js +9 -1
  10. package/bin/graph-query.js +152 -10
  11. package/bin/graph-shard.js +6 -1
  12. package/bin/graph-signals.js +287 -4
  13. package/bin/graph.js +717 -658
  14. package/bin/onboarding-content.js +4 -4
  15. package/bin/pricing.json +207 -200
  16. package/bin/verify-contracts.js +117 -2
  17. package/bin/verify-package.js +11 -7
  18. package/bin/webui/css/04-motion.css +162 -152
  19. package/bin/webui/css/panels/knowledge.css +563 -116
  20. package/bin/webui/fixtures/extra.js +2036 -2036
  21. package/bin/webui/fixtures/hookui.js +5 -5
  22. package/bin/webui/fixtures/knowledge.js +21 -4
  23. package/bin/webui/fixtures/settings.js +305 -305
  24. package/bin/webui/i18n/en/knowledge.json +122 -4
  25. package/bin/webui/i18n/id/knowledge.json +122 -4
  26. package/bin/webui/js/panels/knowledge.js +573 -9
  27. package/bin/webui/js/panels/overview.js +13 -4
  28. package/mock-run/context-combiner.md +100 -100
  29. package/mock-run/orc-budget.md +534 -534
  30. package/mock-run/orc-challenge-council.md +262 -262
  31. package/mock-run/orc-ultra.md +103 -103
  32. package/package.json +1 -1
  33. package/templates/agents/MODEL-MAPPING.md +43 -43
  34. package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -56
  35. package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -60
  36. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -58
  37. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
  38. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
  39. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
  40. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
  41. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
  42. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
  43. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
  44. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
  45. package/templates/agents/orc-claude-writer-opus-5-med.md +55 -55
  46. package/templates/agents/orc-context-combiner-opus-5-high.md +88 -88
  47. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
  48. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
  49. package/templates/agents/orc-executor-haiku-4-5.md +2 -1
  50. package/templates/agents/orc-executor-opus-4-7-high.md +2 -1
  51. package/templates/agents/orc-executor-opus-4-7-med.md +2 -1
  52. package/templates/agents/orc-executor-opus-4-8-high.md +2 -1
  53. package/templates/agents/orc-executor-opus-5-high.md +4 -3
  54. package/templates/agents/orc-executor-opus-5-low.md +4 -3
  55. package/templates/agents/orc-executor-opus-5-med.md +4 -3
  56. package/templates/agents/orc-executor-sonnet-4-6-high.md +2 -1
  57. package/templates/agents/orc-executor-sonnet-4-6-med.md +2 -1
  58. package/templates/agents/orc-executor-sonnet-5-high.md +2 -1
  59. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -1
  60. package/templates/agents/orc-judge-opus-5-xhigh.md +85 -85
  61. package/templates/agents/orc-learn-writer-opus-5-low.md +73 -73
  62. package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -65
  63. package/templates/agents/orc-planner-mini-opus-5-med.md +4 -4
  64. package/templates/agents/orc-planner-mini-sonnet-5-high.md +1 -1
  65. package/templates/agents/orc-planner-opus-5-med.md +160 -160
  66. package/templates/agents/orc-recon-opus-5-low.md +18 -8
  67. package/templates/agents/orc-recon-sonnet-4-6-med.md +15 -5
  68. package/templates/agents/orc-retro-opus-5-med.md +3 -3
  69. package/templates/agents/orc-reviewer-opus-5-med.md +60 -60
  70. package/templates/agents/orc-scout-opus-5-low.md +40 -40
  71. package/templates/agents/orc-system-analyst-opus-5-high.md +120 -120
  72. package/templates/agents/orc-test-author-opus-5-med.md +71 -71
  73. package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
  74. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
  75. package/templates/agents/orc-verifier-opus-5-med.md +69 -69
  76. package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -81
  77. package/templates/commands/orc-ultra.md +17 -17
  78. package/templates/commands/orc-verify.md +11 -11
  79. package/templates/hooks/README.md +13 -3
  80. package/templates/hooks/orc-effort-guard.js +178 -178
  81. package/templates/hooks/orc-graph-hook.js +53 -7
  82. package/templates/hooks/orc-statusline.js +6 -6
  83. package/templates/skills/_shared/code-graph.md +57 -18
  84. package/templates/skills/_shared/config-precedence.md +198 -198
  85. package/templates/skills/_shared/extra-dispatch.md +1346 -1346
  86. package/templates/skills/_shared/opus5-only.md +8 -8
  87. package/templates/skills/_shared/phases/analyst-gates.md +136 -136
  88. package/templates/skills/_shared/phases/execution.md +4 -4
  89. package/templates/skills/_shared/phases/planning.md +3 -3
  90. package/templates/skills/_shared/phases/preflight.md +1 -1
  91. package/templates/skills/_shared/phases/review.md +4 -2
  92. package/templates/skills/_shared/phases/ship.md +1 -1
  93. package/templates/skills/_shared/phases/trace.md +3 -2
  94. package/templates/skills/_shared/read-ladder.md +14 -1
  95. package/templates/skills/_shared/return-validation.md +1 -1
  96. package/templates/skills/context-combiner/SKILL.md +1 -1
  97. package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
  98. package/templates/skills/orc/README.md +2 -2
  99. package/templates/skills/orc/SKILL.md +8 -8
  100. package/templates/skills/orc/config.md +9 -9
  101. package/templates/skills/orc/examples/full-run-mock.md +73 -73
  102. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  103. package/templates/skills/orc/references/preflight-report.md +2 -2
  104. package/templates/skills/orc/references/ultra-mode.md +3 -3
  105. package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
  106. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
  107. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -76
  108. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -45
  109. package/templates/skills/orc-analyze/SKILL.md +2 -2
  110. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
  111. package/templates/skills/orc-analyze/schemas/report-audit.md +83 -83
  112. package/templates/skills/orc-analyze/schemas/report-prose.md +63 -63
  113. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
  114. package/templates/skills/orc-challenge/README.md +142 -142
  115. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
  116. package/templates/skills/orc-challenge/references/council.md +315 -315
  117. package/templates/skills/orc-challenge/references/intake.md +171 -171
  118. package/templates/skills/orc-claude/SKILL.md +14 -14
  119. package/templates/skills/orc-diy/README.md +143 -143
  120. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  121. package/templates/skills/orc-doc/README.md +229 -229
  122. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
  123. package/templates/skills/orc-doc/references/chunking.md +527 -527
  124. package/templates/skills/orc-fast/SKILL.md +4 -4
  125. package/templates/skills/orc-learn/SKILL.md +14 -14
  126. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
  127. package/templates/skills/orc-mini/SKILL.md +16 -20
  128. package/templates/skills/orc-mini/references/complexity.md +25 -11
  129. package/templates/skills/orc-quick/SKILL.md +12 -13
  130. package/templates/skills/orc-quick/references/gh-mode.md +1 -1
  131. package/templates/skills/orc-quick/references/look.md +5 -5
  132. package/templates/skills/orc-verify/SKILL.md +15 -15
  133. package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
  134. package/templates/skills/orc-wiki/references/extra.md +1 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,208 @@ Format: `### v<version> — <title> _(<date>)_`.
10
10
 
11
11
  ---
12
12
 
13
+ ### v1.9.2 — the code graph gets its own tab, and Opus 5 becomes Opus 5.5 _(2026-09-23)_
14
+
15
+ **Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
16
+ is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
17
+ the top of this file.
18
+
19
+ - **Step 1 - release the command from the old package:** `npm uninstall -g orc`
20
+ - **Step 2 - install the current package:** `npm i -g @azure-id/orc`
21
+ - **Step 3 - re-apply it to your project:** `orc update`
22
+
23
+ **Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
24
+
25
+ **The code graph has its own tab.** Before this release the graph was one card
26
+ on the Knowledge ▸ Wiki tab: fourteen rows of exact numbers and no picture of
27
+ what any of them meant. `orc ui` ▸ Knowledge now has a sixth tab, **Code
28
+ graph**, and the card on the Wiki tab is gone. The tab reads top to bottom:
29
+
30
+ - **Where your code graph is now.** The four states `OFF` · `NONE` · `FRESH`
31
+ · `DRIFTED` as a ladder, with the action that moves the graph from one to
32
+ the next on each connector. The current state is lit and sends a ring
33
+ outward. Below it is the ONE action that state needs: the config command for
34
+ OFF (copy-able, never a button), the free `orc graph update` button for NONE
35
+ and DRIFTED, nothing for FRESH. The line a lane prints into the chat
36
+ (`line`) is shown verbatim.
37
+ - **How the code graph works.** Five stations — your code, the parser, the
38
+ map, the questions, the short card — with dots that run between them. The
39
+ first three are marked free; the card is marked as what costs context tokens.
40
+ The optional notes layer, the only part that can cost a model, is a separate
41
+ line with the current `code_graph_notes` value.
42
+ - **What a code graph looks like (an example, not your code).** Four files from
43
+ a made-up shop drawn as an SVG: files, symbols, calls (a pulse runs caller to
44
+ callee), refs and imports. Point at a dot, or Tab to it, and its edges light
45
+ up while a caption says what `orc graph ctx` would answer. A legend names
46
+ every mark.
47
+ - **Your graph, in numbers.** Files, symbols, symbols per file and generation
48
+ as tiles that count up to the CLI's own value; the added · changed · deleted
49
+ counts; and the density as a bar, per language when the CLI sent
50
+ `density.by_lang`.
51
+ - **What the graph cost, and what it probably saved.** `paid` (four stacked
52
+ parts) and `avoided` (solid to its low end, striped to its high end) on ONE
53
+ scale. Every read in `read_set`, in the CLI's order, with its count and one
54
+ line on what it answers; a read never asked keeps its slot, muted.
55
+ - **All the numbers, as the CLI sent them.** The old card, unchanged, minus the
56
+ chip and the button the ladder now carries.
57
+ - **What each word means.** Every term on the tab in four groups.
58
+
59
+ The pictures derive nothing: every number is `orc graph status --json` or
60
+ `orc graph gain --json`, drawn to scale. `prefers-reduced-motion` removes all
61
+ three new infinite animations with `display: none` and every finite one with
62
+ `animation: none`, and the tiles skip their count-up. The `graph-drifted`
63
+ doctor finding on Overview now opens the Code graph tab.
64
+
65
+ **Every Opus 5 agent now runs Opus 5.5 (`claude-opus-5-5`).** Every agent and
66
+ generated executor that shipped as `model: claude-opus-5` now ships as
67
+ `model: claude-opus-5-5`, and the prose that named "Opus 5" now names
68
+ "Opus 5.5". Opus 5.5 is cheaper than Opus 5, so the same pipeline costs less.
69
+ `bin/pricing.json` gains the `claude-opus-5-5` row ($4 input · $5 cache write
70
+ · $0.20 cache read · $20 output per million tokens, from the Claude pricing
71
+ page), and `orc budget` prices its forecasts against it.
72
+
73
+ What did NOT change: the agent NAMES (`orc-executor-opus-5-med` and the rest),
74
+ the `opus5_only` key and its "Opus 5-only" mode name. `claude-opus-5` stays
75
+ in the known-model list and keeps its price row, so an existing config and old
76
+ traces still validate and still price.
77
+
78
+ **What you have to do:** `orc update`, to install the new agent files.
79
+
80
+ ---
81
+
82
+ ### v1.9.1 — the graph that was paid for and never asked _(2026-09-23)_
83
+
84
+ **Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
85
+ is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
86
+ the top of this file.
87
+
88
+ - **Step 1 - release the command from the old package:** `npm uninstall -g orc`
89
+ - **Step 2 - install the current package:** `npm i -g @azure-id/orc`
90
+ - **Step 3 - re-apply it to your project:** `orc update`
91
+
92
+ **Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
93
+
94
+ The code graph was maintained far more than it was consulted, and the part that
95
+ WAS consulted cost more than the meter said. On one real Vue project the store
96
+ was at generation 93 with 19 recorded reads, the panel said `0 hook updates`
97
+ after the hook had run 35 of them, and 416 of 429 `.vue` files had no symbol at
98
+ all. This release makes an answer smaller, makes the meter tell the truth, says
99
+ when the map is thin and why, and teaches the parser to read the Vue Options API.
100
+
101
+ The version number is a patch because that was the release owner's call. The
102
+ release adds flags, one command and an engine change; every one is backward
103
+ compatible.
104
+
105
+ **What you have to do: nothing.** A store built by 1.9.0 reads `DRIFTED` once,
106
+ and the next preflight (`orc graph status --heal`) re-reads every file
107
+ automatically — measured at about 8 ms a file. Notes and function ids survive.
108
+ No config key changed.
109
+
110
+ **`--brief`: the answer a lane reads, without the rows it never prints.**
111
+
112
+ - Every `orc graph … --json` read takes `--brief`. It keeps the card, the line,
113
+ the trace, every scalar and every count, drops the row arrays, and prints
114
+ compact JSON. Without `--brief`, `--json` is unchanged — the 1.9.0 answers
115
+ are frozen as goldens and compared key for key.
116
+ - Measured on this repository (tokens):
117
+
118
+ | command | full | brief | card |
119
+ |---|---|---|---|
120
+ | `ctx <symbol>` | 2,773 | 734 | 600 |
121
+ | `ctx <file>` | 1,484 | 369 | 243 |
122
+ | `ctx --for-slice` (3 files) | 1,818 | 420 | 320 |
123
+ | `impact` (3 files) | 4,910 | 1,122 | 956 |
124
+ | `map` | 8,995 | 1,193 | 1,113 |
125
+ | `changes` | 5,228 | 934 | 681 |
126
+
127
+ −74 % to −87 %. Every payload call site now asks for it (46 of them).
128
+
129
+ **The CLI computes the lines the lanes used to assemble.**
130
+
131
+ - `orc graph changes` returns `totals`, the affected `tests[]`, a `tests_line`
132
+ and the `blast_line` `/orc-quick` prints. `--files=a,b` limits it to a set.
133
+ - `orc graph impact --complexity [--risk=<class>[@<file:line>],…]` returns
134
+ `/orc-mini`'s complexity line, its numbers and the `facts{}` the planner
135
+ pastes — impact and co-change in ONE process instead of one call per file.
136
+ The four thresholds are named constants in `bin/graph-signals.js`.
137
+
138
+ **The map says when it is thin, and why.**
139
+
140
+ - `orc graph status` prints the density (`1.9 symbols/file`) and `THIN` when a
141
+ repository of 30+ files has under 3 symbols per file and 40 %+ of its files
142
+ empty. A 1.9.0 store gets the numbers once, under `--heal`, without a new
143
+ generation.
144
+ - **`orc graph audit`** (new, never called by a lane): density by language, the
145
+ files the parser read as EMPTY, longest first, and the shape of each one's
146
+ first declaration — with the shapes that are a parser gap marked as such.
147
+ - `orc graph map` ranks a file with no symbol below every file that has one. It
148
+ is a rank, never a filter.
149
+
150
+ **The meter tells the truth.**
151
+
152
+ - **Fixed: `hook updates` was always 0.** The hook updated the graph and counted
153
+ it in the run's counters file, but never wrote the ledger row `orc graph gain`
154
+ counts. It writes a `hook-update` row now, and that row pays nothing.
155
+ - **Fixed: `paid` counted the card, not the answer.** The orchestrator receives
156
+ the whole `--json` answer, 4 to 8 times the card, and the meter called the card
157
+ EXACT. `paid.envelope` is everything beyond the card; the panel's paid row reads
158
+ `(cards · source · hints · envelope)`.
159
+ - `never_called` lists the reads this project has never made. It is a fact and
160
+ it carries no advice.
161
+
162
+ **The paid reads carry what they were paid for.**
163
+
164
+ - **`ctx <symbol> --callers-source`** adds six lines around each confident call
165
+ site (at most 5 callers), charged to the same budget after everything else.
166
+ Never an `AMBIGUOUS` candidate, never the target's own file, and a caller file
167
+ that changed since the index says so on its head line. The recon agents use it
168
+ for a blast radius.
169
+ - **`lsp_at`** on every symbol card — `{file, line, character}`, the character
170
+ 1-based. When a card says `AMBIGUOUS (n)` or `maybe <n>` and an `LSP` tool is
171
+ available, the read ladder, the recon agents and every executor now ask the
172
+ language server there before any Grep. `null` when it cannot be exact.
173
+ - **`wide reads`**: under `code_graph_hooks: on`, a subagent's whole-file read of
174
+ a file with 8+ symbols is COUNTED — no context, no trace line — and `orc graph
175
+ gain` prints the count. It is the number the decision to arm `on,read` by
176
+ default waits for. The default did not change.
177
+ - Under `on,read`, the wide-file hint names the run's own names first.
178
+
179
+ **The parser reads the Vue Options API (`graph@6`).**
180
+
181
+ - `export default {…}`, `defineComponent({…})` and `Vue.extend({…})` are a
182
+ `class`; every function-valued member at depth 1 and in `methods`, `computed`,
183
+ `watch`, `getters`, `mutations`, `actions`, `filters` and `provide` is a
184
+ `method` named `<Owner>.<name>`. `mixins` and `extends` are its bases.
185
+ - So `this.submit()` resolves LOCAL, a component reaches its mixin as
186
+ `inherited`, and `orc graph impact` on a mixin names every component that
187
+ mixes it in. The owner is the `name:` property, else the file name.
188
+ - An exported constant (`export const`, `exports.X =`, a key of
189
+ `module.exports = {…}`) is a `const` symbol with no calls. A `require(…)`
190
+ value is a re-export and is never one. A `<script setup>` or Svelte component
191
+ is one `class` named from its file.
192
+ - Both parsers name the same symbols: the heuristic one and the project's own
193
+ TypeScript, when it has one.
194
+ - Measured on this repository: the only change against the graph@5 parser is
195
+ 189 new constants and 34 new links to them; files with no symbol went 25 → 7.
196
+
197
+ **Limits, with the numbers.**
198
+
199
+ - **The live-session evaluation did not run for this release**, and no paid
200
+ evaluation round was made for `--callers-source` (identical runs flip about 9 %
201
+ of outcomes, so a small round would not show the effect). The deterministic
202
+ half is in the suite: 1,202 tests.
203
+ - **The Vue gate is measured on the user's project, not here.** The plan's gate
204
+ is under 20 % empty `.vue` files and 4+ symbols per file after the upgrade;
205
+ run the density command again after `orc graph status --heal` to check it.
206
+ - The THIN thresholds (30 files · 3 per file · 40 % empty) are provisional.
207
+ - `/orc-mini`'s spine is 4 lines shorter, not the 8 the plan asked for; the
208
+ prose that moved was one long line per step.
209
+ - The parser still does not read a `<template>`: `@click="submit"` is not a link.
210
+
211
+ Verify: 40 skills · 51 agent files · 214 contracts.
212
+
213
+ ---
214
+
13
215
  ### v1.9.0 — the lean lanes learn to look before they leap _(2026-09-21)_
14
216
 
15
217
  **Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
package/README-id.md CHANGED
@@ -7,13 +7,13 @@
7
7
  *Terima permintaan → pahami → rencanakan → beri nilai → kerjakan paralel → periksa → uji → kirim.*
8
8
 
9
9
  ![npm](https://img.shields.io/npm/v/%40azure-id%2Forc?style=for-the-badge&color=cb3837&logo=npm)
10
- ![Version](https://img.shields.io/badge/version-1.9.0-blue.svg?style=for-the-badge)
10
+ ![Version](https://img.shields.io/badge/version-1.9.2-blue.svg?style=for-the-badge)
11
11
  ![License](https://img.shields.io/badge/license-MIT-green.svg?style=for-the-badge)
12
12
  ![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg?style=for-the-badge)
13
13
  ![Claude Code](https://img.shields.io/badge/Claude_Code-Skills-purple.svg?style=for-the-badge)
14
14
  ![Dependencies](https://img.shields.io/badge/dependencies-zero-lightgrey.svg?style=for-the-badge)
15
15
 
16
- **Versi terbaru: v1.9.0** · diperbarui 21-09-2026 · [daftar perubahan lengkap](CHANGELOG.md)
16
+ **Versi terbaru: v1.9.2** · diperbarui 23-09-2026 · [daftar perubahan lengkap](CHANGELOG.md)
17
17
 
18
18
  **Ada di npm: [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc)** — `npm i -g @azure-id/orc`
19
19
 
@@ -271,7 +271,7 @@ pemakaian 5 jam, pemakaian mingguan, dan beberapa hal lain.
271
271
  | Perintah | Kegunaannya | Contoh jalannya |
272
272
  |---|---|---|
273
273
  | **`/orc`** | Alur penuh: terima → rencana → gelombang paralel bernilai → periksa → uji → kirim. Rajin menyimpan titik simpan; bisa dilanjutkan di sesi baru. | [lihat](mock-run/orc.md) |
274
- | **`/orc-ultra`** | Sama, ditambah penasihat Opus 5 **xhigh** dan tiga gerbang penilaian. Analisis dalam, pola kode, tes, dan keamanan dipaksa menyala. Memang mahal. | [lihat](mock-run/orc-ultra.md) |
274
+ | **`/orc-ultra`** | Sama, ditambah penasihat Opus 5.5 **xhigh** dan tiga gerbang penilaian. Analisis dalam, pola kode, tes, dan keamanan dipaksa menyala. Memang mahal. | [lihat](mock-run/orc-ultra.md) |
275
275
  | **`/orc-mini`** | Satu agen Sonnet 5, satu pemeriksaan build + tes, lalu kirim. Melewati review penuh dan pengujian. Satu baris **pembacaan kompleksitas** berisi angka menawarkan lane penuh kalau perubahannya lebih luas dari satu area. Bisa pindah ke alur penuh di tengah jalan kalau diminta. | [lihat](templates/skills/orc-mini/examples/mini-run-mock.md) |
276
276
  | **`/orc-fast`** | Lane tercepat. Butuh wiki yang masih segar **dan** pola kode yang sudah tersimpan; kalau ada, ia melewati tahap analis dan perencana sepenuhnya. Kalau salah satu syarat tidak ada, ia mundur ke `/orc-mini` — obrolan tidak pernah berhenti. | [lihat](mock-run/orc-fast.md) |
277
277
  | **`/orc-quick`** | Minta apa saja: perbaikan kecil, pertanyaan, mencari bug, menaikkan versi dependensi, komentar PR. Lihat → tanya sekali → kerjakan. **Selalu bertanya agen mana yang mau dipakai**, dan tidak ada pengaturan yang bisa mengubah itu. Satu **defect direproduksi merah dulu sebelum diperbaiki**. | [lihat](mock-run/orc-quick.md) |
@@ -478,6 +478,24 @@ orc graph gain # apa yang dimasukkan peta, dan perkiraan
478
478
  `findstr`) — dan semua yang diberikannya ditandai sebagai data repositori,
479
479
  bukan perintah. Matikan dengan `orc config set code_graph_hooks off`; petanya
480
480
  tetap bekerja.
481
+ - **`--brief` adalah jawaban yang dibaca lane** (v1.9.1). Bersama `--json`, ia
482
+ menyimpan kartu, baris, trace dan setiap hitungan, lalu membuang larik baris
483
+ yang tidak pernah dicetak lane — 74 % sampai 87 % lebih kecil di repositori
484
+ ini. Setiap panggilan lane memakainya; tanpa itu, `--json` tidak berubah.
485
+ - **Graf membaca Vue Options API** (v1.9.1, mesin `graph@6`). Komponen, mixin
486
+ dan modul Vuex menjadi class, setiap fungsi di dalamnya menjadi method, dan
487
+ `mixins` menjadi basisnya — jadi `this.submit()` adalah tautan, dan `impact`
488
+ pada satu mixin menyebut setiap komponen yang memakainya. Konstanta yang
489
+ diekspor dan komponen `<script setup>` juga diberi nama. Store dari versi
490
+ lama memperbarui dirinya sendiri satu kali, di preflight berikutnya.
491
+ - **Graf memberi tahu kapan petanya tipis, dan kenapa.** `orc graph status`
492
+ mencetak jumlah simbol per berkas dan `THIN` jika sebagian besar berkas tidak
493
+ punya simbol. `orc graph audit` menulis berkas-berkas itu per bahasa, yang
494
+ terpanjang lebih dulu, dengan bentuk masing-masing.
495
+ - **Kartu simbol bisa membawa baris milik pemanggilnya** (`--callers-source`:
496
+ enam baris di sekitar setiap titik panggil yang pasti) dan menyebut di mana
497
+ language server harus melihat (`lsp_at`) jika peta hanya bisa bilang
498
+ `AMBIGUOUS`.
481
499
 
482
500
  Kontraknya: `templates/skills/_shared/code-graph.md`. Hook-nya:
483
501
  `templates/hooks/README.md`.
@@ -768,65 +786,45 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
768
786
  **Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
769
787
  hanya mencetak yang lebih baru dari versi yang Anda punya.
770
788
 
771
- ### v1.9.0 - lane ramping belajar melihat dulu sebelum melompat _(21-09-2026)_
772
-
773
- `/orc-quick` dan `/orc-mini` adalah dua lane yang paling sering dipakai orang,
774
- dan keduanya bekerja setengah buta. Graf kode bisa memberi tahu mereka DI MANA
775
- satu simbol berada, dan dilarang memberi tahu APA YANG RUSAK. Perbaikan bug
776
- tidak pernah ditunjukkan gagal lebih dulu. Pekerjaan baca-saja dikirim lewat
777
- nama model, jadi tidak ada satu pun bagian ORC yang bisa melihatnya.
778
-
779
- **Sekarang bug ditunjukkan MERAH dulu sebelum diperbaiki.** Permintaan seperti
780
- *"halaman orders mengembalikan 500, cari dan perbaiki"* digolongkan sebagai
781
- **defect**, dan agen eksekutor menulis reproduksinya LEBIH DULU — satu test yang
782
- gagal dalam framework Anda sendiri, atau satu perintah — menjalankannya sampai
783
- merah, memperbaikinya, lalu menjalankannya lagi sampai hijau. Kedua jalannya
784
- dicetak dan keduanya masuk ke jejak. Reproduksi yang tidak bisa ditulis menjadi
785
- `repro: none` beserta alasannya, dan catatannya berbunyi **tidak tereproduksi** —
786
- diulang lagi saat penawaran commit. Itu tidak pernah dikarang. Tanpa jalan merah,
787
- perbaikan hanya terbukti terhadap test suite Anda, yang sudah hijau sebelum dan
788
- sesudahnya; dengan jalan merah, perbaikan terbukti terhadap bug yang Anda
789
- laporkan.
790
-
791
- **Kedua lane sekarang boleh bertanya apa yang rusak.** `/orc-quick` mendapat
792
- `map`, `changes` dan `coverage`; `/orc-mini` mendapat `map`, `impact`, `changes`
793
- dan `cochange`. **Test yang terdampak dijalankan lebih dulu** — termasuk test
794
- yang sampai ke perubahan lewat URL — dan setiap catatan membawa satu baris
795
- radius dampak, tempat kata `risk` tidak pernah muncul tanpa alasannya.
796
- Permintaan yang tidak menyebut satu berkas pun sekarang dimulai dengan
797
- `orc graph map --focus`, bukan dengan tebakan nama berkas.
798
-
799
- **Pembacaan kompleksitas `/orc-mini` membawa angka.** Dulu itu satu kalimat
800
- penilaian; sekarang satu baris berisi hitungan dan empat ambang yang
801
- masing-masing menyebut kenapa angkanya segitu: pemanggil di 4 berkas atau lebih
802
- di luar rencana, 8 pemanggil atau lebih, kelas risiko apa pun yang dikutip, atau
803
- satu berkas yang menurut riwayat selalu ikut tersentuh. Itu **tawaran, bukan
804
- perpindahan**, dan kalau Anda tetap lanjut, angkanya ditulis ke catatan
805
- keputusan supaya `/orc-retro` nanti bisa menggeser ambangnya.
806
-
807
- **Pekerjaan baca-saja sekarang agen sungguhan.** Recon adalah sepasang agen
808
- tetap — `orc-recon-sonnet-4-6-med` dan `orc-recon-opus-5-low` — dengan kontrak
809
- pengembalian, terlihat di jejak dan di `orc run inflight`. Pilihan
810
- `other — sebut satu model` tetap ada sebagai jalan keluar. Gerbangnya sekarang
811
- boleh mencetak `suggested` di samping satu baris BESERTA alasannya, dan ia tetap
812
- tidak pernah memilih: setiap menu berakhir dengan *pilihan Anda — tidak ada yang
813
- berjalan sampai Anda menjawab*.
814
-
815
- **Kedua lane lebih murah untuk dimuat.** Dua deskripsi yang dibayar setiap sesi
816
- turun dari 619 ke 326 dan dari 493 ke 294 karakter, dengan setiap frasa pemicu
817
- tetap utuh. Kartu aturan dalam potongan `/orc-quick` sekarang berbentuk ringkas —
818
- sekitar 1.460 token, bukan 3.469 — yang menjaga id, judul dan instruksi setiap
819
- aturan HARD, dan hanya melepas contoh-contohnya.
820
-
821
- **Rilis ini tidak menurunkan tagihan Anda**, dan tidak mengklaim begitu.
822
- Klaimnya adalah kebenaran, keterlacakan, dan lebih sedikit bolak-balik.
823
- **Evaluasi sesi langsung tidak dijalankan** — setengah bagian deterministiknya
824
- ada di test suite, tetapi tiga gate yang butuh orang menjalankan lane tidak
825
- tercapai, bukan lulus. CHANGELOG menyebutkan satu per satu.
789
+ ### v1.9.2 - graf kode mendapat tab sendiri, dan Opus 5 menjadi Opus 5.5 _(23-09-2026)_
790
+
791
+ **Graf kode punya tab sendiri.** `orc ui` ▸ Knowledge ▸ **Code graph**
792
+ menggantikan satu kartu di tab Wiki. Tab ini menunjukkan, berurutan:
793
+
794
+ - **Posisi graf Anda sekarang** — empat status (OFF · NONE · FRESH · DRIFTED)
795
+ sebagai tangga. Status saat ini menyala, dan satu tindakan yang dibutuhkan
796
+ ada di bawahnya.
797
+ - **Cara kerja graf kode** — lima langkah beranimasi, dari file Anda sampai
798
+ kartu singkat yang dibaca agent. Tiga langkah pertama gratis.
799
+ - **Seperti apa graf kode** — contoh graf (bukan kode Anda). Arahkan pointer ke
800
+ sebuah titik untuk melihat pemanggil dan yang dipanggilnya.
801
+ - **Graf Anda, dalam angka** — file, simbol, kepadatan per bahasa, dan apa yang
802
+ berubah sejak pembuatan terakhir.
803
+ - **Biaya graf, dan perkiraan hematnya** — dibayar (persis) dan dihindari
804
+ (perkiraan, digambar sebagai rentang) pada satu skala, dan pertanyaan yang
805
+ diajukan lane.
806
+ - **Arti setiap kata** — setiap istilah di tab ini, dengan kata sederhana.
807
+
808
+ Temuan DRIFTED di Overview sekarang membuka tab ini. Reduced motion menghapus
809
+ semua animasi.
810
+
811
+ **Setiap agent Opus 5 sekarang memakai Opus 5.5.** Model id-nya
812
+ `claude-opus-5-5` (sebelumnya `claude-opus-5`): executor, scout, analis,
813
+ planner, reviewer, verifier, judge, dan setiap agent Opus lainnya. Opus 5.5
814
+ lebih murah: $4 input, $5 cache write, $0,20 cache read, dan $20 output per
815
+ sejuta token. `bin/pricing.json` punya baris baru, dan `orc budget`
816
+ memakainya.
817
+
818
+ **Yang harus Anda lakukan:** jalankan `orc update` untuk memasang file agent
819
+ yang baru. NAMA agent tidak berubah, jadi `rubric_bands_override`,
820
+ `fixed_executor` dan `opus5_only` tetap berjalan. Config yang masih menyebut
821
+ `claude-opus-5` tetap valid.
826
822
 
827
823
  <details>
828
- <summary><strong>Rilis sebelumnya</strong> — 119 rilis, hanya judulnya. Teks lengkapnya (dalam bahasa Inggris) ada di <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
824
+ <summary><strong>Rilis sebelumnya</strong> — 121 rilis, hanya judulnya. Teks lengkapnya (dalam bahasa Inggris) ada di <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
829
825
 
826
+ - **v1.9.1** — the graph that was paid for and never asked · _2026-09-23_
827
+ - **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
830
828
  - **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
831
829
  - **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
832
830
  - **v1.8.0** — the code graph: a map of the code that stays fresh · _2026-09-16_
package/README.md CHANGED
@@ -7,14 +7,14 @@
7
7
  *Intake → analyze → plan → score → parallel subagents → review → verify → ship.*
8
8
 
9
9
  ![npm](https://img.shields.io/npm/v/%40azure-id%2Forc?style=for-the-badge&color=cb3837&logo=npm)
10
- ![Version](https://img.shields.io/badge/version-1.9.0-blue.svg?style=for-the-badge)
10
+ ![Version](https://img.shields.io/badge/version-1.9.2-blue.svg?style=for-the-badge)
11
11
  ![License](https://img.shields.io/badge/license-MIT-green.svg?style=for-the-badge)
12
12
  ![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg?style=for-the-badge)
13
13
  ![Claude Code](https://img.shields.io/badge/Claude_Code-Skills-purple.svg?style=for-the-badge)
14
14
  ![Dependencies](https://img.shields.io/badge/dependencies-zero-lightgrey.svg?style=for-the-badge)
15
15
  ![GitHub stars](https://img.shields.io/github/stars/azure-id/orc?style=for-the-badge&color=yellow)
16
16
 
17
- **Latest: v1.9.0** · updated 2026-09-21 · [full changelog](CHANGELOG.md)
17
+ **Latest: v1.9.2** · updated 2026-09-23 · [full changelog](CHANGELOG.md)
18
18
 
19
19
  **On npm: [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc)** — `npm i -g @azure-id/orc`
20
20
 
@@ -250,7 +250,7 @@ ORC have terminal hook to see: Context Window %, 5 Hour usage %, Weekly usage %
250
250
  | Command | What it does | Mocked run |
251
251
  |---|---|---|
252
252
  | **`/orc`** | The full pipeline: intake → plan → scored parallel waves → review → verify → ship. Checkpoints eagerly; resumes in a fresh session. | [see it](mock-run/orc.md) |
253
- | **`/orc-ultra`** | The same, plus an Opus 5 **xhigh** advisor and three judgment gates. Deep analysis, patterns, tests and security forced on. Costly by design. | [see it](mock-run/orc-ultra.md) |
253
+ | **`/orc-ultra`** | The same, plus an Opus 5.5 **xhigh** advisor and three judgment gates. Deep analysis, patterns, tests and security forced on. Costly by design. | [see it](mock-run/orc-ultra.md) |
254
254
  | **`/orc-mini`** | One Sonnet 5 executor, a build + test smoke gate, ship. Skips full review and verify. A one-line **complexity read** with counts behind it offers the full lane when the change is wider than one area. Switches to the full flow mid-run on request. | [see it](templates/skills/orc-mini/examples/mini-run-mock.md) |
255
255
  | **`/orc-fast`** | The fastest lane. Needs a fresh wiki **and** a cached code pattern; then it skips the analyst and planner entirely. A missing prerequisite falls back to `/orc-mini` — the chat never stops. | [see it](mock-run/orc-fast.md) |
256
256
  | **`/orc-quick`** | Ask for anything: a fix, a question, a defect hunt, a dependency bump, PR comments. Look → ask once → do. **It always asks which agent to dispatch**, and no setting can change that. A defect is **reproduced red before it is fixed**. | [see it](mock-run/orc-quick.md) |
@@ -445,6 +445,22 @@ orc graph gain # what the map put in, and an estimate of
445
445
  for a Grep, a Glob and a shell search (`grep`, `rg`, `git grep`, `findstr`) —
446
446
  and everything it hands over is labelled repository data, never an instruction.
447
447
  Switch it off with `orc config set code_graph_hooks off`; the map still works.
448
+ - **`--brief` is the answer a lane reads** (v1.9.1). With `--json` it keeps the
449
+ card, the line, the trace and every count, and drops the row arrays a lane
450
+ never prints — 74 % to 87 % smaller on this repository. Every lane call uses
451
+ it; without it, `--json` is unchanged.
452
+ - **It reads the Vue Options API** (v1.9.1, engine `graph@6`). A component, a
453
+ mixin and a Vuex module are a class, each function inside them is a method,
454
+ and `mixins` are its bases — so `this.submit()` is a link, and `impact` on a
455
+ mixin names every component that uses it. Exported constants and
456
+ `<script setup>` components are named too. A store built by an older version
457
+ upgrades itself once, at the next preflight.
458
+ - **It says when the map is thin, and why.** `orc graph status` prints the
459
+ symbols per file and `THIN` when most files hold none. `orc graph audit` lists
460
+ those files by language, longest first, with the shape of each one.
461
+ - **A symbol card can carry its callers' own lines** (`--callers-source`: six
462
+ lines around each confident call site) and says where a language server
463
+ should look (`lsp_at`) when the map can only say `AMBIGUOUS`.
448
464
 
449
465
  The contract: `templates/skills/_shared/code-graph.md`. The hook:
450
466
  `templates/hooks/README.md`.
@@ -712,60 +728,43 @@ a current audit: [EVAL-REPORT.md](EVAL-REPORT.md).
712
728
  **Full history: [CHANGELOG.md](CHANGELOG.md)** — or `orc changelog`, which prints
713
729
  only what is newer than the version you have.
714
730
 
715
- ### v1.9.0 — the lean lanes learn to look before they leap _(2026-09-21)_
716
-
717
- `/orc-quick` and `/orc-mini` are the two lanes people reach for most, and both
718
- were working half blind. The code graph could tell them WHERE a symbol is and
719
- was forbidden from telling them WHAT BREAKS. A bug fix was never shown failing
720
- before it was fixed. Read-only work was dispatched by model name, so nothing in
721
- ORC could see it.
722
-
723
- **A bug is now shown RED before it is fixed.** A request like *"the orders page
724
- returns 500, find it and fix it"* is sorted as a **defect**, and the executor
725
- writes the reproduction FIRST — a failing test in your own framework, or a
726
- command — runs it red, implements, and runs it green. Both runs are printed and
727
- both reach the trace. A reproduction that cannot be written is `repro: none`
728
- with its reason, and the entry says **not reproduced** — repeated at the commit
729
- offer. It is never faked. Without the red run a fix is proven against your test
730
- suite, which was green before and after; with it, the fix is proven against the
731
- bug you reported.
732
-
733
- **Both lanes may now ask what breaks.** `/orc-quick` gained `map`, `changes` and
734
- `coverage`; `/orc-mini` gained `map`, `impact`, `changes` and `cochange`. The
735
- **affected tests run first** — a test that reaches the change through a URL
736
- included — and every entry carries a blast-radius line where a `risk` word never
737
- appears without its reason. A request that names no file now starts with
738
- `orc graph map --focus` instead of a guess at a filename.
739
-
740
- **`/orc-mini`'s complexity read carries numbers.** It was a sentence of
741
- judgment; it is now one line with counts and four thresholds that each state why
742
- that number: callers in 4 or more files outside the plan, 8 or more callers, any
743
- cited risk class, or a file history says is always touched alongside yours. It
744
- is an **offer, never a switch**, and continuing writes the numbers into the
745
- decision log so a later `/orc-retro` can move a threshold.
746
-
747
- **Read-only work is a real agent.** Recon is a pinned pair —
748
- `orc-recon-sonnet-4-6-med` and `orc-recon-opus-5-low` — with a return contract,
749
- visible in the trace and in `orc run inflight`. `other — name a model` stays as
750
- the escape hatch. The gate may now print `suggested` beside one line WITH its
751
- reason, and it still never chooses: every menu ends with *your choice — nothing
752
- runs until you answer*.
753
-
754
- **Both lanes cost less to load.** The two descriptions, which every session
755
- pays for, went 619 → 326 and 493 → 294 characters with every trigger phrase
756
- kept. The rules card in a `/orc-quick` slice is now a compact form — about 1,460
757
- tokens instead of 3,469 — that keeps every HARD rule's id, title and instruction
758
- and loses only the worked examples.
759
-
760
- **It does not lower your bill**, and this release does not claim it does. The
761
- claim is correctness, traceability and fewer round trips. **The live-session
762
- evaluation did not run** — the deterministic half is in the test suite, but the
763
- three gates that need a person driving a lane are unmet, not passed. The
764
- CHANGELOG names each one.
731
+ ### v1.9.2 — the code graph gets its own tab, and Opus 5 becomes Opus 5.5 _(2026-09-23)_
732
+
733
+ **The code graph has its own tab.** `orc ui` ▸ Knowledge ▸ **Code graph**
734
+ replaces the one card on the Wiki tab. The tab shows, in this order:
735
+
736
+ - **Where your graph is now** — the four states (OFF · NONE · FRESH · DRIFTED)
737
+ as a ladder. The current state is lit, and the one action it needs is below.
738
+ - **How the code graph works** — five animated steps, from your files to the
739
+ short card an agent reads. The first three are free.
740
+ - **What a code graph looks like** — an example graph (not your code). Put the
741
+ pointer on a dot to see its callers and callees.
742
+ - **Your graph, in numbers** — files, symbols, density per language, and what
743
+ changed since the last build.
744
+ - **What the graph cost, and what it probably saved** — paid (exact) and
745
+ avoided (an estimate, drawn as a range) on one scale, and which reads lanes
746
+ asked.
747
+ - **What each word means** — every term on the tab, in plain words.
748
+
749
+ A DRIFTED finding on Overview now opens this tab. Reduced motion removes every
750
+ animation.
751
+
752
+ **Every Opus 5 agent now runs Opus 5.5.** The model id is `claude-opus-5-5`
753
+ (was `claude-opus-5`): executors, scouts, the analyst, the planner, the
754
+ reviewer, the verifier, the judges and every other Opus agent. Opus 5.5 costs
755
+ less: $4 input, $5 cache write, $0.20 cache read and $20 output per million
756
+ tokens. `bin/pricing.json` has the new row, and `orc budget` uses it.
757
+
758
+ **What you have to do:** run `orc update` to install the new agent files. The
759
+ agent NAMES did not change, so `rubric_bands_override`, `fixed_executor` and
760
+ `opus5_only` keep working. A config that still names `claude-opus-5` is still
761
+ valid.
765
762
 
766
763
  <details>
767
- <summary><strong>Earlier releases</strong> — 119 of them, titles only. Full text in <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
764
+ <summary><strong>Earlier releases</strong> — 121 of them, titles only. Full text in <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
768
765
 
766
+ - **v1.9.1** — the graph that was paid for and never asked · _2026-09-23_
767
+ - **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
769
768
  - **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
770
769
  - **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
771
770
  - **v1.8.0** — the code graph: a map of the code that stays fresh · _2026-09-16_