agent-nuvira 3.3.15 → 3.3.16

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 (49) hide show
  1. package/dist/cli/chat.d.ts +16 -0
  2. package/dist/cli/chat.d.ts.map +1 -1
  3. package/dist/cli/chat.js +80 -5
  4. package/dist/cli/chat.js.map +1 -1
  5. package/dist/cli/loop-executor.d.ts.map +1 -1
  6. package/dist/cli/loop-executor.js +4 -0
  7. package/dist/cli/loop-executor.js.map +1 -1
  8. package/dist/cli/trace.d.ts +10 -0
  9. package/dist/cli/trace.d.ts.map +1 -1
  10. package/dist/cli/trace.js +34 -1
  11. package/dist/cli/trace.js.map +1 -1
  12. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  13. package/dist/inference/tool-call-utils.js +27 -4
  14. package/dist/inference/tool-call-utils.js.map +1 -1
  15. package/dist/learning/provider-fallback.d.ts +16 -1
  16. package/dist/learning/provider-fallback.d.ts.map +1 -1
  17. package/dist/learning/provider-fallback.js +9 -1
  18. package/dist/learning/provider-fallback.js.map +1 -1
  19. package/dist/learning/reasoning-trace.d.ts +83 -0
  20. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  21. package/dist/learning/reasoning-trace.js +74 -7
  22. package/dist/learning/reasoning-trace.js.map +1 -1
  23. package/dist/learning/step-checkpoint.d.ts.map +1 -1
  24. package/dist/learning/step-checkpoint.js +20 -6
  25. package/dist/learning/step-checkpoint.js.map +1 -1
  26. package/dist/learning/turn-report.d.ts +10 -0
  27. package/dist/learning/turn-report.d.ts.map +1 -1
  28. package/dist/learning/turn-report.js +8 -1
  29. package/dist/learning/turn-report.js.map +1 -1
  30. package/dist/tools/tool-loop.d.ts +34 -0
  31. package/dist/tools/tool-loop.d.ts.map +1 -1
  32. package/dist/tools/tool-loop.js +146 -3
  33. package/dist/tools/tool-loop.js.map +1 -1
  34. package/dist/web-dashboard/server.d.ts.map +1 -1
  35. package/dist/web-dashboard/server.js +9 -0
  36. package/dist/web-dashboard/server.js.map +1 -1
  37. package/dist/web-dashboard/src/types.d.ts +31 -0
  38. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  39. package/package.json +2 -2
  40. package/src/web-dashboard/public/assets/{index-zjbdJnO-.js → index-goRHl73H.js} +70 -70
  41. package/src/web-dashboard/public/assets/{index-zjbdJnO-.js.map → index-goRHl73H.js.map} +1 -1
  42. package/src/web-dashboard/public/index.html +1 -1
  43. package/dist/agents/nvda-addon.d.ts.map +0 -1
  44. package/dist/agents/nvda-addon.js.map +0 -1
  45. package/dist/forwarded.d.ts.map +0 -1
  46. package/dist/forwarded.js.map +0 -1
  47. package/dist/tools/child-agent-worker.d.ts +0 -15
  48. package/dist/tools/child-agent-worker.d.ts.map +0 -1
  49. package/dist/tools/child-agent-worker.js.map +0 -1
@@ -142,6 +142,10 @@ export declare function turnCarriesHonestyFlag(result: {
142
142
  targetWords: number;
143
143
  source: string;
144
144
  };
145
+ /** A change was asked for and a plan delivered instead (see `ToolLoopResult`). */
146
+ undeliveredChange?: boolean;
147
+ /** A health verdict nothing this turn observed the product to support. */
148
+ unbackedHealthClaim?: boolean;
145
149
  }): boolean;
