@warmdrift/kgauto-compiler 2.0.0-alpha.87 → 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-YVKTTTTB.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.87";
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" };
@@ -733,7 +733,7 @@ var PROFILES_RAW = [
733
733
  // deepseek-reasoner registered as aliases (see ALIASES below).
734
734
  {
735
735
  id: "deepseek-v4-flash",
736
- verifiedAgainstDocs: "2026-08-14",
736
+ verifiedAgainstDocs: "2026-08-24",
737
737
  provider: "deepseek",
738
738
  status: "current",
739
739
  maxContextTokens: 1e6,
@@ -751,8 +751,8 @@ var PROFILES_RAW = [
751
751
  reason: "Sequential tool calls only \u2014 L-040"
752
752
  }
753
753
  ],
754
- costInputPer1m: 0.14,
755
- costOutputPer1m: 0.28,
754
+ costInputPer1m: 0.44,
755
+ costOutputPer1m: 1.32,
756
756
  lowering: {
757
757
  system: { mode: "inline" },
758
758
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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.
@@ -806,7 +806,7 @@ var PROFILES_RAW = [
806
806
  },
807
807
  {
808
808
  id: "deepseek-v4-pro",
809
- verifiedAgainstDocs: "2026-08-14",
809
+ verifiedAgainstDocs: "2026-08-24",
810
810
  provider: "deepseek",
811
811
  status: "current",
812
812
  maxContextTokens: 1e6,
@@ -830,8 +830,8 @@ var PROFILES_RAW = [
830
830
  // cache-hit in; no promo caveat). The old $1.74/$3.48 "regular post-promo"
831
831
  // was a projected revert that never happened (L-073/L-081) — it 4×-overstated
832
832
  // cost and suppressed V4-Pro in cost-aware ranking.
833
- costInputPer1m: 0.435,
834
- costOutputPer1m: 0.87,
833
+ costInputPer1m: 1.32,
834
+ costOutputPer1m: 3.96,
835
835
  lowering: {
836
836
  system: { mode: "inline" },
837
837
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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: {
@@ -1468,7 +1468,7 @@ var PROFILES_RAW = [
1468
1468
  // ─────────────────────────────────────────────────────────────────────────
1469
1469
  {
1470
1470
  id: "gemini-3.6-flash",
1471
- verifiedAgainstDocs: "2026-08-14",
1471
+ verifiedAgainstDocs: "2026-08-24",
1472
1472
  versionAdded: "2.0.0-alpha.87",
1473
1473
  provider: "google",
1474
1474
  status: "preview",
@@ -1506,8 +1506,10 @@ var PROFILES_RAW = [
1506
1506
  reason: "Inherited from 2.5-flash s11 cliff: summarize+tools \u2192 empty response. Preemptive family guard until brain evidence on 3.6-flash specifically."
1507
1507
  }
1508
1508
  ],
1509
- costInputPer1m: 1.5,
1510
- costOutputPer1m: 7.5,
1509
+ costInputPer1m: 0.75,
1510
+ // promo through 2026-12-31; $1.50 from 2027-01-01 (TIME_BOUNDED_PRICING_ROWS carries the transition)
1511
+ costOutputPer1m: 3.75,
1512
+ // promo through 2026-12-31; $7.50 from 2027-01-01
1511
1513
  lowering: {
1512
1514
  ...GOOGLE_LOWERING_BASE,
1513
1515
  cache: { ...GOOGLE_LOWERING_BASE.cache, discount: 0.1 },
@@ -1536,7 +1538,7 @@ var PROFILES_RAW = [
1536
1538
  ],
1537
1539
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1538
1540
  weaknesses: ["no_brain_evidence_yet"],
1539
- notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page), $1.50/$7.50 per 1M (catalog-sync two-agreeing-extraction same day \u2014 CHEAPER output than 3.5-flash at $9.00). 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; sat in the onboarding queue 18 days \u2014 drained by the s86 catalog-sync run.",
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).",
1540
1542
  archetypePerf: {
1541
1543
  hunt: 9,
1542
1544
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1583,7 +1585,7 @@ var PROFILES_RAW = [
1583
1585
  streaming: true,
1584
1586
  cliffs: [],
1585
1587
  costInputPer1m: 2,
1586
- // 2026-08-14: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1588
+ // 2026-08-24: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1587
1589
  costOutputPer1m: 10,
1588
1590
  lowering: ANTHROPIC_LOWERING_BASE,
1589
1591
  recovery: [
@@ -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
  /**
@@ -787,7 +787,7 @@ var PROFILES_RAW = [
787
787
  // deepseek-reasoner registered as aliases (see ALIASES below).
788
788
  {
789
789
  id: "deepseek-v4-flash",
790
- verifiedAgainstDocs: "2026-08-14",
790
+ verifiedAgainstDocs: "2026-08-24",
791
791
  provider: "deepseek",
792
792
  status: "current",
793
793
  maxContextTokens: 1e6,
@@ -805,8 +805,8 @@ var PROFILES_RAW = [
805
805
  reason: "Sequential tool calls only \u2014 L-040"
806
806
  }
807
807
  ],
808
- costInputPer1m: 0.14,
809
- costOutputPer1m: 0.28,
808
+ costInputPer1m: 0.44,
809
+ costOutputPer1m: 1.32,
810
810
  lowering: {
811
811
  system: { mode: "inline" },
812
812
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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.
@@ -860,7 +860,7 @@ var PROFILES_RAW = [
860
860
  },
861
861
  {
862
862
  id: "deepseek-v4-pro",
863
- verifiedAgainstDocs: "2026-08-14",
863
+ verifiedAgainstDocs: "2026-08-24",
864
864
  provider: "deepseek",
865
865
  status: "current",
866
866
  maxContextTokens: 1e6,
@@ -884,8 +884,8 @@ var PROFILES_RAW = [
884
884
  // cache-hit in; no promo caveat). The old $1.74/$3.48 "regular post-promo"
885
885
  // was a projected revert that never happened (L-073/L-081) — it 4×-overstated
886
886
  // cost and suppressed V4-Pro in cost-aware ranking.
887
- costInputPer1m: 0.435,
888
- costOutputPer1m: 0.87,
887
+ costInputPer1m: 1.32,
888
+ costOutputPer1m: 3.96,
889
889
  lowering: {
890
890
  system: { mode: "inline" },
891
891
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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: {
@@ -1522,7 +1522,7 @@ var PROFILES_RAW = [
1522
1522
  // ─────────────────────────────────────────────────────────────────────────
1523
1523
  {
1524
1524
  id: "gemini-3.6-flash",
1525
- verifiedAgainstDocs: "2026-08-14",
1525
+ verifiedAgainstDocs: "2026-08-24",
1526
1526
  versionAdded: "2.0.0-alpha.87",
1527
1527
  provider: "google",
1528
1528
  status: "preview",
@@ -1560,8 +1560,10 @@ var PROFILES_RAW = [
1560
1560
  reason: "Inherited from 2.5-flash s11 cliff: summarize+tools \u2192 empty response. Preemptive family guard until brain evidence on 3.6-flash specifically."
1561
1561
  }
1562
1562
  ],
1563
- costInputPer1m: 1.5,
1564
- costOutputPer1m: 7.5,
1563
+ costInputPer1m: 0.75,
1564
+ // promo through 2026-12-31; $1.50 from 2027-01-01 (TIME_BOUNDED_PRICING_ROWS carries the transition)
1565
+ costOutputPer1m: 3.75,
1566
+ // promo through 2026-12-31; $7.50 from 2027-01-01
1565
1567
  lowering: {
1566
1568
  ...GOOGLE_LOWERING_BASE,
1567
1569
  cache: { ...GOOGLE_LOWERING_BASE.cache, discount: 0.1 },
@@ -1590,7 +1592,7 @@ var PROFILES_RAW = [
1590
1592
  ],
1591
1593
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1592
1594
  weaknesses: ["no_brain_evidence_yet"],
1593
- notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page), $1.50/$7.50 per 1M (catalog-sync two-agreeing-extraction same day \u2014 CHEAPER output than 3.5-flash at $9.00). 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; sat in the onboarding queue 18 days \u2014 drained by the s86 catalog-sync run.",
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).",
1594
1596
  archetypePerf: {
1595
1597
  hunt: 9,
1596
1598
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1637,7 +1639,7 @@ var PROFILES_RAW = [
1637
1639
  streaming: true,
1638
1640
  cliffs: [],
1639
1641
  costInputPer1m: 2,
1640
- // 2026-08-14: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1642
+ // 2026-08-24: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1641
1643
  costOutputPer1m: 10,
1642
1644
  lowering: ANTHROPIC_LOWERING_BASE,
1643
1645
  recovery: [
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ARCHETYPE_FLOOR_DEFAULT,
3
3
  getDefaultFallbackChain
4
- } from "../chunk-G3MKT7IR.mjs";
4
+ } from "../chunk-D7RX3UD3.mjs";
5
5
  import {
6
6
  tryGetProfile
7
- } from "../chunk-YVKTTTTB.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.87";
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.87";
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,
@@ -1105,7 +1106,7 @@ var PROFILES_RAW = [
1105
1106
  // deepseek-reasoner registered as aliases (see ALIASES below).
1106
1107
  {
1107
1108
  id: "deepseek-v4-flash",
1108
- verifiedAgainstDocs: "2026-08-14",
1109
+ verifiedAgainstDocs: "2026-08-24",
1109
1110
  provider: "deepseek",
1110
1111
  status: "current",
1111
1112
  maxContextTokens: 1e6,
@@ -1123,8 +1124,8 @@ var PROFILES_RAW = [
1123
1124
  reason: "Sequential tool calls only \u2014 L-040"
1124
1125
  }
1125
1126
  ],
1126
- costInputPer1m: 0.14,
1127
- costOutputPer1m: 0.28,
1127
+ costInputPer1m: 0.44,
1128
+ costOutputPer1m: 1.32,
1128
1129
  lowering: {
1129
1130
  system: { mode: "inline" },
1130
1131
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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.
@@ -1178,7 +1179,7 @@ var PROFILES_RAW = [
1178
1179
  },
1179
1180
  {
1180
1181
  id: "deepseek-v4-pro",
1181
- verifiedAgainstDocs: "2026-08-14",
1182
+ verifiedAgainstDocs: "2026-08-24",
1182
1183
  provider: "deepseek",
1183
1184
  status: "current",
1184
1185
  maxContextTokens: 1e6,
@@ -1202,8 +1203,8 @@ var PROFILES_RAW = [
1202
1203
  // cache-hit in; no promo caveat). The old $1.74/$3.48 "regular post-promo"
1203
1204
  // was a projected revert that never happened (L-073/L-081) — it 4×-overstated
1204
1205
  // cost and suppressed V4-Pro in cost-aware ranking.
1205
- costInputPer1m: 0.435,
1206
- costOutputPer1m: 0.87,
1206
+ costInputPer1m: 1.32,
1207
+ costOutputPer1m: 3.96,
1207
1208
  lowering: {
1208
1209
  system: { mode: "inline" },
1209
1210
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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: {
@@ -1840,7 +1841,7 @@ var PROFILES_RAW = [
1840
1841
  // ─────────────────────────────────────────────────────────────────────────
1841
1842
  {
1842
1843
  id: "gemini-3.6-flash",
1843
- verifiedAgainstDocs: "2026-08-14",
1844
+ verifiedAgainstDocs: "2026-08-24",
1844
1845
  versionAdded: "2.0.0-alpha.87",
1845
1846
  provider: "google",
1846
1847
  status: "preview",
@@ -1878,8 +1879,10 @@ var PROFILES_RAW = [
1878
1879
  reason: "Inherited from 2.5-flash s11 cliff: summarize+tools \u2192 empty response. Preemptive family guard until brain evidence on 3.6-flash specifically."
1879
1880
  }
1880
1881
  ],
1881
- costInputPer1m: 1.5,
1882
- costOutputPer1m: 7.5,
1882
+ costInputPer1m: 0.75,
1883
+ // promo through 2026-12-31; $1.50 from 2027-01-01 (TIME_BOUNDED_PRICING_ROWS carries the transition)
1884
+ costOutputPer1m: 3.75,
1885
+ // promo through 2026-12-31; $7.50 from 2027-01-01
1883
1886
  lowering: {
1884
1887
  ...GOOGLE_LOWERING_BASE,
1885
1888
  cache: { ...GOOGLE_LOWERING_BASE.cache, discount: 0.1 },
@@ -1908,7 +1911,7 @@ var PROFILES_RAW = [
1908
1911
  ],
1909
1912
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1910
1913
  weaknesses: ["no_brain_evidence_yet"],
1911
- notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page), $1.50/$7.50 per 1M (catalog-sync two-agreeing-extraction same day \u2014 CHEAPER output than 3.5-flash at $9.00). 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; sat in the onboarding queue 18 days \u2014 drained by the s86 catalog-sync run.",
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).",
1912
1915
  archetypePerf: {
1913
1916
  hunt: 9,
1914
1917
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1955,7 +1958,7 @@ var PROFILES_RAW = [
1955
1958
  streaming: true,
1956
1959
  cliffs: [],
1957
1960
  costInputPer1m: 2,
1958
- // 2026-08-14: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1961
+ // 2026-08-24: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1959
1962
  costOutputPer1m: 10,
1960
1963
  lowering: ANTHROPIC_LOWERING_BASE,
1961
1964
  recovery: [
@@ -6287,7 +6290,7 @@ function validateFinalFit(ir, profile, tokens) {
6287
6290
  }
6288
6291
 
6289
6292
  // src/version.ts
6290
- var LIBRARY_VERSION = "2.0.0-alpha.87";
6293
+ var LIBRARY_VERSION = "2.0.0-alpha.89";
6291
6294
 
6292
6295
  // src/pricing-brain.ts
6293
6296
  function isPricingRow(x) {
@@ -6798,6 +6801,9 @@ function buildPayload(input, reg) {
6798
6801
  // alpha.87 — explicit source wins; KGAUTO_SOURCE env fills the gap (the
6799
6802
  // zero-code synthetic self-mark for harness/smoke processes).
6800
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,
6801
6807
  error_type: input.errorType,
6802
6808
  tools_called: input.toolsCalled,
6803
6809
  oracle_score: input.oracleScore?.score,
@@ -8242,6 +8248,7 @@ async function call(ir, opts = {}) {
8242
8248
  await record({
8243
8249
  handle: initial.handle,
8244
8250
  source: opts.source,
8251
+ endUserId: opts.endUserId,
8245
8252
  tokensIn: 0,
8246
8253
  tokensOut: 0,
8247
8254
  latencyMs: latencyMs2,
@@ -8295,6 +8302,7 @@ async function call(ir, opts = {}) {
8295
8302
  await record({
8296
8303
  handle: initial.handle,
8297
8304
  source: opts.source,
8305
+ endUserId: opts.endUserId,
8298
8306
  tokensIn: 0,
8299
8307
  tokensOut: 0,
8300
8308
  latencyMs: latencyMs2,
@@ -8437,6 +8445,7 @@ async function call(ir, opts = {}) {
8437
8445
  await record({
8438
8446
  handle: initial.handle,
8439
8447
  source: opts.source,
8448
+ endUserId: opts.endUserId,
8440
8449
  tokensIn: validated.response.tokens.input,
8441
8450
  tokensOut: validated.response.tokens.output,
8442
8451
  latencyMs: latencyMs2,
@@ -8560,6 +8569,7 @@ async function call(ir, opts = {}) {
8560
8569
  await record({
8561
8570
  handle: initial.handle,
8562
8571
  source: opts.source,
8572
+ endUserId: opts.endUserId,
8563
8573
  tokensIn: lastErr?.tokens?.input ?? 0,
8564
8574
  tokensOut: lastErr?.tokens?.output ?? 0,
8565
8575
  latencyMs,
@@ -9033,6 +9043,7 @@ function extractKeptToolNames(result) {
9033
9043
 
9034
9044
  // src/golden-eval.ts
9035
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";
9036
9047
  var JUDGE_RUBRICS = {
9037
9048
  summarize: "faithfulness to the source (no fabricated facts), coverage of the key points, concision, and adherence to the requested output format",
9038
9049
  classify: "assignment of the correct category from the allowed set, and nothing outside the allowed set",
@@ -9251,7 +9262,7 @@ async function runGoldenEval(opts) {
9251
9262
  const threshold = opts.winOrTieThreshold ?? 0.8;
9252
9263
  const latencyFloorRatio = opts.latencyFloorRatio ?? 3;
9253
9264
  const minJudgeable = opts.minJudgeableCases ?? 5;
9254
- const judgeModel = opts.judgeModel ?? "claude-opus-4-8";
9265
+ const judgeModel = opts.judgeModel ?? DEFAULT_JUDGE_MODEL;
9255
9266
  const notes = [];
9256
9267
  const axis = opts.axis ?? "model";
9257
9268
  const strategyId = opts.strategy;
@@ -11065,6 +11076,7 @@ function compile2(ir, opts) {
11065
11076
  DECOMPOSITION_TEMPLATES,
11066
11077
  DECOMPOSITION_TEMPLATES_VERSION,
11067
11078
  DEFAULT_FINDINGS_ENDPOINT,
11079
+ DEFAULT_JUDGE_MODEL,
11068
11080
  DEFAULT_MEASURED_FAILURE_ENDPOINT,
11069
11081
  DEFAULT_PROMOTIONS_ENDPOINT,
11070
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-GMZT4ZXD.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-G3MKT7IR.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-YVKTTTTB.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.87";
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-GMZT4ZXD.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
@@ -770,7 +770,7 @@ var PROFILES_RAW = [
770
770
  // deepseek-reasoner registered as aliases (see ALIASES below).
771
771
  {
772
772
  id: "deepseek-v4-flash",
773
- verifiedAgainstDocs: "2026-08-14",
773
+ verifiedAgainstDocs: "2026-08-24",
774
774
  provider: "deepseek",
775
775
  status: "current",
776
776
  maxContextTokens: 1e6,
@@ -788,8 +788,8 @@ var PROFILES_RAW = [
788
788
  reason: "Sequential tool calls only \u2014 L-040"
789
789
  }
790
790
  ],
791
- costInputPer1m: 0.14,
792
- costOutputPer1m: 0.28,
791
+ costInputPer1m: 0.44,
792
+ costOutputPer1m: 1.32,
793
793
  lowering: {
794
794
  system: { mode: "inline" },
795
795
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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.
@@ -843,7 +843,7 @@ var PROFILES_RAW = [
843
843
  },
844
844
  {
845
845
  id: "deepseek-v4-pro",
846
- verifiedAgainstDocs: "2026-08-14",
846
+ verifiedAgainstDocs: "2026-08-24",
847
847
  provider: "deepseek",
848
848
  status: "current",
849
849
  maxContextTokens: 1e6,
@@ -867,8 +867,8 @@ var PROFILES_RAW = [
867
867
  // cache-hit in; no promo caveat). The old $1.74/$3.48 "regular post-promo"
868
868
  // was a projected revert that never happened (L-073/L-081) — it 4×-overstated
869
869
  // cost and suppressed V4-Pro in cost-aware ranking.
870
- costInputPer1m: 0.435,
871
- costOutputPer1m: 0.87,
870
+ costInputPer1m: 1.32,
871
+ costOutputPer1m: 3.96,
872
872
  lowering: {
873
873
  system: { mode: "inline" },
874
874
  cache: { strategy: "unsupported" },
@@ -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. PRICING MODEL CHANGE effective 2026-08-16: DeepSeek moves to peak/off-peak billing, off-peak at HALF the peak rate (docs, fetched 2026-08-14). Encoded prices are peak; cost math for off-peak traffic will overstate by up to 2x until time-of-day pricing is modeled.",
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: {
@@ -1505,7 +1505,7 @@ var PROFILES_RAW = [
1505
1505
  // ─────────────────────────────────────────────────────────────────────────
1506
1506
  {
1507
1507
  id: "gemini-3.6-flash",
1508
- verifiedAgainstDocs: "2026-08-14",
1508
+ verifiedAgainstDocs: "2026-08-24",
1509
1509
  versionAdded: "2.0.0-alpha.87",
1510
1510
  provider: "google",
1511
1511
  status: "preview",
@@ -1543,8 +1543,10 @@ var PROFILES_RAW = [
1543
1543
  reason: "Inherited from 2.5-flash s11 cliff: summarize+tools \u2192 empty response. Preemptive family guard until brain evidence on 3.6-flash specifically."
1544
1544
  }
1545
1545
  ],
1546
- costInputPer1m: 1.5,
1547
- costOutputPer1m: 7.5,
1546
+ costInputPer1m: 0.75,
1547
+ // promo through 2026-12-31; $1.50 from 2027-01-01 (TIME_BOUNDED_PRICING_ROWS carries the transition)
1548
+ costOutputPer1m: 3.75,
1549
+ // promo through 2026-12-31; $7.50 from 2027-01-01
1548
1550
  lowering: {
1549
1551
  ...GOOGLE_LOWERING_BASE,
1550
1552
  cache: { ...GOOGLE_LOWERING_BASE.cache, discount: 0.1 },
@@ -1573,7 +1575,7 @@ var PROFILES_RAW = [
1573
1575
  ],
1574
1576
  strengths: ["agentic_loops", "coding", "1m_context", "parallel_tools", "thinking_mode"],
1575
1577
  weaknesses: ["no_brain_evidence_yet"],
1576
- notes: "Hand-onboarded s86 (2026-08-14), step-zero verified: 1,048,576 ctx / 65,536 out (Google model page), $1.50/$7.50 per 1M (catalog-sync two-agreeing-extraction same day \u2014 CHEAPER output than 3.5-flash at $9.00). 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; sat in the onboarding queue 18 days \u2014 drained by the s86 catalog-sync run.",
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).",
1577
1579
  archetypePerf: {
1578
1580
  hunt: 9,
1579
1581
  // Flash-family parallel-tool tier (L-040); inherited from 3.5-flash
@@ -1620,7 +1622,7 @@ var PROFILES_RAW = [
1620
1622
  streaming: true,
1621
1623
  cliffs: [],
1622
1624
  costInputPer1m: 2,
1623
- // 2026-08-14: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1625
+ // 2026-08-24: intro price made PERMANENT (docs: "the previously scheduled increase to $3/$15 on September 1, 2026 will not occur")
1624
1626
  costOutputPer1m: 10,
1625
1627
  lowering: ANTHROPIC_LOWERING_BASE,
1626
1628
  recovery: [
package/dist/profiles.mjs CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  registerProfiles,
14
14
  resolveModelAlias,
15
15
  tryGetProfile
16
- } from "./chunk-YVKTTTTB.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.87",
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",