@azure-id/orc 0.56.0 → 0.56.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/README-id.md CHANGED
@@ -13,7 +13,7 @@
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.0** · diperbarui 27-08-2026 · [daftar perubahan lengkap](CHANGELOG.md)
16
+ **Versi terbaru: v0.56.1** · diperbarui 28-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
 
@@ -377,6 +377,8 @@ orc ui --stop # matikan server proyek ini
377
377
  | Crosslink | **Design** (batas antar repo sebagai gambar) dan **Settings** (kesegaran tiap tetangga) | `crosslink add` / `remove` |
378
378
  | Promises · Boundary · Self-serve | buku janji, kartu batas, dan permukaan yang boleh diubah orang non-teknis | `pact check`, `pact sync`, `handoff set` |
379
379
  | **Docs** | setiap dokumen `/orc-doc` sebagai **pita** — satu blok per bagian, lebarnya sesuai panjangnya dan warnanya sesuai statusnya — plus berkas tiap bagian, jalur gelombang, kartu kesehatan lint, dan pratinjau gelombang | `doc compile` · `doc migrate` |
380
+ | **Extra** | **enam tab**: penyiapan koneksi, alat lokal beserta keadaannya, tangga rentang skor dan enam posisinya, pengeluaran per profil per rentang, dan **Recovery** — setiap pengiriman yang tidak pernah melapor kembali, beserta apa yang ia tinggalkan di disk | `extra add` / `ping` / `route` / `role` |
381
+ | **Challenge** | setiap putaran `/orc-challenge`: tujuan yang dibekukan, daftar sudut pandang dan apa yang diangkat masing-masing, temuan beserta keputusannya, dan apakah kelulusannya dihitung atau tertahan | `challenge record` · `accept` · `rebut` |
380
382
  | **Mocked Skill Use** | semua contoh jalannya yang ikut dikirim bersama ORC, dikelompokkan dan bisa dicari, dengan panel baca | — |
381
383
  | Learn | panduan `orc onboarding`, satu bagian sekali baca | — |
382
384
  | Experiment | setiap lane dengan tombol salin; membuka sesi Claude di terminal | — |
@@ -405,6 +407,90 @@ ditulis tangan.
405
407
 
406
408
  ---
407
409
 
410
+ ## Menjalankan sebagian tangga di tempat lain — `orc extra`
411
+
412
+ **Pengatur utamanya selalu Claude.** Yang diubah Extra adalah *siapa yang
413
+ mengerjakan satu potong tugas*: satu rentang skor milik Anda, atau salah satu
414
+ dari enam posisi bernama, bisa diarahkan ke DeepSeek, GLM, Kimi, MiniMax, Qwen,
415
+ Ollama lokal, atau CLI pemrograman yang sudah Anda pakai (opencode, codex).
416
+ Semua pemeriksaan setelahnya — gerbang asap, gerbang TDD, peninjau, pemeriksa
417
+ selisih pohon kerja — buta terhadap mesin yang dipakai, jadi tak ada satu pun
418
+ yang tahu pekerjaan itu dikerjakan di luar.
419
+
420
+ **Mati secara bawaan, dan tidak bisa dinyalakan sebelum ada yang benar-benar
421
+ menjawab.**
422
+
423
+ ```bash
424
+ orc extra providers # katalog bertanggal — penyedia, bukan model
425
+ orc extra tools # CLI lokal: belum ada · terlalu lama · belum masuk · siap
426
+ orc extra add ds --provider deepseek --engine api --env-key DEEPSEEK_API_KEY
427
+ orc extra ping ds # gerbang koneksi: bertingkat, dan tak ada yang dibaca lebih kuat dari kenyataannya
428
+ orc extra models ds --test <id> # model yang TERDAFTAR bisa saja sudah mati di sana
429
+ orc extra health ds --model <id> # …dan model yang jalan belum tentu SELESAI
430
+ orc extra route set 40-55 ds/deepseek-chat # satu rentang skor
431
+ orc extra role set doc-writer ds/deepseek-chat # atau satu posisi bernama
432
+ orc config set extra_enabled true
433
+ ```
434
+
435
+ - **Katalognya berisi penyedia, tidak pernah model.** Nama model yang ikut
436
+ dikirim akan salah dalam hitungan bulan, dan salahnya *diam-diam* — 404 di
437
+ tengah gelombang. `orc extra ping` membaca daftar aslinya lalu menyimpannya;
438
+ tidak ada yang mengarang nama. Begitu juga harga: angka biaya yang bukan ORC
439
+ sendiri yang hitung tidak pernah dicetak, melainkan muncul sebagai tanda
440
+ hubung panjang.
441
+ - **Setiap pekerjaan yang aktif mengatakannya sebelum gelombang pertama.**
442
+ Mengirim pekerjaan keluar dari Claude tanpa memberi tahu adalah justru
443
+ kegagalan yang membentuk seluruh bagian ini.
444
+ - **Dua penahan keras**: tugas dengan `risk[]` yang disebut (autentikasi, uang,
445
+ migrasi, keamanan, konkurensi, keutuhan data) tetap di Claude kecuali Anda
446
+ menyatakan lain, dan area REFUSE dari `/orc-boundary` tetap menahan bahkan
447
+ dalam mode `warn`.
448
+ - **Balasan dari luar adalah masukan asing.** Ia satu-satunya jenis masukan
449
+ asing yang menyunting pohon kerja Anda, jadi apa yang ia katakan telah ia
450
+ kerjakan adalah *klaim*, yang diperiksa terhadap pohon kerja.
451
+ - **Kunci Anda tidak pernah sampai ke baris perintah.** Ia lewat stdin menuju
452
+ brankas terenkripsi, atau tetap di variabel lingkungan, atau alatnya yang
453
+ menyimpannya sendiri — dan frasa sandinya adalah **tenggat waktu**, bukan
454
+ faktor kedua.
455
+ - **Enam posisi untuk lane yang mengunci agen alih-alih menilai tugas**:
456
+ `quick-executor` · `fast-executor` · `doc-writer` · `doc-checker` ·
457
+ `wiki-scanner-deep` · `wiki-scanner-light`. Posisi tanpa baris tetap
458
+ ditampilkan dan terbaca sebagai agen Claude yang terkunci padanya — "saya
459
+ sengaja membiarkan pemeriksanya di Claude" dan "tidak ada pemeriksa" tidak
460
+ boleh terlihat sama.
461
+
462
+ **Ketika pekerja luar gagal, yang tertinggal adalah sebuah posisi, bukan halaman
463
+ kosong.** ORC mencatat keadaan awal *sebelum bita pertama meninggalkan mesin
464
+ ini*, jadi pekerja yang terputus di tengah tulisan akan **dicocokkan lalu
465
+ dilanjutkan** — tidak pernah dikirim ulang dari nol ke berkas yang sudah
466
+ dua-pertiga jadi.
467
+
468
+ - **`extra_stall_s` (bawaan 180)** menghentikan pekerja yang tidak menghasilkan
469
+ apa pun selama itu. Hitungannya direset oleh kemajuan yang terlihat — aliran
470
+ keluaran pekerja, keluaran kesalahannya, atau berkas yang dideklarasikan
471
+ berubah di disk — jadi ia tidak pernah memotong pekerja yang sekadar lambat.
472
+ `stalled` boleh diulang, dan itulah yang membuat pelanjutannya menjadi cara
473
+ ORC sendiri mengetik `continue`.
474
+ - **`extra_fallback_agent` (bawaan `band`)** menentukan siapa yang mengambil alih
475
+ tugasnya. `ask` berhenti dan menyodorkan pilihannya kepada Anda; nama agen
476
+ apa pun yang terpasang bisa dikunci. Ia mengubah *siapa*, tidak pernah skornya,
477
+ daftar berkasnya, atau syarat penerimaannya.
478
+ - **Setiap pengiriman menulis catatan biayanya sendiri**, jadi laporan biaya
479
+ tidak pernah bergantung pada sebuah pekerjaan yang harus ingat menceritakan
480
+ pengeluarannya. `orc extra stats` menggabungkan catatan biaya, jejak, dan
481
+ balasan yang tersimpan, dan selalu menyebut berapa baris berasal dari mana.
482
+
483
+ **`/orc-quick` tidak terpengaruh di sini** dan mengatakannya — lane itu selalu
484
+ bertanya agen mana sebelum setiap pengiriman, jadi tidak ada pengaturan yang
485
+ boleh menjawabnya lebih dulu. **`/orc-challenge` tidak pernah keluar dari
486
+ Claude**: mengganti satu sudut pandang dengan model lain tidak membuat lane itu
487
+ lebih murah, ia mengubah apa yang sedang diukur.
488
+
489
+ **Seluruh bagian ini, dengan setiap perintah dan kuncinya:
490
+ [guides/extra-models.md](guides/extra-models.md).**
491
+
492
+ ---
493
+
408
494
  ## Bagaimana modelnya dipilih
409
495
 
410
496
  Setiap tugas diberi nilai 0–100 dengan **hitungan, bukan perasaan**: perencana
@@ -449,12 +535,13 @@ yang sama.
449
535
 
450
536
  ```
451
537
  templates/
452
- ├── skills/ 29 skill lane di atas, plus yang tidak punya perintah
538
+ ├── skills/ 31 folder skill, 38 berkas SKILL.md (satu lane boleh membawa
539
+ │ sub-skill) — lane di atas, plus yang tidak punya perintah
453
540
  │ sendiri: context-combiner, orc-advisor, orc-judge,
454
541
  │ orc-analyze-mini, dan _shared/ (kesepakatan lintas lane)
455
- ├── commands/ 27 perintah garis miring
542
+ ├── commands/ 29 perintah garis miring
456
543
  ├── hooks/ penjaga effort (PreToolUse) · peringatan statusline · catatan jejak
457
- └── agents/ 40 subagen dengan model terkunci + MODEL-MAPPING.md
544
+ └── agents/ 51 subagen dengan model terkunci + MODEL-MAPPING.md
458
545
  bin/cli.js pemasang, penyunting pengaturan, penyusun alur, pembaca status
459
546
  pekerjaan, dan separuh pasti dari setiap lane. Setiap pembacaan
460
547
  bisa menjawab --json
@@ -462,7 +549,8 @@ bin/webui/ `orc ui` — panel kendali lokal: css/ + js/ + i18n/<bahasa>/
462
549
  fixtures/, satu berkas per lapisan dan per panel. Nol dependensi
463
550
  bin/mockrun-catalog.js katalog contoh jalannya (diturunkan dari berkas di disk)
464
551
  mock-run/ contoh-contoh jalannya itu sendiri — mulai dari INDEX.md
465
- guides/ pengaturan · pemilihan model · dokumen · pembacaan pengetahuan
552
+ guides/ pengaturan · pemilihan model · dokumen · pembacaan pengetahuan ·
553
+ model AI lain
466
554
  ```
467
555
 
468
556
  Skill `orc` sendiri hanyalah **tulang punggung** yang tipis: ia hanya memuat
@@ -531,6 +619,66 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
531
619
  **Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
532
620
  hanya mencetak yang lebih baru dari versi yang Anda punya.
533
621
 
622
+ ### v0.56.1 - pekerja yang hidup tapi tidak mengerjakan apa pun _(28-08-2026)_
623
+
624
+ **Masih memakai paket `orc` yang tanpa awalan?** Lakukan ini sekali dulu -
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
+
534
682
  ### v0.55.1 — ORC sudah ada di npm _(27-08-2026)_
535
683
 
536
684
  **ORC diterbitkan dengan nama [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc).**
