@claudexor/orchestrator 3.3.7-rc.0 → 3.3.8

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.
@@ -1,4 +1,4 @@
1
- import type { AccessProfile, Attachment, ControlReviewerPanelEntry, EffortHint, HarnessCapabilities, KnownModelEntry, ExternalContextPolicy, HarnessEvent, InteractionHandlerResult, InteractionRequest, ModeKind, PaidBudget, QuotaAbsence, QuotaSnapshot, RoutingGoal, ProtectedPathApproval, RequestRequirementResolution, RunEvent, RunLifecycle, RunOutcomeFacts, TestCommandInvocation, ProviderFamily, ImplementationTransport, WebPolicySupport } from "@claudexor/schema";
1
+ import type { AccessProfile, Attachment, ControlReviewerPanelEntry, EffortHint, HarnessCapabilities, KnownModelEntry, ExternalContextPolicy, HarnessEvent, InteractionHandlerResult, InteractionRequest, ModeKind, PaidBudget, QuotaAbsence, QuotaSnapshot, RoutingGoal, ProtectedPathApproval, RequestRequirementResolution, RunEvent, RunLifecycle, RunOutcomeFacts, TestCommandInvocation, ProviderFamily, CredentialProfile, ImplementationTransport, WebPolicySupport } from "@claudexor/schema";
2
2
  import { type PlannerAttemptArgs, type PlannerAttemptOutcome } from "./plannerAttempt.js";
3
3
  export type { PlannerAttemptArgs, PlannerAttemptOutcome } from "./plannerAttempt.js";
4
4
  import { type ExtraMcpServer } from "@claudexor/schema";
@@ -329,6 +329,14 @@ export interface RoutedAdapter {
329
329
  /** Pre-spawn credential-route estimate (INV-061 projection of preference x
330
330
  * doctor source readiness); null = undecidable, model gates stay fail-closed. */
331
331
  authRouteEstimate: "local_session" | "api_key" | null;
332
+ /** Quota identity resolved before pool ranking. The model is frozen for the
333
+ * initial route; a fallback/downgrade model forces a fresh profile preflight
334
+ * before spawn instead of reusing this admission. */
335
+ quotaAdmission: {
336
+ model: string | null;
337
+ profile: CredentialProfile | null;
338
+ route: "vendor_native" | "managed_api_key" | null;
339
+ };
332
340
  /** Manifest `synthesize` capability (#27 / D-6): only such routes are eligible
333
341
  * to run the deep-scan bounded synthesis reducer over the scout reports. */
334
342
  supportsSynthesize: boolean;
@@ -456,6 +464,10 @@ export declare class Orchestrator {
456
464
  * always pinned first. Cross-family diversity is encouraged for later slots.
457
465
  */
458
466
  private orderPool;
467
+ /** Harness-only convergence helpers still need the exact quota identity
468
+ * selected before ranking. This facade keeps their small interface while
469
+ * preventing a scoped limit on one model/account from cooling another. */
470
+ private quotaLedgerView;
459
471
  /**
460
472
  * Typed auth-route evidence for one candidate (QA-034): the concrete
461
473
  * credential route the resolved auth mode maps to, plus the doctor's
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ import { assertRouteModelsAllowed } from "./modelGovernance.js";
18
18
  import { governRouteEffort } from "./effortGovernance.js";
19
19
  import { isFullAccess, RequestRequirementsResolver } from "./requestRequirements.js";
20
20
  import { activateDelegationParent } from "./delegation-parent-activation.js";
21
- import { routingFailureClassification } from "./routing-failure.js";
21
+ import { writeRoutingFailureTerminal } from "./routing-failure.js";
22
22
  export { routingFailureClassification } from "./routing-failure.js";
23
23
  import { runBounded } from "./run-bounded.js";
24
24
  import { planPrompt } from "./plan-prompt.js";
@@ -327,9 +327,11 @@ export class Orchestrator {
327
327
  execRootOf(input) {
328
328
  return input.executionRoot ?? input.repoRoot;
329
329
  }
330
- async sessionSpecFields(input, harnessId, log, defaultRoute = null) {
330
+ async sessionSpecFields(input, harnessId, model, log, defaultRoute = null, quotaAdmission) {
331
331
  const cfg = this.config(input.repoRoot)?.global;
332
- const profile = await this.preflightProfile(input, harnessId, log, defaultRoute);
332
+ const profile = quotaAdmission?.model === model
333
+ ? quotaAdmission.profile
334
+ : await this.preflightProfile(input, harnessId, model, log, defaultRoute);
333
335
  return {
334
336
  // "auto" at ANY level falls through (thread turns send the thread default
335
337
  // "auto" as a per-run value; it must not shadow a configured preference).
@@ -441,13 +443,13 @@ export class Orchestrator {
441
443
  .filter(({ profile, status }) => profileStatusAdmits(profile, status))
442
444
  .map(({ profile }) => profile.profile_id));
443
445
  }
444
- async preflightProfile(input, harnessId, log, defaultRoute) {
446
+ async preflightProfile(input, harnessId, model, log, defaultRoute) {
445
447
  const profile = this.resolveCredentialProfile(input, harnessId);
446
448
  const policy = this.profilePolicy(input.repoRoot, harnessId);
447
449
  const registry = this.config(input.repoRoot)?.global.credential_profiles ?? [];
448
450
  const snapshots = this.deps.quotaSnapshots?.() ?? [];
449
451
  const emit = (type, payload) => log?.emit(type, payload);
450
- const breach = profileHeadroomBreach(snapshots, harnessId, profile?.profile_id ?? null, policy.headroom_threshold);
452
+ const breach = profileHeadroomBreach(snapshots, harnessId, profile?.profile_id ?? null, policy.headroom_threshold, model);
451
453
  const readyProfileIds = policy.limit_action === "rotate" &&
452
454
  breach !== null &&
453
455
  (profile !== null || defaultRoute === "local_session")
@@ -464,6 +466,7 @@ export class Orchestrator {
464
466
  snapshots,
465
467
  readyProfileIds,
466
468
  defaultRoute,
469
+ model,
467
470
  emit,
468
471
  });
469
472
  }
@@ -474,6 +477,7 @@ export class Orchestrator {
474
477
  registry,
475
478
  snapshots,
476
479
  readyProfileIds,
480
+ model,
477
481
  emit,
478
482
  });
479
483
  }
@@ -751,6 +755,7 @@ export class Orchestrator {
751
755
  // the default store's sources apply only to profile-less runs.
752
756
  authRouteEstimate: this.profileAuthRoute(input, id) ??
753
757
  estimateEffectiveAuthRoute(this.authPreferenceForHarness(input.repoRoot, id, input.authPreference), status.authSources),
758
+ quotaAdmission: { model: null, profile: null, route: null },
754
759
  supportsSynthesize: manifest.capabilities.synthesize,
755
760
  supportsInteractive: manifest.capabilities.interactive,
756
761
  supportsJsonSchemaOutput: manifest.capabilities.json_schema_output,
@@ -785,11 +790,29 @@ export class Orchestrator {
785
790
  if (pool.length === 0) {
786
791
  throw new HarnessUnavailableError(`no harness can perform '${intent}' for this mode${dropped.length ? ` (skipped: ${dropped.join(", ")})` : ""}`);
787
792
  }
788
- const ordered = this.orderPool(pool, input, intent, statusById, ledger, runId);
793
+ // Quota admission must use the account that will actually spawn. In
794
+ // particular, an opt-in default-subject rotation has to select its ready
795
+ // profile before the budget router filters the exhausted default away.
796
+ // The same resolved profile is reused by the first spec build below.
797
+ const quotaPreparedPool = await Promise.all(pool.map(async (routed) => {
798
+ const model = input.models?.[routed.adapter.id] ?? routed.settings?.defaultModel ?? null;
799
+ const profile = await this.preflightProfile(input, routed.adapter.id, model, log, routed.authRouteEstimate);
800
+ const route = profile
801
+ ? profile.credential_kind === "api_key"
802
+ ? "managed_api_key"
803
+ : "vendor_native"
804
+ : routed.authRouteEstimate === "api_key"
805
+ ? "managed_api_key"
806
+ : routed.authRouteEstimate === "local_session"
807
+ ? "vendor_native"
808
+ : null;
809
+ return { ...routed, quotaAdmission: { model, profile, route } };
810
+ }));
811
+ const ordered = this.orderPool(quotaPreparedPool, input, intent, statusById, ledger, runId);
789
812
  if (ordered.length === 0) {
790
813
  throw new HarnessUnavailableError(`no harness remains eligible for '${intent}' after budget and quota routing`);
791
814
  }
792
- emitPrimaryDivergence(log, input.primaryHarness, ordered, pool, dropped);
815
+ emitPrimaryDivergence(log, input.primaryHarness, ordered, quotaPreparedPool, dropped);
793
816
  const n = input.n ?? ordered.length;
794
817
  const selectionOrder = ordered;
795
818
  const out = [];
@@ -896,28 +919,25 @@ export class Orchestrator {
896
919
  : authModes.includes("api_key")
897
920
  ? "api_key"
898
921
  : "unknown";
899
- // A selected profile's credential_kind decides the route outright
900
- // (round-18 #2): an api_key profile must never inherit a
922
+ // The quota-preflight profile's credential_kind decides the route
923
+ // outright (round-18 #2). This includes an unpinned default subject
924
+ // that rotated before ranking; an api_key profile must never inherit a
901
925
  // subscription classification from the default store's metric.
902
- const authMode = this.profileAuthRoute(input, r.adapter.id) ??
926
+ const admittedProfileRoute = r.quotaAdmission.profile
927
+ ? r.quotaAdmission.profile.credential_kind === "api_key"
928
+ ? "api_key"
929
+ : "local_session"
930
+ : null;
931
+ const authMode = admittedProfileRoute ??
903
932
  (input.authPreference === "api_key"
904
933
  ? "api_key"
905
934
  : input.authPreference === "subscription"
906
935
  ? "local_session"
907
936
  : (metric?.last_auth_mode ?? guessedAuthMode));
908
- // The quota subject this candidate would actually run as (release
909
- // wave round-16 #2): the resolved profile id, or null for the engine
910
- // default so profile A's cooldown never excludes profile B or the
911
- // default. A profile that does not resolve for this harness routes
912
- // as unknown (undefined) and stays conservatively any-subject.
913
- let credentialSubjectId;
914
- try {
915
- credentialSubjectId =
916
- this.resolveCredentialProfile(input, r.adapter.id)?.profile_id ?? null;
917
- }
918
- catch {
919
- credentialSubjectId = undefined;
920
- }
937
+ // The exact quota subject selected before ranking: profile id or the
938
+ // engine default. Profile A's cooldown never excludes profile B or the
939
+ // default on the same harness and route.
940
+ const credentialSubjectId = r.quotaAdmission.profile?.profile_id ?? null;
921
941
  // QA-034: the typed auth-route evidence (doctor source verification x the
922
942
  // resolved route) is AUTHORITATIVE for billing knowledge in the router —
923
943
  // a VERIFIED native route proves subscription_entitlement, so it survives
@@ -928,20 +948,19 @@ export class Orchestrator {
928
948
  return {
929
949
  harnessId: r.adapter.id,
930
950
  available: true,
931
- model: input.models?.[r.adapter.id] ??
932
- config.harnesses[r.adapter.id]?.default_model ??
933
- undefined,
951
+ model: r.quotaAdmission.model,
934
952
  effort: input.efforts?.[r.adapter.id] ??
935
953
  input.effort ??
936
954
  config.harnesses[r.adapter.id]?.effort ??
937
955
  undefined,
938
956
  billingKnowledge: authMode === "api_key" ? "metered" : "unknown",
939
957
  incrementalCostUsd: authMode === "api_key" ? (metric?.avg_cost_usd ?? null) : null,
940
- credentialRoute: authMode === "api_key"
941
- ? "managed_api_key"
942
- : authMode === "local_session"
943
- ? "vendor_native"
944
- : undefined,
958
+ credentialRoute: r.quotaAdmission.route ??
959
+ (authMode === "api_key"
960
+ ? "managed_api_key"
961
+ : authMode === "local_session"
962
+ ? "vendor_native"
963
+ : undefined),
945
964
  ...(authRoute ? { authRoute } : {}),
946
965
  credentialSubjectId,
947
966
  };
@@ -989,6 +1008,36 @@ export class Orchestrator {
989
1008
  }
990
1009
  return ordered;
991
1010
  }
1011
+ /** Harness-only convergence helpers still need the exact quota identity
1012
+ * selected before ranking. This facade keeps their small interface while
1013
+ * preventing a scoped limit on one model/account from cooling another. */
1014
+ quotaLedgerView(ledger, routes) {
1015
+ const byId = new Map(routes.map((route) => [route.adapter.id, route]));
1016
+ const identity = (id) => {
1017
+ const route = byId.get(id);
1018
+ return route
1019
+ ? {
1020
+ credentialRoute: route.quotaAdmission.route ?? undefined,
1021
+ credentialSubjectId: route.quotaAdmission.profile?.profile_id ?? null,
1022
+ model: route.quotaAdmission.model,
1023
+ }
1024
+ : null;
1025
+ };
1026
+ return {
1027
+ bindingPaceSlack: (id) => {
1028
+ const selected = identity(id);
1029
+ return selected
1030
+ ? ledger.bindingPaceSlack(id, selected.credentialRoute, selected.credentialSubjectId, Date.now(), selected.model)
1031
+ : ledger.bindingPaceSlack(id);
1032
+ },
1033
+ cooldownActive: (id) => {
1034
+ const selected = identity(id);
1035
+ return selected
1036
+ ? ledger.cooldownActive(id, selected.credentialRoute, selected.credentialSubjectId, Date.now(), selected.model)
1037
+ : ledger.cooldownActive(id);
1038
+ },
1039
+ };
1040
+ }
992
1041
  /**
993
1042
  * Typed auth-route evidence for one candidate (QA-034): the concrete
994
1043
  * credential route the resolved auth mode maps to, plus the doctor's
@@ -1383,7 +1432,7 @@ export class Orchestrator {
1383
1432
  const inPlaceEnvelope = envelope.worktree_path === envelope.repo_root;
1384
1433
  const rawContextPacket = await rawContextForEnvelope(routed.implementationTransport, envelope);
1385
1434
  const sessionFields = runInput
1386
- ? await this.sessionSpecFields(runInput, adapter.id, log, routed.authRouteEstimate)
1435
+ ? await this.sessionSpecFields(runInput, adapter.id, knobs.model, log, routed.authRouteEstimate, routed.quotaAdmission)
1387
1436
  : undefined;
1388
1437
  // Continuity (INV-137): once the lane (harness + resolved profile) is known,
1389
1438
  // build the continuation packet, materialize context/THREAD.md, and point
@@ -1440,8 +1489,12 @@ export class Orchestrator {
1440
1489
  const workReportMode = this.applyWorkEnvelope(spec, workEnvelope);
1441
1490
  const inactivityMs = harnessInactivityTimeoutMs(this.config(contract.repo.root));
1442
1491
  // Named once: the attempt record, the CandidateRun and the terminal gate all
1443
- // read the SAME applied facts rather than three re-derivations.
1444
- const applied = appliedAttemptFacts(harnessHome, spec.access, sessionFields?.credential_profile?.profile_id ?? runInput?.credentialProfileId ?? null);
1492
+ // read the SAME applied facts rather than three re-derivations. Derived
1493
+ // from the LIVE spec, so a W5.4 failover that rotates the credential
1494
+ // mid-attempt is re-recorded at the point it becomes true — the receipt
1495
+ // must name the profile that ran, never the one the request asked for.
1496
+ const appliedNow = () => appliedAttemptFacts(harnessHome, spec.access, spec.credential_profile?.profile_id ?? runInput?.credentialProfileId ?? null);
1497
+ let applied = appliedNow();
1445
1498
  const attemptStartedMs = Date.now();
1446
1499
  const budgetSignalState = { quotaPressureDisclosed: false };
1447
1500
  const triedProfiles = new Set(); // W5.4 failover: each profile at most once
@@ -1664,6 +1717,7 @@ export class Orchestrator {
1664
1717
  });
1665
1718
  if (rotated) {
1666
1719
  spec = rotated;
1720
+ applied = appliedNow();
1667
1721
  errors.length = 0;
1668
1722
  harnessErrored = false;
1669
1723
  continue;
@@ -1969,26 +2023,11 @@ export class Orchestrator {
1969
2023
  }
1970
2024
  catch (err) {
1971
2025
  const message = safeErrorMessage(err);
1972
- store.writeText(join(paths.contextDir, "context_error.md"), `# Routing Error\n\n${message}\n`);
1973
- // A routing preflight refusal is a config_error, not harness_unavailable
1974
- // (A-1/#22): classify identically across every strategy's routing catch.
1975
- const routingFailure = routingFailureClassification(err);
1976
- writeFailure(store, paths, {
1977
- phase: "routing",
1978
- category: routingFailure.category,
1979
- safeMessage: message,
1980
- runDir: paths.root,
1981
- ...(routingFailure.nextActions ? { nextActions: routingFailure.nextActions } : {}),
1982
- });
1983
- store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${mode})\n\n- Lifecycle: failed\n- Phase: routing\n\n${message}\n`);
1984
- log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
1985
- log.emit("run.failed", {
1986
- lifecycle: "failed",
1987
- facts: makeOutcomeFacts("failed", { reason: "harness_failed" }),
1988
- reason: "harness_failed",
1989
- phase: "routing",
1990
- error: message,
1991
- failure_ref: "final/failure.yaml",
2026
+ writeRoutingFailureTerminal(store, paths, log, {
2027
+ runId,
2028
+ modeLabel: mode,
2029
+ message,
2030
+ err,
1992
2031
  });
1993
2032
  return {
1994
2033
  runId,
@@ -2314,6 +2353,10 @@ export class Orchestrator {
2314
2353
  harnessId: r.harnessId,
2315
2354
  status: gatesPassed(r.gates) && !r.errored ? "green" : "red",
2316
2355
  }));
2356
+ /** The one cancellation terminal this race can reach, from any of its three
2357
+ * abort checks. Every argument is re-read at call time, exactly as it was
2358
+ * when each check spelled the whole call out for itself. */
2359
+ const cancelledRaceResult = () => cancelledResult(log, runId, taskId, mode, paths.root, cancelledCandidates(), () => this.writeRunTelemetry(store, paths, contract, runId, taskId, mode, candidateRoster(runs), null), ledger.spend(), input.signal, store);
2317
2360
  // Revert divergence fence for the single-candidate in-place path: the
2318
2361
  // candidate mutated the LIVE tree during execution above, so the post-turn
2319
2362
  // snapshot must be taken NOW — before review/synthesis/arbitration, which can
@@ -2331,7 +2374,7 @@ export class Orchestrator {
2331
2374
  }
2332
2375
  if (input.signal?.aborted) {
2333
2376
  await disposeReviewEnvelopes();
2334
- return cancelledResult(log, runId, taskId, mode, paths.root, cancelledCandidates(), () => this.writeRunTelemetry(store, paths, contract, runId, taskId, mode, candidateRoster(runs), null), ledger.spend(), input.signal, store);
2377
+ return cancelledRaceResult();
2335
2378
  }
2336
2379
  const failedDelegation = delegateFailure.dominantRaceCandidateFailure(runs);
2337
2380
  if (failedDelegation) {
@@ -2522,7 +2565,7 @@ export class Orchestrator {
2522
2565
  await disposeReviewEnvelopes();
2523
2566
  }
2524
2567
  if (input.signal?.aborted) {
2525
- return cancelledResult(log, runId, taskId, mode, paths.root, cancelledCandidates(), () => this.writeRunTelemetry(store, paths, contract, runId, taskId, mode, candidateRoster(runs), null), ledger.spend(), input.signal, store);
2568
+ return cancelledRaceResult();
2526
2569
  }
2527
2570
  // Synthesis: if worthwhile, run a synthesizer as a NEW, re-checked candidate.
2528
2571
  const synth = decideSynthesis(evidences, input.synthesis ?? "auto");
@@ -2599,7 +2642,7 @@ export class Orchestrator {
2599
2642
  }
2600
2643
  }
2601
2644
  if (input.signal?.aborted) {
2602
- return cancelledResult(log, runId, taskId, mode, paths.root, cancelledCandidates(), () => this.writeRunTelemetry(store, paths, contract, runId, taskId, mode, candidateRoster(runs), null), ledger.spend(), input.signal, store);
2645
+ return cancelledRaceResult();
2603
2646
  }
2604
2647
  let result;
2605
2648
  try {
@@ -3236,26 +3279,11 @@ export class Orchestrator {
3236
3279
  }
3237
3280
  catch (err) {
3238
3281
  const message = safeErrorMessage(err);
3239
- store.writeText(join(paths.contextDir, "context_error.md"), `# Routing Error\n\n${message}\n`);
3240
- // A routing preflight refusal is a config_error, not harness_unavailable
3241
- // (A-1/#22): classify identically across every strategy's routing catch.
3242
- const routingFailure = routingFailureClassification(err);
3243
- writeFailure(store, paths, {
3244
- phase: "routing",
3245
- category: routingFailure.category,
3246
- safeMessage: message,
3247
- runDir: paths.root,
3248
- ...(routingFailure.nextActions ? { nextActions: routingFailure.nextActions } : {}),
3249
- });
3250
- store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${mode})\n\n- Lifecycle: failed\n- Phase: routing\n\n${message}\n`);
3251
- log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
3252
- log.emit("run.failed", {
3253
- lifecycle: "failed",
3254
- facts: makeOutcomeFacts("failed", { reason: "harness_failed" }),
3255
- reason: "harness_failed",
3256
- phase: "routing",
3257
- error: message,
3258
- failure_ref: "final/failure.yaml",
3282
+ writeRoutingFailureTerminal(store, paths, log, {
3283
+ runId,
3284
+ modeLabel: mode,
3285
+ message,
3286
+ err,
3259
3287
  });
3260
3288
  return {
3261
3289
  spendUsd: ledger.spend(),
@@ -3339,7 +3367,8 @@ export class Orchestrator {
3339
3367
  // observed quota cooldown across all harnesses, or genuine no-progress (a stall on the same
3340
3368
  // failure signature after every available harness has tried it).
3341
3369
  const stallThreshold = input.untilClean === true ? 4 : 2;
3342
- const allCooledDown = () => adapterPool.every((a) => ledger.cooldownActive(a.adapter.id));
3370
+ const convergenceQuotaLedger = this.quotaLedgerView(ledger, adapterPool);
3371
+ const allCooledDown = () => adapterPool.every((a) => convergenceQuotaLedger.cooldownActive(a.adapter.id));
3343
3372
  const attemptTelemetries = [];
3344
3373
  let lastDiffStable = true;
3345
3374
  try {
@@ -3697,7 +3726,7 @@ export class Orchestrator {
3697
3726
  if (adapterPool.length > 1 && triedSinceProgress.size < adapterPool.length) {
3698
3727
  // Quota-headroom consumer (mid-run, where quota observations EXIST);
3699
3728
  // pick + honest route event owned by runSupport.rotateOnStall.
3700
- adapterIdx = rotateOnStall(adapterPool.map((a) => a.adapter.id), adapterIdx, ledger, triedSinceProgress, log, lastRun?.harnessId ?? null);
3729
+ adapterIdx = rotateOnStall(adapterPool.map((a) => a.adapter.id), adapterIdx, convergenceQuotaLedger, triedSinceProgress, log, lastRun?.harnessId ?? null);
3701
3730
  routed = adapterPool[adapterIdx];
3702
3731
  adapter = routed.adapter;
3703
3732
  }
@@ -3986,7 +4015,7 @@ export class Orchestrator {
3986
4015
  const adapter = routed.adapter;
3987
4016
  const knobs = this.routeSpecKnobs(routed, contract, undefined, input.effort);
3988
4017
  const effectiveWeb = this.discloseWebUpgrade(log, routed, knobs.webPolicy, attemptId);
3989
- const sessionFields = await this.sessionSpecFields(input, adapter.id, log, routed.authRouteEstimate);
4018
+ const sessionFields = await this.sessionSpecFields(input, adapter.id, knobs.model, log, routed.authRouteEstimate, routed.quotaAdmission);
3990
4019
  const laneContinuity = args.laneRun
3991
4020
  ? await this.resolveContinuity(input, adapter.id, sessionFields.credential_profile?.profile_id ?? input.credentialProfileId ?? null, sessionFields.resume_session_id !== null, sessionFields, store, paths, this.execRootOf(input), log)
3992
4021
  : null;
@@ -4065,26 +4094,11 @@ export class Orchestrator {
4065
4094
  catch (err) {
4066
4095
  roHome.dispose();
4067
4096
  const message = safeErrorMessage(err);
4068
- store.writeText(join(paths.contextDir, "context_error.md"), `# Routing Error\n\n${message}\n`);
4069
- // A routing preflight refusal is a config_error, not harness_unavailable
4070
- // (A-1/#22): classify identically across every strategy's routing catch.
4071
- const routingFailure = routingFailureClassification(err);
4072
- writeFailure(store, paths, {
4073
- phase: "routing",
4074
- category: routingFailure.category,
4075
- safeMessage: message,
4076
- runDir: paths.root,
4077
- ...(routingFailure.nextActions ? { nextActions: routingFailure.nextActions } : {}),
4078
- });
4079
- store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (plan)\n\n- Lifecycle: failed\n- Phase: routing\n\n${message}\n`);
4080
- log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
4081
- log.emit("run.failed", {
4082
- lifecycle: "failed",
4083
- facts: makeOutcomeFacts("failed", { reason: "harness_failed" }),
4084
- reason: "harness_failed",
4085
- phase: "routing",
4086
- error: message,
4087
- failure_ref: "final/failure.yaml",
4097
+ writeRoutingFailureTerminal(store, paths, log, {
4098
+ runId,
4099
+ modeLabel: "plan",
4100
+ message,
4101
+ err,
4088
4102
  });
4089
4103
  return {
4090
4104
  spendUsd: ledger.spend(),
@@ -4364,7 +4378,7 @@ export class Orchestrator {
4364
4378
  buildSpec: async (routed, homeEnv, prompt, attemptId) => {
4365
4379
  const knobs = this.routeSpecKnobs(routed, contract, undefined, input.effort);
4366
4380
  const effectiveWeb = this.discloseWebUpgrade(log, routed, knobs.webPolicy, attemptId);
4367
- const sessionFields = await this.sessionSpecFields(input, routed.adapter.id, log, routed.authRouteEstimate);
4381
+ const sessionFields = await this.sessionSpecFields(input, routed.adapter.id, knobs.model, log, routed.authRouteEstimate, routed.quotaAdmission);
4368
4382
  const spec = HarnessRunSpec.parse({
4369
4383
  session_id: newId("ses"),
4370
4384
  intent: "synthesize",
@@ -4461,26 +4475,11 @@ export class Orchestrator {
4461
4475
  catch (err) {
4462
4476
  roHome.dispose();
4463
4477
  const message = safeErrorMessage(err);
4464
- store.writeText(join(paths.contextDir, "context_error.md"), `# Routing Error\n\n${message}\n`);
4465
- // A routing preflight refusal is a config_error, not harness_unavailable
4466
- // (A-1/#22): classify identically across every strategy's routing catch.
4467
- const routingFailure = routingFailureClassification(err);
4468
- writeFailure(store, paths, {
4469
- phase: "routing",
4470
- category: routingFailure.category,
4471
- safeMessage: message,
4472
- runDir: paths.root,
4473
- ...(routingFailure.nextActions ? { nextActions: routingFailure.nextActions } : {}),
4474
- });
4475
- store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${opts.mode})\n\n- Lifecycle: failed\n- Phase: routing\n\n${message}\n`);
4476
- log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
4477
- log.emit("run.failed", {
4478
- lifecycle: "failed",
4479
- facts: makeOutcomeFacts("failed", { reason: "harness_failed" }),
4480
- reason: "harness_failed",
4481
- phase: "routing",
4482
- error: message,
4483
- failure_ref: "final/failure.yaml",
4478
+ writeRoutingFailureTerminal(store, paths, log, {
4479
+ runId,
4480
+ modeLabel: opts.mode,
4481
+ message,
4482
+ err,
4484
4483
  });
4485
4484
  return {
4486
4485
  runId,
@@ -4602,7 +4601,7 @@ export class Orchestrator {
4602
4601
  const explorerPrompt = (opts.deepScan
4603
4602
  ? `${prompt}\n\nExplorer ${idx + 1}/${adapters.length}: focus on a distinct slice. Emit evidence-cited findings, explicit unknowns/omissions, and follow-up questions. Do not edit files.`
4604
4603
  : prompt) + contextSection;
4605
- const sessionFields = await this.sessionSpecFields(input, adapter.id, log, routed.authRouteEstimate);
4604
+ const sessionFields = await this.sessionSpecFields(input, adapter.id, knobs.model, log, routed.authRouteEstimate, routed.quotaAdmission);
4606
4605
  const grantResume = sessionFields.resume_session_id !== null && !resumeGranted.has(adapter.id);
4607
4606
  if (grantResume)
4608
4607
  resumeGranted.add(adapter.id);