fix(registries+router): MEDIUM/LOW audit batch
closes MEDIUM/LOW from feat/agent-dna-three-layer audit: - models.toml: cache_write_1h_per_mtok_micro added to all 11 entries (Anthropic: 200M/600M/1000M micro = $2/$6/$10 per MTok per pricing page; other providers: 0 placeholder) - main.rs (kei-model-router): WAL pragma + busy_timeout errors now logged to stderr instead of silently dropped (previously .ok() swallowed both) - models.toml: Haiku id pin TODO documented (router still hardcodes alias)
This commit is contained in:
parent
7cd74071a1
commit
7281e7ecea
3 changed files with 20 additions and 3 deletions
|
|
@ -15,6 +15,8 @@
|
||||||
|
|
||||||
[[model]]
|
[[model]]
|
||||||
provider_ref = "anthropic"
|
provider_ref = "anthropic"
|
||||||
|
# TODO: pin to "claude-haiku-4-5-20251001" once router/pricing accept slug as
|
||||||
|
# the lookup key (currently hardcoded by id in pricing.rs/escalate.rs tests).
|
||||||
id = "claude-haiku-4-5"
|
id = "claude-haiku-4-5"
|
||||||
slug = "haiku"
|
slug = "haiku"
|
||||||
display_name = "Claude Haiku 4.5"
|
display_name = "Claude Haiku 4.5"
|
||||||
|
|
@ -22,6 +24,7 @@ context_window = 200000
|
||||||
cost_input_per_mtok_micro = 100_000_000 # $1.00
|
cost_input_per_mtok_micro = 100_000_000 # $1.00
|
||||||
cost_output_per_mtok_micro = 500_000_000 # $5.00
|
cost_output_per_mtok_micro = 500_000_000 # $5.00
|
||||||
cache_write_5m_per_mtok_micro = 125_000_000
|
cache_write_5m_per_mtok_micro = 125_000_000
|
||||||
|
cache_write_1h_per_mtok_micro = 200_000_000
|
||||||
cache_read_per_mtok_micro = 10_000_000
|
cache_read_per_mtok_micro = 10_000_000
|
||||||
verified_at = "2026-04-30"
|
verified_at = "2026-04-30"
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -36,6 +39,7 @@ context_window = 1000000
|
||||||
cost_input_per_mtok_micro = 300_000_000 # $3.00
|
cost_input_per_mtok_micro = 300_000_000 # $3.00
|
||||||
cost_output_per_mtok_micro = 1_500_000_000 # $15.00
|
cost_output_per_mtok_micro = 1_500_000_000 # $15.00
|
||||||
cache_write_5m_per_mtok_micro = 375_000_000
|
cache_write_5m_per_mtok_micro = 375_000_000
|
||||||
|
cache_write_1h_per_mtok_micro = 600_000_000
|
||||||
cache_read_per_mtok_micro = 30_000_000
|
cache_read_per_mtok_micro = 30_000_000
|
||||||
verified_at = "2026-04-30"
|
verified_at = "2026-04-30"
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -50,6 +54,7 @@ context_window = 1000000
|
||||||
cost_input_per_mtok_micro = 500_000_000 # $5.00
|
cost_input_per_mtok_micro = 500_000_000 # $5.00
|
||||||
cost_output_per_mtok_micro = 2_500_000_000 # $25.00
|
cost_output_per_mtok_micro = 2_500_000_000 # $25.00
|
||||||
cache_write_5m_per_mtok_micro = 625_000_000
|
cache_write_5m_per_mtok_micro = 625_000_000
|
||||||
|
cache_write_1h_per_mtok_micro = 1_000_000_000
|
||||||
cache_read_per_mtok_micro = 50_000_000
|
cache_read_per_mtok_micro = 50_000_000
|
||||||
verified_at = "2026-04-30"
|
verified_at = "2026-04-30"
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -66,6 +71,7 @@ context_window = 400000
|
||||||
cost_input_per_mtok_micro = 200_000_000 # $2.00 (placeholder, verify on use)
|
cost_input_per_mtok_micro = 200_000_000 # $2.00 (placeholder, verify on use)
|
||||||
cost_output_per_mtok_micro = 800_000_000 # $8.00
|
cost_output_per_mtok_micro = 800_000_000 # $8.00
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 0
|
cache_read_per_mtok_micro = 0
|
||||||
verified_at = ""
|
verified_at = ""
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -80,6 +86,7 @@ context_window = 200000
|
||||||
cost_input_per_mtok_micro = 0 # subscription, not per-token
|
cost_input_per_mtok_micro = 0 # subscription, not per-token
|
||||||
cost_output_per_mtok_micro = 0
|
cost_output_per_mtok_micro = 0
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 0
|
cache_read_per_mtok_micro = 0
|
||||||
verified_at = "2026-05-10"
|
verified_at = "2026-05-10"
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -96,6 +103,7 @@ context_window = 256000
|
||||||
cost_input_per_mtok_micro = 300_000_000 # [UNVERIFIED]
|
cost_input_per_mtok_micro = 300_000_000 # [UNVERIFIED]
|
||||||
cost_output_per_mtok_micro = 1_500_000_000
|
cost_output_per_mtok_micro = 1_500_000_000
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 0
|
cache_read_per_mtok_micro = 0
|
||||||
verified_at = ""
|
verified_at = ""
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -112,6 +120,7 @@ context_window = 64000
|
||||||
cost_input_per_mtok_micro = 55_000_000 # $0.55 [UNVERIFIED — pricing fluctuates]
|
cost_input_per_mtok_micro = 55_000_000 # $0.55 [UNVERIFIED — pricing fluctuates]
|
||||||
cost_output_per_mtok_micro = 219_000_000 # $2.19
|
cost_output_per_mtok_micro = 219_000_000 # $2.19
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 14_000_000 # $0.14 cache hit
|
cache_read_per_mtok_micro = 14_000_000 # $0.14 cache hit
|
||||||
verified_at = ""
|
verified_at = ""
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -126,6 +135,7 @@ context_window = 64000
|
||||||
cost_input_per_mtok_micro = 27_000_000 # $0.27 [UNVERIFIED]
|
cost_input_per_mtok_micro = 27_000_000 # $0.27 [UNVERIFIED]
|
||||||
cost_output_per_mtok_micro = 110_000_000 # $1.10
|
cost_output_per_mtok_micro = 110_000_000 # $1.10
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 7_000_000
|
cache_read_per_mtok_micro = 7_000_000
|
||||||
verified_at = ""
|
verified_at = ""
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -142,6 +152,7 @@ context_window = 2000000
|
||||||
cost_input_per_mtok_micro = 125_000_000 # $1.25 [UNVERIFIED]
|
cost_input_per_mtok_micro = 125_000_000 # $1.25 [UNVERIFIED]
|
||||||
cost_output_per_mtok_micro = 1_000_000_000 # $10.00
|
cost_output_per_mtok_micro = 1_000_000_000 # $10.00
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 0
|
cache_read_per_mtok_micro = 0
|
||||||
verified_at = ""
|
verified_at = ""
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -158,6 +169,7 @@ context_window = 128000
|
||||||
cost_input_per_mtok_micro = 0
|
cost_input_per_mtok_micro = 0
|
||||||
cost_output_per_mtok_micro = 0
|
cost_output_per_mtok_micro = 0
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 0
|
cache_read_per_mtok_micro = 0
|
||||||
verified_at = "2026-05-13"
|
verified_at = "2026-05-13"
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
@ -172,6 +184,7 @@ context_window = 32000
|
||||||
cost_input_per_mtok_micro = 0
|
cost_input_per_mtok_micro = 0
|
||||||
cost_output_per_mtok_micro = 0
|
cost_output_per_mtok_micro = 0
|
||||||
cache_write_5m_per_mtok_micro = 0
|
cache_write_5m_per_mtok_micro = 0
|
||||||
|
cache_write_1h_per_mtok_micro = 0
|
||||||
cache_read_per_mtok_micro = 0
|
cache_read_per_mtok_micro = 0
|
||||||
verified_at = "2026-05-13"
|
verified_at = "2026-05-13"
|
||||||
deprecated_at = ""
|
deprecated_at = ""
|
||||||
|
|
|
||||||
|
|
@ -179,8 +179,12 @@ fn open_ledger() -> Option<Connection> {
|
||||||
format!("{home}/.claude/agents/ledger.sqlite")
|
format!("{home}/.claude/agents/ledger.sqlite")
|
||||||
};
|
};
|
||||||
let conn = Connection::open(&path).ok()?;
|
let conn = Connection::open(&path).ok()?;
|
||||||
conn.pragma_update(None, "journal_mode", "WAL").ok();
|
if let Err(e) = conn.pragma_update(None, "journal_mode", "WAL") {
|
||||||
conn.busy_timeout(std::time::Duration::from_secs(5)).ok();
|
eprintln!("[kei-model-router] WAL pragma failed (continuing without WAL): {e}");
|
||||||
|
}
|
||||||
|
if let Err(e) = conn.busy_timeout(std::time::Duration::from_secs(5)) {
|
||||||
|
eprintln!("[kei-model-router] busy_timeout failed (concurrent writes may block): {e}");
|
||||||
|
}
|
||||||
Some(conn)
|
Some(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# KeiSeiKit DNA Encyclopedia
|
# KeiSeiKit DNA Encyclopedia
|
||||||
|
|
||||||
> Auto-generated from kei-registry. Last regenerated: 2026-05-13T15:51:54Z.
|
> Auto-generated from kei-registry. Last regenerated: 2026-05-13T16:01:55Z.
|
||||||
> Total blocks: 679. Per-type breakdown:
|
> Total blocks: 679. Per-type breakdown:
|
||||||
|
|
||||||
| Type | Count |
|
| Type | Count |
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue