@azure-id/orc 1.9.1 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README-id.md +38 -39
  3. package/README.md +36 -35
  4. package/bin/build-agents.js +109 -109
  5. package/bin/cli.js +35 -33
  6. package/bin/onboarding-content.js +4 -4
  7. package/bin/pricing.json +207 -200
  8. package/bin/verify-contracts.js +2 -2
  9. package/bin/verify-package.js +7 -7
  10. package/bin/webui/css/04-motion.css +162 -152
  11. package/bin/webui/css/panels/knowledge.css +563 -116
  12. package/bin/webui/fixtures/extra.js +2036 -2036
  13. package/bin/webui/fixtures/hookui.js +5 -5
  14. package/bin/webui/fixtures/settings.js +305 -305
  15. package/bin/webui/i18n/en/knowledge.json +117 -2
  16. package/bin/webui/i18n/id/knowledge.json +117 -2
  17. package/bin/webui/js/panels/knowledge.js +552 -7
  18. package/bin/webui/js/panels/overview.js +13 -4
  19. package/mock-run/context-combiner.md +100 -100
  20. package/mock-run/orc-budget.md +534 -534
  21. package/mock-run/orc-challenge-council.md +262 -262
  22. package/mock-run/orc-ultra.md +103 -103
  23. package/package.json +1 -1
  24. package/templates/agents/MODEL-MAPPING.md +43 -43
  25. package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -56
  26. package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -60
  27. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -58
  28. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
  29. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
  30. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
  31. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
  32. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
  33. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
  34. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
  35. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
  36. package/templates/agents/orc-claude-writer-opus-5-med.md +55 -55
  37. package/templates/agents/orc-context-combiner-opus-5-high.md +88 -88
  38. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
  39. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
  40. package/templates/agents/orc-executor-opus-5-high.md +2 -2
  41. package/templates/agents/orc-executor-opus-5-low.md +2 -2
  42. package/templates/agents/orc-executor-opus-5-med.md +2 -2
  43. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -1
  44. package/templates/agents/orc-judge-opus-5-xhigh.md +85 -85
  45. package/templates/agents/orc-learn-writer-opus-5-low.md +73 -73
  46. package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -65
  47. package/templates/agents/orc-planner-mini-opus-5-med.md +4 -4
  48. package/templates/agents/orc-planner-mini-sonnet-5-high.md +1 -1
  49. package/templates/agents/orc-planner-opus-5-med.md +160 -160
  50. package/templates/agents/orc-recon-opus-5-low.md +3 -3
  51. package/templates/agents/orc-retro-opus-5-med.md +3 -3
  52. package/templates/agents/orc-reviewer-opus-5-med.md +60 -60
  53. package/templates/agents/orc-scout-opus-5-low.md +40 -40
  54. package/templates/agents/orc-system-analyst-opus-5-high.md +120 -120
  55. package/templates/agents/orc-test-author-opus-5-med.md +71 -71
  56. package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
  57. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
  58. package/templates/agents/orc-verifier-opus-5-med.md +69 -69
  59. package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -81
  60. package/templates/commands/orc-ultra.md +17 -17
  61. package/templates/commands/orc-verify.md +11 -11
  62. package/templates/hooks/README.md +2 -2
  63. package/templates/hooks/orc-effort-guard.js +178 -178
  64. package/templates/hooks/orc-statusline.js +6 -6
  65. package/templates/skills/_shared/code-graph.md +1 -1
  66. package/templates/skills/_shared/config-precedence.md +198 -198
  67. package/templates/skills/_shared/extra-dispatch.md +1346 -1346
  68. package/templates/skills/_shared/opus5-only.md +8 -8
  69. package/templates/skills/_shared/phases/analyst-gates.md +136 -136
  70. package/templates/skills/_shared/phases/review.md +1 -1
  71. package/templates/skills/_shared/phases/trace.md +1 -1
  72. package/templates/skills/_shared/return-validation.md +1 -1
  73. package/templates/skills/context-combiner/SKILL.md +1 -1
  74. package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
  75. package/templates/skills/orc/README.md +2 -2
  76. package/templates/skills/orc/SKILL.md +7 -7
  77. package/templates/skills/orc/config.md +9 -9
  78. package/templates/skills/orc/examples/full-run-mock.md +73 -73
  79. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  80. package/templates/skills/orc/references/preflight-report.md +2 -2
  81. package/templates/skills/orc/references/ultra-mode.md +3 -3
  82. package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
  83. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
  84. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -76
  85. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -45
  86. package/templates/skills/orc-analyze/SKILL.md +2 -2
  87. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
  88. package/templates/skills/orc-analyze/schemas/report-audit.md +83 -83
  89. package/templates/skills/orc-analyze/schemas/report-prose.md +63 -63
  90. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
  91. package/templates/skills/orc-challenge/README.md +142 -142
  92. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
  93. package/templates/skills/orc-challenge/references/council.md +315 -315
  94. package/templates/skills/orc-challenge/references/intake.md +171 -171
  95. package/templates/skills/orc-claude/SKILL.md +14 -14
  96. package/templates/skills/orc-diy/README.md +143 -143
  97. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  98. package/templates/skills/orc-doc/README.md +229 -229
  99. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
  100. package/templates/skills/orc-doc/references/chunking.md +527 -527
  101. package/templates/skills/orc-fast/SKILL.md +1 -1
  102. package/templates/skills/orc-learn/SKILL.md +14 -14
  103. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
  104. package/templates/skills/orc-mini/SKILL.md +3 -3
  105. package/templates/skills/orc-verify/SKILL.md +15 -15
  106. package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
  107. package/templates/skills/orc-wiki/references/extra.md +1 -1
package/bin/cli.js CHANGED
@@ -1067,6 +1067,8 @@ function upgrade() {
1067
1067
  // ---------------------------------------------------------------------------
1068
1068
 
1069
1069
  const KNOWN_MODELS = [
1070
+ "claude-opus-5-5",
1071
+ // Kept so a config written before v1.9.2 still validates.
1070
1072
  "claude-opus-5",
1071
1073
  "claude-opus-4-8",
1072
1074
  "claude-opus-4-7",
@@ -1253,7 +1255,7 @@ const CONFIG_FAMILIES = {
1253
1255
  // without being a CONFIG_META key, because where it sits in the
1254
1256
  // precedence is a fact even though `orc config set` refuses to write it.
1255
1257
  registry_less: true,
1256
- shadow_note: "shadowed by {by} — executors use the fixed 2-band Opus 5 ladder",
1258
+ shadow_note: "shadowed by {by} — executors use the fixed 2-band Opus 5.5 ladder",
1257
1259
  },
1258
1260
  { prio: "P3", key: null, terminal: "the shipped score→model table" },
1259
1261
  ],
@@ -1440,7 +1442,7 @@ const CONFIG_META = [
1440
1442
  // decision with a recorded reason (the /orc-pact retirement rule).
1441
1443
  { key: "extra_demote_after", def: 2, tier: "common", answers: [{ family: "extra", prio: "P2", mode: "replace" }], gated_by: "extra_enabled", lanes: [], validate: vInt(0), options: [0, 2, 3, 5], desc: "Consecutive `stalled` dispatches on ONE profile, inside one run, before that profile is DEMOTED to the bottom of the ladder for the rest of the run — so `opus5_only` (or the shipped score table) becomes the effective P0 and the work stays on Claude. Only `stalled` counts: a 401 or a rate limit has its own answer (`extra_on_failure`, the vault, `extra_resume`), and demoting on one would hide a credential problem behind a routing change. A resume of the same stalled attempt is the SAME stall, never a second one. A demotion is RUN state — it never writes your config — it is ANNOUNCED before the next dispatch, and it is never auto-promoted back: `orc extra promote <run> --reason \"<why>\"`. 0 turns this clock off and leaves only extra_demote_stale_min." },
1442
1444
  { key: "extra_demote_stale_min", def: 20, tier: "common", answers: [{ family: "extra", prio: "P2", mode: "replace" }], gated_by: "extra_enabled", lanes: [], validate: vInt(0), options: [0, 10, 20, 45], desc: "Minutes a LIVE foreign attempt may show no observable progress before its profile is demoted. This is a different question from `extra_stall_s`, which stops ONE dispatch after 180s of silence: this clock is about the RUN — two workers in flight, both quiet, and a wave that is going nowhere — so the two have their own budgets and their own off values and neither is a simplification of the other. It reads the journal's own progress file on disk, never a remembered fact. 0 turns this clock off and leaves only extra_demote_after." },
1443
- { key: "opus5_only", def: false, tier: "common", answers: [{ family: "executor-band", prio: "P1", mode: "replace" }, { family: "fixed-role-model", prio: "P1", mode: "replace" }], lanes: ["orc", "orc-analyze", "orc-challenge", "orc-claude", "orc-diy", "orc-doc", "orc-fast", "orc-mini", "orc-pattern", "orc-quick", "orc-retro", "orc-wiki"], validate: vEnum("true", "false"), options: ["true", "false"], desc: "EVERY dispatched role uses ONE model — Opus 5 — with EFFORT as the cost dial (executors: [0,40) low · [40,80) medium · [80,100] high; each fixed role its own pinned effort). Deep SWE-benchmark work on cost vs efficiency across Claude models finds a single Opus 5 agent with the effort ladder the most efficient setup. It FORCES: while on it outranks a hand-written rubric_bands_override. Needs an Opus 5 main session or EVERY dispatch silently downgrades. Excludes the Haiku trace writer and orc-diy (compile-owned)." },
1445
+ { key: "opus5_only", def: false, tier: "common", answers: [{ family: "executor-band", prio: "P1", mode: "replace" }, { family: "fixed-role-model", prio: "P1", mode: "replace" }], lanes: ["orc", "orc-analyze", "orc-challenge", "orc-claude", "orc-diy", "orc-doc", "orc-fast", "orc-mini", "orc-pattern", "orc-quick", "orc-retro", "orc-wiki"], validate: vEnum("true", "false"), options: ["true", "false"], desc: "EVERY dispatched role uses ONE model — Opus 5.5 — with EFFORT as the cost dial (executors: [0,40) low · [40,80) medium · [80,100] high; each fixed role its own pinned effort). Deep SWE-benchmark work on cost vs efficiency across Claude models finds a single Opus 5.5 agent with the effort ladder the most efficient setup. It FORCES: while on it outranks a hand-written rubric_bands_override. Needs an Opus 5.5 main session or EVERY dispatch silently downgrades. Excludes the Haiku trace writer and orc-diy (compile-owned)." },
1444
1446
  // --- v0.46.0 — the six new lanes ------------------------------------------
1445
1447
  { key: "pact_gate", def: "warn", tier: "common", answers: [{ family: "pact", prio: "P2", mode: "replace" }], lanes: ["orc", "orc-pact"], validate: vEnum("off", "warn"), options: ["off", "warn"], desc: "Invariant ledger at Phase 1 + planning: warn = print the one pact line and inject a DRIFTED/BROKEN promise whose anchors intersect the plan's declared files as a planner constraint; off = nothing. NEVER blocks — a promise is advice with a receipt, not a gate. See /orc-pact." },
1446
1448
  { key: "pact_recheck_on_verify", def: "true", tier: "common", answers: [{ family: "pact", prio: "P2", mode: "replace" }], lanes: ["orc", "orc-pact"], validate: vEnum("true", "false"), options: ["true", "false"], desc: "Phase 6: re-run the cheap checks for ONLY the invariants the change touched (`orc pact check`), so a promise that just leaked is caught in the run that broke it." },
@@ -1523,7 +1525,7 @@ const LEGACY_KEYS = {
1523
1525
  // So `config list` prints them, `config list --json` carries them, and
1524
1526
  // `config set` refuses them BY NAME instead of with a generic unknown-key list.
1525
1527
  const RETIRED_KEYS = {
1526
- fable5_enabled: { removed_in: "1.0.0", why: "the Fable 5 role override was removed — every role dispatches its shipped Claude agent, or the Opus 5 variant under opus5_only" },
1528
+ fable5_enabled: { removed_in: "1.0.0", why: "the Fable 5 role override was removed — every role dispatches its shipped Claude agent, or the Opus 5.5 variant under opus5_only" },
1527
1529
  fable5_roles: { removed_in: "1.0.0", why: "the Fable 5 role override was removed" },
1528
1530
  fable5_effort: { removed_in: "1.0.0", why: "the Fable 5 role override was removed" },
1529
1531
  };
@@ -2082,7 +2084,7 @@ function shadowReason(key, map, claudeDir) {
2082
2084
  //
2083
2085
  // v1.0.0 W4 — TWO BANDS, not three, and the same 90 edge as the default table's
2084
2086
  // top two rows (D13). That symmetry is the point: once the default table's high
2085
- // end is already Opus 5 with effort as the dial, the forcing mode differs from
2087
+ // end is already Opus 5.5 with effort as the dial, the forcing mode differs from
2086
2088
  // it only BELOW 65, so a third band here would be a distinction the default
2087
2089
  // table stopped making.
2088
2090
  //
@@ -2128,7 +2130,7 @@ function scoreTableJson(map, claudeDir) {
2128
2130
  // > the default 6-band table
2129
2131
  //
2130
2132
  // Extra is an OVERLAY, not a replacement, which is what makes "cheap grunt
2131
- // work goes to DeepSeek, hard work stays on Opus 5" a two-command setup
2133
+ // work goes to DeepSeek, hard work stays on Opus 5.5" a two-command setup
2132
2134
  // rather than a full table rewrite. `active` can therefore read as a
2133
2135
  // COMPOSITE — because the truth is a composite, and a single word would be
2134
2136
  // a lie about what the next dispatch will do.
@@ -2373,7 +2375,7 @@ function extraLegacyRoleWarn(value) {
2373
2375
 
2374
2376
  // A shadowed setting must never be silent — the v0.36.0 rule, applied to a
2375
2377
  // shadow that runs BOTH WAYS. Turning on opus5_only while route rows exist
2376
- // does not give you the Opus 5 ladder everywhere, and turning on Extra does
2378
+ // does not give you the Opus 5.5 ladder everywhere, and turning on Extra does
2377
2379
  // not take the Claude table away; saying either would be wrong. So name the
2378
2380
  // ranges, which is the only statement that is true from both sides.
2379
2381
  function extraShadowNotice(claudeDir) {
@@ -2434,17 +2436,17 @@ function opus5Notice(on, claudeDir) {
2434
2436
  console.log(
2435
2437
  "\n " + ui.color.bold("Opus-5-only dispatch is now ACTIVE — for EVERY role, not just executors.") + "\n" +
2436
2438
  "\n Why: deep SWE-benchmark work on cost vs efficiency across Claude models finds a\n" +
2437
- " single Opus 5 agent, with the EFFORT ladder as the cost dial, the most efficient\n" +
2439
+ " single Opus 5.5 agent, with the EFFORT ladder as the cost dial, the most efficient\n" +
2438
2440
  " configuration. You trade model-class variety for effort variety.\n" +
2439
2441
  "\n Scored executors (/orc + /orc-ultra):\n\n" +
2440
2442
  ladderTable(OPUS5_SCORE_TABLE) +
2441
2443
  "\n Fixed roles now dispatched instead of their defaults:\n\n" + roleRows + "\n" +
2442
- "\n Already Opus 5, unchanged: analyst · planner · reviewer · verifier · test-author\n" +
2444
+ "\n Already Opus 5.5, unchanged: analyst · planner · reviewer · verifier · test-author\n" +
2443
2445
  " · combiner · learn-writer · advisor · judge.\n" +
2444
2446
  " NEVER forced: orc-trace-writer-haiku-4-5 (it transcribes a packet, no reasoning)\n" +
2445
2447
  " and orc-diy (its table is compile-owned — re-run `orc diy compile` to change it).\n" +
2446
2448
  "\n " + ui.mark.warn("Tier requirement — read this one:") + "\n" +
2447
- " Today only the [90,100] executor band needs an Opus 5 main session. With this ON,\n" +
2449
+ " Today only the [90,100] executor band needs an Opus 5.5 main session. With this ON,\n" +
2448
2450
  " EVERY dispatch does. A subagent can never outrank the main session, so on a lower\n" +
2449
2451
  " session every role silently falls back to the session model and the tier-honesty\n" +
2450
2452
  " rule reports a downgrade on EVERY return instead of occasionally. Hooks cannot\n" +
@@ -2860,17 +2862,17 @@ const LANE_INERT = {
2860
2862
  { key: "extra_fallback_agent", reason: "re-opening the gate IS the ask, so a second menu composed from a config key would be the same question twice in different words" },
2861
2863
  ],
2862
2864
  "orc-challenge": [
2863
- { key: "opus5_only", reason: "every agent in this lane is already claude-opus-5, so this is a no-op — the lane is unaffected, not exempt" },
2865
+ { key: "opus5_only", reason: "every agent in this lane is already claude-opus-5-5, so this is a no-op — the lane is unaffected, not exempt" },
2864
2866
  ],
2865
2867
  "orc-doc": [
2866
- { key: "opus5_only", reason: "both agents in this lane are already claude-opus-5, so this is a no-op — the lane is unaffected, not exempt" },
2868
+ { key: "opus5_only", reason: "both agents in this lane are already claude-opus-5-5, so this is a no-op — the lane is unaffected, not exempt" },
2867
2869
  ],
2868
- // v1.5.0 — both agents in this lane ship as claude-opus-5, and the
2870
+ // v1.5.0 — both agents in this lane ship as claude-opus-5-5, and the
2869
2871
  // interpreter's `low` is a MEASUREMENT choice rather than a cost one: a
2870
2872
  // harder-thinking interpreter reasons its way to why a leaked stack trace is
2871
2873
  // probably fine in staging, which is exactly the gap it exists to find.
2872
2874
  "orc-test": [
2873
- { key: "opus5_only", reason: "both agents in this lane are already claude-opus-5, so this is a no-op — the lane is unaffected, not exempt" },
2875
+ { key: "opus5_only", reason: "both agents in this lane are already claude-opus-5-5, so this is a no-op — the lane is unaffected, not exempt" },
2874
2876
  ],
2875
2877
  // v1.1.0 W2 — this lane DISPATCHES NOTHING. A detached command does the
2876
2878
  // waiting, so every family that answers "which model runs this" has no work
@@ -3145,7 +3147,7 @@ function laneAnnounce(lane, map, claudeDir, families) {
3145
3147
  out.push(
3146
3148
  off
3147
3149
  ? `opus5_only: ON, and INERT in this lane — ${off.reason}`
3148
- : "opus5_only: ON — every dispatched role uses Opus 5, with effort as the only cost dial"
3150
+ : "opus5_only: ON — every dispatched role uses Opus 5.5, with effort as the only cost dial"
3149
3151
  );
3150
3152
  }
3151
3153
  if (isTrue(map.extra_enabled)) {
@@ -4982,7 +4984,7 @@ const sha256 = (s) => crypto.createHash("sha256").update(s).digest("hex");
4982
4984
  // The tier-clip roster. It must contain EVERY agent the default table names —
4983
4985
  // `diyScoreTable()` looks each row's agent up here, so a table row naming an
4984
4986
  // agent this map does not know is a crash, not a fallback. v1.0.0 W4 added the
4985
- // two Opus 5 rows for exactly that reason.
4987
+ // two Opus 5.5 rows for exactly that reason.
4986
4988
  //
4987
4989
  // It also feeds `fixed_executor`'s option list, so every entry here is offerable
4988
4990
  // — which is what keeps the four agents no band names reachable (D14).
@@ -5014,10 +5016,10 @@ const DIY_TIERS = {
5014
5016
  "opus-4-8-high": { model: 5, effort: 2, modelId: "claude-opus-4-8", effortName: "high" },
5015
5017
  "opus-4-8-xhigh": { model: 5, effort: 3, modelId: "claude-opus-4-8", effortName: "xhigh" },
5016
5018
  "opus-4-8-max": { model: 5, effort: 4, modelId: "claude-opus-4-8", effortName: "max" },
5017
- "opus-5-med": { model: 6, effort: 1, modelId: "claude-opus-5", effortName: "medium" },
5018
- "opus-5-high": { model: 6, effort: 2, modelId: "claude-opus-5", effortName: "high" },
5019
- "opus-5-xhigh": { model: 6, effort: 3, modelId: "claude-opus-5", effortName: "xhigh" },
5020
- "opus-5-max": { model: 6, effort: 4, modelId: "claude-opus-5", effortName: "max" },
5019
+ "opus-5-med": { model: 6, effort: 1, modelId: "claude-opus-5-5", effortName: "medium" },
5020
+ "opus-5-high": { model: 6, effort: 2, modelId: "claude-opus-5-5", effortName: "high" },
5021
+ "opus-5-xhigh": { model: 6, effort: 3, modelId: "claude-opus-5-5", effortName: "xhigh" },
5022
+ "opus-5-max": { model: 6, effort: 4, modelId: "claude-opus-5-5", effortName: "max" },
5021
5023
  "fable-5-med": { model: 7, effort: 1, modelId: "claude-fable-5", effortName: "medium" },
5022
5024
  "fable-5-high": { model: 7, effort: 2, modelId: "claude-fable-5", effortName: "high" },
5023
5025
  "fable-5-xhigh": { model: 7, effort: 3, modelId: "claude-fable-5", effortName: "xhigh" },
@@ -5254,15 +5256,15 @@ function diyValidate(cfg) {
5254
5256
  if (cfg.autonomy === "hands-off" && (cfg.ship_mode === "commit" || cfg.ship_mode === "pr")) {
5255
5257
  warnings.push(`hands-off + ship_mode ${cfg.ship_mode}: git actions will run fully unattended`);
5256
5258
  }
5257
- // The pinned reviewer/verifier moved to claude-opus-5 (model rank 6) in
5259
+ // The pinned reviewer/verifier moved to claude-opus-5-5 (model rank 6) in
5258
5260
  // v0.34.0 — anything below that tier silently runs them at the session model.
5259
5261
  if (tier && tier.model < 6 && (cfg.review !== "off" || cfg.verify !== "off")) {
5260
5262
  // Careful wording (v0.34.7): `session_tier` is a DECLARATION, not the real
5261
5263
  // session model — a hook cannot read the model, only the effort. On a
5262
- // session that actually outranks the declared tier the pinned Opus 5 roles
5264
+ // session that actually outranks the declared tier the pinned Opus 5.5 roles
5263
5265
  // run at FULL pin (observed), so asserting they "will" downgrade is a false
5264
5266
  // alarm; what is certain is only that a LOWER real session caps them.
5265
- warnings.push(`session_tier ${cfg.session_tier} is below the pinned Opus 5 reviewer/verifier: if the REAL session is also below Opus 5 they run capped at it (the tier-honesty rule reports the actual model). A session above this tier runs them at full pin — but your executor table stays clipped to ${cfg.session_tier}; recompile to use the full ladder`);
5267
+ warnings.push(`session_tier ${cfg.session_tier} is below the pinned Opus 5.5 reviewer/verifier: if the REAL session is also below Opus 5.5 they run capped at it (the tier-honesty rule reports the actual model). A session above this tier runs them at full pin — but your executor table stays clipped to ${cfg.session_tier}; recompile to use the full ladder`);
5266
5268
  }
5267
5269
  return { errors, warnings };
5268
5270
  }
@@ -7646,7 +7648,7 @@ const WIKI_TIER_LADDER = [
7646
7648
  { id: "small-delta", tier: "light", why: "small delta, no new surface" },
7647
7649
  ];
7648
7650
 
7649
- // The POSITION each tier resolves to (v0.55.0). Two slots and ONE Opus 5 agent
7651
+ // The POSITION each tier resolves to (v0.55.0). Two slots and ONE Opus 5.5 agent
7650
7652
  // is not a contradiction: a slot names the POSITION, not the model, and the
7651
7653
  // ladder already collapses both tiers onto that agent while `opus5_only` is on.
7652
7654
  const WIKI_TIER_SLOT = { deep: "wiki-scanner-deep", light: "wiki-scanner-light" };
@@ -11236,7 +11238,7 @@ function resume() {
11236
11238
  // assumed the opposite, so an interrupted turn produced a SECOND agent on the
11237
11239
  // same task while the first was still working. A graded run put THREE
11238
11240
  // `orc-executor-opus-5-low` agents on one task for 50m19s + 115m22s + 100m53s
11239
- // — 266 minutes of Opus 5 for one authorised dispatch, all editing the same
11241
+ // — 266 minutes of Opus 5.5 for one authorised dispatch, all editing the same
11240
11242
  // files. The hook already recorded every one of them; nothing ever READ it.
11241
11243
  //
11242
11244
  // The pending sidecar (`<trace>.pending.json`, written by orc-trace.js on every
@@ -21240,7 +21242,7 @@ function docForecastCmd(claudeDir, slugArg) {
21240
21242
  for (const part of roleParts) {
21241
21243
  const vec = vecFor(part.agent, part.n, pct);
21242
21244
  if (!part.target) {
21243
- const m = priceVector(claudeDir, vec, "claude-opus-5");
21245
+ const m = priceVector(claudeDir, vec, "claude-opus-5-5");
21244
21246
  if (m.usd === null) priceable = false;
21245
21247
  else total += m.usd;
21246
21248
  continue;
@@ -21264,8 +21266,8 @@ function docForecastCmd(claudeDir, slugArg) {
21264
21266
  };
21265
21267
  const usd50 = usdAt("p50");
21266
21268
  const usd90 = usdAt("p90");
21267
- const money50 = priceVector(claudeDir, p50, "claude-opus-5");
21268
- const money90 = priceVector(claudeDir, p90, "claude-opus-5");
21269
+ const money50 = priceVector(claudeDir, p50, "claude-opus-5-5");
21270
+ const money90 = priceVector(claudeDir, p90, "claude-opus-5-5");
21269
21271
  const extraView = {
21270
21272
  resolved: docExtra.resolved,
21271
21273
  why: docExtra.why,
@@ -21484,7 +21486,7 @@ function docCostCmd(claudeDir, slugArg) {
21484
21486
  runRows.push({ trace: r.name, lane: r.lane, date: r.date, tokens: runVec, weighted: weightedTokens(runVec) });
21485
21487
  }
21486
21488
 
21487
- const money = priceVector(claudeDir, total, "claude-opus-5");
21489
+ const money = priceVector(claudeDir, total, "claude-opus-5-5");
21488
21490
  const sections = Object.values(bySection).map((s) => ({
21489
21491
  id: s.id,
21490
21492
  heading: s.heading,
@@ -21493,7 +21495,7 @@ function docCostCmd(claudeDir, slugArg) {
21493
21495
  joined: s.joined > 0,
21494
21496
  tokens: s.joined ? s.vec : null,
21495
21497
  weighted: s.joined ? weightedTokens(s.vec) : null,
21496
- usd: s.joined ? priceVector(claudeDir, s.vec, "claude-opus-5").usd : null,
21498
+ usd: s.joined ? priceVector(claudeDir, s.vec, "claude-opus-5-5").usd : null,
21497
21499
  }));
21498
21500
  const unjoined = sections.filter((s) => !s.joined).length;
21499
21501
  const code = joined === 0 ? 3 : unjoined ? 1 : 0;
@@ -25827,8 +25829,8 @@ function extraResolveFor(claudeDir, score, opts) {
25827
25829
  //
25828
25830
  // `claude` is an ARRAY because `quick-executor` has two: a menu is what that
25829
25831
  // lane is. `claude_opus5` is the variant `opus5_only` would have used, derived
25830
- // from the shipped ladders — NULL where the agent is already Opus 5, so two
25831
- // wiki slots collapsing onto one Opus 5 scanner is not a contradiction: the
25832
+ // from the shipped ladders — NULL where the agent is already Opus 5.5, so two
25833
+ // wiki slots collapsing onto one Opus 5.5 scanner is not a contradiction: the
25832
25834
  // slot names the POSITION, not the model. NO AGENT IS ADDED by this release
25833
25835
  // and no pair is needed (the floor stays 51).
25834
25836
  const EXTRA_SLOTS = [
@@ -43603,7 +43605,7 @@ function slEngine() {
43603
43605
  // panel really hands over — including `tokenCount`, which is the number v1.2.0
43604
43606
  // concluded could not be measured.
43605
43607
  const SL_TASK_FIXTURES = {
43606
- healthy: { id: "t1", name: "orc-executor-opus-5-low", type: "orc-executor-opus-5-low", description: "wire the retry ladder", status: "running", model: "claude-opus-5", effort: "low", tokenCount: 84000, contextWindowSize: 200000, startTime: 1767225600000 - 17 * 60000 },
43608
+ healthy: { id: "t1", name: "orc-executor-opus-5-low", type: "orc-executor-opus-5-low", description: "wire the retry ladder", status: "running", model: "claude-opus-5-5", effort: "low", tokenCount: 84000, contextWindowSize: 200000, startTime: 1767225600000 - 17 * 60000 },
43607
43609
  degraded: { id: "t2", name: "orc-executor-sonnet-4-6-med", type: "orc-executor-sonnet-4-6-med", description: "rename two files", status: "failed", model: "claude-sonnet-4-6", effort: "medium", tokenCount: 191000, contextWindowSize: 200000, startTime: 1767225600000 - 96 * 60000 },
43608
43610
  empty: { id: "t3" },
43609
43611
  };
@@ -43612,7 +43614,7 @@ const SL_FIXTURES = {
43612
43614
  healthy: {
43613
43615
  label: "a healthy session mid-run",
43614
43616
  payload: {
43615
- model: { id: "claude-opus-5", display_name: "Opus 5" },
43617
+ model: { id: "claude-opus-5-5", display_name: "Opus 5.5" },
43616
43618
  effort: { level: "high" },
43617
43619
  version: "2.1.80",
43618
43620
  context_window: { used_percentage: 38, remaining_percentage: 62, context_window_size: 200000 },
@@ -36,8 +36,8 @@ const SECTIONS = [
36
36
  "init merges two guards into .claude/settings.json (non-destructively):",
37
37
  " • a PreToolUse effort hard-block (keeps /orc on a capable tier)",
38
38
  " • a statusline model warning (❌ ORC WILL DEGRADE on the wrong tier)",
39
- "Run your MAIN session on Opus 4.8 high (or Opus 5 / Fable 5 at medium+) —",
40
- "subagents can't exceed it; the top [90,100] band needs an Opus 5 session.",
39
+ "Run your MAIN session on Opus 4.8 high (or Opus 5.5 / Fable 5 at medium+) —",
40
+ "subagents can't exceed it; the top [90,100] band needs an Opus 5.5 session.",
41
41
  ],
42
42
  },
43
43
  {
@@ -54,7 +54,7 @@ const SECTIONS = [
54
54
  "",
55
55
  "Session-tier acceptance (the statusline verdict):",
56
56
  " ✔ ORC-ready Opus 4.8 high (the baseline)",
57
- " 🚀 ORC-boosted Opus 4.8 xhigh/max, or Opus 5 / Fable 5 medium…max",
57
+ " 🚀 ORC-boosted Opus 4.8 xhigh/max, or Opus 5.5 / Fable 5 medium…max",
58
58
  " ✖ WILL DEGRADE anything below (wrong model or sub-baseline effort)",
59
59
  "",
60
60
  "Which one do I type? Start from what you HAVE, not from the lane names:",
@@ -153,7 +153,7 @@ const SECTIONS = [
153
153
  title: "⑧ Troubleshooting",
154
154
  lines: [
155
155
  " \"/orc blocked — required effort not met\"",
156
- " → switch to high effort (or Opus 5 / Fable 5 at medium+). xhigh/max also pass.",
156
+ " → switch to high effort (or Opus 5.5 / Fable 5 at medium+). xhigh/max also pass.",
157
157
  " statusline says \"WILL DEGRADE\"",
158
158
  " → wrong model/effort, or a usage window ≥90%. Move to Opus 4.8 high or Opus 5.",
159
159
  " \"wiki: UNREGISTERED\"",