@azure-id/orc 1.9.0 → 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 +133 -0
- package/README-id.md +57 -58
- package/README.md +51 -53
- package/bin/cli.js +227 -25
- 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 +115 -0
- package/bin/verify-package.js +4 -0
- 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/package.json +1 -1
- package/templates/agents/orc-executor-haiku-4-5.md +2 -1
- package/templates/agents/orc-executor-opus-4-7-high.md +2 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +2 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +2 -1
- package/templates/agents/orc-executor-opus-5-high.md +2 -1
- package/templates/agents/orc-executor-opus-5-low.md +2 -1
- package/templates/agents/orc-executor-opus-5-med.md +2 -1
- package/templates/agents/orc-executor-sonnet-4-6-high.md +2 -1
- package/templates/agents/orc-executor-sonnet-4-6-med.md +2 -1
- package/templates/agents/orc-executor-sonnet-5-high.md +2 -1
- package/templates/agents/orc-recon-opus-5-low.md +15 -5
- package/templates/agents/orc-recon-sonnet-4-6-med.md +15 -5
- package/templates/hooks/README.md +11 -1
- package/templates/hooks/orc-graph-hook.js +53 -7
- 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/ship.md +1 -1
- package/templates/skills/_shared/phases/trace.md +2 -1
- package/templates/skills/_shared/read-ladder.md +14 -1
- package/templates/skills/orc/SKILL.md +1 -1
- package/templates/skills/orc-fast/SKILL.md +3 -3
- package/templates/skills/orc-mini/SKILL.md +13 -17
- package/templates/skills/orc-mini/references/complexity.md +25 -11
- package/templates/skills/orc-quick/SKILL.md +12 -13
- package/templates/skills/orc-quick/references/gh-mode.md +1 -1
- package/templates/skills/orc-quick/references/look.md +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,139 @@ 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
|
+
|
|
13
146
|
### v1.9.0 — the lean lanes learn to look before they leap _(2026-09-21)_
|
|
14
147
|
|
|
15
148
|
**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.9.
|
|
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
|
|
|
@@ -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,46 @@ 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.
|
|
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
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
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.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.
|
|
826
824
|
|
|
827
825
|
<details>
|
|
828
|
-
<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>
|
|
829
827
|
|
|
828
|
+
- **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
|
|
830
829
|
- **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
|
|
831
830
|
- **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
|
|
832
831
|
- **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
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|

|
|
16
16
|
|
|
17
|
-
**Latest: v1.9.
|
|
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
|
|
|
@@ -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,42 @@ 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.
|
|
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
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
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.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.
|
|
765
762
|
|
|
766
763
|
<details>
|
|
767
|
-
<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>
|
|
768
765
|
|
|
766
|
+
- **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
|
|
769
767
|
- **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
|
|
770
768
|
- **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
|
|
771
769
|
- **v1.8.0** — the code graph: a map of the code that stays fresh · _2026-09-16_
|