Skip to content

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 establish

Comment 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 entry

Comment 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 accumulated

Comment 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}}} plus

Comment 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.