package/README.md CHANGED
@@ -14,7 +14,7 @@
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.0** · updated 2026-08-27 · [full changelog](CHANGELOG.md)
17
+ **Latest: v0.56.1** · updated 2026-08-28 · [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
 
@@ -359,6 +359,8 @@ orc ui --stop # shut this project's server down
359
359
  | Crosslink | **Design** (the boundary as a graph) and **Settings** (each peer's freshness) | `crosslink add` / `remove` |
360
360
  | Promises · Boundary · Self-serve | the pact ledger, the boundary cards, and the surfaces a non-developer can change | `pact check`, `pact sync`, `handoff set` |
361
361
  | **Docs** | every `/orc-doc` document as a **ribbon** — one block per section, sized by its length and coloured by its state — plus the section files with their sub-parts, the wave strip, the lint health card and the wave preview | `doc compile` · `doc migrate` |
362
+ | **Extra** | **six tabs**: the connection setup, the local tools and their state, the band ladder and the six positions, spending per profile per band, and **Recovery** — every dispatch that never reported back, with what it left on disk | `extra add` / `ping` / `route` / `role` |
363
+ | **Challenge** | every `/orc-challenge` cycle: the frozen goal, the council roster and what each lens raised, the findings with their dispositions, and whether the pass is computed or blocked | `challenge record` · `accept` · `rebut` |
362
364
  | **Mocked Skill Use** | every mocked run that ships with ORC, grouped and searchable, with a reading pane | — |
363
365
  | Learn | the `orc onboarding` walkthrough, one section at a time | — |
364
366
  | Experiment | every lane with a copy button; opens a Claude session in a terminal | — |
@@ -384,6 +386,77 @@ CSS.
384
386
 
385
387
  ---
386
388
 
389
+ ## Running part of the ladder somewhere else — `orc extra`
390
+
391
+ **The orchestrator is always Claude.** What Extra changes is *who executes a
392
+ slice*: a score band you own, or one of six named positions, can point at
393
+ DeepSeek, GLM, Kimi, MiniMax, Qwen, a local Ollama, or a coding CLI you already
394
+ have signed in (opencode, codex). Everything downstream — the smoke gate, the TDD
395
+ gate, the reviewer, the worktree-delta check — is engine-blind, so nothing learns
396
+ the work was foreign.
397
+
398
+ **Off by default, and it cannot be armed until something has actually answered.**
399
+
400
+ ```bash
401
+ orc extra providers # the shipped, dated catalog — providers, never models
402
+ orc extra tools # local CLIs: absent · outdated · unauthenticated · ready
403
+ orc extra add ds --provider deepseek --engine api --env-key DEEPSEEK_API_KEY
404
+ orc extra ping ds # the connection gate: a ladder, and nothing reads stronger than it is
405
+ orc extra models ds --test <id> # a LISTED model can still be dead upstream
406
+ orc extra health ds --model <id> # …and a working model is not one that FINISHES
407
+ orc extra route set 40-55 ds/deepseek-chat # a score band
408
+ orc extra role set doc-writer ds/deepseek-chat # or a named position
409
+ orc config set extra_enabled true
410
+ ```
411
+
412
+ - **The catalog ships providers and never models.** A shipped model id is wrong
413
+ within a quarter and wrong *silently* — a 404 mid-wave. `orc extra ping` reads
414
+ the live list and caches it; nothing invents a name. Same for price: a cost
415
+ figure ORC did not price itself is never printed, it reads as an em dash.
416
+ - **Every armed run says so before wave 1.** Routing work off Claude silently is
417
+ the failure this whole subsystem is shaped around.
418
+ - **Two hard hold-backs**: a task with a cited `risk[]` (auth, money, migration,
419
+ security, concurrency, data-integrity) stays on Claude unless you say
420
+ otherwise, and a `/orc-boundary` REFUSE area holds even in `warn`.
421
+ - **A foreign return is foreign input.** It is the only foreign class that edits
422
+ your worktree, so what it says it did is a *claim*, checked against the tree.
423
+ - **Your key never reaches a command line.** It travels on stdin into an
424
+ encrypted vault, or it stays in an environment variable, or the tool holds its
425
+ own — and the passphrase is a **deadline**, not a second factor.
426
+ - **Six positions for the lanes that pin an agent instead of scoring a task**:
427
+ `quick-executor` · `fast-executor` · `doc-writer` · `doc-checker` ·
428
+ `wiki-scanner-deep` · `wiki-scanner-light`. A position with no row keeps its
429
+ slot and reads as its pinned Claude agent — "I left the checker on Claude on
430
+ purpose" and "there is no checker" must never look the same.
431
+
432
+ **When a foreign worker fails, it is a position and not a blank page.** ORC
433
+ journals the baseline *before the first byte leaves the machine*, so a worker cut
434
+ off mid-write is **reconciled and resumed** — never re-dispatched from scratch
435
+ onto a file that is already two-thirds written.
436
+
437
+ - **`extra_stall_s` (default 180)** stops a worker that has produced nothing for
438
+ that long. It is reset by observable progress — the worker's stream, its
439
+ stderr, or a declared file that changed on disk — so it never fires on one that
440
+ is merely slow. `stalled` is retryable, which is what makes the resume ORC's
441
+ own spelling of typing `continue`.
442
+ - **`extra_fallback_agent` (default `band`)** decides who picks the task up.
443
+ `ask` stops and puts the menu to you; any installed agent name pins one. It
444
+ changes *who*, never the score, the declared files or the acceptance criteria.
445
+ - **Every dispatch writes its own spend record**, so a cost report never depends
446
+ on a run remembering to narrate what it spent. `orc extra stats` merges the
447
+ spend log, the traces and saved returns, and always says how many rows came
448
+ from each.
449
+
450
+ **`/orc-quick` is inert here** and announces it — that lane asks which agent
451
+ before every dispatch, so no setting may pre-answer it. **`/orc-challenge` never
452
+ routes foreign**: swapping a lens for a different model does not make the lane
453
+ cheaper, it changes what is being measured.
454
+
455
+ **The whole subsystem, with every command and key:
456
+ [guides/extra-models.md](guides/extra-models.md).**
457
+
458
+ ---
459
+
387
460
  ## How the model is picked
388
461
 
389
462
  Each task is scored 0–100 by **arithmetic, not judgement**: the planner reports
@@ -424,12 +497,13 @@ clobbers. `orc ui` ▸ Settings edits the same keys through the same validators.
424
497
 
425
498
  ```
426
499
  templates/
427
- ├── skills/ 29 skills the lanes above, plus the ones with no command of
428
- their own: context-combiner, orc-advisor, orc-judge,
429
- │ orc-analyze-mini, and _shared/ (cross-lane contract prose)
430
- ├── commands/ 27 slash commands
500
+ ├── skills/ 31 skill folders, 38 SKILL.md files (a lane may ship subskills)
501
+ the lanes above, plus the ones with no command of their own:
502
+ context-combiner, orc-advisor, orc-judge, orc-analyze-mini,
503
+ │ and _shared/ (cross-lane contract prose)
504
+ ├── commands/ 29 slash commands
431
505
  ├── hooks/ effort guard (PreToolUse) · statusline warning · behavior trace
432
- └── agents/ 40 model-pinned subagents + MODEL-MAPPING.md
506
+ └── agents/ 51 model-pinned subagents + MODEL-MAPPING.md
433
507
  bin/cli.js installer, config editor, flow composer, run-state reader, and
434
508
  the deterministic half of every lane. Every read speaks --json
435
509
  bin/webui/ `orc ui` — the local control panel: css/ + js/ + i18n/<lang>/ +
@@ -500,6 +574,41 @@ a current audit: [EVAL-REPORT.md](EVAL-REPORT.md).
500
574
  **Full history: [CHANGELOG.md](CHANGELOG.md)** — or `orc changelog`, which prints
501
575
  only what is newer than the version you have.
502
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
+
503
612
  ### v0.56.0 - a rename moved the command, and nobody could reach the fix _(2026-08-27)_
504
613
 
505
614
  **READ THIS FIRST IF YOUR `orc upgrade` IS FAILING.** On a version before