@azure-id/orc 0.56.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/CHANGELOG.md +2367 -2218
  2. package/README-id.md +49 -107
  3. package/README.md +45 -133
  4. package/bin/build-agents.js +18 -11
  5. package/bin/cli.js +33060 -29855
  6. package/bin/onboarding-content.js +0 -3
  7. package/bin/test-run.js +491 -0
  8. package/bin/verify-contracts.js +4256 -3277
  9. package/bin/verify-package.js +563 -498
  10. package/bin/webui/api.js +1186 -1163
  11. package/bin/webui/app.html +9 -0
  12. package/bin/webui/css/06-responsive.css +120 -108
  13. package/bin/webui/css/panels/extra.css +29 -0
  14. package/bin/webui/css/panels/lanes.css +134 -0
  15. package/bin/webui/css/panels/settings.css +79 -3
  16. package/bin/webui/fixtures/extra.js +2036 -1934
  17. package/bin/webui/fixtures/flow.js +2 -2
  18. package/bin/webui/fixtures/index.js +503 -486
  19. package/bin/webui/fixtures/lanes.js +218 -0
  20. package/bin/webui/fixtures/settings.js +261 -34
  21. package/bin/webui/fixtures/stats.js +3 -3
  22. package/bin/webui/i18n/TERMS.md +135 -134
  23. package/bin/webui/i18n/en/extra.json +345 -313
  24. package/bin/webui/i18n/en/lanes.json +29 -0
  25. package/bin/webui/i18n/en/nav.json +1 -0
  26. package/bin/webui/i18n/en/overview.json +2 -0
  27. package/bin/webui/i18n/en/settings.json +16 -5
  28. package/bin/webui/i18n/id/extra.json +345 -313
  29. package/bin/webui/i18n/id/lanes.json +29 -0
  30. package/bin/webui/i18n/id/nav.json +1 -0
  31. package/bin/webui/i18n/id/overview.json +2 -0
  32. package/bin/webui/i18n/id/settings.json +15 -4
  33. package/bin/webui/js/01-i18n.js +1 -0
  34. package/bin/webui/js/panels/extra.js +3199 -3011
  35. package/bin/webui/js/panels/lanes.js +259 -0
  36. package/bin/webui/js/panels/overview.js +10 -0
  37. package/bin/webui/js/panels/settings.js +149 -3
  38. package/package.json +39 -39
  39. package/templates/agents/MODEL-MAPPING.md +23 -35
  40. package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
  41. package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
  42. package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
  43. package/templates/agents/orc-executor-opus-5-high.md +1 -1
  44. package/templates/agents/orc-executor-opus-5-low.md +1 -1
  45. package/templates/agents/orc-executor-opus-5-med.md +1 -1
  46. package/templates/agents/orc-retro-opus-5-med.md +73 -73
  47. package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
  48. package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
  49. package/templates/commands/orc-route.md +1 -1
  50. package/templates/commands/orc.md +1 -1
  51. package/templates/skills/_shared/README.md +7 -3
  52. package/templates/skills/_shared/config-precedence.md +198 -0
  53. package/templates/skills/_shared/drift-recovery.md +1 -1
  54. package/templates/skills/_shared/extra-dispatch.md +159 -7
  55. package/templates/skills/_shared/interview.md +1 -1
  56. package/templates/skills/_shared/opus5-only.md +9 -7
  57. package/templates/skills/_shared/phases/README.md +82 -0
  58. package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
  59. package/templates/skills/_shared/phases/execution.md +143 -0
  60. package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
  61. package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
  62. package/templates/skills/_shared/phases/mock-example.md +56 -0
  63. package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
  64. package/templates/skills/_shared/phases/planning.md +135 -0
  65. package/templates/skills/_shared/phases/preflight.md +76 -0
  66. package/templates/skills/_shared/phases/review.md +53 -0
  67. package/templates/skills/_shared/phases/scoring.md +65 -0
  68. package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
  69. package/templates/skills/_shared/phases/security.md +55 -0
  70. package/templates/skills/_shared/phases/ship.md +88 -0
  71. package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
  72. package/templates/skills/_shared/phases/summary.md +48 -0
  73. package/templates/skills/_shared/phases/testgen.md +51 -0
  74. package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
  75. package/templates/skills/_shared/phases/verify.md +70 -0
  76. package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
  77. package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
  78. package/templates/skills/_shared/read-ladder.md +48 -0
  79. package/templates/skills/context-combiner/SKILL.md +214 -187
  80. package/templates/skills/orc/README.md +148 -150
  81. package/templates/skills/orc/SKILL.md +70 -358
  82. package/templates/skills/orc/config.md +137 -389
  83. package/templates/skills/orc/examples/full-run-mock.md +1 -1
  84. package/templates/skills/orc/references/effort-and-mode.md +16 -18
  85. package/templates/skills/orc/references/phases/intake.md +47 -0
  86. package/templates/skills/orc/references/phases/integration.md +19 -0
  87. package/templates/skills/orc/references/preflight-report.md +4 -4
  88. package/templates/skills/orc/references/ultra-mode.md +117 -123
  89. package/templates/skills/orc/schemas/planning-output.md +279 -279
  90. package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
  91. package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
  92. package/templates/skills/orc-aftermath/SKILL.md +153 -136
  93. package/templates/skills/orc-analyze/SKILL.md +247 -220
  94. package/templates/skills/orc-analyze/references/branching.md +51 -51
  95. package/templates/skills/orc-analyze/references/thin-input.md +1 -1
  96. package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
  97. package/templates/skills/orc-boundary/SKILL.md +244 -208
  98. package/templates/skills/orc-brainstorm/SKILL.md +372 -339
  99. package/templates/skills/orc-budget/SKILL.md +243 -225
  100. package/templates/skills/orc-challenge/README.md +1 -1
  101. package/templates/skills/orc-challenge/SKILL.md +293 -255
  102. package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
  103. package/templates/skills/orc-claude/SKILL.md +216 -199
  104. package/templates/skills/orc-diy/README.md +2 -1
  105. package/templates/skills/orc-diy/SKILL.md +129 -70
  106. package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
  107. package/templates/skills/orc-diy/references/compile.md +21 -7
  108. package/templates/skills/orc-diy/references/flow-schema.md +2 -2
  109. package/templates/skills/orc-doc/SKILL.md +44 -7
  110. package/templates/skills/orc-explain/SKILL.md +19 -0
  111. package/templates/skills/orc-export/SKILL.md +26 -5
  112. package/templates/skills/orc-fast/SKILL.md +215 -187
  113. package/templates/skills/orc-grill/SKILL.md +233 -207
  114. package/templates/skills/orc-handoff/SKILL.md +223 -204
  115. package/templates/skills/orc-learn/SKILL.md +176 -156
  116. package/templates/skills/orc-mini/SKILL.md +41 -23
  117. package/templates/skills/orc-pact/SKILL.md +250 -218
  118. package/templates/skills/orc-pattern/SKILL.md +149 -124
  119. package/templates/skills/orc-poly/SKILL.md +237 -216
  120. package/templates/skills/orc-poly/references/gather.md +1 -1
  121. package/templates/skills/orc-pr-driver/SKILL.md +196 -167
  122. package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
  123. package/templates/skills/orc-pr-setup/SKILL.md +212 -184
  124. package/templates/skills/orc-quick/README.md +2 -2
  125. package/templates/skills/orc-quick/SKILL.md +45 -12
  126. package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
  127. package/templates/skills/orc-retro/SKILL.md +244 -222
  128. package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
  129. package/templates/skills/orc-route/SKILL.md +183 -165
  130. package/templates/skills/orc-verify/SKILL.md +100 -86
  131. package/templates/skills/orc-wiki/SKILL.md +55 -206
  132. package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
  133. package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
  134. package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
  135. package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
  136. package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
  137. package/templates/agents/orc-advisor-fable-5.md +0 -50
  138. package/templates/agents/orc-analyst-fable-5.md +0 -115
  139. package/templates/agents/orc-judge-fable-5.md +0 -79
  140. package/templates/agents/orc-planner-fable-5.md +0 -152
  141. package/templates/agents/orc-reviewer-fable-5.md +0 -57
  142. package/templates/skills/_shared/fable5-override.md +0 -56
  143. package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
  144. package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
  145. package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
  146. package/templates/skills/orc-diy/references/blocks/review.md +0 -18
  147. package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
  148. package/templates/skills/orc-diy/references/blocks/security.md +0 -25
  149. package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
  150. package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
  151. package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
  152. package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
  153. package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
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-0.56.0-blue.svg?style=for-the-badge)
10
+ ![Version](https://img.shields.io/badge/version-1.0.0-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: v0.56.1** · diperbarui 28-08-2026 · [daftar perubahan lengkap](CHANGELOG.md)
16
+ **Versi terbaru: v1.0.0** · diperbarui 30-08-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
 
@@ -619,113 +619,55 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
619
619
  **Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
620
620
  hanya mencetak yang lebih baru dari versi yang Anda punya.
621
621
 
622
- ### v0.56.1 - pekerja yang hidup tapi tidak mengerjakan apa pun _(28-08-2026)_
622
+ ### v1.0.0 - konfigurasi, fase, dan panggilan berhenti jadi prosa _(30-08-2026)_
623
623
 
624
- **Masih memakai paket `orc` yang tanpa awalan?** Lakukan ini sekali dulu -
624
+ **Masih memakai paket `orc` yang tanpa awalan?** Lakukan ini sekali dulu
625
625
  `orc upgrade` Anda adalah versi sebelum v0.56.0 dan tidak bisa memasang dirinya
626
- sendiri:
627
-
628
- - **Langkah 1 - lepaskan perintahnya dari paket lama:** `npm uninstall -g orc`
629
- - **Langkah 2 - pasang paket yang sekarang:** `npm i -g @azure-id/orc`
630
- - **Langkah 3 - terapkan lagi ke proyek Anda:** `orc update`
631
-
632
- **Jangan pakai `npm i -g -f`.** Rinciannya ada di v0.56.0 di bawah.
633
-
634
- **Pengiriman ke opencode yang diam di tengah jalan dulu menghabiskan seluruh
635
- batas waktu lima belas menit lalu melapor `timeout`.** Kata itu bercerita
636
- tentang kesabaran ORC, dan terbaca sebagai batas waktu yang perlu dinaikkan.
637
- Padahal yang tertinggal adalah sebuah POSISI yang perlu dilanjutkan seseorang.
638
-
639
- - **`extra_stall_s` (bawaan 180, `0` mematikannya)** menghentikan pekerja luar
640
- yang tidak menghasilkan apa pun selama itu. Direset oleh kemajuan yang
641
- terlihat - aliran keluaran pekerja, keluaran kesalahannya, atau berkas yang
642
- dideklarasikan berubah di disk - jadi ia tidak pernah memotong pekerja yang
643
- sekadar lambat. Hanya untuk mesin `cli`.
644
- - **`stalled` adalah jenis kegagalannya sendiri dan boleh diulang**, jadi
645
- `orc extra reconcile` membaca posisinya dan `extra_resume` melanjutkan dari
646
- apa yang sudah ada di disk, bukan mengulang dari nol. Itulah cara ORC sendiri
647
- mengetik `continue`. Sengaja tidak ada dorongan lewat stdin: `opencode run`
648
- bukan sesi percakapan, jadi ketikan yang tak dibaca siapa pun hanyalah
649
- perbaikan palsu.
650
- - **Setiap balasan mesin `cli` membawa `timeline`** - bita pertama, kemajuan
651
- terakhir, jeda diam terpanjang, dan kedua batas waktunya - baik saat berhasil
652
- maupun gagal.
653
- - **`orc extra health <profil> [--model <id>]`** menjawab "apakah model ini suka
654
- diam", lewat pengawas yang SAMA dengan yang dipakai pengiriman sungguhan.
655
- Model yang terdaftar belum tentu jalan, dan model yang jalan belum tentu
656
- selesai.
657
- - **`extra_fallback_agent` (bawaan `band`)** menentukan siapa yang mengambil
658
- alih tugasnya. `ask` berhenti dan menyodorkan pilihannya kepada Anda; nama
659
- agen apa pun yang terpasang bisa dikunci. Saat `ask`, lane-nya tidak memilih
660
- sendiri. Ia mengubah siapa, bukan skor, daftar berkas, atau syarat
661
- penerimaannya. Tidak berlaku di `/orc-quick`.
662
-
663
- ### v0.56.0 - satu penggantian nama memindahkan perintahnya, dan tak seorang pun bisa meraih perbaikannya _(27-08-2026)_
664
-
665
- **Paketnya pindah dari `orc` tanpa awalan ke `@azure-id/orc`, dan semua jalur
666
- pemutakhiran di lapangan mati bersamaan.** Kedua nama itu mendaftarkan perintah
667
- `orc` yang sama, dan npm tidak mau menautkannya untuk paket baru selama paket
668
- lama masih memilikinya - jadi tarball, spesifikasi `github:`, dan registry
669
- semuanya gagal dengan `EEXIST` yang sama pada berkas perintahnya. Itu bentrokan
670
- BERKAS, bukan masalah sumber, dan itulah sebabnya berganti sumber tidak pernah
671
- menolong.
672
-
673
- - **`orc upgrade` mengusir paket lama SEBELUM mencoba sumber mana pun.**
674
- Diumumkan, tidak pernah diam-diam. Pengenalannya lewat KEPEMILIKAN - paket
675
- yang tidak mendaftarkan perintah `orc` tidak pernah disentuh.
676
- - **Registry npm dicoba lebih dulu**, lalu tarball, lalu spesifikasi `github:`.
677
- - **`--force` tetap ada untuk satu kasus yang cocok saja** - berkas perintah
678
- yatim yang tidak dimiliki paket mana pun.
679
- - **`orc doctor` melaporkan `legacy-global-package` dengan namanya.** Sengaja
680
- tidak bisa diperbaiki `--fix`: jangkauan `--fix` hanya `.claude/` proyek ini.
681
-
682
- ### v0.55.1 — ORC sudah ada di npm _(27-08-2026)_
683
-
684
- **ORC diterbitkan dengan nama [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc).**
685
- Pemasangan lewat GitHub tetap jalan, dan isi paketnya tidak berubah sama sekali —
686
- ini hanya soal cara memasangnya sekarang punya nama.
687
-
688
- - **`npm i -g @azure-id/orc`** untuk memasang, dan
689
- **`npm i -g @azure-id/orc@latest`** untuk memperbarui. `orc upgrade` sudah
690
- melakukan keduanya sejak dulu dan tetap begitu.
691
- - **Pemasangan dari GitHub sekarang jadi cadangan**, bukan cara utama — tetap ada
692
- di bagian "Cara mulai", dilipat, untuk fork atau kalau Anda mengunci sebuah
693
- branch.
694
-
695
- ### v0.51.0 — alat yang sudah Anda punya, dan koneksi yang membuktikan dirinya _(22-08-2026)_
696
-
697
- **Koneksi `orc extra`.** Dua alat coding yang bisa diberi pekerjaan oleh ORC
698
- adalah **program di komputer Anda sendiri**, bukan situs — jadi sekarang keduanya
699
- jadi penyedia kelas satu, punya kotak hubungkan masing-masing, dan daftar model
700
- yang dibangun dari apa yang benar-benar bisa dijangkau akun Anda.
701
-
702
- - **Program bisa saja belum terpasang, dan panelnya mengatakan itu lebih dulu** —
703
- empat keadaan, dihitung setiap kali, tidak pernah diingat. Alat yang belum
704
- terpasang tidak diberi tombol yang tidak mungkin berhasil, dan `orc extra add`
705
- menolak sambil menyebutkan perintah pemasangannya.
706
- - **ORC membuka terminal Anda sendiri dan menjalankan pemasangannya di sana.**
707
- Bukan pekerjaan tersembunyi di latar — di dalamnya, permintaan hak
708
- administrator, kegagalan izin, unduhan 80 MB, dan tunggu empat puluh detik
709
- semuanya terlihat sama: *tidak terjadi apa-apa*. Perintahnya tampil sebelum
710
- tombolnya, jendelanya milik Anda, dan **ORC tidak pernah meminta hak
711
- administrator**. Tidak ada terminal yang bisa dibuka? Anda tetap dapat
712
- perintahnya untuk disalin.
713
- - **Uji koneksi sekarang bertingkat**: programnya ada · cukup baru · sudah masuk
714
- akun · model apa yang bisa dijangkau akun ini · dan, hanya kalau Anda minta,
715
- **apakah pesan sungguhan benar-benar dijawab** — lengkap dengan waktu tempuh,
716
- jawabannya, dan empat jenis hitungan token yang tidak pernah dicampur.
717
- - **Model yang terdaftar bukan berarti model yang bekerja.**
718
- `orc extra models <nama> --test <id>` adalah satu-satunya cara membedakannya.
719
- - **Kedua alat lokal itu tidak memberi tahu model mana yang menjawab**, jadi ORC
720
- menuliskan kalimat itu, bukan membiarkan kolom kosong.
721
- - **`extra_enabled` tidak bisa dinyalakan sebelum ada yang menjawab** — dulu ia
722
- akan terbaca NYALA padahal artinya MATI.
723
-
724
- Sebelumnya: **v0.50.0 — pekerjaan yang berjalan di tempat lain** (`orc extra`),
725
- **v0.49.1 — dewan penilai, dan `--json` yang berhenti membuang isinya**,
726
- **v0.49.0 — dokumen itu folder, dan berkasnya hasil rakitan** (`/orc-doc`), dan
727
- **v0.48.1 — satu berkas untuk satu hal, dan dokumen yang bisa diselesaikan**.
728
- [Baca semuanya di daftar perubahan](CHANGELOG.md).
626
+ sendiri. Rincian lengkapnya ada di blok PERHATIAN di bagian atas berkas ini.
627
+
628
+ - **Langkah 1 lepaskan perintahnya dari paket lama:** `npm uninstall -g orc`
629
+ - **Langkah 2 pasang paket yang sekarang:** `npm i -g @azure-id/orc`
630
+ - **Langkah 3 terapkan lagi ke proyek Anda:** `orc update`
631
+
632
+ **Tidak ada pengaturan yang berubah artinya, dan tidak ada perintah yang diganti
633
+ namanya.** Tiga hal benar-benar mengubah perilaku; sisanya adalah ORC yang
634
+ akhirnya membaca muatannya sendiri dengan cara yang selama ini ia ajarkan kepada
635
+ Anda untuk membaca kode Anda.
636
+
637
+ - **Tabel skor ke model berakhir di `opus-5-low [65,90)` · `opus-5-med
638
+ [90,100]`.** Dua dari enam pita kini ingin sesi utama Opus 5, dari sebelumnya
639
+ satu dari delapan.
640
+ - **Pekerja luar yang macet dua kali dalam satu run akan menepi** untuk sisa run
641
+ itu. Dua jam, tidak pernah digabung; ia tidak menulis pengukuran baru dan tidak
642
+ pernah menulis konfigurasi Anda; sebuah promote adalah tanda batas, bukan
643
+ membisukan, dan perlu alasan.
644
+ - **`orc diy init` kini berbawaan `opus-5-high`.** Bawaan yang lama diam-diam
645
+ meruntuhkan sepertiga atas tangga Anda ke satu agen sebelum Anda memilih
646
+ apa pun.
647
+
648
+ Bagian strukturalnya - **konfigurasi, fase, dan panggilan berhenti jadi prosa**:
649
+
650
+ - **`orc lane config <lane>`** menjawab konfigurasi sebuah lane sudah menjadi
651
+ apa, dengan setiap bayangan sudah dikalimatkan. Sebuah lane tidak pernah lagi
652
+ menggabungkan berkas konfigurasi sendiri, dan **peringkat di bawah peringkat
653
+ yang sudah menjawab tidak dibaca sama sekali**.
654
+ - **`orc lane phases <lane>`** dan **`orc lane calls --all`** melakukan hal yang
655
+ sama untuk pustaka fase bersama dan katalog panggilan CLI - masing-masing satu
656
+ salinan kanonis, dari sebelumnya 14-59 pengulangan per panggilan.
657
+ - **`orc ui` menampilkan semuanya**: tangga peringkat yang menunjukkan
658
+ pengaturan mana yang MENJAWAB, lane mana yang membaca tiap kunci, panel Lane
659
+ baru, dan baris penurunan di Extra Recovery beserta tombol Promote.
660
+ `orc doctor` mendapat `lane-keys-drifted`.
661
+
662
+ **Ini tidak membuat muatannya lebih kecil** - 208 berkas menjadi 291, 26.507
663
+ baris menjadi 33.204. Sebagian besar gelombang terukur sebagai kebenaran, bukan
664
+ penghapusan duplikasi. Yang berubah adalah kini ada satu tempat untuk memperbaiki
665
+ masing-masing hal ini, dan ada lint yang gagal saat sebuah salinan tumbuh
666
+ kembali. Dua penghapusan yang direncanakan **diukur lalu ditolak**, dan flake
667
+ yang membuat empat gelombang gagal akhirnya didiagnosis - dengan catatan jujur
668
+ bahwa tiga run hijau adalah gerbangnya, bukan buktinya.
669
+
670
+ **Entri lengkap: [CHANGELOG.md](CHANGELOG.md).**
729
671
 
730
672
  ---
731
673
 
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-0.56.0-blue.svg?style=for-the-badge)
10
+ ![Version](https://img.shields.io/badge/version-1.0.0-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: v0.56.1** · updated 2026-08-28 · [full changelog](CHANGELOG.md)
17
+ **Latest: v1.0.0** · updated 2026-08-30 · [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
 
@@ -574,137 +574,49 @@ a current audit: [EVAL-REPORT.md](EVAL-REPORT.md).
574
574
  **Full history: [CHANGELOG.md](CHANGELOG.md)** — or `orc changelog`, which prints
575
575
  only what is newer than the version you have.
576
576
 
577
- ### v0.56.1 - a worker that is alive and doing nothing _(2026-08-28)_
578
-
579
- **Still on the unscoped `orc` package?** Do this once before anything else -
580
- your `orc upgrade` is the pre-v0.56.0 one and it cannot install itself:
581
-
582
- - **Step 1 - release the command from the old package:** `npm uninstall -g orc`
583
- - **Step 2 - install the current package:** `npm i -g @azure-id/orc`
584
- - **Step 3 - re-apply it to your project:** `orc update`
585
-
586
- **Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
587
-
588
- **An opencode dispatch that goes quiet mid-task used to burn the whole
589
- fifteen-minute wall clock and then report `timeout`.** That word is a statement
590
- about ORC's patience and reads as a budget somebody should raise. It was a
591
- POSITION somebody should resume from.
592
-
593
- - **`extra_stall_s` (default 180, `0` disables)** stops a foreign worker that
594
- has produced NOTHING for that long. Reset by observable progress - the
595
- worker's stream, its stderr, or a declared file that changed on disk - so it
596
- never fires on a worker that is merely slow. Engine `cli` only.
597
- - **`stalled` is its own failure class and it is RETRYABLE**, so
598
- `orc extra reconcile` reads the position and `extra_resume` continues from
599
- what is on disk instead of starting over. That is ORC's spelling of typing
600
- `continue`. There is deliberately no stdin nudge: `opencode run` is not an
601
- interactive session, so a keystroke nobody reads would be a fake fix.
602
- - **Every engine-`cli` return carries a `timeline`** - first byte, last
603
- progress, longest quiet gap, both budgets - on success as well as failure.
604
- - **`orc extra health <profile> [--model <id>]`** answers "does this model
605
- stall", through the SAME watchdog a dispatch uses. A listed model is not a
606
- working model, and a working model is not a model that finishes.
607
- - **`extra_fallback_agent` (default `band`)** decides who picks the task up.
608
- `ask` STOPS and puts the menu to you; any installed agent name pins one. Under
609
- `ask` the lane does not choose. It changes WHO, never the score, the declared
610
- files or the acceptance criteria. INERT in `/orc-quick`.
611
-
612
- ### v0.56.0 - a rename moved the command, and nobody could reach the fix _(2026-08-27)_
613
-
614
- **READ THIS FIRST IF YOUR `orc upgrade` IS FAILING.** On a version before
615
- v0.56.0, this release cannot install itself - your `orc upgrade` is the OLD one.
616
- Run these three lines once, by hand:
617
-
618
- - **Step 1 - release the command from the old package:** `npm uninstall -g orc`
619
- - **Step 2 - install the current package:** `npm i -g @azure-id/orc`
620
- - **Step 3 - re-apply it to your project:** `orc update` (add `--global` to also
621
- refresh `~/.claude`)
622
-
623
- Then `orc version` should print 0.56.0 or newer. Your `.claude/` and your
624
- `orc.config.yaml` are untouched. **Do not use `npm i -g -f`.**
625
-
626
- **The package moved from the unscoped `orc` to `@azure-id/orc`, and every
627
- upgrade path in the field died at once.** Both names declare the same `orc` bin,
628
- and npm will not link it for the new package while the old one owns it - so the
629
- tarball, the `github:` spec and the registry all failed with the same `EEXIST`
630
- on the command file. It is a FILE conflict, not a source problem, which is why
631
- changing sources never helped and `npm i -g -f` was the only thing that worked.
632
-
633
- - **`orc upgrade` evicts the legacy package BEFORE trying any source**, because
634
- the collision fails every source identically. Announced, never silent.
635
- Detection is by OWNERSHIP - a package that does not declare the `orc` bin is
636
- never touched.
637
- - **The npm registry is tried first**, then the tarball, then the `github:` spec.
638
- `freshCliPath()` now resolves the SCOPED directory, so step 2 stops re-applying
639
- the templates step 1 just superseded.
640
- - **`--force` is kept for the one case it fits** - an orphaned command file no
641
- package owns - and never for an unrelated `EEXIST`.
642
- - **`orc doctor` reports `legacy-global-package` by name.** Not `--fix`-able on
643
- purpose: `--fix` is scoped to this project's `.claude/`.
644
- - **A CAUTION at the top of this README** carries the one-time manual fix, since
645
- anyone still on the old package does not have this code yet.
646
-
647
- ### v0.55.2 - a gate that is never probed is a gate that is always off _(2026-08-27)_
648
-
649
- **`/orc-quick` and `/orc-fast` documented the foreign-worker option and then
650
- never went and looked for it.** Both carried the whole `orc extra` slot contract
651
- but neither preflight ever ran the probe that answers whether a position is
652
- held, so an armed `extra_enabled` plus a slot row still offered only the shipped
653
- Claude executors.
654
-
655
- - **orc-quick Q0 gains one PROBE** - `orc extra resolve --slot quick-executor
656
- --json`, the single exception to "read no other key" - so the menu can render
657
- line 3. Still an option: never a default, never sticky.
658
- - **orc-fast F0 gains gate `d`** - `orc extra resolve --slot fast-executor
659
- --json` - and prints the P0 `extra:` line where the prose always said it
660
- would, naming the agent it displaces.
661
- - **`/orc-doc` was never affected**: `orc doc next` resolves its targets in the
662
- CLI, which is the shape the other two now borrow.
663
-
664
- ### v0.55.1 — ORC is on npm _(2026-08-27)_
665
-
666
- **ORC is published as [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc).**
667
- The GitHub tarball still works and nothing about the payload changed — this is
668
- the install path getting a name.
669
-
670
- - **`npm i -g @azure-id/orc`** is the install, and
671
- **`npm i -g @azure-id/orc@latest`** is the update. `orc upgrade` already did
672
- both steps for you and continues to; `--from @azure-id/orc` names npm
673
- explicitly.
674
- - **The GitHub tarball is now the fallback**, not the headline — it is kept in
675
- the Quick start behind a fold for forks and for anyone pinning a branch.
676
-
677
- ### v0.55.0 — a score is what a band needs, and four lanes do not have one _(2026-08-26)_
678
-
679
- **`/orc-quick`, `/orc-fast`, `/orc-doc` and `/orc-wiki` pin an agent to a
680
- position instead of scoring a task. `orc extra` routed them by reading that
681
- agent's score band — arithmetic on a number nobody chose. It was wrong twice and
682
- dead once.**
683
-
684
- - **`orc extra role` holds six POSITIONS** — `quick-executor` · `fast-executor` ·
685
- `doc-writer` · `doc-checker` · `wiki-scanner-deep` · `wiki-scanner-light`. One
686
- connection and one model each, and a row's presence is the arming. All six are
687
- always listed: an unrouted one keeps its slot and reads as the Claude agent it
688
- falls back to.
689
- - **`orc extra resolve --slot` never touches a band**, and the Claude answer it
690
- carries is a pinned NAME rather than an interval. Nine hold-backs, each named.
691
- - **Precedence, one sentence:** extra decides *whether* a Claude agent runs at
692
- all; `opus5_only` and the score tables only decide *which* one runs where extra
693
- did not take it. Under a taken position `opus5_only` is not consulted — and it
694
- stays fully live for every position with no row.
695
- - **The bridge accepts a slot** (`band` becomes `slot:<slot>`, so cost reporting
696
- splits per position for free) with **zero new engines, zero new dispatch paths
697
- and zero new agents**. A doc checker now resolves its OWN position, `/orc-wiki`
698
- can route at all, and `/orc-quick` gets a THIRD OPTION on its menu — never a
699
- default, never sticky, re-asked after a failure.
700
- - **A second ladder in `orc ui ▸ Extra ▸ Routing`**, and **zero config keys
701
- added**.
702
-
703
- Before that: **v0.54.0 — a failed dispatch is a POSITION, not a blank page**,
704
- **v0.53.4 — the reload that dropped its own token**, **v0.53.3 — the key it never
705
- sent**, **v0.53.2 — the cost that was paid and never written down**, and
706
- **v0.53.1 — "up to date" now names what it checked**.
707
- [Read them in the changelog](CHANGELOG.md).
577
+ ### v1.0.0 - config, phases and calls stop being prose _(2026-08-30)_
578
+
579
+ **Still on the unscoped `orc` package?** Do this once first your `orc upgrade`
580
+ is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
581
+ the top of this file.
582
+
583
+ - **Step 1 release the command from the old package:** `npm uninstall -g orc`
584
+ - **Step 2 install the current package:** `npm i -g @azure-id/orc`
585
+ - **Step 3 — re-apply it to your project:** `orc update`
586
+
587
+ **Nothing you configure changes meaning, and no command you run is renamed.**
588
+ Three things actually change behaviour; everything else is ORC finally reading
589
+ its own payload the way it has been telling you to read yours.
590
+
591
+ - **The score to model table ends `opus-5-low [65,90)` · `opus-5-med [90,100]`.**
592
+ Two bands in six now want an Opus 5 main session where one in eight did.
593
+ - **A foreign worker that stalls twice in one run steps aside** for the rest of
594
+ that run. Two clocks, never merged; it writes no new measurement and never
595
+ writes your config; a promote is a watermark, not a mute, and needs a reason.
596
+ - **`orc diy init` defaults to `opus-5-high`.** The old default silently
597
+ collapsed the top third of your ladder onto one agent before you chose
598
+ anything.
599
+
600
+ The structural half - **config, phases and calls stop being prose**:
601
+
602
+ - **`orc lane config <lane>`** answers what a lane's config resolved to, with
603
+ every shadow already worded. A lane never merges the config file itself again,
604
+ and **a rank below a resolved rank is not read at all**.
605
+ - **`orc lane phases <lane>`** and **`orc lane calls --all`** do the same for the
606
+ shared phase library and the CLI call catalogue - one canonical copy each,
607
+ where there were 14-59 restatements per call.
608
+ - **`orc ui` renders all of it**: a rank ladder showing which setting ANSWERED,
609
+ the lanes that read each key, a Lanes panel, and Extra Recovery's demotion
610
+ row with Promote. `orc doctor` gains `lane-keys-drifted`.
611
+
612
+ **It did not make the payload smaller** - 208 files became 291, 26,507 lines
613
+ became 33,204. Most waves measured as correctness, not deduplication. What
614
+ changed is that there is now one place to fix each of these, and a lint that
615
+ fails when a copy grows back. Two planned deletions were **measured and
616
+ refused**, and the test suite's four-wave flake was diagnosed - with the honest
617
+ caveat that three green runs are the gate and not proof.
618
+
619
+ **Full entry: [CHANGELOG.md](CHANGELOG.md).**
708
620
 
709
621
  ---
710
622
 
@@ -22,24 +22,31 @@ const TEMPLATE = path.join(ROOT, "agents-src", "executor.template.md");
22
22
  const OUT_DIR = path.join(ROOT, "templates", "agents");
23
23
 
24
24
  // Score→model bands mirror templates/agents/MODEL-MAPPING.md and the single
25
- // 8-band score→model table in skills/orc/config.md (documented drift — change
25
+ // score→model table in skills/orc/config.md (documented drift — change
26
26
  // together). `effort: null` = a model with NO effort ladder (haiku): the
27
27
  // generator omits the `effort:` frontmatter line entirely.
28
+ //
29
+ // v1.0.0 W4 — the table is SIX bands, not eight, and the `opus5_only` ladder is
30
+ // TWO, not three. Four of these agents are named by NO default row:
31
+ // names them, and they ship anyway (D14). They stay reachable through
32
+ // `rubric_bands_override`, `orc diy` `fixed_executor` and `extra_fallback_agent`,
33
+ // and deleting a generated file that no row happens to name today would be a
34
+ // rename-shaped migration for what is only a table change. Their `band` string
35
+ // says so rather than naming a range that no longer exists — a band label that
36
+ // lies is worse than one that admits it is unreachable by default.
28
37
  const VARIANTS = [
29
- { name: "orc-executor-opus-5-high", model: "claude-opus-5", effort: "high", band: "highest-complexity [90,100]" },
30
- { name: "orc-executor-opus-4-8-high", model: "claude-opus-4-8", effort: "high", band: "very-high-complexity [80,90)" },
31
- { name: "orc-executor-opus-4-7-high", model: "claude-opus-4-7", effort: "high", band: "high-complexity [70,80)" },
32
- { name: "orc-executor-opus-4-7-med", model: "claude-opus-4-7", effort: "medium", band: "upper-mid-complexity [65,70)" },
38
+ { name: "orc-executor-opus-5-med", model: "claude-opus-5", effort: "medium", band: "highest-complexity [90,100]" },
39
+ { name: "orc-executor-opus-5-low", model: "claude-opus-5", effort: "low", band: "upper-complexity [65,90)" },
33
40
  { name: "orc-executor-sonnet-5-high", model: "claude-sonnet-5", effort: "high", band: "mid-complexity [55,65)" },
34
41
  { name: "orc-executor-sonnet-4-6-high", model: "claude-sonnet-4-6", effort: "high", band: "low-mid-complexity [40,55)" },
35
42
  { name: "orc-executor-sonnet-4-6-med", model: "claude-sonnet-4-6", effort: "medium", band: "low-complexity [30,40)" },
36
43
  { name: "orc-executor-haiku-4-5", model: "claude-haiku-4-5", effort: null, band: "lowest-complexity [0,30)" },
37
- // v0.35.0, widened v0.36.0 — the `opus5_only` ladder ONLY (default off). Same model,
38
- // effort as the cost dial: [0,40) low · [40,80) medium · [80,100] high (the
39
- // existing opus-5-high covers the top band in BOTH tables). These two are
40
- // never dispatched by the default 8-band table.
41
- { name: "orc-executor-opus-5-med", model: "claude-opus-5", effort: "medium", band: "opus5-only mid [40,80)" },
42
- { name: "orc-executor-opus-5-low", model: "claude-opus-5", effort: "low", band: "opus5-only low [0,40)" },
44
+ // NAMED BY NO BAND since v1.0.0 W4 (D14) kept on disk, dispatched only when a
45
+ // user names one explicitly.
46
+ { name: "orc-executor-opus-5-high", model: "claude-opus-5", effort: "high", band: "no default band reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
47
+ { name: "orc-executor-opus-4-8-high", model: "claude-opus-4-8", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
48
+ { name: "orc-executor-opus-4-7-high", model: "claude-opus-4-7", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
49
+ { name: "orc-executor-opus-4-7-med", model: "claude-opus-4-7", effort: "medium", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
43
50
  ];
44
51
 
45
52
  function render(template, v) {