desktop/src-tauri/crates/core/tests/m8_contract.rs
Comment 1, line 1
desktop/src-tauri/crates/core/tests/m8_contract.rs:1
//! M8 second-batch tests for 18 adapters using synthetic inputs for detection, scanning,Comment 2, line 2
desktop/src-tauri/crates/core/tests/m8_contract.rs:2
//! and step assertions. Initial research was on 2026-09-29; these tests do not establishComment 3, line 3
desktop/src-tauri/crates/core/tests/m8_contract.rs:3
//! native acceptance. Current per-adapter checks are recorded separately. Expected values are calculated here.Comment 4, line 4
desktop/src-tauri/crates/core/tests/m8_contract.rs:4
//!Comment 5, line 5
desktop/src-tauri/crates/core/tests/m8_contract.rs:5
//! Manual calculations for synthetic test data:Comment 6, line 6
desktop/src-tauri/crates/core/tests/m8_contract.rs:6
//! - zed: historical hosted cumulative{in=120,out=34} decodes missing cr/cc as zero,Comment 7, line 7
desktop/src-tauri/crates/core/tests/m8_contract.rs:7
//! yielding 120/34/0/0. Requests sum to 161 versus cumulative 154: reconciliation mismatch.Comment 8, line 8
desktop/src-tauri/crates/core/tests/m8_contract.rs:8
//! Skip the unverified Anthropic provider in this case and imported version-1.0.0 threads.Comment 9, line 9
desktop/src-tauri/crates/core/tests/m8_contract.rs:9
//! - aider: {prompt=10006,completion=81,total=10087,cost=0.0133175}; seconds become milliseconds,Comment 10, line 10
desktop/src-tauri/crates/core/tests/m8_contract.rs:10
//! 1_755_100_406_000; estimated cost=13_318 micro-USD.Comment 11, line 11
desktop/src-tauri/crates/core/tests/m8_contract.rs:11
//! - junie: two modelUsage entries with input/output and cache aliases produce two events;Comment 12, line 12
desktop/src-tauri/crates/core/tests/m8_contract.rs:12
//! time=1500 gives interval_start=timestamp−1500; repeated scan keys are stable.Comment 13, line 13
desktop/src-tauri/crates/core/tests/m8_contract.rs:13
//! - xum: two byModel entries produce two aggregates; split provider:model keys.Comment 14, line 14
desktop/src-tauri/crates/core/tests/m8_contract.rs:14
//! - droid: tokenUsage{in=10,out=20,cr=30,cc=40,think=5} produces one aggregate.Comment 15, line 15
desktop/src-tauri/crates/core/tests/m8_contract.rs:15
//! - amp: one timestamped ledger event is imported; an assistant without a ledger entryComment 16, line 16
desktop/src-tauri/crates/core/tests/m8_contract.rs:16
//! or timestamp is skipped with a diagnostic and reconciliation mismatch.Comment 17, line 17
desktop/src-tauri/crates/core/tests/m8_contract.rs:17
//! - grok: two explicit usage rows using aliases produce events; skip one row without usage.Comment 18, line 18
desktop/src-tauri/crates/core/tests/m8_contract.rs:18
//! - roo: legacy test mapping tokensIn=100 includes cr=30+cw=10; uncached=60, total=120.Comment 19, line 19
desktop/src-tauri/crates/core/tests/m8_contract.rs:19
//! Skip api_req_deleted; retain a cost-only condense auxiliary event.Comment 20, line 20
desktop/src-tauri/crates/core/tests/m8_contract.rs:20
//! - goose: three ledger rows retain provider_reported cost, exclude estimated cost,Comment 21, line 21
desktop/src-tauri/crates/core/tests/m8_contract.rs:21
//! and retain carried_forward tokens without cost: three events, one cost. Old accumulatedComment 22, line 22
desktop/src-tauri/crates/core/tests/m8_contract.rs:22
//! fields produce one aggregate.Comment 23, line 23
desktop/src-tauri/crates/core/tests/m8_contract.rs:23
//! - crush: root cost=0.5 produces one UsageObservation (500_000 micro-USD,Comment 24, line 24
desktop/src-tauri/crates/core/tests/m8_contract.rs:24
//! Estimated); exclude child rows.Comment 25, line 25
desktop/src-tauri/crates/core/tests/m8_contract.rs:25
//! - jcode: OpenAI input=100, cr=30, cw=10 gives uncached=60; Anthropic in=60,Comment 26, line 26
desktop/src-tauri/crates/core/tests/m8_contract.rs:26
//! cr=30, cw=10 gives input_total=100; the journal replaces a same-ID snapshot after a crash.Comment 27, line 27
desktop/src-tauri/crates/core/tests/m8_contract.rs:27
//! - gajae: five fields {1,2,3,4,10} use pi calculation rules; totalTokens=10 equals their component sum;Comment 28, line 28
desktop/src-tauri/crates/core/tests/m8_contract.rs:28
//! skip rows with missing required fields.Comment 29, line 29
desktop/src-tauri/crates/core/tests/m8_contract.rs:29
//! - commandcode: two linked assistant usage records count; exclude one orphan branch.Comment 30, line 30
desktop/src-tauri/crates/core/tests/m8_contract.rs:30
//! - continue: CLI usage produces one prompt/completion/cached aggregate;Comment 31, line 31
desktop/src-tauri/crates/core/tests/m8_contract.rs:31
//! a GUI session without usage produces nothing.Comment 32, line 32
desktop/src-tauri/crates/core/tests/m8_contract.rs:32
//! - atomcode: two model aggregates plus unattributed rounds; total calls=5; uncached input=prompt−cached.Comment 33, line 33
desktop/src-tauri/crates/core/tests/m8_contract.rs:33
//! - kiro: one nonzero CLI turn counts; skip one all-zero Auto turn;Comment 34, line 34
desktop/src-tauri/crates/core/tests/m8_contract.rs:34
//! SQLite request_metadata produces one event with a millisecond timestamp.Comment 35, line 35
desktop/src-tauri/crates/core/tests/m8_contract.rs:35
//! - antigravity: protobuf input=#1+#2 and timestamp=#9.#4 produce an event;Comment 36, line 36
desktop/src-tauri/crates/core/tests/m8_contract.rs:36
//! skip a row without that timestamp.Comment 37, line 37
desktop/src-tauri/crates/core/tests/m8_contract.rs:37
//! - qoder: reject unverified usage with usage_fields_unverified and zero events.Comment 38, line 98
desktop/src-tauri/crates/core/tests/m8_contract.rs:98
// Zed tests.Comment 39, line 128
desktop/src-tauri/crates/core/tests/m8_contract.rs:128
// Skip the unverified Anthropic provider in this test; separately verified native providers have their own rules.Comment 40, line 140
desktop/src-tauri/crates/core/tests/m8_contract.rs:140
// Skip imported threads with version 1.0.0.Comment 41, line 182
desktop/src-tauri/crates/core/tests/m8_contract.rs:182
// Aider tests.Comment 42, line 212
desktop/src-tauri/crates/core/tests/m8_contract.rs:212
// Append another line and scan incrementally.Comment 43, line 231
desktop/src-tauri/crates/core/tests/m8_contract.rs:231
// Junie tests.Comment 44, line 271
desktop/src-tauri/crates/core/tests/m8_contract.rs:271
// Xum tests.Comment 45, line 320
desktop/src-tauri/crates/core/tests/m8_contract.rs:320
// Droid tests.Comment 46, line 352
desktop/src-tauri/crates/core/tests/m8_contract.rs:352
// Amp tests.Comment 47, line 388
desktop/src-tauri/crates/core/tests/m8_contract.rs:388
// Import one ledger event; messageId=2 is already accounted for; skip messageId=3 without a ledger entry or timestamp.Comment 48, line 403
desktop/src-tauri/crates/core/tests/m8_contract.rs:403
// Grok tests.Comment 49, line 458
desktop/src-tauri/crates/core/tests/m8_contract.rs:458
// Roo tests.Comment 50, line 483
desktop/src-tauri/crates/core/tests/m8_contract.rs:483
// One request + one condense auxiliary event; skip the deleted memo.Comment 51, line 502
desktop/src-tauri/crates/core/tests/m8_contract.rs:502
// Goose tests.Comment 52, line 508
desktop/src-tauri/crates/core/tests/m8_contract.rs:508
// New database with usage_ledger.Comment 53, line 552
desktop/src-tauri/crates/core/tests/m8_contract.rs:552
// Old database without usage_ledger uses accumulated_* fields.Comment 54, line 590
desktop/src-tauri/crates/core/tests/m8_contract.rs:590
// Crush tests.Comment 55, line 616
desktop/src-tauri/crates/core/tests/m8_contract.rs:616
// Exclude child-session cost already included in the parent.Comment 56, line 623
desktop/src-tauri/crates/core/tests/m8_contract.rs:623
// Skip root sessions with zero cost.Comment 57, line 647
desktop/src-tauri/crates/core/tests/m8_contract.rs:647
// Jcode tests.Comment 58, line 689
desktop/src-tauri/crates/core/tests/m8_contract.rs:689
// m1 uses the journal's Anthropic metadata: in=60, cr=30, cw=10 gives input_total=100;Comment 59, line 690
desktop/src-tauri/crates/core/tests/m8_contract.rs:690
// m2 Anthropic in=50 with no cache gives input_total=50.Comment 60, line 718
desktop/src-tauri/crates/core/tests/m8_contract.rs:718
// gajae-code tests.Comment 61, line 745
desktop/src-tauri/crates/core/tests/m8_contract.rs:745
// Import one row with all five required fields; skip missing-field rows, matching the referenced parser rule.Comment 62, line 759
desktop/src-tauri/crates/core/tests/m8_contract.rs:759
// CommandCode tests.Comment 63, line 786
desktop/src-tauri/crates/core/tests/m8_contract.rs:786
// Effective path: head=cccc0001 → aaaa0002 → aaaa0001; exclude rewind orphan bbbb0001.Comment 64, line 803
desktop/src-tauri/crates/core/tests/m8_contract.rs:803
// Continue tests.Comment 65, line 834
desktop/src-tauri/crates/core/tests/m8_contract.rs:834
// A GUI session without usage fields finishes normally with no output.Comment 66, line 845
desktop/src-tauri/crates/core/tests/m8_contract.rs:845
// AtomCode tests.Comment 67, line 888
desktop/src-tauri/crates/core/tests/m8_contract.rs:888
// Two model aggregates plus a separate unattributed round_count for the multi-model turn.Comment 68, line 889
desktop/src-tauri/crates/core/tests/m8_contract.rs:889
// t1's three calls have unknown model ownership; do not assign them to both Claude and GPT.Comment 69, line 896
desktop/src-tauri/crates/core/tests/m8_contract.rs:896
// Uncached input 60+30=90 + cache reads 40+10=50 gives input_total=140;Comment 70, line 897
desktop/src-tauri/crates/core/tests/m8_contract.rs:897
// only single-model turn t2's two calls belong to Claude.Comment 71, line 916
desktop/src-tauri/crates/core/tests/m8_contract.rs:916
// Preserve total calls: 2+3=5=3(t1)+2(t2).Comment 72, line 925
desktop/src-tauri/crates/core/tests/m8_contract.rs:925
// Kiro tests.Comment 73, line 956
desktop/src-tauri/crates/core/tests/m8_contract.rs:956
// Skip the all-zero Auto-agent turn; import one synthetic nonzero turn.Comment 74, line 968
desktop/src-tauri/crates/core/tests/m8_contract.rs:968
// Kiro CLI SQLite request_metadata contains per-request records.Comment 75, line 1010
desktop/src-tauri/crates/core/tests/m8_contract.rs:1010
// Antigravity tests.Comment 76, line 1024
desktop/src-tauri/crates/core/tests/m8_contract.rs:1024
// Protobuf test structure: chatModel{#19 model bytes, #9{#4 Timestamp{#1 seconds}}} plusComment 77, line 1025
desktop/src-tauri/crates/core/tests/m8_contract.rs:1025
// usage{#1 1132, #2 100, #5 40, #9 20, #10 5, #11 "resp-1"}.Comment 78, line 1043
desktop/src-tauri/crates/core/tests/m8_contract.rs:1043
// Row 2 lacks #9.#4, as in the 1.1.18+ layout; skip it.Comment 79, line 1107
desktop/src-tauri/crates/core/tests/m8_contract.rs:1107
// Qoder tests.Comment 80, line 1124
desktop/src-tauri/crates/core/tests/m8_contract.rs:1124
// Check V30 directory and registry structure for all M8 second-batch adapters.