@warmdrift/kgauto-compiler 2.0.0-alpha.88 → 2.0.0-alpha.89

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.
@@ -2,7 +2,7 @@ import {
2
2
  allProfiles,
3
3
  resolveModelAlias,
4
4
  tryGetProfile
5
- } from "./chunk-UNTUOZAG.mjs";
5
+ } from "./chunk-OK2TMFRR.mjs";
6
6
 
7
7
  // src/brain-query.ts
8
8
  var FRESH_SNAPSHOT = {
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var LIBRARY_VERSION = "2.0.0-alpha.88";
2
+ var LIBRARY_VERSION = "2.0.0-alpha.89";
3
3
 
4
4
  // src/key-health.ts
5
5
  var JSON_HEADERS = { "Content-Type": "application/json" };
@@ -211,7 +211,7 @@ var PROFILES_RAW = [
211
211
  },
212
212
  {
213
213
  id: "claude-opus-4-7",
214
- verifiedAgainstDocs: "2026-08-24",
214
+ verifiedAgainstDocs: "2026-08-14",
215
215
  provider: "anthropic",
216
216
  status: "legacy",
217
217
  // s76 2026-07-25: docs list as LEGACY (Opus 5 is current). Bundle said current while the brain already said legacy — the two disagreed.
@@ -261,7 +261,7 @@ var PROFILES_RAW = [
261
261
  },
262
262
  {
263
263
  id: "claude-opus-4-6",
264
- verifiedAgainstDocs: "2026-08-24",
264
+ verifiedAgainstDocs: "2026-08-14",
265
265
  provider: "anthropic",
266
266
  status: "legacy",
267
267
  maxContextTokens: 1e6,
@@ -306,7 +306,7 @@ var PROFILES_RAW = [
306
306
  },
307
307
  {
308
308
  id: "claude-sonnet-4-6",
309
- verifiedAgainstDocs: "2026-08-24",
309
+ verifiedAgainstDocs: "2026-08-14",
310
310
  provider: "anthropic",
311
311
  status: "legacy",
312
312
  // s76 2026-07-25: docs list as LEGACY (Sonnet 5 is current).
@@ -347,7 +347,7 @@ var PROFILES_RAW = [
347
347
  },
348
348
  {
349
349
  id: "claude-haiku-4-5",
350
- verifiedAgainstDocs: "2026-08-24",
350
+ verifiedAgainstDocs: "2026-08-14",
351
351
  provider: "anthropic",
352
352
  status: "current",
353
353
  maxContextTokens: 2e5,
@@ -410,7 +410,7 @@ var PROFILES_RAW = [
410
410
  // ── Google ──
411
411
  {
412
412
  id: "gemini-2.5-flash",
413
- verifiedAgainstDocs: "2026-08-24",
413
+ verifiedAgainstDocs: "2026-08-14",
414
414
  provider: "google",
415
415
  status: "current",
416
416
  maxContextTokens: 1048576,
@@ -516,7 +516,7 @@ var PROFILES_RAW = [
516
516
  // thresholds. The brain will validate/relax these as evidence accumulates
517
517
  // per (archetype, model) tuple. Currently ZERO brain rows for this model.
518
518
  id: "gemini-2.5-flash-lite",
519
- verifiedAgainstDocs: "2026-08-24",
519
+ verifiedAgainstDocs: "2026-08-14",
520
520
  provider: "google",
521
521
  status: "current",
522
522
  maxContextTokens: 1048576,
@@ -673,7 +673,7 @@ var PROFILES_RAW = [
673
673
  },
674
674
  {
675
675
  id: "gemini-3.1-pro-preview",
676
- verifiedAgainstDocs: "2026-08-24",
676
+ verifiedAgainstDocs: "2026-08-14",
677
677
  provider: "google",
678
678
  status: "preview",
679
679
  maxContextTokens: 1048576,
@@ -771,7 +771,7 @@ var PROFILES_RAW = [
771
771
  // baseQuality (it carries 'reasoning') with no latency counterweight,
772
772
  // leapfrogged gemini-2.5-flash as PB's summarize leader once reachable.
773
773
  latencyTier: "slow",
774
- notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
774
+ notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
775
775
  // Master plan §6.2 anchor. Brain-validated tier 1 cross-provider for
776
776
  // classify (169 rows, 0% empty). Tier 0 for summarize-with-no-tools.
777
777
  // Falls off on hunt (sequential tools — L-040) and reasoning depth.
@@ -847,7 +847,7 @@ var PROFILES_RAW = [
847
847
  // of the served set. Tag derivation would say 'medium'; the measurement says
848
848
  // otherwise.
849
849
  latencyTier: "slow",
850
- notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
850
+ notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
851
851
  // Master plan §3.3: tier 3 cross-provider for plan chain. Reasoning
852
852
  // bumped one notch over V4-Flash; same parallel-tool ceiling.
853
853
  archetypePerf: {
@@ -1538,7 +1538,7 @@ var PROFILES_RAW = [
1538
1538
  ],
1539
1539
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1540
1540
  weaknesses: ["no_brain_evidence_yet"],
1541
- notes: "Hand-onboarded s86 (2026-08-24; the session ran under a 10-day-slow machine clock, hence 08-14 stamps in kin artifacts), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING (page 2026-08-24): $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~31 days in the onboarding queue.",
1541
+ notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING re-verified 2026-08-24 at publish: $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~21 days in the onboarding queue (onboarded 2026-08-14).",
1542
1542
  archetypePerf: {
1543
1543
  hunt: 9,
1544
1544
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1572,7 +1572,7 @@ var PROFILES_RAW = [
1572
1572
  // 'preview' per the Fable precedent — no brain evidence yet; promotion to
1573
1573
  // 'current' is an explicit call. (L-049/L-081.)
1574
1574
  id: "claude-sonnet-5",
1575
- verifiedAgainstDocs: "2026-08-24",
1575
+ verifiedAgainstDocs: "2026-08-14",
1576
1576
  provider: "anthropic",
1577
1577
  status: "current",
1578
1578
  // s76 2026-07-25: GA per docs; was preview.
@@ -1,6 +1,6 @@
1
- import { G as GlassboxEvent } from '../types-7sF3adLO.mjs';
2
- export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-7sF3adLO.mjs';
3
- import '../ir-P3NEU8z4.mjs';
1
+ import { G as GlassboxEvent } from '../types-cBzinzUR.mjs';
2
+ export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-cBzinzUR.mjs';
3
+ import '../ir-DeYMLWge.mjs';
4
4
  import '../dialect.mjs';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { G as GlassboxEvent } from '../types-B_MjEB0h.js';
2
- export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-B_MjEB0h.js';
3
- import '../ir-ZgN2KkuF.js';
1
+ import { G as GlassboxEvent } from '../types-BKbRtmUb.js';
2
+ export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-BKbRtmUb.js';
3
+ import '../ir-CTx026t0.js';
4
4
  import '../dialect.js';
5
5
 
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { T as TraceHealth } from '../types-CK0zUlVE.mjs';
2
- import '../ir-P3NEU8z4.mjs';
1
+ import { T as TraceHealth } from '../types-DD36cCbZ.mjs';
2
+ import '../ir-DeYMLWge.mjs';
3
3
  import '../dialect.mjs';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { T as TraceHealth } from '../types-BgfuVIVI.js';
2
- import '../ir-ZgN2KkuF.js';
1
+ import { T as TraceHealth } from '../types-Cp9ot1HV.js';
2
+ import '../ir-CTx026t0.js';
3
3
  import '../dialect.js';
4
4
 
5
5
  /**
@@ -1,7 +1,7 @@
1
- import { G as GlassboxEvent } from '../types-7sF3adLO.mjs';
2
- import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-CK0zUlVE.mjs';
3
- export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-CK0zUlVE.mjs';
4
- import '../ir-P3NEU8z4.mjs';
1
+ import { G as GlassboxEvent } from '../types-cBzinzUR.mjs';
2
+ import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-DD36cCbZ.mjs';
3
+ export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-DD36cCbZ.mjs';
4
+ import '../ir-DeYMLWge.mjs';
5
5
  import '../dialect.mjs';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
- import { G as GlassboxEvent } from '../types-B_MjEB0h.js';
2
- import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-BgfuVIVI.js';
3
- export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-BgfuVIVI.js';
4
- import '../ir-ZgN2KkuF.js';
1
+ import { G as GlassboxEvent } from '../types-BKbRtmUb.js';
2
+ import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-Cp9ot1HV.js';
3
+ export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-Cp9ot1HV.js';
4
+ import '../ir-CTx026t0.js';
5
5
  import '../dialect.js';
6
6
 
7
7
  /**
@@ -265,7 +265,7 @@ var PROFILES_RAW = [
265
265
  },
266
266
  {
267
267
  id: "claude-opus-4-7",
268
- verifiedAgainstDocs: "2026-08-24",
268
+ verifiedAgainstDocs: "2026-08-14",
269
269
  provider: "anthropic",
270
270
  status: "legacy",
271
271
  // s76 2026-07-25: docs list as LEGACY (Opus 5 is current). Bundle said current while the brain already said legacy — the two disagreed.
@@ -315,7 +315,7 @@ var PROFILES_RAW = [
315
315
  },
316
316
  {
317
317
  id: "claude-opus-4-6",
318
- verifiedAgainstDocs: "2026-08-24",
318
+ verifiedAgainstDocs: "2026-08-14",
319
319
  provider: "anthropic",
320
320
  status: "legacy",
321
321
  maxContextTokens: 1e6,
@@ -360,7 +360,7 @@ var PROFILES_RAW = [
360
360
  },
361
361
  {
362
362
  id: "claude-sonnet-4-6",
363
- verifiedAgainstDocs: "2026-08-24",
363
+ verifiedAgainstDocs: "2026-08-14",
364
364
  provider: "anthropic",
365
365
  status: "legacy",
366
366
  // s76 2026-07-25: docs list as LEGACY (Sonnet 5 is current).
@@ -401,7 +401,7 @@ var PROFILES_RAW = [
401
401
  },
402
402
  {
403
403
  id: "claude-haiku-4-5",
404
- verifiedAgainstDocs: "2026-08-24",
404
+ verifiedAgainstDocs: "2026-08-14",
405
405
  provider: "anthropic",
406
406
  status: "current",
407
407
  maxContextTokens: 2e5,
@@ -464,7 +464,7 @@ var PROFILES_RAW = [
464
464
  // ── Google ──
465
465
  {
466
466
  id: "gemini-2.5-flash",
467
- verifiedAgainstDocs: "2026-08-24",
467
+ verifiedAgainstDocs: "2026-08-14",
468
468
  provider: "google",
469
469
  status: "current",
470
470
  maxContextTokens: 1048576,
@@ -570,7 +570,7 @@ var PROFILES_RAW = [
570
570
  // thresholds. The brain will validate/relax these as evidence accumulates
571
571
  // per (archetype, model) tuple. Currently ZERO brain rows for this model.
572
572
  id: "gemini-2.5-flash-lite",
573
- verifiedAgainstDocs: "2026-08-24",
573
+ verifiedAgainstDocs: "2026-08-14",
574
574
  provider: "google",
575
575
  status: "current",
576
576
  maxContextTokens: 1048576,
@@ -727,7 +727,7 @@ var PROFILES_RAW = [
727
727
  },
728
728
  {
729
729
  id: "gemini-3.1-pro-preview",
730
- verifiedAgainstDocs: "2026-08-24",
730
+ verifiedAgainstDocs: "2026-08-14",
731
731
  provider: "google",
732
732
  status: "preview",
733
733
  maxContextTokens: 1048576,
@@ -825,7 +825,7 @@ var PROFILES_RAW = [
825
825
  // baseQuality (it carries 'reasoning') with no latency counterweight,
826
826
  // leapfrogged gemini-2.5-flash as PB's summarize leader once reachable.
827
827
  latencyTier: "slow",
828
- notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
828
+ notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
829
829
  // Master plan §6.2 anchor. Brain-validated tier 1 cross-provider for
830
830
  // classify (169 rows, 0% empty). Tier 0 for summarize-with-no-tools.
831
831
  // Falls off on hunt (sequential tools — L-040) and reasoning depth.
@@ -901,7 +901,7 @@ var PROFILES_RAW = [
901
901
  // of the served set. Tag derivation would say 'medium'; the measurement says
902
902
  // otherwise.
903
903
  latencyTier: "slow",
904
- notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
904
+ notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
905
905
  // Master plan §3.3: tier 3 cross-provider for plan chain. Reasoning
906
906
  // bumped one notch over V4-Flash; same parallel-tool ceiling.
907
907
  archetypePerf: {
@@ -1592,7 +1592,7 @@ var PROFILES_RAW = [
1592
1592
  ],
1593
1593
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1594
1594
  weaknesses: ["no_brain_evidence_yet"],
1595
- notes: "Hand-onboarded s86 (2026-08-24; the session ran under a 10-day-slow machine clock, hence 08-14 stamps in kin artifacts), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING (page 2026-08-24): $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~31 days in the onboarding queue.",
1595
+ notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING re-verified 2026-08-24 at publish: $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~21 days in the onboarding queue (onboarded 2026-08-14).",
1596
1596
  archetypePerf: {
1597
1597
  hunt: 9,
1598
1598
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1626,7 +1626,7 @@ var PROFILES_RAW = [
1626
1626
  // 'preview' per the Fable precedent — no brain evidence yet; promotion to
1627
1627
  // 'current' is an explicit call. (L-049/L-081.)
1628
1628
  id: "claude-sonnet-5",
1629
- verifiedAgainstDocs: "2026-08-24",
1629
+ verifiedAgainstDocs: "2026-08-14",
1630
1630
  provider: "anthropic",
1631
1631
  status: "current",
1632
1632
  // s76 2026-07-25: GA per docs; was preview.
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ARCHETYPE_FLOOR_DEFAULT,
3
3
  getDefaultFallbackChain
4
- } from "../chunk-DSHWJFM2.mjs";
4
+ } from "../chunk-D7RX3UD3.mjs";
5
5
  import {
6
6
  tryGetProfile
7
- } from "../chunk-UNTUOZAG.mjs";
7
+ } from "../chunk-OK2TMFRR.mjs";
8
8
  import {
9
9
  subscribe,
10
10
  subscribeApp
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as TraceDetail } from '../../types-CK0zUlVE.mjs';
3
- import '../../ir-P3NEU8z4.mjs';
2
+ import { a as TraceDetail } from '../../types-DD36cCbZ.mjs';
3
+ import '../../ir-DeYMLWge.mjs';
4
4
  import '../../dialect.mjs';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as TraceDetail } from '../../types-BgfuVIVI.js';
3
- import '../../ir-ZgN2KkuF.js';
2
+ import { a as TraceDetail } from '../../types-Cp9ot1HV.js';
3
+ import '../../ir-CTx026t0.js';
4
4
  import '../../dialect.js';
5
5
 
6
6
  /**
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as CompilePolicy, N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, a as CompiledRequest, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-P3NEU8z4.mjs';
2
- export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-P3NEU8z4.mjs';
1
+ import { C as CompilePolicy, N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, a as CompiledRequest, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-DeYMLWge.mjs';
2
+ export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-DeYMLWge.mjs';
3
3
  import { ModelProfile, ArchetypeConvention } from './profiles.mjs';
4
4
  export { ALIASES, CacheStrategy, CliffRule, LATENCY_TIER_MS, LatencyTier, LoweringSpec, RecoveryRule, StructuredOutputCapability, SystemPromptMode, _testClearConsumerProfiles, allProfiles, bestEffortProfile, getProfile, inferProviderFromId, latencyTierOf, profilesByProvider, registerProfiles, resolveModelAlias, tryGetProfile } from './profiles.mjs';
5
5
  export { BrainForwardConfig, BrainForwardRoutes, createBrainForwardRoutes } from './brain-proxy.mjs';
@@ -679,6 +679,11 @@ interface OutcomePayload {
679
679
  * organic; liveness rules compute over `source IS NULL` rows.
680
680
  */
681
681
  source?: string;
682
+ /**
683
+ * alpha.89 (migration 065) — per-end-user metering: the consumer's opaque
684
+ * customer id, truncated to 128 chars at write. NULL = no end user.
685
+ */
686
+ end_user_id?: string;
682
687
  error_type?: string;
683
688
  tools_called?: string[];
684
689
  oracle_score?: number;
@@ -950,6 +955,21 @@ declare function recordGoldenIr(input: GoldenIrRecordInput): Promise<void>;
950
955
  * pollute compile_outcomes.
951
956
  */
952
957
 
958
+ /**
959
+ * Default judge model (judge chain tier 0). Exported so operator scripts
960
+ * (golden-eval-trigger's judge pre-flight) probe the SAME model the engine
961
+ * will call — two inline literals of one concept is the s75 drift shape.
962
+ * 2026-08-25: the judge had no pre-flight at all, so an Anthropic billing
963
+ * outage would have burned incumbent+candidate replay spend on non-Anthropic
964
+ * surfaces before dying verdictless at judge time.
965
+ *
966
+ * 2026-08-25 (same session): moved 'claude-opus-4-8' → 'claude-opus-5'. The
967
+ * guard test caught the old default sitting on a status:'legacy' roster
968
+ * entry (4-8 went legacy 2026-07-25 with the Opus 5 generation; nobody moved
969
+ * the judge). Verdict comparability across the switch is preserved by
970
+ * `judge_model` on every run + case row (migrations 024/036).
971
+ */
972
+ declare const DEFAULT_JUDGE_MODEL = "claude-opus-5";
953
973
  /**
954
974
  * What "better" means per archetype. Fed verbatim into the pairwise judge
955
975
  * prompt. Kept deliberately short — the judge sees the full request, so the
@@ -1020,7 +1040,7 @@ interface GoldenEvalOptions {
1020
1040
  * across the loaded golden set (the surface's de-facto leader).
1021
1041
  */
1022
1042
  incumbentModel?: string;
1023
- /** Judge model id. Default 'claude-opus-4-8' (judge chain tier 0). */
1043
+ /** Judge model id. Default `DEFAULT_JUDGE_MODEL` (judge chain tier 0). */
1024
1044
  judgeModel?: string;
1025
1045
  /** Max golden cases to load (newest first). Default 50. */
1026
1046
  limit?: number;
@@ -1250,7 +1270,7 @@ declare function runStrategyEvalWithAttribution(opts: Omit<GoldenEvalOptions, 'a
1250
1270
  * guard in `tests/version.test.ts` fails the suite (and therefore
1251
1271
  * `prepublishOnly`) when they diverge — a stale constant cannot reach npm.
1252
1272
  */
1253
- declare const LIBRARY_VERSION = "2.0.0-alpha.88";
1273
+ declare const LIBRARY_VERSION = "2.0.0-alpha.89";
1254
1274
 
1255
1275
  /**
1256
1276
  * Oracle contract — how an app tells the brain whether a response was good.
@@ -4070,4 +4090,4 @@ declare function planDecomposition(args: PlanDecompositionArgs): DecompositionPl
4070
4090
  */
4071
4091
  declare function compile(ir: PromptIR, opts?: CompileOptions): CompileResult;
4072
4092
 
4073
- export { ABSOLUTE_FLOOR, type AISDKConvertedMessage, ALT_BLIND_TOKEN_BUDGET_BREACH, ALT_STRATEGY_IDS, ARCHETYPE_FAMILY_FITS, ARCHETYPE_FLOOR_DEFAULT, type ActionableAdvisory, Adapter, type AdvisoryEvidenceWindow, type AdvisoryResolutionSource, type AdvisorySeverity, type AdvisoryStatus, type AdvisorySuggestedFix, ApiKeys, type AppOracle, type ApplySectionRewritesArgs, type ApplySectionRewritesResult, ArchetypeConvention, type ArchetypeFamilyFit, type ArchetypePerfMap, type ArchetypePerfNMap, type ArchetypePerfScoreResult, type AttachCacheControlResult, BLOCKED_MODEL_FAMILY_SIBLING_SERVED_CODE, BLOCKED_MODEL_NOT_IN_ROSTER_CODE, BRAIN_READ_ENV_NAMES, BURST_SPAN_MS, BestPracticeAdvisory, type BrainConfig, type BrainDeadLetterEntry, type BrainHealthSnapshot, type BrainQueryConfig, type BrainReadEnv, COACH_CFG, COST_RANKING_REFERENCE_SHAPE, CallOptions, CallResult, ChainEntry, type CompatibilityIntent, type CompileForAISDKv6Result, type CompileOptions, CompilePolicy, CompileResult, CompiledRequest, type CreateDelegateOpts, DECOMPOSITION_TEMPLATES, DECOMPOSITION_TEMPLATES_VERSION, DEFAULT_FINDINGS_ENDPOINT, DEFAULT_MEASURED_FAILURE_ENDPOINT, DEFAULT_PROMOTIONS_ENDPOINT, DELEGATE_TOOL_DEFINITION, DISCIPLINE_GATES_V1_ALT_BLIND_HEADER, DISCIPLINE_GATES_V1_ALT_HEADER, type DecompositionPlan, type DecompositionStep, type DecompositionTemplate, type DelegateHandle, type DelegateRefusalReason, type DelegateResult, type DelegateToolArgs, type ExclusionFindingRow, type ExclusionResolutionSource, type ExecuteErr, type ExecuteOk, type ExecuteOptions, type ExecuteResult, type ExecutorCandidate, type FallbackPosture, FallbackReason, FamilyResolutionError, type GetActionableAdvisoriesOptions, type GetApplicablePromotionOpts, type GetDefaultFallbackChainOpts, type GetMeasuredFailureOpts, type GetPerAxisMetricsOpts, type GetRecommendedPrimaryOptions, type GoldenEvalAxis, type GoldenEvalCase, type GoldenEvalOptions, type GoldenEvalRunResult, type GoldenEvalStrategyId, type GoldenIrRecordInput, Grounding, IntentArchetypeName, JUDGE_RUBRICS, LIBRARY_VERSION, type LLMJudgeOptions, MEASURED_FAILURE_CFG, MEASURED_GROUNDING_MIN_N, type MarkAdvisoryResolvedOptions, type MarkExclusionFindingHandledOptions, type MarkPromoteReadyHandledOptions, type MeasuredFailureRuntime, type MeasuredFailureVerdict, type ModelBrainRow, type ModelCompatibility, ModelProfile, NormalizedResponse, type OracleContext, OracleScore, type OutcomePayload, OutcomeResult, OutputMode, PRODUCER_OWNED_RULE_CODES, PROVIDER_ENV_KEYS, PerAxisMetrics, type PlannedStep, type PricingRow, type ProbeShadowOptions, type ProbeShadowServed, type ProfileToRowOptions, type PromoteReadyFindingRow, type PromoteReadyResolution, type PromotionRow, type PromotionsRuntime, PromptIR, Provider, ProviderOverrides, type ProviderReachability, ROLLBACK_SUPPRESSION_WINDOW_DAYS, RULE_DISCIPLINE_GATES_V1, RULE_DISCIPLINE_GATES_V1_STRUCTURED, RULE_SEQUENTIAL_TOOL_CLIFF, type ReachabilityOpts, RecordInput, RecordOutcomeInput, type RunAdvisorPhase2Context, STRATEGY_AUTHORSHIP_INDEPENDENT, STRATEGY_AUTHORSHIP_LIMITATION, SectionRewrite, type ShadowProbeRecordInput, type StrategyAttribution, type StrategyAttributionResult, type StrategyOutcome, type SupportedProvider, type SurfaceFailureRow, type SurfaceStats, SystemModelMessage, TRANSLATOR_FLOOR, _testResetMeasuredFailure, _testResetOutcomeSourceWarning, _testResetPromotions, _testWaitForMeasuredFailureRefresh, _testWaitForPromotionsRefresh, altBlindGatesBlockFor, altGatesBlockFor, applyArchetypeConvention, applySectionRewrites, attachCacheControlToStreamTextInput, awaitMeasuredFailureReady, awaitPromotionsReady, brainHealth, buildGoldenIrRow, buildLLMJudge, buildPairwiseJudgePrompt, buildShadowProbeRow, burstCaveat, call, chainProviderSpread, classifyEvidenceWindow, classifyStrategyOutcome, clearBrain, combineOrderSwappedVerdicts, compile, compileForAISDKv6, configureBrain, configureMeasuredFailureBrain, configurePromotionsBrain, countTokens, createDelegate, deriveFamilyFromModelId, deriveOwnership, estimateChainCostUsd, estimateModelCostUsd, execute, findBetterFit, flushBrainDeadLetter, formatEvidenceSpan, getActionableAdvisories, getAllStarterChains, getAllStarterChainsWithGrounding, getApplicablePromotion, getArchetypePerfScore, getDefaultFallbackChain, getDefaultFallbackChainWithGrounding, getMeasuredFailureVerdict, getModelCompatibility, getPerAxisMetrics, getReachabilityDiagnostic, getRecentRollback, getRecommendedPrimary, getSequentialStarterChain, getSequentialStarterChainWithGrounding, getStaleExclusionFindings, getStarterChain, getStarterChainWithGrounding, isAltStrategy, isAutoPromoteEnabledFromEnv, isBrainQueryActiveFor, isBrainSync, isDelegateEnabledFromEnv, isExclusionFindingsBrainActive, isMeasuredFailureBrainActive, isMeasuredFailureGateEnabledFromEnv, isModelReachable, isPromotionsBrainActive, isProviderReachable, judgeMeasuredFailure, loadAliasesFromBrain, loadArchetypePerfFromBrain, loadArchetypePerfNFromBrain, loadChainsFromBrain, loadModelsFromBrain, loadPricingFromBrain, mapMeasuredFailureRows, markAdvisoryResolved, markExclusionFindingHandled, markPromoteReadyHandled, parseJudgeVerdict, peekBrainDeadLetter, planDecomposition, prefetchMeasuredFailure, prefetchPromotions, probeShadow, profileToRow, readBrainReadEnv, record, recordGoldenIr, recordOutcome, recordShadowProbe, renderIrForJudge, resetTokenizer, resolveConventionsForProfile, resolveOutcomeSource, resolvePricingAt, resolveProviderKey, rowToAdvisory, rubricFor, runAdvisor, runGoldenEval, runStrategyEvalWithAttribution, setTokenizer, wilsonLowerBound, withAltBlindDisciplineContract, withAltDisciplineContract, withDisciplineContract };
4093
+ export { ABSOLUTE_FLOOR, type AISDKConvertedMessage, ALT_BLIND_TOKEN_BUDGET_BREACH, ALT_STRATEGY_IDS, ARCHETYPE_FAMILY_FITS, ARCHETYPE_FLOOR_DEFAULT, type ActionableAdvisory, Adapter, type AdvisoryEvidenceWindow, type AdvisoryResolutionSource, type AdvisorySeverity, type AdvisoryStatus, type AdvisorySuggestedFix, ApiKeys, type AppOracle, type ApplySectionRewritesArgs, type ApplySectionRewritesResult, ArchetypeConvention, type ArchetypeFamilyFit, type ArchetypePerfMap, type ArchetypePerfNMap, type ArchetypePerfScoreResult, type AttachCacheControlResult, BLOCKED_MODEL_FAMILY_SIBLING_SERVED_CODE, BLOCKED_MODEL_NOT_IN_ROSTER_CODE, BRAIN_READ_ENV_NAMES, BURST_SPAN_MS, BestPracticeAdvisory, type BrainConfig, type BrainDeadLetterEntry, type BrainHealthSnapshot, type BrainQueryConfig, type BrainReadEnv, COACH_CFG, COST_RANKING_REFERENCE_SHAPE, CallOptions, CallResult, ChainEntry, type CompatibilityIntent, type CompileForAISDKv6Result, type CompileOptions, CompilePolicy, CompileResult, CompiledRequest, type CreateDelegateOpts, DECOMPOSITION_TEMPLATES, DECOMPOSITION_TEMPLATES_VERSION, DEFAULT_FINDINGS_ENDPOINT, DEFAULT_JUDGE_MODEL, DEFAULT_MEASURED_FAILURE_ENDPOINT, DEFAULT_PROMOTIONS_ENDPOINT, DELEGATE_TOOL_DEFINITION, DISCIPLINE_GATES_V1_ALT_BLIND_HEADER, DISCIPLINE_GATES_V1_ALT_HEADER, type DecompositionPlan, type DecompositionStep, type DecompositionTemplate, type DelegateHandle, type DelegateRefusalReason, type DelegateResult, type DelegateToolArgs, type ExclusionFindingRow, type ExclusionResolutionSource, type ExecuteErr, type ExecuteOk, type ExecuteOptions, type ExecuteResult, type ExecutorCandidate, type FallbackPosture, FallbackReason, FamilyResolutionError, type GetActionableAdvisoriesOptions, type GetApplicablePromotionOpts, type GetDefaultFallbackChainOpts, type GetMeasuredFailureOpts, type GetPerAxisMetricsOpts, type GetRecommendedPrimaryOptions, type GoldenEvalAxis, type GoldenEvalCase, type GoldenEvalOptions, type GoldenEvalRunResult, type GoldenEvalStrategyId, type GoldenIrRecordInput, Grounding, IntentArchetypeName, JUDGE_RUBRICS, LIBRARY_VERSION, type LLMJudgeOptions, MEASURED_FAILURE_CFG, MEASURED_GROUNDING_MIN_N, type MarkAdvisoryResolvedOptions, type MarkExclusionFindingHandledOptions, type MarkPromoteReadyHandledOptions, type MeasuredFailureRuntime, type MeasuredFailureVerdict, type ModelBrainRow, type ModelCompatibility, ModelProfile, NormalizedResponse, type OracleContext, OracleScore, type OutcomePayload, OutcomeResult, OutputMode, PRODUCER_OWNED_RULE_CODES, PROVIDER_ENV_KEYS, PerAxisMetrics, type PlannedStep, type PricingRow, type ProbeShadowOptions, type ProbeShadowServed, type ProfileToRowOptions, type PromoteReadyFindingRow, type PromoteReadyResolution, type PromotionRow, type PromotionsRuntime, PromptIR, Provider, ProviderOverrides, type ProviderReachability, ROLLBACK_SUPPRESSION_WINDOW_DAYS, RULE_DISCIPLINE_GATES_V1, RULE_DISCIPLINE_GATES_V1_STRUCTURED, RULE_SEQUENTIAL_TOOL_CLIFF, type ReachabilityOpts, RecordInput, RecordOutcomeInput, type RunAdvisorPhase2Context, STRATEGY_AUTHORSHIP_INDEPENDENT, STRATEGY_AUTHORSHIP_LIMITATION, SectionRewrite, type ShadowProbeRecordInput, type StrategyAttribution, type StrategyAttributionResult, type StrategyOutcome, type SupportedProvider, type SurfaceFailureRow, type SurfaceStats, SystemModelMessage, TRANSLATOR_FLOOR, _testResetMeasuredFailure, _testResetOutcomeSourceWarning, _testResetPromotions, _testWaitForMeasuredFailureRefresh, _testWaitForPromotionsRefresh, altBlindGatesBlockFor, altGatesBlockFor, applyArchetypeConvention, applySectionRewrites, attachCacheControlToStreamTextInput, awaitMeasuredFailureReady, awaitPromotionsReady, brainHealth, buildGoldenIrRow, buildLLMJudge, buildPairwiseJudgePrompt, buildShadowProbeRow, burstCaveat, call, chainProviderSpread, classifyEvidenceWindow, classifyStrategyOutcome, clearBrain, combineOrderSwappedVerdicts, compile, compileForAISDKv6, configureBrain, configureMeasuredFailureBrain, configurePromotionsBrain, countTokens, createDelegate, deriveFamilyFromModelId, deriveOwnership, estimateChainCostUsd, estimateModelCostUsd, execute, findBetterFit, flushBrainDeadLetter, formatEvidenceSpan, getActionableAdvisories, getAllStarterChains, getAllStarterChainsWithGrounding, getApplicablePromotion, getArchetypePerfScore, getDefaultFallbackChain, getDefaultFallbackChainWithGrounding, getMeasuredFailureVerdict, getModelCompatibility, getPerAxisMetrics, getReachabilityDiagnostic, getRecentRollback, getRecommendedPrimary, getSequentialStarterChain, getSequentialStarterChainWithGrounding, getStaleExclusionFindings, getStarterChain, getStarterChainWithGrounding, isAltStrategy, isAutoPromoteEnabledFromEnv, isBrainQueryActiveFor, isBrainSync, isDelegateEnabledFromEnv, isExclusionFindingsBrainActive, isMeasuredFailureBrainActive, isMeasuredFailureGateEnabledFromEnv, isModelReachable, isPromotionsBrainActive, isProviderReachable, judgeMeasuredFailure, loadAliasesFromBrain, loadArchetypePerfFromBrain, loadArchetypePerfNFromBrain, loadChainsFromBrain, loadModelsFromBrain, loadPricingFromBrain, mapMeasuredFailureRows, markAdvisoryResolved, markExclusionFindingHandled, markPromoteReadyHandled, parseJudgeVerdict, peekBrainDeadLetter, planDecomposition, prefetchMeasuredFailure, prefetchPromotions, probeShadow, profileToRow, readBrainReadEnv, record, recordGoldenIr, recordOutcome, recordShadowProbe, renderIrForJudge, resetTokenizer, resolveConventionsForProfile, resolveOutcomeSource, resolvePricingAt, resolveProviderKey, rowToAdvisory, rubricFor, runAdvisor, runGoldenEval, runStrategyEvalWithAttribution, setTokenizer, wilsonLowerBound, withAltBlindDisciplineContract, withAltDisciplineContract, withDisciplineContract };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as CompilePolicy, N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, a as CompiledRequest, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-ZgN2KkuF.js';
2
- export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-ZgN2KkuF.js';
1
+ import { C as CompilePolicy, N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, a as CompiledRequest, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-CTx026t0.js';
2
+ export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-CTx026t0.js';
3
3
  import { ModelProfile, ArchetypeConvention } from './profiles.js';
4
4
  export { ALIASES, CacheStrategy, CliffRule, LATENCY_TIER_MS, LatencyTier, LoweringSpec, RecoveryRule, StructuredOutputCapability, SystemPromptMode, _testClearConsumerProfiles, allProfiles, bestEffortProfile, getProfile, inferProviderFromId, latencyTierOf, profilesByProvider, registerProfiles, resolveModelAlias, tryGetProfile } from './profiles.js';
5
5
  export { BrainForwardConfig, BrainForwardRoutes, createBrainForwardRoutes } from './brain-proxy.js';
@@ -679,6 +679,11 @@ interface OutcomePayload {
679
679
  * organic; liveness rules compute over `source IS NULL` rows.
680
680
  */
681
681
  source?: string;
682
+ /**
683
+ * alpha.89 (migration 065) — per-end-user metering: the consumer's opaque
684
+ * customer id, truncated to 128 chars at write. NULL = no end user.
685
+ */
686
+ end_user_id?: string;
682
687
  error_type?: string;
683
688
  tools_called?: string[];
684
689
  oracle_score?: number;
@@ -950,6 +955,21 @@ declare function recordGoldenIr(input: GoldenIrRecordInput): Promise<void>;
950
955
  * pollute compile_outcomes.
951
956
  */
952
957
 
958
+ /**
959
+ * Default judge model (judge chain tier 0). Exported so operator scripts
960
+ * (golden-eval-trigger's judge pre-flight) probe the SAME model the engine
961
+ * will call — two inline literals of one concept is the s75 drift shape.
962
+ * 2026-08-25: the judge had no pre-flight at all, so an Anthropic billing
963
+ * outage would have burned incumbent+candidate replay spend on non-Anthropic
964
+ * surfaces before dying verdictless at judge time.
965
+ *
966
+ * 2026-08-25 (same session): moved 'claude-opus-4-8' → 'claude-opus-5'. The
967
+ * guard test caught the old default sitting on a status:'legacy' roster
968
+ * entry (4-8 went legacy 2026-07-25 with the Opus 5 generation; nobody moved
969
+ * the judge). Verdict comparability across the switch is preserved by
970
+ * `judge_model` on every run + case row (migrations 024/036).
971
+ */
972
+ declare const DEFAULT_JUDGE_MODEL = "claude-opus-5";
953
973
  /**
954
974
  * What "better" means per archetype. Fed verbatim into the pairwise judge
955
975
  * prompt. Kept deliberately short — the judge sees the full request, so the
@@ -1020,7 +1040,7 @@ interface GoldenEvalOptions {
1020
1040
  * across the loaded golden set (the surface's de-facto leader).
1021
1041
  */
1022
1042
  incumbentModel?: string;
1023
- /** Judge model id. Default 'claude-opus-4-8' (judge chain tier 0). */
1043
+ /** Judge model id. Default `DEFAULT_JUDGE_MODEL` (judge chain tier 0). */
1024
1044
  judgeModel?: string;
1025
1045
  /** Max golden cases to load (newest first). Default 50. */
1026
1046
  limit?: number;
@@ -1250,7 +1270,7 @@ declare function runStrategyEvalWithAttribution(opts: Omit<GoldenEvalOptions, 'a
1250
1270
  * guard in `tests/version.test.ts` fails the suite (and therefore
1251
1271
  * `prepublishOnly`) when they diverge — a stale constant cannot reach npm.
1252
1272
  */
1253
- declare const LIBRARY_VERSION = "2.0.0-alpha.88";
1273
+ declare const LIBRARY_VERSION = "2.0.0-alpha.89";
1254
1274
 
1255
1275
  /**
1256
1276
  * Oracle contract — how an app tells the brain whether a response was good.
@@ -4070,4 +4090,4 @@ declare function planDecomposition(args: PlanDecompositionArgs): DecompositionPl
4070
4090
  */
4071
4091
  declare function compile(ir: PromptIR, opts?: CompileOptions): CompileResult;
4072
4092
 
4073
- export { ABSOLUTE_FLOOR, type AISDKConvertedMessage, ALT_BLIND_TOKEN_BUDGET_BREACH, ALT_STRATEGY_IDS, ARCHETYPE_FAMILY_FITS, ARCHETYPE_FLOOR_DEFAULT, type ActionableAdvisory, Adapter, type AdvisoryEvidenceWindow, type AdvisoryResolutionSource, type AdvisorySeverity, type AdvisoryStatus, type AdvisorySuggestedFix, ApiKeys, type AppOracle, type ApplySectionRewritesArgs, type ApplySectionRewritesResult, ArchetypeConvention, type ArchetypeFamilyFit, type ArchetypePerfMap, type ArchetypePerfNMap, type ArchetypePerfScoreResult, type AttachCacheControlResult, BLOCKED_MODEL_FAMILY_SIBLING_SERVED_CODE, BLOCKED_MODEL_NOT_IN_ROSTER_CODE, BRAIN_READ_ENV_NAMES, BURST_SPAN_MS, BestPracticeAdvisory, type BrainConfig, type BrainDeadLetterEntry, type BrainHealthSnapshot, type BrainQueryConfig, type BrainReadEnv, COACH_CFG, COST_RANKING_REFERENCE_SHAPE, CallOptions, CallResult, ChainEntry, type CompatibilityIntent, type CompileForAISDKv6Result, type CompileOptions, CompilePolicy, CompileResult, CompiledRequest, type CreateDelegateOpts, DECOMPOSITION_TEMPLATES, DECOMPOSITION_TEMPLATES_VERSION, DEFAULT_FINDINGS_ENDPOINT, DEFAULT_MEASURED_FAILURE_ENDPOINT, DEFAULT_PROMOTIONS_ENDPOINT, DELEGATE_TOOL_DEFINITION, DISCIPLINE_GATES_V1_ALT_BLIND_HEADER, DISCIPLINE_GATES_V1_ALT_HEADER, type DecompositionPlan, type DecompositionStep, type DecompositionTemplate, type DelegateHandle, type DelegateRefusalReason, type DelegateResult, type DelegateToolArgs, type ExclusionFindingRow, type ExclusionResolutionSource, type ExecuteErr, type ExecuteOk, type ExecuteOptions, type ExecuteResult, type ExecutorCandidate, type FallbackPosture, FallbackReason, FamilyResolutionError, type GetActionableAdvisoriesOptions, type GetApplicablePromotionOpts, type GetDefaultFallbackChainOpts, type GetMeasuredFailureOpts, type GetPerAxisMetricsOpts, type GetRecommendedPrimaryOptions, type GoldenEvalAxis, type GoldenEvalCase, type GoldenEvalOptions, type GoldenEvalRunResult, type GoldenEvalStrategyId, type GoldenIrRecordInput, Grounding, IntentArchetypeName, JUDGE_RUBRICS, LIBRARY_VERSION, type LLMJudgeOptions, MEASURED_FAILURE_CFG, MEASURED_GROUNDING_MIN_N, type MarkAdvisoryResolvedOptions, type MarkExclusionFindingHandledOptions, type MarkPromoteReadyHandledOptions, type MeasuredFailureRuntime, type MeasuredFailureVerdict, type ModelBrainRow, type ModelCompatibility, ModelProfile, NormalizedResponse, type OracleContext, OracleScore, type OutcomePayload, OutcomeResult, OutputMode, PRODUCER_OWNED_RULE_CODES, PROVIDER_ENV_KEYS, PerAxisMetrics, type PlannedStep, type PricingRow, type ProbeShadowOptions, type ProbeShadowServed, type ProfileToRowOptions, type PromoteReadyFindingRow, type PromoteReadyResolution, type PromotionRow, type PromotionsRuntime, PromptIR, Provider, ProviderOverrides, type ProviderReachability, ROLLBACK_SUPPRESSION_WINDOW_DAYS, RULE_DISCIPLINE_GATES_V1, RULE_DISCIPLINE_GATES_V1_STRUCTURED, RULE_SEQUENTIAL_TOOL_CLIFF, type ReachabilityOpts, RecordInput, RecordOutcomeInput, type RunAdvisorPhase2Context, STRATEGY_AUTHORSHIP_INDEPENDENT, STRATEGY_AUTHORSHIP_LIMITATION, SectionRewrite, type ShadowProbeRecordInput, type StrategyAttribution, type StrategyAttributionResult, type StrategyOutcome, type SupportedProvider, type SurfaceFailureRow, type SurfaceStats, SystemModelMessage, TRANSLATOR_FLOOR, _testResetMeasuredFailure, _testResetOutcomeSourceWarning, _testResetPromotions, _testWaitForMeasuredFailureRefresh, _testWaitForPromotionsRefresh, altBlindGatesBlockFor, altGatesBlockFor, applyArchetypeConvention, applySectionRewrites, attachCacheControlToStreamTextInput, awaitMeasuredFailureReady, awaitPromotionsReady, brainHealth, buildGoldenIrRow, buildLLMJudge, buildPairwiseJudgePrompt, buildShadowProbeRow, burstCaveat, call, chainProviderSpread, classifyEvidenceWindow, classifyStrategyOutcome, clearBrain, combineOrderSwappedVerdicts, compile, compileForAISDKv6, configureBrain, configureMeasuredFailureBrain, configurePromotionsBrain, countTokens, createDelegate, deriveFamilyFromModelId, deriveOwnership, estimateChainCostUsd, estimateModelCostUsd, execute, findBetterFit, flushBrainDeadLetter, formatEvidenceSpan, getActionableAdvisories, getAllStarterChains, getAllStarterChainsWithGrounding, getApplicablePromotion, getArchetypePerfScore, getDefaultFallbackChain, getDefaultFallbackChainWithGrounding, getMeasuredFailureVerdict, getModelCompatibility, getPerAxisMetrics, getReachabilityDiagnostic, getRecentRollback, getRecommendedPrimary, getSequentialStarterChain, getSequentialStarterChainWithGrounding, getStaleExclusionFindings, getStarterChain, getStarterChainWithGrounding, isAltStrategy, isAutoPromoteEnabledFromEnv, isBrainQueryActiveFor, isBrainSync, isDelegateEnabledFromEnv, isExclusionFindingsBrainActive, isMeasuredFailureBrainActive, isMeasuredFailureGateEnabledFromEnv, isModelReachable, isPromotionsBrainActive, isProviderReachable, judgeMeasuredFailure, loadAliasesFromBrain, loadArchetypePerfFromBrain, loadArchetypePerfNFromBrain, loadChainsFromBrain, loadModelsFromBrain, loadPricingFromBrain, mapMeasuredFailureRows, markAdvisoryResolved, markExclusionFindingHandled, markPromoteReadyHandled, parseJudgeVerdict, peekBrainDeadLetter, planDecomposition, prefetchMeasuredFailure, prefetchPromotions, probeShadow, profileToRow, readBrainReadEnv, record, recordGoldenIr, recordOutcome, recordShadowProbe, renderIrForJudge, resetTokenizer, resolveConventionsForProfile, resolveOutcomeSource, resolvePricingAt, resolveProviderKey, rowToAdvisory, rubricFor, runAdvisor, runGoldenEval, runStrategyEvalWithAttribution, setTokenizer, wilsonLowerBound, withAltBlindDisciplineContract, withAltDisciplineContract, withDisciplineContract };
4093
+ export { ABSOLUTE_FLOOR, type AISDKConvertedMessage, ALT_BLIND_TOKEN_BUDGET_BREACH, ALT_STRATEGY_IDS, ARCHETYPE_FAMILY_FITS, ARCHETYPE_FLOOR_DEFAULT, type ActionableAdvisory, Adapter, type AdvisoryEvidenceWindow, type AdvisoryResolutionSource, type AdvisorySeverity, type AdvisoryStatus, type AdvisorySuggestedFix, ApiKeys, type AppOracle, type ApplySectionRewritesArgs, type ApplySectionRewritesResult, ArchetypeConvention, type ArchetypeFamilyFit, type ArchetypePerfMap, type ArchetypePerfNMap, type ArchetypePerfScoreResult, type AttachCacheControlResult, BLOCKED_MODEL_FAMILY_SIBLING_SERVED_CODE, BLOCKED_MODEL_NOT_IN_ROSTER_CODE, BRAIN_READ_ENV_NAMES, BURST_SPAN_MS, BestPracticeAdvisory, type BrainConfig, type BrainDeadLetterEntry, type BrainHealthSnapshot, type BrainQueryConfig, type BrainReadEnv, COACH_CFG, COST_RANKING_REFERENCE_SHAPE, CallOptions, CallResult, ChainEntry, type CompatibilityIntent, type CompileForAISDKv6Result, type CompileOptions, CompilePolicy, CompileResult, CompiledRequest, type CreateDelegateOpts, DECOMPOSITION_TEMPLATES, DECOMPOSITION_TEMPLATES_VERSION, DEFAULT_FINDINGS_ENDPOINT, DEFAULT_JUDGE_MODEL, DEFAULT_MEASURED_FAILURE_ENDPOINT, DEFAULT_PROMOTIONS_ENDPOINT, DELEGATE_TOOL_DEFINITION, DISCIPLINE_GATES_V1_ALT_BLIND_HEADER, DISCIPLINE_GATES_V1_ALT_HEADER, type DecompositionPlan, type DecompositionStep, type DecompositionTemplate, type DelegateHandle, type DelegateRefusalReason, type DelegateResult, type DelegateToolArgs, type ExclusionFindingRow, type ExclusionResolutionSource, type ExecuteErr, type ExecuteOk, type ExecuteOptions, type ExecuteResult, type ExecutorCandidate, type FallbackPosture, FallbackReason, FamilyResolutionError, type GetActionableAdvisoriesOptions, type GetApplicablePromotionOpts, type GetDefaultFallbackChainOpts, type GetMeasuredFailureOpts, type GetPerAxisMetricsOpts, type GetRecommendedPrimaryOptions, type GoldenEvalAxis, type GoldenEvalCase, type GoldenEvalOptions, type GoldenEvalRunResult, type GoldenEvalStrategyId, type GoldenIrRecordInput, Grounding, IntentArchetypeName, JUDGE_RUBRICS, LIBRARY_VERSION, type LLMJudgeOptions, MEASURED_FAILURE_CFG, MEASURED_GROUNDING_MIN_N, type MarkAdvisoryResolvedOptions, type MarkExclusionFindingHandledOptions, type MarkPromoteReadyHandledOptions, type MeasuredFailureRuntime, type MeasuredFailureVerdict, type ModelBrainRow, type ModelCompatibility, ModelProfile, NormalizedResponse, type OracleContext, OracleScore, type OutcomePayload, OutcomeResult, OutputMode, PRODUCER_OWNED_RULE_CODES, PROVIDER_ENV_KEYS, PerAxisMetrics, type PlannedStep, type PricingRow, type ProbeShadowOptions, type ProbeShadowServed, type ProfileToRowOptions, type PromoteReadyFindingRow, type PromoteReadyResolution, type PromotionRow, type PromotionsRuntime, PromptIR, Provider, ProviderOverrides, type ProviderReachability, ROLLBACK_SUPPRESSION_WINDOW_DAYS, RULE_DISCIPLINE_GATES_V1, RULE_DISCIPLINE_GATES_V1_STRUCTURED, RULE_SEQUENTIAL_TOOL_CLIFF, type ReachabilityOpts, RecordInput, RecordOutcomeInput, type RunAdvisorPhase2Context, STRATEGY_AUTHORSHIP_INDEPENDENT, STRATEGY_AUTHORSHIP_LIMITATION, SectionRewrite, type ShadowProbeRecordInput, type StrategyAttribution, type StrategyAttributionResult, type StrategyOutcome, type SupportedProvider, type SurfaceFailureRow, type SurfaceStats, SystemModelMessage, TRANSLATOR_FLOOR, _testResetMeasuredFailure, _testResetOutcomeSourceWarning, _testResetPromotions, _testWaitForMeasuredFailureRefresh, _testWaitForPromotionsRefresh, altBlindGatesBlockFor, altGatesBlockFor, applyArchetypeConvention, applySectionRewrites, attachCacheControlToStreamTextInput, awaitMeasuredFailureReady, awaitPromotionsReady, brainHealth, buildGoldenIrRow, buildLLMJudge, buildPairwiseJudgePrompt, buildShadowProbeRow, burstCaveat, call, chainProviderSpread, classifyEvidenceWindow, classifyStrategyOutcome, clearBrain, combineOrderSwappedVerdicts, compile, compileForAISDKv6, configureBrain, configureMeasuredFailureBrain, configurePromotionsBrain, countTokens, createDelegate, deriveFamilyFromModelId, deriveOwnership, estimateChainCostUsd, estimateModelCostUsd, execute, findBetterFit, flushBrainDeadLetter, formatEvidenceSpan, getActionableAdvisories, getAllStarterChains, getAllStarterChainsWithGrounding, getApplicablePromotion, getArchetypePerfScore, getDefaultFallbackChain, getDefaultFallbackChainWithGrounding, getMeasuredFailureVerdict, getModelCompatibility, getPerAxisMetrics, getReachabilityDiagnostic, getRecentRollback, getRecommendedPrimary, getSequentialStarterChain, getSequentialStarterChainWithGrounding, getStaleExclusionFindings, getStarterChain, getStarterChainWithGrounding, isAltStrategy, isAutoPromoteEnabledFromEnv, isBrainQueryActiveFor, isBrainSync, isDelegateEnabledFromEnv, isExclusionFindingsBrainActive, isMeasuredFailureBrainActive, isMeasuredFailureGateEnabledFromEnv, isModelReachable, isPromotionsBrainActive, isProviderReachable, judgeMeasuredFailure, loadAliasesFromBrain, loadArchetypePerfFromBrain, loadArchetypePerfNFromBrain, loadChainsFromBrain, loadModelsFromBrain, loadPricingFromBrain, mapMeasuredFailureRows, markAdvisoryResolved, markExclusionFindingHandled, markPromoteReadyHandled, parseJudgeVerdict, peekBrainDeadLetter, planDecomposition, prefetchMeasuredFailure, prefetchPromotions, probeShadow, profileToRow, readBrainReadEnv, record, recordGoldenIr, recordOutcome, recordShadowProbe, renderIrForJudge, resetTokenizer, resolveConventionsForProfile, resolveOutcomeSource, resolvePricingAt, resolveProviderKey, rowToAdvisory, rubricFor, runAdvisor, runGoldenEval, runStrategyEvalWithAttribution, setTokenizer, wilsonLowerBound, withAltBlindDisciplineContract, withAltDisciplineContract, withDisciplineContract };
package/dist/index.js CHANGED
@@ -37,6 +37,7 @@ __export(index_exports, {
37
37
  DECOMPOSITION_TEMPLATES: () => DECOMPOSITION_TEMPLATES,
38
38
  DECOMPOSITION_TEMPLATES_VERSION: () => DECOMPOSITION_TEMPLATES_VERSION,
39
39
  DEFAULT_FINDINGS_ENDPOINT: () => DEFAULT_FINDINGS_ENDPOINT,
40
+ DEFAULT_JUDGE_MODEL: () => DEFAULT_JUDGE_MODEL,
40
41
  DEFAULT_MEASURED_FAILURE_ENDPOINT: () => DEFAULT_MEASURED_FAILURE_ENDPOINT,
41
42
  DEFAULT_PROMOTIONS_ENDPOINT: () => DEFAULT_PROMOTIONS_ENDPOINT,
42
43
  DELEGATE_TOOL_DEFINITION: () => DELEGATE_TOOL_DEFINITION,
@@ -583,7 +584,7 @@ var PROFILES_RAW = [
583
584
  },
584
585
  {
585
586
  id: "claude-opus-4-7",
586
- verifiedAgainstDocs: "2026-08-24",
587
+ verifiedAgainstDocs: "2026-08-14",
587
588
  provider: "anthropic",
588
589
  status: "legacy",
589
590
  // s76 2026-07-25: docs list as LEGACY (Opus 5 is current). Bundle said current while the brain already said legacy — the two disagreed.
@@ -633,7 +634,7 @@ var PROFILES_RAW = [
633
634
  },
634
635
  {
635
636
  id: "claude-opus-4-6",
636
- verifiedAgainstDocs: "2026-08-24",
637
+ verifiedAgainstDocs: "2026-08-14",
637
638
  provider: "anthropic",
638
639
  status: "legacy",
639
640
  maxContextTokens: 1e6,
@@ -678,7 +679,7 @@ var PROFILES_RAW = [
678
679
  },
679
680
  {
680
681
  id: "claude-sonnet-4-6",
681
- verifiedAgainstDocs: "2026-08-24",
682
+ verifiedAgainstDocs: "2026-08-14",
682
683
  provider: "anthropic",
683
684
  status: "legacy",
684
685
  // s76 2026-07-25: docs list as LEGACY (Sonnet 5 is current).
@@ -719,7 +720,7 @@ var PROFILES_RAW = [
719
720
  },
720
721
  {
721
722
  id: "claude-haiku-4-5",
722
- verifiedAgainstDocs: "2026-08-24",
723
+ verifiedAgainstDocs: "2026-08-14",
723
724
  provider: "anthropic",
724
725
  status: "current",
725
726
  maxContextTokens: 2e5,
@@ -782,7 +783,7 @@ var PROFILES_RAW = [
782
783
  // ── Google ──
783
784
  {
784
785
  id: "gemini-2.5-flash",
785
- verifiedAgainstDocs: "2026-08-24",
786
+ verifiedAgainstDocs: "2026-08-14",
786
787
  provider: "google",
787
788
  status: "current",
788
789
  maxContextTokens: 1048576,
@@ -888,7 +889,7 @@ var PROFILES_RAW = [
888
889
  // thresholds. The brain will validate/relax these as evidence accumulates
889
890
  // per (archetype, model) tuple. Currently ZERO brain rows for this model.
890
891
  id: "gemini-2.5-flash-lite",
891
- verifiedAgainstDocs: "2026-08-24",
892
+ verifiedAgainstDocs: "2026-08-14",
892
893
  provider: "google",
893
894
  status: "current",
894
895
  maxContextTokens: 1048576,
@@ -1045,7 +1046,7 @@ var PROFILES_RAW = [
1045
1046
  },
1046
1047
  {
1047
1048
  id: "gemini-3.1-pro-preview",
1048
- verifiedAgainstDocs: "2026-08-24",
1049
+ verifiedAgainstDocs: "2026-08-14",
1049
1050
  provider: "google",
1050
1051
  status: "preview",
1051
1052
  maxContextTokens: 1048576,
@@ -1143,7 +1144,7 @@ var PROFILES_RAW = [
1143
1144
  // baseQuality (it carries 'reasoning') with no latency counterweight,
1144
1145
  // leapfrogged gemini-2.5-flash as PB's summarize leader once reachable.
1145
1146
  latencyTier: "slow",
1146
- notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
1147
+ notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
1147
1148
  // Master plan §6.2 anchor. Brain-validated tier 1 cross-provider for
1148
1149
  // classify (169 rows, 0% empty). Tier 0 for summarize-with-no-tools.
1149
1150
  // Falls off on hunt (sequential tools — L-040) and reasoning depth.
@@ -1219,7 +1220,7 @@ var PROFILES_RAW = [
1219
1220
  // of the served set. Tag derivation would say 'medium'; the measurement says
1220
1221
  // otherwise.
1221
1222
  latencyTier: "slow",
1222
- notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
1223
+ notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
1223
1224
  // Master plan §3.3: tier 3 cross-provider for plan chain. Reasoning
1224
1225
  // bumped one notch over V4-Flash; same parallel-tool ceiling.
1225
1226
  archetypePerf: {
@@ -1910,7 +1911,7 @@ var PROFILES_RAW = [
1910
1911
  ],
1911
1912
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1912
1913
  weaknesses: ["no_brain_evidence_yet"],
1913
- notes: "Hand-onboarded s86 (2026-08-24; the session ran under a 10-day-slow machine clock, hence 08-14 stamps in kin artifacts), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING (page 2026-08-24): $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~31 days in the onboarding queue.",
1914
+ notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING re-verified 2026-08-24 at publish: $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~21 days in the onboarding queue (onboarded 2026-08-14).",
1914
1915
  archetypePerf: {
1915
1916
  hunt: 9,
1916
1917
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1944,7 +1945,7 @@ var PROFILES_RAW = [
1944
1945
  // 'preview' per the Fable precedent — no brain evidence yet; promotion to
1945
1946
  // 'current' is an explicit call. (L-049/L-081.)
1946
1947
  id: "claude-sonnet-5",
1947
- verifiedAgainstDocs: "2026-08-24",
1948
+ verifiedAgainstDocs: "2026-08-14",
1948
1949
  provider: "anthropic",
1949
1950
  status: "current",
1950
1951
  // s76 2026-07-25: GA per docs; was preview.
@@ -6289,7 +6290,7 @@ function validateFinalFit(ir, profile, tokens) {
6289
6290
  }
6290
6291
 
6291
6292
  // src/version.ts
6292
- var LIBRARY_VERSION = "2.0.0-alpha.88";
6293
+ var LIBRARY_VERSION = "2.0.0-alpha.89";
6293
6294
 
6294
6295
  // src/pricing-brain.ts
6295
6296
  function isPricingRow(x) {
@@ -6800,6 +6801,9 @@ function buildPayload(input, reg) {
6800
6801
  // alpha.87 — explicit source wins; KGAUTO_SOURCE env fills the gap (the
6801
6802
  // zero-code synthetic self-mark for harness/smoke processes).
6802
6803
  source: resolveOutcomeSource(input.source),
6804
+ // 128-char truncation is the write-side contract (documented on the
6805
+ // type); an id that long is almost certainly a mistake, not identity.
6806
+ end_user_id: input.endUserId ? String(input.endUserId).slice(0, 128) : void 0,
6803
6807
  error_type: input.errorType,
6804
6808
  tools_called: input.toolsCalled,
6805
6809
  oracle_score: input.oracleScore?.score,
@@ -8244,6 +8248,7 @@ async function call(ir, opts = {}) {
8244
8248
  await record({
8245
8249
  handle: initial.handle,
8246
8250
  source: opts.source,
8251
+ endUserId: opts.endUserId,
8247
8252
  tokensIn: 0,
8248
8253
  tokensOut: 0,
8249
8254
  latencyMs: latencyMs2,
@@ -8297,6 +8302,7 @@ async function call(ir, opts = {}) {
8297
8302
  await record({
8298
8303
  handle: initial.handle,
8299
8304
  source: opts.source,
8305
+ endUserId: opts.endUserId,
8300
8306
  tokensIn: 0,
8301
8307
  tokensOut: 0,
8302
8308
  latencyMs: latencyMs2,
@@ -8439,6 +8445,7 @@ async function call(ir, opts = {}) {
8439
8445
  await record({
8440
8446
  handle: initial.handle,
8441
8447
  source: opts.source,
8448
+ endUserId: opts.endUserId,
8442
8449
  tokensIn: validated.response.tokens.input,
8443
8450
  tokensOut: validated.response.tokens.output,
8444
8451
  latencyMs: latencyMs2,
@@ -8562,6 +8569,7 @@ async function call(ir, opts = {}) {
8562
8569
  await record({
8563
8570
  handle: initial.handle,
8564
8571
  source: opts.source,
8572
+ endUserId: opts.endUserId,
8565
8573
  tokensIn: lastErr?.tokens?.input ?? 0,
8566
8574
  tokensOut: lastErr?.tokens?.output ?? 0,
8567
8575
  latencyMs,
@@ -9035,6 +9043,7 @@ function extractKeptToolNames(result) {
9035
9043
 
9036
9044
  // src/golden-eval.ts
9037
9045
  var GENERIC_RUBRIC = "overall correctness, completeness against the request, clarity, and adherence to any requested format";
9046
+ var DEFAULT_JUDGE_MODEL = "claude-opus-5";
9038
9047
  var JUDGE_RUBRICS = {
9039
9048
  summarize: "faithfulness to the source (no fabricated facts), coverage of the key points, concision, and adherence to the requested output format",
9040
9049
  classify: "assignment of the correct category from the allowed set, and nothing outside the allowed set",
@@ -9253,7 +9262,7 @@ async function runGoldenEval(opts) {
9253
9262
  const threshold = opts.winOrTieThreshold ?? 0.8;
9254
9263
  const latencyFloorRatio = opts.latencyFloorRatio ?? 3;
9255
9264
  const minJudgeable = opts.minJudgeableCases ?? 5;
9256
- const judgeModel = opts.judgeModel ?? "claude-opus-4-8";
9265
+ const judgeModel = opts.judgeModel ?? DEFAULT_JUDGE_MODEL;
9257
9266
  const notes = [];
9258
9267
  const axis = opts.axis ?? "model";
9259
9268
  const strategyId = opts.strategy;
@@ -11067,6 +11076,7 @@ function compile2(ir, opts) {
11067
11076
  DECOMPOSITION_TEMPLATES,
11068
11077
  DECOMPOSITION_TEMPLATES_VERSION,
11069
11078
  DEFAULT_FINDINGS_ENDPOINT,
11079
+ DEFAULT_JUDGE_MODEL,
11070
11080
  DEFAULT_MEASURED_FAILURE_ENDPOINT,
11071
11081
  DEFAULT_PROMOTIONS_ENDPOINT,
11072
11082
  DELEGATE_TOOL_DEFINITION,
package/dist/index.mjs CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  LIBRARY_VERSION,
20
20
  createKeyHealthRoute,
21
21
  keyFingerprint
22
- } from "./chunk-GCOVYPJA.mjs";
22
+ } from "./chunk-MKOOPD6S.mjs";
23
23
  import {
24
24
  ABSOLUTE_FLOOR,
25
25
  ARCHETYPE_FLOOR_DEFAULT,
@@ -57,7 +57,7 @@ import {
57
57
  policySetHas,
58
58
  readBrainReadEnv,
59
59
  resolveProviderKey
60
- } from "./chunk-DSHWJFM2.mjs";
60
+ } from "./chunk-D7RX3UD3.mjs";
61
61
  import {
62
62
  ALIASES,
63
63
  LATENCY_TIER_MS,
@@ -73,7 +73,7 @@ import {
73
73
  registerProfiles,
74
74
  resolveModelAlias,
75
75
  tryGetProfile
76
- } from "./chunk-UNTUOZAG.mjs";
76
+ } from "./chunk-OK2TMFRR.mjs";
77
77
  import {
78
78
  emitAdvisoryFired,
79
79
  emitCompileDone,
@@ -3913,6 +3913,9 @@ function buildPayload(input, reg) {
3913
3913
  // alpha.87 — explicit source wins; KGAUTO_SOURCE env fills the gap (the
3914
3914
  // zero-code synthetic self-mark for harness/smoke processes).
3915
3915
  source: resolveOutcomeSource(input.source),
3916
+ // 128-char truncation is the write-side contract (documented on the
3917
+ // type); an id that long is almost certainly a mistake, not identity.
3918
+ end_user_id: input.endUserId ? String(input.endUserId).slice(0, 128) : void 0,
3916
3919
  error_type: input.errorType,
3917
3920
  tools_called: input.toolsCalled,
3918
3921
  oracle_score: input.oracleScore?.score,
@@ -5056,6 +5059,7 @@ async function call(ir, opts = {}) {
5056
5059
  await record({
5057
5060
  handle: initial.handle,
5058
5061
  source: opts.source,
5062
+ endUserId: opts.endUserId,
5059
5063
  tokensIn: 0,
5060
5064
  tokensOut: 0,
5061
5065
  latencyMs: latencyMs2,
@@ -5109,6 +5113,7 @@ async function call(ir, opts = {}) {
5109
5113
  await record({
5110
5114
  handle: initial.handle,
5111
5115
  source: opts.source,
5116
+ endUserId: opts.endUserId,
5112
5117
  tokensIn: 0,
5113
5118
  tokensOut: 0,
5114
5119
  latencyMs: latencyMs2,
@@ -5251,6 +5256,7 @@ async function call(ir, opts = {}) {
5251
5256
  await record({
5252
5257
  handle: initial.handle,
5253
5258
  source: opts.source,
5259
+ endUserId: opts.endUserId,
5254
5260
  tokensIn: validated.response.tokens.input,
5255
5261
  tokensOut: validated.response.tokens.output,
5256
5262
  latencyMs: latencyMs2,
@@ -5374,6 +5380,7 @@ async function call(ir, opts = {}) {
5374
5380
  await record({
5375
5381
  handle: initial.handle,
5376
5382
  source: opts.source,
5383
+ endUserId: opts.endUserId,
5377
5384
  tokensIn: lastErr?.tokens?.input ?? 0,
5378
5385
  tokensOut: lastErr?.tokens?.output ?? 0,
5379
5386
  latencyMs,
@@ -5847,6 +5854,7 @@ function extractKeptToolNames(result) {
5847
5854
 
5848
5855
  // src/golden-eval.ts
5849
5856
  var GENERIC_RUBRIC = "overall correctness, completeness against the request, clarity, and adherence to any requested format";
5857
+ var DEFAULT_JUDGE_MODEL = "claude-opus-5";
5850
5858
  var JUDGE_RUBRICS = {
5851
5859
  summarize: "faithfulness to the source (no fabricated facts), coverage of the key points, concision, and adherence to the requested output format",
5852
5860
  classify: "assignment of the correct category from the allowed set, and nothing outside the allowed set",
@@ -6065,7 +6073,7 @@ async function runGoldenEval(opts) {
6065
6073
  const threshold = opts.winOrTieThreshold ?? 0.8;
6066
6074
  const latencyFloorRatio = opts.latencyFloorRatio ?? 3;
6067
6075
  const minJudgeable = opts.minJudgeableCases ?? 5;
6068
- const judgeModel = opts.judgeModel ?? "claude-opus-4-8";
6076
+ const judgeModel = opts.judgeModel ?? DEFAULT_JUDGE_MODEL;
6069
6077
  const notes = [];
6070
6078
  const axis = opts.axis ?? "model";
6071
6079
  const strategyId = opts.strategy;
@@ -7503,6 +7511,7 @@ export {
7503
7511
  DECOMPOSITION_TEMPLATES,
7504
7512
  DECOMPOSITION_TEMPLATES_VERSION,
7505
7513
  DEFAULT_FINDINGS_ENDPOINT,
7514
+ DEFAULT_JUDGE_MODEL,
7506
7515
  DEFAULT_MEASURED_FAILURE_ENDPOINT,
7507
7516
  DEFAULT_PROMOTIONS_ENDPOINT,
7508
7517
  DELEGATE_TOOL_DEFINITION,
@@ -1174,6 +1174,12 @@ interface CallOptions {
1174
1174
  * {@link OutcomeSource}.
1175
1175
  */
1176
1176
  source?: OutcomeSource;
1177
+ /**
1178
+ * alpha.89 — per-end-user metering: passed through to every outcome row
1179
+ * this call records, including failure rows (a failed call still spent
1180
+ * money attributable to the customer). See {@link RecordInput.endUserId}.
1181
+ */
1182
+ endUserId?: string;
1177
1183
  /**
1178
1184
  * alpha.84 — fires once per FAILED attempt during the fallback walk, before
1179
1185
  * the walk continues. IC-Cairn's filing, 2026-07-29.
@@ -1576,6 +1582,16 @@ interface RecordInput {
1576
1582
  * {@link OutcomeSource}.
1577
1583
  */
1578
1584
  source?: OutcomeSource;
1585
+ /**
1586
+ * alpha.89 (migration 065) — per-end-user metering. Your own OPAQUE
1587
+ * customer id (hash it upstream if your ids are sensitive; kgauto stores
1588
+ * it verbatim, truncated to 128 chars). With it, the brain becomes a
1589
+ * per-customer COGS ledger: `kgauto_end_user_ledger_v` aggregates calls /
1590
+ * tokens / cost_usd per (app, end user, month) over organic traffic only —
1591
+ * the substrate for usage-based billing and per-customer quota checks.
1592
+ * Omit for traffic that has no end user.
1593
+ */
1594
+ endUserId?: string;
1579
1595
  /** Actual tokens consumed (post-call). */
1580
1596
  tokensIn: number;
1581
1597
  tokensOut: number;
@@ -1174,6 +1174,12 @@ interface CallOptions {
1174
1174
  * {@link OutcomeSource}.
1175
1175
  */
1176
1176
  source?: OutcomeSource;
1177
+ /**
1178
+ * alpha.89 — per-end-user metering: passed through to every outcome row
1179
+ * this call records, including failure rows (a failed call still spent
1180
+ * money attributable to the customer). See {@link RecordInput.endUserId}.
1181
+ */
1182
+ endUserId?: string;
1177
1183
  /**
1178
1184
  * alpha.84 — fires once per FAILED attempt during the fallback walk, before
1179
1185
  * the walk continues. IC-Cairn's filing, 2026-07-29.
@@ -1576,6 +1582,16 @@ interface RecordInput {
1576
1582
  * {@link OutcomeSource}.
1577
1583
  */
1578
1584
  source?: OutcomeSource;
1585
+ /**
1586
+ * alpha.89 (migration 065) — per-end-user metering. Your own OPAQUE
1587
+ * customer id (hash it upstream if your ids are sensitive; kgauto stores
1588
+ * it verbatim, truncated to 128 chars). With it, the brain becomes a
1589
+ * per-customer COGS ledger: `kgauto_end_user_ledger_v` aggregates calls /
1590
+ * tokens / cost_usd per (app, end user, month) over organic traffic only —
1591
+ * the substrate for usage-based billing and per-customer quota checks.
1592
+ * Omit for traffic that has no end user.
1593
+ */
1594
+ endUserId?: string;
1579
1595
  /** Actual tokens consumed (post-call). */
1580
1596
  tokensIn: number;
1581
1597
  tokensOut: number;
@@ -28,7 +28,7 @@ __export(key_health_exports, {
28
28
  module.exports = __toCommonJS(key_health_exports);
29
29
 
30
30
  // src/version.ts
31
- var LIBRARY_VERSION = "2.0.0-alpha.88";
31
+ var LIBRARY_VERSION = "2.0.0-alpha.89";
32
32
 
33
33
  // src/key-health.ts
34
34
  var JSON_HEADERS = { "Content-Type": "application/json" };
@@ -3,7 +3,7 @@ import {
3
3
  KEY_FINGERPRINT_LENGTH,
4
4
  createKeyHealthRoute,
5
5
  keyFingerprint
6
- } from "./chunk-GCOVYPJA.mjs";
6
+ } from "./chunk-MKOOPD6S.mjs";
7
7
  export {
8
8
  KEY_FINGERPRINT_DOMAIN,
9
9
  KEY_FINGERPRINT_LENGTH,
@@ -1,4 +1,4 @@
1
- import { l as Provider } from './ir-P3NEU8z4.mjs';
1
+ import { l as Provider } from './ir-DeYMLWge.mjs';
2
2
  import { IntentArchetypeName } from './dialect.mjs';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { l as Provider } from './ir-ZgN2KkuF.js';
1
+ import { l as Provider } from './ir-CTx026t0.js';
2
2
  import { IntentArchetypeName } from './dialect.js';
3
3
 
4
4
  /**
package/dist/profiles.js CHANGED
@@ -248,7 +248,7 @@ var PROFILES_RAW = [
248
248
  },
249
249
  {
250
250
  id: "claude-opus-4-7",
251
- verifiedAgainstDocs: "2026-08-24",
251
+ verifiedAgainstDocs: "2026-08-14",
252
252
  provider: "anthropic",
253
253
  status: "legacy",
254
254
  // s76 2026-07-25: docs list as LEGACY (Opus 5 is current). Bundle said current while the brain already said legacy — the two disagreed.
@@ -298,7 +298,7 @@ var PROFILES_RAW = [
298
298
  },
299
299
  {
300
300
  id: "claude-opus-4-6",
301
- verifiedAgainstDocs: "2026-08-24",
301
+ verifiedAgainstDocs: "2026-08-14",
302
302
  provider: "anthropic",
303
303
  status: "legacy",
304
304
  maxContextTokens: 1e6,
@@ -343,7 +343,7 @@ var PROFILES_RAW = [
343
343
  },
344
344
  {
345
345
  id: "claude-sonnet-4-6",
346
- verifiedAgainstDocs: "2026-08-24",
346
+ verifiedAgainstDocs: "2026-08-14",
347
347
  provider: "anthropic",
348
348
  status: "legacy",
349
349
  // s76 2026-07-25: docs list as LEGACY (Sonnet 5 is current).
@@ -384,7 +384,7 @@ var PROFILES_RAW = [
384
384
  },
385
385
  {
386
386
  id: "claude-haiku-4-5",
387
- verifiedAgainstDocs: "2026-08-24",
387
+ verifiedAgainstDocs: "2026-08-14",
388
388
  provider: "anthropic",
389
389
  status: "current",
390
390
  maxContextTokens: 2e5,
@@ -447,7 +447,7 @@ var PROFILES_RAW = [
447
447
  // ── Google ──
448
448
  {
449
449
  id: "gemini-2.5-flash",
450
- verifiedAgainstDocs: "2026-08-24",
450
+ verifiedAgainstDocs: "2026-08-14",
451
451
  provider: "google",
452
452
  status: "current",
453
453
  maxContextTokens: 1048576,
@@ -553,7 +553,7 @@ var PROFILES_RAW = [
553
553
  // thresholds. The brain will validate/relax these as evidence accumulates
554
554
  // per (archetype, model) tuple. Currently ZERO brain rows for this model.
555
555
  id: "gemini-2.5-flash-lite",
556
- verifiedAgainstDocs: "2026-08-24",
556
+ verifiedAgainstDocs: "2026-08-14",
557
557
  provider: "google",
558
558
  status: "current",
559
559
  maxContextTokens: 1048576,
@@ -710,7 +710,7 @@ var PROFILES_RAW = [
710
710
  },
711
711
  {
712
712
  id: "gemini-3.1-pro-preview",
713
- verifiedAgainstDocs: "2026-08-24",
713
+ verifiedAgainstDocs: "2026-08-14",
714
714
  provider: "google",
715
715
  status: "preview",
716
716
  maxContextTokens: 1048576,
@@ -808,7 +808,7 @@ var PROFILES_RAW = [
808
808
  // baseQuality (it carries 'reasoning') with no latency counterweight,
809
809
  // leapfrogged gemini-2.5-flash as PB's summarize leader once reachable.
810
810
  latencyTier: "slow",
811
- notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
811
+ notes: "Cheap workhorse. 1M context, 384k max output. Cache-hit input $0.0028/M (1/50\xD7 of miss). Aliased as `deepseek-chat` (non-thinking) and `deepseek-reasoner` (thinking) \u2014 see ALIASES. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
812
812
  // Master plan §6.2 anchor. Brain-validated tier 1 cross-provider for
813
813
  // classify (169 rows, 0% empty). Tier 0 for summarize-with-no-tools.
814
814
  // Falls off on hunt (sequential tools — L-040) and reasoning depth.
@@ -884,7 +884,7 @@ var PROFILES_RAW = [
884
884
  // of the served set. Tag derivation would say 'medium'; the measurement says
885
885
  // otherwise.
886
886
  latencyTier: "slow",
887
- notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 shipped the DEAD pre-transition prices ($0.14/$0.28 flash, $0.435/$0.87 pro) with a fresh verification stamp \u2014 corrected here (alpha.88). A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
887
+ notes: "Pro tier. 1M context, 384k max output. $0.435/$0.87 per 1M (cache-hit in $0.003625) \u2014 verified live 2026-06-22; the launch promo became the standing price (no revert). Default mode = thinking. PEAK/OFF-PEAK since 2026-08-16 (page fetched 2026-08-24): peak = weekdays 01:00-04:00 + 06:00-10:00 UTC, off-peak = all other hours at HALF peak. Encoded prices ARE the peak rate (conservative: never understate cost); off-peak traffic costs half what the estimate says. alpha.87 was built + verified 2026-08-14 (prices then live), held at the publish gate 10 days, and published 2026-08-24 \u2014 by which time the 08-16 transition had killed them ($0.14/$0.28 flash, $0.435/$0.87 pro); corrected here (alpha.88). Build-then-hold is the mechanism: re-verify prices at publish when publish is not same-session as build. A single price field cannot represent a two-rate schedule; catalog-sync extractions oscillate between the rates day-to-day (peak read 08-21, off-peak read 08-22) \u2014 time-of-day pricing remains unmodeled, roadmap.",
888
888
  // Master plan §3.3: tier 3 cross-provider for plan chain. Reasoning
889
889
  // bumped one notch over V4-Flash; same parallel-tool ceiling.
890
890
  archetypePerf: {
@@ -1575,7 +1575,7 @@ var PROFILES_RAW = [
1575
1575
  ],
1576
1576
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1577
1577
  weaknesses: ["no_brain_evidence_yet"],
1578
- notes: "Hand-onboarded s86 (2026-08-24; the session ran under a 10-day-slow machine clock, hence 08-14 stamps in kin artifacts), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING (page 2026-08-24): $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~31 days in the onboarding queue.",
1578
+ notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page). PRICING re-verified 2026-08-24 at publish: $0.75/$3.75 promo through 2026-12-31, $1.50/$7.50 from 2027-01-01 \u2014 the alpha.87 profile carried the post-promo rate as if current; corrected alpha.88. Docs status Stable; enters kgauto as preview per standing rule (availability != lifecycle, promotion via brain evidence). Function calling + structured outputs + thinking per docs; parallel tools assumed per Flash family (docs silent). First flagged by the release watcher s73 (2026-07-24); ~21 days in the onboarding queue (onboarded 2026-08-14).",
1579
1579
  archetypePerf: {
1580
1580
  hunt: 9,
1581
1581
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1609,7 +1609,7 @@ var PROFILES_RAW = [
1609
1609
  // 'preview' per the Fable precedent — no brain evidence yet; promotion to
1610
1610
  // 'current' is an explicit call. (L-049/L-081.)
1611
1611
  id: "claude-sonnet-5",
1612
- verifiedAgainstDocs: "2026-08-24",
1612
+ verifiedAgainstDocs: "2026-08-14",
1613
1613
  provider: "anthropic",
1614
1614
  status: "current",
1615
1615
  // s76 2026-07-25: GA per docs; was preview.
package/dist/profiles.mjs CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  registerProfiles,
14
14
  resolveModelAlias,
15
15
  tryGetProfile
16
- } from "./chunk-UNTUOZAG.mjs";
16
+ } from "./chunk-OK2TMFRR.mjs";
17
17
  export {
18
18
  ALIASES,
19
19
  LATENCY_TIER_MS,
@@ -1,4 +1,4 @@
1
- import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-ZgN2KkuF.js';
1
+ import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-CTx026t0.js';
2
2
 
3
3
  /**
4
4
  * Glass-Box observability types (alpha.17).
@@ -1,4 +1,4 @@
1
- import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-ZgN2KkuF.js';
1
+ import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-CTx026t0.js';
2
2
 
3
3
  /**
4
4
  * Wire contract for the Glass-Box Chrome extension's brain-poll endpoint.
@@ -1,4 +1,4 @@
1
- import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-P3NEU8z4.mjs';
1
+ import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-DeYMLWge.mjs';
2
2
 
3
3
  /**
4
4
  * Wire contract for the Glass-Box Chrome extension's brain-poll endpoint.
@@ -1,4 +1,4 @@
1
- import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-P3NEU8z4.mjs';
1
+ import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-DeYMLWge.mjs';
2
2
 
3
3
  /**
4
4
  * Glass-Box observability types (alpha.17).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warmdrift/kgauto-compiler",
3
- "version": "2.0.0-alpha.88",
3
+ "version": "2.0.0-alpha.89",
4
4
  "description": "Prompt compiler with executable provider knowledge for multi-model AI apps: normalized multi-provider transport with fallback chains, compile-time cliff guards, a curated model registry, and a telemetry flight recorder. Swap models without rewriting prompts.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",