146
150
  export declare class ChatCommand extends BaseCommand {
147
151
  private devModeAuto;
@@ -451,6 +455,18 @@ export declare class ChatCommand extends BaseCommand {
451
455
  targetWords: number;
452
456
  source: string;
453
457
  };
458
+ /**
459
+ * Measured 2026-10-09 — a CHANGE was asked for, nothing was mutated, and the
460
+ * answer was the model's plan or promise. The edit-shaped sibling of
461
+ * `undeliveredArtifact`; surfaces must not read it as finished work.
462
+ */
463
+ undeliveredChange?: boolean;
464
+ /**
465
+ * Measured 2026-10-09 — the answer vouched for the product's health while
466
+ * nothing this turn observed the product running, so the verdict rests on
467
+ * evidence about something else (usually a unit suite for one module).
468
+ */
469
+ unbackedHealthClaim?: boolean;
454
470
  /**
455
471
  * Item 13 (round 3) — a SINGLE authored artifact that met the ask's stated
456
472
  * magnitude and admitted no omission: the "fluent, on-length" delivery no rule
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAc,MAAM,eAAe,CAAC;AAiBxD,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,gCAAgC,CAAC;AAqCxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAqBtD,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQhG;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAgKpC,sEAAsE;AACtE,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,oEAAoE;AACpE,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,yBAAyB,GAC/B,wBAAwB,CA4B1B;AAID;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,GAAG,EAClB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;;;;;GASG;AACH;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,uBAA0B,CAAC;AAEjE;;;;;;;;;;;;;GAaG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,GACtD,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAkDpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnG,GAAG,OAAO,CAaV;AAID,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB,CAA6B;IAE3D;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB,CAA6B;IAExD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc,CAA6B;IACnD,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB,CAAC,CAAS;IAEnC;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,CAA2B;IAE/C,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB;IAYzB;;;;;;OAMG;IACH,OAAO,CAAC,+BAA+B,CAAqB;IAE5D;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAEf;IAEF;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB,CAAS;IAEpC;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB,CAAC,CAAgE;IAE1F;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAC,CAAuC;IAE3D;;;;;;;;;OASG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,OAAO,CAAC;QAAM,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzE,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACjC;;;;;WAKG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,+DAA+D;QAC/D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC;;;;WAIG;QACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;QACvE;;;;WAIG,CAAI,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,wBAAwB,EAAE,YAAY,KAAK,IAAI,CAAC;QACxF;;;;WAIG;QACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,sBAAsB,EAAE,cAAc,KAAK,IAAI,CAAC;QAC7E,4EAA4E;QAC5E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,KAAK,IAAI,CAAC;QACrF;;;;WAIG;QACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;QAC3C;;;WAGG;QACH,SAAS,CAAC,EAAE,OAAO,wBAAwB,EAAE,aAAa,CAAC;QAC3D,iGAAiG;QACjG,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACjC;;;;;;WAMG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;;;;;;;WASG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;;;;;WAOG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;;;WAKG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;;;;WAKG;QACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC;;;;;WAKG;QACH,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB;;;;;WAKG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;;;;;;WAQG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;;;;;WAOG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,sFAAsF;QACtF,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB;;;;WAIG;QACH,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtB,GACL,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,oEAAoE;QACpE,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,uEAAuE;QACvE,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,yEAAyE;QACzE,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,0EAA0E;QAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,4EAA4E;QAC5E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB;;;WAGG;QACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC;;;WAGG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;;;WAIG;QACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B;;;;WAIG;QACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B;;;;;WAKG;QACH,kBAAkB,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD;;;;;WAKG;QACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B;;;;WAIG;QACH,iBAAiB,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAClG;;;;;;WAMG;QACH,mBAAmB,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;;;;;;WAQG;QACH,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;QACvC;;;;WAIG;QACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;QACzB;;;;;;WAMG;QACH,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,CAAC;IAqdA;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAUtB,MAAM,IAAI,OAAO;IA4CjB;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;YAYN,OAAO;IA0arB;;;;;;;;;;;;;OAaG;YACW,aAAa;IAggD3B;;;;;;OAMG;IACH;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,kBAAkB;IA+f1B;;;;OAIG;YACW,eAAe;IAkC7B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;;;;;;;;;;;;OAeG;IACH;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB;YAgBnB,eAAe;IAI7B;;;;OAIG;IACH;;;;;;;OAOG;YACW,gBAAgB;IAqY9B;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;YAmFZ,aAAa;CAwG5B"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"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"}
package/dist/cli/chat.js CHANGED
@@ -24,7 +24,7 @@ import { beginIsolation, endIsolation, resolveIsolationRequest, worktreeNotice,
24
24
  import { closeResume, openResume, resolveResumeRequest, } from '../learning/step-checkpoint.js';
25
25
  import { applyActiveModel } from './model.js';
26
26
  import { capabilityReasoningEffort, isMaxCapability } from '../config/capability-mode.js';
27
- import { getProviderFallback, classifyFallbackError, isRetryableError, isTransientForRetry, recordRegistrySuccess } from '../learning/provider-fallback.js';
27
+ import { getProviderFallback, classifyFallbackError, isRetryableError, isTransientForRetry, recordRegistrySuccess, recordRegistryFailure } from '../learning/provider-fallback.js';
28
28
  import { recordActionFailure, } from '../learning/failure-bookkeeping.js';
29
29
  import { getRouterBandit } from '../learning/router-bandit.js';
30
30
  import { UnusableModelResponseError } from '../learning/response-usability.js';
@@ -372,7 +372,12 @@ export function turnCarriesHonestyFlag(result) {
372
372
  result.noActionTaken ||
373
373
  result.artifactIncomplete ||
374
374
  result.unverifiedFileClaim ||
375
- result.artifactShortfall);
375
+ result.artifactShortfall ||
376
+ // Measured 2026-10-09: a plan delivered in place of a requested change, and
377
+ // a health verdict nothing observed. Both are answers that must not be
378
+ // replayed from the cache as settled work.
379
+ result.undeliveredChange ||
380
+ result.unbackedHealthClaim);
376
381
  }
377
382
  // ─── ChatCommand ────────────────────────────────────────────────────────────
378
383
  export class ChatCommand extends BaseCommand {
@@ -772,6 +777,11 @@ export class ChatCommand extends BaseCommand {
772
777
  // Bundle 23 — a file far short of the stated magnitude is the same:
773
778
  // the delivered artifact is not what was asked for.
774
779
  artifactShortfall: Boolean(answer.artifactShortfall),
780
+ // Measured 2026-10-09 — a change asked for and a plan delivered, and a
781
+ // health verdict nothing observed the product to back, both reach the
782
+ // report so neither can read as finished work on any surface.
783
+ undeliveredChange: answer.undeliveredChange,
784
+ unbackedHealthClaim: answer.unbackedHealthClaim,
775
785
  },
776
786
  });
777
787
  }
@@ -1907,6 +1917,13 @@ export class ChatCommand extends BaseCommand {
1907
1917
  });
1908
1918
  // G18 — the tool-context emit (declared above) now has somewhere to write.
1909
1919
  traceIdForEvents = chatTraceId;
1920
+ /**
1921
+ * Requests-panel latency: the turn's MODEL time, summed from the per-call
1922
+ * durations `recordChatStep` already measures. The action log recorded no
1923
+ * `latencyMs` at all from this surface, so every chat row rendered `—` in
1924
+ * the dashboard even though the number existed one line away in the trace.
1925
+ */
1926
+ let turnModelMs = 0;
1910
1927
  // A2 — record the routing DECISION as a first-class event, so a turn that
1911
1928
  // ran on a weak/incapable model is self-evident in the Trace tab. The
1912
1929
  // failed Tauri turn had no such record; this is the instrument that would
@@ -2034,11 +2051,15 @@ export class ChatCommand extends BaseCommand {
2034
2051
  const prompt = threadMsgs.map((m) => (m.role === 'system' ? `[System]\n${m.content}` : m.role === 'user' ? `[User]\n${m.content}` : m.role === 'assistant' ? `[Assistant]\n${m.content}` : `[Tool result]\n${m.content}`)).join('\n\n');
2035
2052
  try {
2036
2053
  const resp = await callModel(threadMsgs, schemas2, tok, sig);
2037
- recordChatStep(prompt, resp.content ?? '', Date.now() - start, true);
2054
+ const ms = Date.now() - start;
2055
+ turnModelMs += ms;
2056
+ recordChatStep(prompt, resp.content ?? '', ms, true);
2038
2057
  return resp;
2039
2058
  }
2040
2059
  catch (err) {
2041
- recordChatStep(prompt, '', Date.now() - start, false, err instanceof Error ? err.message : String(err));
2060
+ const ms = Date.now() - start;
2061
+ turnModelMs += ms;
2062
+ recordChatStep(prompt, '', ms, false, err instanceof Error ? err.message : String(err));
2042
2063
  throw err;
2043
2064
  }
2044
2065
  };
@@ -2404,6 +2425,10 @@ export class ChatCommand extends BaseCommand {
2404
2425
  // backs, both make the turn `incomplete` on the trace (not `answered`). incompleteArtifactClaim: Boolean(result.artifactIncomplete),
2405
2426
  unverifiedFileClaim: result.unverifiedFileClaim,
2406
2427
  artifactShortfall: Boolean(result.artifactShortfall),
2428
+ // Measured 2026-10-09 — an unchanged workspace answering a change request,
2429
+ // and a health verdict nothing observed, are both UNFINISHED work.
2430
+ undeliveredChange: result.undeliveredChange,
2431
+ unbackedHealthClaim: result.unbackedHealthClaim,
2407
2432
  });
