@azure-id/orc 1.8.2 → 1.9.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.
- package/CHANGELOG.md +299 -0
- package/README-id.md +68 -51
- package/README.md +60 -45
- package/bin/cli.js +301 -39
- package/bin/graph-audit.js +235 -0
- package/bin/graph-extract.js +308 -3
- package/bin/graph-gain.js +23 -3
- package/bin/graph-map.js +9 -1
- package/bin/graph-query.js +152 -10
- package/bin/graph-shard.js +6 -1
- package/bin/graph-signals.js +287 -4
- package/bin/graph.js +717 -658
- package/bin/verify-contracts.js +277 -61
- package/bin/verify-package.js +19 -1
- package/bin/webui/fixtures/knowledge.js +21 -4
- package/bin/webui/i18n/en/knowledge.json +5 -2
- package/bin/webui/i18n/id/knowledge.json +5 -2
- package/bin/webui/js/panels/knowledge.js +21 -2
- package/mock-run/orc-quick.md +141 -113
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +15 -5
- package/templates/agents/orc-executor-haiku-4-5.md +19 -1
- package/templates/agents/orc-executor-opus-4-7-high.md +19 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +19 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +19 -1
- package/templates/agents/orc-executor-opus-5-high.md +19 -1
- package/templates/agents/orc-executor-opus-5-low.md +19 -1
- package/templates/agents/orc-executor-opus-5-med.md +19 -1
- package/templates/agents/orc-executor-sonnet-4-6-high.md +19 -1
- package/templates/agents/orc-executor-sonnet-4-6-med.md +19 -1
- package/templates/agents/orc-executor-sonnet-5-high.md +19 -1
- package/templates/agents/orc-planner-mini-opus-5-med.md +75 -69
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +73 -67
- package/templates/agents/orc-recon-opus-5-low.md +109 -0
- package/templates/agents/orc-recon-sonnet-4-6-med.md +109 -0
- package/templates/commands/orc-mini.md +10 -12
- package/templates/commands/orc-quick.md +20 -33
- package/templates/hooks/README.md +11 -1
- package/templates/hooks/orc-graph-hook.js +53 -7
- package/templates/hooks/orc-trace.js +476 -471
- package/templates/skills/_shared/code-graph.md +56 -17
- package/templates/skills/_shared/phases/execution.md +4 -4
- package/templates/skills/_shared/phases/planning.md +3 -3
- package/templates/skills/_shared/phases/preflight.md +1 -1
- package/templates/skills/_shared/phases/review.md +3 -1
- package/templates/skills/_shared/phases/rules.md +172 -159
- package/templates/skills/_shared/phases/ship.md +1 -1
- package/templates/skills/_shared/phases/trace.md +4 -2
- package/templates/skills/_shared/phases/wiki-consult.md +9 -5
- package/templates/skills/_shared/read-ladder.md +14 -1
- package/templates/skills/_shared/return-validation.md +22 -0
- package/templates/skills/context-combiner/SKILL.md +13 -13
- package/templates/skills/orc/SKILL.md +1 -1
- package/templates/skills/orc/subskills/orc-execution/core.md +171 -159
- package/templates/skills/orc-fast/SKILL.md +3 -3
- package/templates/skills/orc-mini/SKILL.md +145 -137
- package/templates/skills/orc-mini/examples/mini-run-mock.md +64 -50
- package/templates/skills/orc-mini/references/complexity.md +119 -0
- package/templates/skills/orc-quick/README.md +495 -423
- package/templates/skills/orc-quick/SKILL.md +157 -212
- package/templates/skills/orc-quick/references/context-doc.md +145 -114
- package/templates/skills/orc-quick/references/defect.md +101 -0
- package/templates/skills/orc-quick/references/dispatch-gate.md +55 -24
- package/templates/skills/orc-quick/references/gh-mode.md +148 -127
- package/templates/skills/orc-quick/references/look.md +107 -0
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,305 @@ Format: `### v<version> — <title> _(<date>)_`.
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
### v1.9.1 — the graph that was paid for and never asked _(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 was maintained far more than it was consulted, and the part that
|
|
26
|
+
WAS consulted cost more than the meter said. On one real Vue project the store
|
|
27
|
+
was at generation 93 with 19 recorded reads, the panel said `0 hook updates`
|
|
28
|
+
after the hook had run 35 of them, and 416 of 429 `.vue` files had no symbol at
|
|
29
|
+
all. This release makes an answer smaller, makes the meter tell the truth, says
|
|
30
|
+
when the map is thin and why, and teaches the parser to read the Vue Options API.
|
|
31
|
+
|
|
32
|
+
The version number is a patch because that was the release owner's call. The
|
|
33
|
+
release adds flags, one command and an engine change; every one is backward
|
|
34
|
+
compatible.
|
|
35
|
+
|
|
36
|
+
**What you have to do: nothing.** A store built by 1.9.0 reads `DRIFTED` once,
|
|
37
|
+
and the next preflight (`orc graph status --heal`) re-reads every file
|
|
38
|
+
automatically — measured at about 8 ms a file. Notes and function ids survive.
|
|
39
|
+
No config key changed.
|
|
40
|
+
|
|
41
|
+
**`--brief`: the answer a lane reads, without the rows it never prints.**
|
|
42
|
+
|
|
43
|
+
- Every `orc graph … --json` read takes `--brief`. It keeps the card, the line,
|
|
44
|
+
the trace, every scalar and every count, drops the row arrays, and prints
|
|
45
|
+
compact JSON. Without `--brief`, `--json` is unchanged — the 1.9.0 answers
|
|
46
|
+
are frozen as goldens and compared key for key.
|
|
47
|
+
- Measured on this repository (tokens):
|
|
48
|
+
|
|
49
|
+
| command | full | brief | card |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| `ctx <symbol>` | 2,773 | 734 | 600 |
|
|
52
|
+
| `ctx <file>` | 1,484 | 369 | 243 |
|
|
53
|
+
| `ctx --for-slice` (3 files) | 1,818 | 420 | 320 |
|
|
54
|
+
| `impact` (3 files) | 4,910 | 1,122 | 956 |
|
|
55
|
+
| `map` | 8,995 | 1,193 | 1,113 |
|
|
56
|
+
| `changes` | 5,228 | 934 | 681 |
|
|
57
|
+
|
|
58
|
+
−74 % to −87 %. Every payload call site now asks for it (46 of them).
|
|
59
|
+
|
|
60
|
+
**The CLI computes the lines the lanes used to assemble.**
|
|
61
|
+
|
|
62
|
+
- `orc graph changes` returns `totals`, the affected `tests[]`, a `tests_line`
|
|
63
|
+
and the `blast_line` `/orc-quick` prints. `--files=a,b` limits it to a set.
|
|
64
|
+
- `orc graph impact --complexity [--risk=<class>[@<file:line>],…]` returns
|
|
65
|
+
`/orc-mini`'s complexity line, its numbers and the `facts{}` the planner
|
|
66
|
+
pastes — impact and co-change in ONE process instead of one call per file.
|
|
67
|
+
The four thresholds are named constants in `bin/graph-signals.js`.
|
|
68
|
+
|
|
69
|
+
**The map says when it is thin, and why.**
|
|
70
|
+
|
|
71
|
+
- `orc graph status` prints the density (`1.9 symbols/file`) and `THIN` when a
|
|
72
|
+
repository of 30+ files has under 3 symbols per file and 40 %+ of its files
|
|
73
|
+
empty. A 1.9.0 store gets the numbers once, under `--heal`, without a new
|
|
74
|
+
generation.
|
|
75
|
+
- **`orc graph audit`** (new, never called by a lane): density by language, the
|
|
76
|
+
files the parser read as EMPTY, longest first, and the shape of each one's
|
|
77
|
+
first declaration — with the shapes that are a parser gap marked as such.
|
|
78
|
+
- `orc graph map` ranks a file with no symbol below every file that has one. It
|
|
79
|
+
is a rank, never a filter.
|
|
80
|
+
|
|
81
|
+
**The meter tells the truth.**
|
|
82
|
+
|
|
83
|
+
- **Fixed: `hook updates` was always 0.** The hook updated the graph and counted
|
|
84
|
+
it in the run's counters file, but never wrote the ledger row `orc graph gain`
|
|
85
|
+
counts. It writes a `hook-update` row now, and that row pays nothing.
|
|
86
|
+
- **Fixed: `paid` counted the card, not the answer.** The orchestrator receives
|
|
87
|
+
the whole `--json` answer, 4 to 8 times the card, and the meter called the card
|
|
88
|
+
EXACT. `paid.envelope` is everything beyond the card; the panel's paid row reads
|
|
89
|
+
`(cards · source · hints · envelope)`.
|
|
90
|
+
- `never_called` lists the reads this project has never made. It is a fact and
|
|
91
|
+
it carries no advice.
|
|
92
|
+
|
|
93
|
+
**The paid reads carry what they were paid for.**
|
|
94
|
+
|
|
95
|
+
- **`ctx <symbol> --callers-source`** adds six lines around each confident call
|
|
96
|
+
site (at most 5 callers), charged to the same budget after everything else.
|
|
97
|
+
Never an `AMBIGUOUS` candidate, never the target's own file, and a caller file
|
|
98
|
+
that changed since the index says so on its head line. The recon agents use it
|
|
99
|
+
for a blast radius.
|
|
100
|
+
- **`lsp_at`** on every symbol card — `{file, line, character}`, the character
|
|
101
|
+
1-based. When a card says `AMBIGUOUS (n)` or `maybe <n>` and an `LSP` tool is
|
|
102
|
+
available, the read ladder, the recon agents and every executor now ask the
|
|
103
|
+
language server there before any Grep. `null` when it cannot be exact.
|
|
104
|
+
- **`wide reads`**: under `code_graph_hooks: on`, a subagent's whole-file read of
|
|
105
|
+
a file with 8+ symbols is COUNTED — no context, no trace line — and `orc graph
|
|
106
|
+
gain` prints the count. It is the number the decision to arm `on,read` by
|
|
107
|
+
default waits for. The default did not change.
|
|
108
|
+
- Under `on,read`, the wide-file hint names the run's own names first.
|
|
109
|
+
|
|
110
|
+
**The parser reads the Vue Options API (`graph@6`).**
|
|
111
|
+
|
|
112
|
+
- `export default {…}`, `defineComponent({…})` and `Vue.extend({…})` are a
|
|
113
|
+
`class`; every function-valued member at depth 1 and in `methods`, `computed`,
|
|
114
|
+
`watch`, `getters`, `mutations`, `actions`, `filters` and `provide` is a
|
|
115
|
+
`method` named `<Owner>.<name>`. `mixins` and `extends` are its bases.
|
|
116
|
+
- So `this.submit()` resolves LOCAL, a component reaches its mixin as
|
|
117
|
+
`inherited`, and `orc graph impact` on a mixin names every component that
|
|
118
|
+
mixes it in. The owner is the `name:` property, else the file name.
|
|
119
|
+
- An exported constant (`export const`, `exports.X =`, a key of
|
|
120
|
+
`module.exports = {…}`) is a `const` symbol with no calls. A `require(…)`
|
|
121
|
+
value is a re-export and is never one. A `<script setup>` or Svelte component
|
|
122
|
+
is one `class` named from its file.
|
|
123
|
+
- Both parsers name the same symbols: the heuristic one and the project's own
|
|
124
|
+
TypeScript, when it has one.
|
|
125
|
+
- Measured on this repository: the only change against the graph@5 parser is
|
|
126
|
+
189 new constants and 34 new links to them; files with no symbol went 25 → 7.
|
|
127
|
+
|
|
128
|
+
**Limits, with the numbers.**
|
|
129
|
+
|
|
130
|
+
- **The live-session evaluation did not run for this release**, and no paid
|
|
131
|
+
evaluation round was made for `--callers-source` (identical runs flip about 9 %
|
|
132
|
+
of outcomes, so a small round would not show the effect). The deterministic
|
|
133
|
+
half is in the suite: 1,202 tests.
|
|
134
|
+
- **The Vue gate is measured on the user's project, not here.** The plan's gate
|
|
135
|
+
is under 20 % empty `.vue` files and 4+ symbols per file after the upgrade;
|
|
136
|
+
run the density command again after `orc graph status --heal` to check it.
|
|
137
|
+
- The THIN thresholds (30 files · 3 per file · 40 % empty) are provisional.
|
|
138
|
+
- `/orc-mini`'s spine is 4 lines shorter, not the 8 the plan asked for; the
|
|
139
|
+
prose that moved was one long line per step.
|
|
140
|
+
- The parser still does not read a `<template>`: `@click="submit"` is not a link.
|
|
141
|
+
|
|
142
|
+
Verify: 40 skills · 51 agent files · 214 contracts.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### v1.9.0 — the lean lanes learn to look before they leap _(2026-09-21)_
|
|
147
|
+
|
|
148
|
+
**Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
|
|
149
|
+
is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
|
|
150
|
+
the top of this file.
|
|
151
|
+
|
|
152
|
+
- **Step 1 - release the command from the old package:** `npm uninstall -g orc`
|
|
153
|
+
- **Step 2 - install the current package:** `npm i -g @azure-id/orc`
|
|
154
|
+
- **Step 3 - re-apply it to your project:** `orc update`
|
|
155
|
+
|
|
156
|
+
**Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
|
|
157
|
+
|
|
158
|
+
`/orc-quick` and `/orc-mini` are the two lanes people reach for most, and both
|
|
159
|
+
were working half blind. The code graph could tell them WHERE a symbol is, and
|
|
160
|
+
was forbidden from telling them WHAT BREAKS. A bug fix was never shown failing
|
|
161
|
+
before it was fixed. Read-only work was dispatched by model name, so nothing in
|
|
162
|
+
ORC could see it. This release fixes those three things and trims what the two
|
|
163
|
+
lanes cost to load.
|
|
164
|
+
|
|
165
|
+
**Nothing you have to do.** No new config key. No new prerequisite. If the code
|
|
166
|
+
graph is off, every new call says so in one line and the lanes work as before.
|
|
167
|
+
|
|
168
|
+
**A bug is now shown RED before it is fixed.**
|
|
169
|
+
|
|
170
|
+
- A request like *"the orders page returns 500, find it and fix it"* is sorted
|
|
171
|
+
as a **defect**, and the slice carries a `repro` field. The executor writes
|
|
172
|
+
the reproduction FIRST — a failing test in your own framework, or a command —
|
|
173
|
+
runs it, captures the red run, implements, and runs it again for the green.
|
|
174
|
+
- Both runs are printed, and the trace carries `REPRO red :: <cmd> exit=1` and
|
|
175
|
+
`REPRO green :: <cmd> exit=0`. `/orc-retro` counts them apart from a TDD
|
|
176
|
+
cycle, because a reproduction is not a `tdd_spec`.
|
|
177
|
+
- **A reproduction that cannot be written is `repro: none` with a reason**, and
|
|
178
|
+
the entry says *not reproduced* — repeated at the commit offer, so a fix
|
|
179
|
+
nobody has seen work is never quietly shipped as one. It is never faked.
|
|
180
|
+
- A `done` return whose `before` run was green, or whose `after` run is still
|
|
181
|
+
red, is a malformed return and is treated as a failure.
|
|
182
|
+
|
|
183
|
+
Why: without the red run, a fix is proven against your test suite — which was
|
|
184
|
+
green before and is green after. With it, the fix is proven against the bug you
|
|
185
|
+
reported. It costs one extra run of one command.
|
|
186
|
+
|
|
187
|
+
**The two lanes may now ask what breaks.**
|
|
188
|
+
|
|
189
|
+
- `/orc-quick` gained `orc graph map`, `changes` and `coverage`; `/orc-mini`
|
|
190
|
+
gained `map`, `impact`, `changes` and `cochange`. Until now both could ask
|
|
191
|
+
only `ctx`.
|
|
192
|
+
- **Affected tests run first.** After a dispatch that wrote code, `orc graph
|
|
193
|
+
changes` names the tests that reach the change — a test that arrives through
|
|
194
|
+
a URL included — and those run before the suite. A runner that takes no file
|
|
195
|
+
list says so in one line and runs the suite.
|
|
196
|
+
- **Every entry carries a blast-radius line:** `3 symbols touched · callers 7 in
|
|
197
|
+
4 files · tests reach 2 · risk high: <symbol> (exported, fan-in 4, no test
|
|
198
|
+
reaches it)`. A `risk` word never appears without its reason. Nothing indexed
|
|
199
|
+
means it says that instead of a number.
|
|
200
|
+
- **A request that names no file** starts with `orc graph map --focus`, so
|
|
201
|
+
*"where is the retry logic?"* no longer begins with a guess at a filename.
|
|
202
|
+
|
|
203
|
+
**`/orc-mini`'s complexity read now carries numbers.**
|
|
204
|
+
|
|
205
|
+
It used to be a sentence of judgment. It is now one line with counts behind it,
|
|
206
|
+
and four thresholds that each carry their reason:
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
complexity: recommend /orc — 6 files · callers 27 in 9 files · risk auth (src/routes/orders.js:12) · cochange src/auth.js x3 not in plan
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Confident callers in 4 or more files outside the plan · 8 or more confident
|
|
213
|
+
callers · any cited risk class · a file that history says is always touched
|
|
214
|
+
alongside one of yours. `AMBIGUOUS` callers are counted and printed as
|
|
215
|
+
`maybe <n>`; they never trip a threshold alone. **It is an offer, never a
|
|
216
|
+
switch**, and continuing writes the NUMBERS into the decision log so a later
|
|
217
|
+
`/orc-retro` can move a threshold instead of anyone arguing about it. With the
|
|
218
|
+
graph off it says `(graph off)` and decides from the cited risk classes alone —
|
|
219
|
+
it never invents a number.
|
|
220
|
+
|
|
221
|
+
The mini planner is dispatched WITH those facts (`graph_facts`), so it grounds
|
|
222
|
+
its own file list on them. A file that history says belongs in the change, and
|
|
223
|
+
that the plan does not name, becomes an open question — never a file the planner
|
|
224
|
+
adds in silence.
|
|
225
|
+
|
|
226
|
+
**Read-only work is a real agent now.**
|
|
227
|
+
|
|
228
|
+
- `/orc-quick`'s recon is a pinned pair — `orc-recon-sonnet-4-6-med` and
|
|
229
|
+
`orc-recon-opus-5-low` — with one return contract: a short answer (12 lines at
|
|
230
|
+
most), evidence with `file:line`, what it searched, what it did NOT find and
|
|
231
|
+
the queries that prove it, and `graph_used`.
|
|
232
|
+
- They are **traced**. The hook writes `SPAWN` and `RETURN` for them, they show
|
|
233
|
+
up in `orc run inflight` while they run, and `/orc-retro` can count them. Each
|
|
234
|
+
is dispatched through the same gate as everything else — the gate still asks
|
|
235
|
+
every time.
|
|
236
|
+
- A blast-radius answer keeps four kinds of caller APART — a direct caller, one
|
|
237
|
+
that reaches through a URL, one through an alias, one through a base class —
|
|
238
|
+
and when a list rests on the map alone it carries the sentence that says so:
|
|
239
|
+
*A card lists every caller that NAMES the symbol. A card's silence is not
|
|
240
|
+
proof of absence.*
|
|
241
|
+
- **`other — name a model` stays** as the escape hatch, and it now names a MODEL
|
|
242
|
+
only. The Agent tool has no per-call effort knob, so the old "effort" option
|
|
243
|
+
was a setting that did not exist.
|
|
244
|
+
|
|
245
|
+
**The gate can now recommend, and it still never chooses.**
|
|
246
|
+
|
|
247
|
+
A menu line may carry an arrow marked `suggested` WITH its reason from the dig —
|
|
248
|
+
8 or more callers, a visible risk class, or more than three files changing. It
|
|
249
|
+
is a recommendation printed beside the option, never a pre-selection, and every
|
|
250
|
+
menu still ends with `Your choice — nothing runs until you answer.`
|
|
251
|
+
|
|
252
|
+
**Both lanes cost less to load.**
|
|
253
|
+
|
|
254
|
+
- The two skill descriptions load into **every** session. `/orc-quick`'s went
|
|
255
|
+
619 to 326 characters and `/orc-mini`'s 493 to 294, with every trigger phrase
|
|
256
|
+
kept word for word and a test that holds them there. Across all 33 skills that
|
|
257
|
+
is 492 characters off what every session pays before it does anything.
|
|
258
|
+
- The anti-slop rules card in a `/orc-quick` slice is now a **compact** form:
|
|
259
|
+
about 1,460 tokens instead of about 3,469, on every dispatch and re-sent every
|
|
260
|
+
executor turn. Every HARD rule keeps its id, its title and its instruction and
|
|
261
|
+
loses only the worked examples, the pack file is named beside it, and the JSON
|
|
262
|
+
says `compact: true` — a reader that cannot tell a short card from a stripped
|
|
263
|
+
one cannot trust either.
|
|
264
|
+
- `/orc-quick`'s spine went 379 to 325 lines and gained a budget it never had;
|
|
265
|
+
`/orc-mini`'s went 268 to 280 against a pin raised 270 to 280 with its reason
|
|
266
|
+
written into the guard. What left both spines is stated once, in the file that
|
|
267
|
+
owns it.
|
|
268
|
+
|
|
269
|
+
**Smaller things.**
|
|
270
|
+
|
|
271
|
+
- `orc graph update --notes-pending` replaces two calls with one in both lanes.
|
|
272
|
+
- One `orc graph gain` line at the close of a code-writing request, copied word
|
|
273
|
+
for word: what the map put in (recorded) and an estimate, always a range, of
|
|
274
|
+
what it kept out.
|
|
275
|
+
- `/orc-mini` passes wiki **paths**, not page bodies, to its planner and its
|
|
276
|
+
executor — the orchestrator's own context is the surface that fills up first.
|
|
277
|
+
- `wiki_used: none` and `graph_used: none` are recorded rather than dropped. Two
|
|
278
|
+
runs in a row of `wiki_used: none` on fresh pages prints one line suggesting
|
|
279
|
+
you check those pages' TL;DRs.
|
|
280
|
+
- `/orc-quick`'s `gh` probe is lazy — it runs on the first PR request, not at
|
|
281
|
+
every preflight.
|
|
282
|
+
- Each `/orc-quick` trace packet is built from a running record with the time
|
|
283
|
+
each event actually happened, instead of one timestamp for the whole packet.
|
|
284
|
+
|
|
285
|
+
**What this release does NOT promise.** It does not lower your bill. ORC
|
|
286
|
+
measured that in v1.8.2 and the answer has not changed: search results are a
|
|
287
|
+
fraction of one percent of what a session adds to its context. The claim here is
|
|
288
|
+
correctness, traceability and fewer round trips — a bug proven fixed, a dig that
|
|
289
|
+
shows up in the trace, and the affected tests run before the suite.
|
|
290
|
+
|
|
291
|
+
**Limits, with the numbers.**
|
|
292
|
+
|
|
293
|
+
- **The live-session evaluation in `eval/` did not run for this release.** The
|
|
294
|
+
deterministic half is covered by the suite — the shipped trace hook is driven
|
|
295
|
+
with a real recon dispatch and asserted to emit `SPAWN` and the `PHASE-EDGE`,
|
|
296
|
+
the `repro` contract is asserted across all ten executor agents, and the
|
|
297
|
+
compact rules card is asserted to keep every HARD rule id. What is NOT
|
|
298
|
+
measured is the part that needs a person driving a lane: whether a defect run
|
|
299
|
+
shows red then green three times out of three, whether recon's recall on
|
|
300
|
+
URL-reached callers beats the graph-off run, and whether a request with no
|
|
301
|
+
filename finds its files in fewer reads than the v1.8.2 baseline. Those are
|
|
302
|
+
the gates in the plan, and they are unmet, not passed.
|
|
303
|
+
- **`/orc-quick` still cannot call `orc graph impact`.** It has no planner and
|
|
304
|
+
no declared-file set before the gate, so the two planning reads stay out of
|
|
305
|
+
its catalogue. Its recon agent calls them instead.
|
|
306
|
+
- The complexity thresholds (4 files · 8 callers · any risk · 3 co-commits) are
|
|
307
|
+
a starting point chosen with reasons, not measured ones. They are printed in
|
|
308
|
+
the `GATE complexity` trace line precisely so a retro can move them.
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
13
312
|
### v1.8.2 — the map that finds what a grep cannot _(2026-09-21)_
|
|
14
313
|
|
|
15
314
|
**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
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|
|
|
16
|
-
**Versi terbaru: v1.
|
|
16
|
+
**Versi terbaru: v1.9.1** · 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
|
|
|
@@ -272,9 +272,9 @@ pemakaian 5 jam, pemakaian mingguan, dan beberapa hal lain.
|
|
|
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
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) |
|
|
275
|
-
| **`/orc-mini`** | Satu agen Sonnet 5, satu pemeriksaan build + tes, lalu kirim. Melewati review penuh dan pengujian. Bisa pindah ke alur penuh di tengah jalan kalau diminta. | [lihat](templates/skills/orc-mini/examples/mini-run-mock.md) |
|
|
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
|
-
| **`/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. | [lihat](mock-run/orc-quick.md) |
|
|
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) |
|
|
278
278
|
| **`/orc-diy`** | Lane racikan Anda sendiri, disusun di terminal dengan `orc diy` lalu dikompilasi. Kalau belum disetel atau sudah basi, ia menolak jalan dan menawarkan `/orc` biasa. | [lihat](mock-run/orc-diy.md) |
|
|
279
279
|
|
|
280
280
|
### Memikirkan apa yang mau dibuat
|
|
@@ -465,11 +465,37 @@ orc graph gain # apa yang dimasukkan peta, dan perkiraan
|
|
|
465
465
|
membangunnya di preflight dan memperbaruinya setelah setiap perubahan. Lane
|
|
466
466
|
lain tidak pernah memanggilnya. **Tidak ada yang berjalan dengan pewaktu dan
|
|
467
467
|
tidak ada yang berjalan di latar belakang.**
|
|
468
|
+
- **Setiap lane hanya boleh menanyakan pertanyaan yang disebut katalognya
|
|
469
|
+
sendiri** (`orc lane calls <lane>`), dan v1.9.0 melebarkan itu untuk dua lane
|
|
470
|
+
ramping. `/orc-quick` sekarang boleh menanyakan `map`, `changes` dan
|
|
471
|
+
`coverage`, jadi ia bisa menyebut apa yang tersentuh satu perubahan dan
|
|
472
|
+
menjalankan test yang terdampak lebih dulu; `/orc-mini` boleh menanyakan
|
|
473
|
+
`map`, `impact`, `changes` dan `cochange`, yang menjadi angka di balik baris
|
|
474
|
+
kompleksitasnya. Sebelum ini keduanya hanya boleh menanyakan di mana satu
|
|
475
|
+
simbol berada.
|
|
468
476
|
- **Hook itu juga memberi pekerja titik acuan yang tadinya harus dicari sendiri**
|
|
469
477
|
— untuk Grep, Glob, dan pencarian lewat shell (`grep`, `rg`, `git grep`,
|
|
470
478
|
`findstr`) — dan semua yang diberikannya ditandai sebagai data repositori,
|
|
471
479
|
bukan perintah. Matikan dengan `orc config set code_graph_hooks off`; petanya
|
|
472
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`.
|
|
473
499
|
|
|
474
500
|
Kontraknya: `templates/skills/_shared/code-graph.md`. Hook-nya:
|
|
475
501
|
`templates/hooks/README.md`.
|
|
@@ -760,56 +786,47 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
|
|
|
760
786
|
**Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
|
|
761
787
|
hanya mencetak yang lebih baru dari versi yang Anda punya.
|
|
762
788
|
|
|
763
|
-
### v1.
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
**
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
**
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
tidak pernah dicetak, dan penghematan yang tidak bisa dibuktikan tidak pernah
|
|
799
|
-
diklaim.
|
|
800
|
-
|
|
801
|
-
**`code_graph_ignore`** adalah kunci baru: glob tambahan yang tidak pernah
|
|
802
|
-
diindeks graf.
|
|
803
|
-
|
|
804
|
-
Dua gate di rilis ini tidak tercapai, dan CHANGELOG menyebutkannya lengkap
|
|
805
|
-
dengan angkanya: parser pinjaman tetap dirilis atas keputusan pemelihara
|
|
806
|
-
walaupun gate tingkat kepastian mengukur +1,0 / −0,3 / −0,3, dan `orc graph map`
|
|
807
|
-
hanya dihubungkan ke perencanaan karena pengukuran ulang transkrip mendapat 0,39
|
|
808
|
-
panggilan perencanaan yang bisa dijawab per run, terhadap gate tiga.
|
|
789
|
+
### v1.9.1 - graf yang dibayar tetapi tidak pernah ditanya _(23-09-2026)_
|
|
790
|
+
|
|
791
|
+
Graf kode lebih sering dirawat daripada ditanya, dan bagian yang ditanya lebih
|
|
792
|
+
mahal daripada yang dicatat meterannya. Di satu proyek Vue nyata, 416 dari 429
|
|
793
|
+
berkas `.vue` tidak punya simbol, dan panel menulis `0 hook updates` setelah 35.
|
|
794
|
+
|
|
795
|
+
**Jawaban lebih kecil.** `--brief` menyimpan kartu, baris dan setiap hitungan,
|
|
796
|
+
lalu membuang baris yang tidak pernah dicetak lane: 74 % sampai 87 % lebih
|
|
797
|
+
kecil, dan setiap panggilan lane memakainya. CLI sekarang menghitung baris
|
|
798
|
+
blast-radius `/orc-quick` dan baris kompleksitas `/orc-mini` dalam satu
|
|
799
|
+
panggilan, bukan lane yang menghitung baris-barisnya.
|
|
800
|
+
|
|
801
|
+
**Meterannya jujur.** Pembaruan oleh hook selalu tercatat 0, dan `paid`
|
|
802
|
+
menghitung kartu padahal lane menerima 4 sampai 8 kali lebih banyak. Keduanya
|
|
803
|
+
diperbaiki: baris `hook-update`, dan `paid.envelope` di samping kartu.
|
|
804
|
+
Meterannya juga menulis pembacaan yang belum pernah dilakukan proyek ini.
|
|
805
|
+
|
|
806
|
+
**Peta memberi tahu kapan ia tipis, dan kenapa** — `THIN` di `orc graph
|
|
807
|
+
status`, dan `orc graph audit` baru yang menulis berkas kosong per bahasa,
|
|
808
|
+
yang terpanjang lebih dulu.
|
|
809
|
+
|
|
810
|
+
**Parser membaca Vue Options API** (mesin `graph@6`). Komponen, mixin dan modul
|
|
811
|
+
Vuex menjadi class dengan method; `mixins` menjadi basisnya; konstanta yang
|
|
812
|
+
diekspor dan komponen `<script setup>` diberi nama. Store 1.9.0 memperbarui
|
|
813
|
+
dirinya sendiri satu kali, di preflight berikutnya. Tidak ada yang perlu
|
|
814
|
+
dilakukan.
|
|
815
|
+
|
|
816
|
+
**Pembacaan berbayar membawa isinya:** `ctx --callers-source` (enam baris di
|
|
817
|
+
sekitar setiap titik panggil yang pasti), `lsp_at` untuk language server jika
|
|
818
|
+
kartu menulis `AMBIGUOUS`, dan hitungan pembacaan berkas lebar yang tidak
|
|
819
|
+
diberi petunjuk.
|
|
820
|
+
|
|
821
|
+
**Tidak diukur di sini:** evaluasi sesi langsung tidak dijalankan, dan gerbang
|
|
822
|
+
Vue (di bawah 20 % berkas `.vue` kosong) diukur di proyek Anda sendiri.
|
|
823
|
+
CHANGELOG menyebut setiap batasnya.
|
|
809
824
|
|
|
810
825
|
<details>
|
|
811
|
-
<summary><strong>Rilis sebelumnya</strong> —
|
|
826
|
+
<summary><strong>Rilis sebelumnya</strong> — 120 rilis, hanya judulnya. Teks lengkapnya (dalam bahasa Inggris) ada di <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
|
|
812
827
|
|
|
828
|
+
- **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
|
|
829
|
+
- **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
|
|
813
830
|
- **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
|
|
814
831
|
- **v1.8.0** — the code graph: a map of the code that stays fresh · _2026-09-16_
|
|
815
832
|
- **v1.7.1** — the rules card now reaches the agent · _2026-09-14_
|
package/README.md
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
*Intake → analyze → plan → score → parallel subagents → review → verify → ship.*
|
|
8
8
|
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|

|
|
16
16
|
|
|
17
|
-
**Latest: v1.
|
|
17
|
+
**Latest: v1.9.1** · 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
|
|
|
@@ -251,9 +251,9 @@ ORC have terminal hook to see: Context Window %, 5 Hour usage %, Weekly usage %
|
|
|
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
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) |
|
|
254
|
-
| **`/orc-mini`** | One Sonnet 5 executor, a build + test smoke gate, ship. Skips full review and verify. Switches to the full flow mid-run on request. | [see it](templates/skills/orc-mini/examples/mini-run-mock.md) |
|
|
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
|
-
| **`/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. | [see it](mock-run/orc-quick.md) |
|
|
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) |
|
|
257
257
|
| **`/orc-wait`** | Wall-clock pause without losing the run. You see the window is nearly full, type `/orc-wait 30`, and ORC hands the run back to disk, waits in detached hops that **cost zero tokens**, and picks up where it stopped. Three modes decide how much finishes first: `safe` · `soft` (forces the checkpoint) · `hard` (fastest, can lose an in-flight return). `/orc-wait block <reason>` tells it not to stop you at all. | — |
|
|
258
258
|
| **`/orc-diy`** | Your own lane, composed in the terminal with `orc diy` and compiled. Unconfigured or stale → it refuses and offers plain `/orc`. | [see it](mock-run/orc-diy.md) |
|
|
259
259
|
|
|
@@ -435,10 +435,32 @@ orc graph gain # what the map put in, and an estimate of
|
|
|
435
435
|
— `/orc`, `/orc-ultra`, `/orc-diy`, `/orc-mini`, `/orc-fast`, `/orc-quick` —
|
|
436
436
|
still builds it at preflight and updates it after each change. Other lanes
|
|
437
437
|
never call it. **Nothing runs on a timer and nothing runs in the background.**
|
|
438
|
+
- **Each lane may ask only the questions its own catalogue names** (`orc lane
|
|
439
|
+
calls <lane>`), and v1.9.0 widened that for the two lean lanes. `/orc-quick`
|
|
440
|
+
can now ask `map`, `changes` and `coverage`, so it can say what a change
|
|
441
|
+
touches and run the affected tests first; `/orc-mini` can ask `map`, `impact`,
|
|
442
|
+
`changes` and `cochange`, which are the counts behind its complexity line.
|
|
443
|
+
Until now both could ask only where a symbol is.
|
|
438
444
|
- **The hook also hands a worker the anchors it would otherwise search for** —
|
|
439
445
|
for a Grep, a Glob and a shell search (`grep`, `rg`, `git grep`, `findstr`) —
|
|
440
446
|
and everything it hands over is labelled repository data, never an instruction.
|
|
441
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`.
|
|
442
464
|
|
|
443
465
|
The contract: `templates/skills/_shared/code-graph.md`. The hook:
|
|
444
466
|
`templates/hooks/README.md`.
|
|
@@ -706,50 +728,43 @@ a current audit: [EVAL-REPORT.md](EVAL-REPORT.md).
|
|
|
706
728
|
**Full history: [CHANGELOG.md](CHANGELOG.md)** — or `orc changelog`, which prints
|
|
707
729
|
only what is newer than the version you have.
|
|
708
730
|
|
|
709
|
-
### v1.
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
**
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
**
|
|
726
|
-
`
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
a saving it cannot show.
|
|
741
|
-
|
|
742
|
-
**`code_graph_ignore`** is a new key: extra globs the graph never indexes.
|
|
743
|
-
|
|
744
|
-
Two gates in this release were missed and the CHANGELOG says so with the
|
|
745
|
-
numbers: the borrowed parsers ship on the maintainer's call although the
|
|
746
|
-
confident-rate gate measured +1.0 / −0.3 / −0.3, and `orc graph map` is wired to
|
|
747
|
-
planning only because the replay measured 0.39 answerable planning calls per run
|
|
748
|
-
against a gate of three.
|
|
731
|
+
### v1.9.1 — the graph that was paid for and never asked _(2026-09-23)_
|
|
732
|
+
|
|
733
|
+
The code graph was maintained far more than it was consulted, and the part that
|
|
734
|
+
was consulted cost more than the meter said. On one real Vue project, 416 of
|
|
735
|
+
429 `.vue` files had no symbol, and the panel said `0 hook updates` after 35.
|
|
736
|
+
|
|
737
|
+
**Answers are smaller.** `--brief` keeps the card, the line and every count and
|
|
738
|
+
drops the rows a lane never prints: 74 % to 87 % smaller, and every lane call
|
|
739
|
+
uses it. The CLI now computes `/orc-quick`'s blast-radius line and
|
|
740
|
+
`/orc-mini`'s complexity line in one call, instead of the lane counting rows.
|
|
741
|
+
|
|
742
|
+
**The meter tells the truth.** Hook updates were always counted as 0, and
|
|
743
|
+
`paid` counted the card while the lane received 4 to 8 times more. Both are
|
|
744
|
+
fixed: a `hook-update` row, and `paid.envelope` beside the cards. The meter
|
|
745
|
+
also lists the reads this project has never made.
|
|
746
|
+
|
|
747
|
+
**The map says when it is thin, and why** — `THIN` on `orc graph status`, and
|
|
748
|
+
a new `orc graph audit` that lists the empty files by language, longest first.
|
|
749
|
+
|
|
750
|
+
**The parser reads the Vue Options API** (engine `graph@6`). A component, a
|
|
751
|
+
mixin and a Vuex module are a class with methods; `mixins` are its bases;
|
|
752
|
+
exported constants and `<script setup>` components are named. A 1.9.0 store
|
|
753
|
+
upgrades itself once, at the next preflight. Nothing to do.
|
|
754
|
+
|
|
755
|
+
**The paid reads carry what they were paid for:** `ctx --callers-source` (six
|
|
756
|
+
lines around each confident call site), `lsp_at` for a language server when a
|
|
757
|
+
card says `AMBIGUOUS`, and a count of the wide whole-file reads no hint named.
|
|
758
|
+
|
|
759
|
+
**Not measured here:** the live-session evaluation did not run, and the Vue gate
|
|
760
|
+
(under 20 % empty `.vue` files) is measured on your own project. The CHANGELOG
|
|
761
|
+
names every limit.
|
|
749
762
|
|
|
750
763
|
<details>
|
|
751
|
-
<summary><strong>Earlier releases</strong> —
|
|
764
|
+
<summary><strong>Earlier releases</strong> — 120 of them, titles only. Full text in <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
|
|
752
765
|
|
|
766
|
+
- **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
|
|
767
|
+
- **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
|
|
753
768
|
- **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
|
|
754
769
|
- **v1.8.0** — the code graph: a map of the code that stays fresh · _2026-09-16_
|
|
755
770
|
- **v1.7.1** — the rules card now reaches the agent · _2026-09-14_
|