2408
2433
  // A cancelled / failed / incomplete turn is NOT a success. `!generationFailed`
2409
2434
  // used to let a cancelled run record `success: true` while its outcome said
@@ -2415,6 +2440,15 @@ export class ChatCommand extends BaseCommand {
2415
2440
  // Best-effort by construction; `endTrace` above cleared the in-progress id,
2416
2441
  // so the trace id is passed explicitly.
2417
2442
  recordTraceFindings(chatTraceId, findings);
2443
+ // ── §6.5 — WAS THE TURN'S ANSWER SERVED BY A PAIR THAT COULD HOLD IT? ──
2444
+ // Computed ONCE, before the console warnings and the registry write, so the
2445
+ // warning the user reads and the outcome the panel records cannot disagree.
2446
+ // Gated on the turn having actually needed agentic work (it called tools): a
2447
+ // tiny local model answering a plain conversational turn is not a quality
2448
+ // failure, and claiming one would invent a false signal in the other
2449
+ // direction — the same defect this programme exists to remove.
2450
+ const neededAgenticWork = (result.toolCalls?.length ?? 0) > 0;
2451
+ const degradedPair = neededAgenticWork && Boolean(session.model) && !isAgenticCapableModel(session.model, session.type);
2418
2452
  // G3 — record what this turn actually did so the NEXT turn starts from it
2419
2453
  // (files changed, whether anything verified the work, and whether the user
2420
2454
  // reported a regression). Best-effort: the ledger must never break a turn.
@@ -2492,6 +2526,19 @@ export class ChatCommand extends BaseCommand {
2492
2526
  const s = result.artifactShortfall;
2493
2527
  logger.warn(` ⚠️ ${s.path} has ~${s.deliveredWords} words, but the request asked for ~${s.targetWords} (${s.source}) — the deliverable is materially SHORT of what was asked.`);
2494
2528
  }
2529
+ // Measured 2026-10-09 — the two verdicts that used to be invisible on every
2530
+ // surface but the trace. Both are the failure that LOOKS most like success,
2531
+ // so the reader is told plainly. Printed, never appended to `content`, so
2532
+ // the delivered answer, the gateway bubble and the answer cache stay clean.
2533
+ if (result.undeliveredChange) {
2534
+ logger.warn(' ⚠️ This request asked for a CHANGE, but nothing was changed this turn — the text above is a PLAN, not the work.');
2535
+ }
2536
+ if (result.unbackedHealthClaim) {
2537
+ logger.warn(' ⚠️ This reply vouches for the project working, but NOTHING this turn exercised the product (no server started, no route called) — treat the verdict as UNBACKED.');
2538
+ }
2539
+ if (degradedPair) {
2540
+ logger.warn(` ⚠️ No agentic-capable model was reachable — this turn was served by ${session.type}/${session.model}, which cannot hold a task like this. Treat the result as DEGRADED.`);
2541
+ }
2495
2542
  }
2496
2543
  catch {
2497
2544
  // Best-effort.
@@ -2535,8 +2582,34 @@ export class ChatCommand extends BaseCommand {
2535
2582
  }
2536
2583
  history.push({ role: 'assistant', content: result.content });
2537
2584
  this.memoryNoteTurn(message, result.content);
2585
+ // ── WHICH PAIR ANSWERED, AND WAS IT ABLE TO? ────────────────────────
2586
+ // This used to record `verified` UNCONDITIONALLY for `session.type` /
2587
+ // `session.model`. Two consequences, both measured on 2026-10-09:
2588
+ //
2589
+ // 1. THE REQUESTS PANEL VOUCHED FOR A MODEL WHOSE ANSWERS ARE UNUSABLE.
2590
+ // `local/qwen2.5:0.5b` served step 2 of a two-step turn after the cloud
2591
+ // model was rate-limited and replied with filler — and the dashboard
2592
+ // showed **4 requests, 0.0% error rate** for it, because `verified`
2593
+ // means "the provider answered", not "the answer was usable".
2594
+ // 2. ROUTING WAS REWARDED FOR IT. `verified` is what marks a pair good for
2595
+ // real usage, so the weak model was promoted by the same turn that
2596
+ // exposed it.
2597
+ //
2598
+ // A pair that cannot hold an agentic task is a QUALITY-REJECTED call: it is
2599
+ // booked as a failure with its own class (so the panel's error rate reflects
2600
+ // it and the walk stops re-picking it) instead of as health.
2601
+ //
2602
+ // `degradedPair` is computed once above the console warnings, so the
2603
+ // verdict the user reads and the outcome recorded here cannot drift.
2538
2604
  try {
2539
- recordRegistrySuccess(session.type, session.model, 'chat');
2605
+ if (degradedPair) {
2606
+ recordRegistryFailure(session.type, session.model, new Error(`model answered with a reply it could not carry the task with ` +
2607
+ 'instead of the task (not agentic-capable)'), 'quality-rejected', 'chat', turnModelMs);
2608
+ }
2609
+ else {
2610
+ // The turn's MODEL time, so the Requests panel stops rendering `—`.
2611
+ recordRegistrySuccess(session.type, session.model, 'chat', turnModelMs);
2612
+ }
2540
2613
  }
2541
2614
  catch {
2542
2615
  // Best-effort.
@@ -2621,6 +2694,8 @@ export class ChatCommand extends BaseCommand {
2621
2694
  incompleteArtifactClaim: Boolean(result.artifactIncomplete),
2622
2695
  unverifiedFileClaim: result.unverifiedFileClaim,
2623
2696
  artifactShortfall: Boolean(result.artifactShortfall),
2697
+ undeliveredChange: result.undeliveredChange,
2698
+ unbackedHealthClaim: result.unbackedHealthClaim,
2624
2699
  });
2625
2700
  const chatFollowups = withContinuationFollowups(result.followups, {
2626
2701
  unfinished: !traceOutcomeSucceeded(chatOutcomeForFollowups),