You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[G3] Harness expansion through relayhistory: Cursor and Grok in burn (SourceKind, pricing, TOOL_ALIASES, overhead mapping, fidelity policy) and collector-backlog transfer #560
Part of #553 (group 3 — depends on burn #562 cutover (default backend = relayhistory) and relayhistory #166 Cursor / #167 Grok parity; parallel with #563).
Problem
burn's SourceKind (crates/relayburn-sdk/src/reader/types.rs:32-55) is claude-code | codex | opencode | anthropic-api | openai-api | gemini-api; only the first three are produced. With relayhistory as the source, Cursor and Grok sessions arrive for free, and every burn per-harness table needs an entry. burn #489 (Grok) planned an 11-PR stack; after cutover only the burn-side slices of it remain.
Scope
Types: SourceKind::{Cursor, Grok} ("cursor", "grok"), RelationshipSourceKind variants, Harness variants, PendingStampHarness::{Cursor, Grok} (+ packages/sdk-node/src/index.d.ts unions), AdapterName for gap warnings. Decide whether SourceKind becomes an open string mirroring relayhistory's Source to avoid a burn release per new collector — recommend keeping the enum for exhaustiveness in pricing/overhead tables but adding SourceKind::Other(String) that is priced/classified with defaults and reported as FidelityClass::Partial.
Classifier: TOOL_ALIASES (reader/classifier.rs:54-78) entries for Cursor tools (read_file, edit_file, run_terminal_cmd, codebase_search, grep, …) and Grok tools (Shell→Bash, StrReplace→Edit, CallMcpTool→Mcp, WebSearch/WebFetch→WebFetch, per Add Grok CLI harness support #489's table).
Pricing: xAI entries (grok-composer-2.5-fast, grok-build, $1/$2 per 1M per Add Grok CLI harness support #489) in crates/relayburn-sdk/data/models.dev.json via pnpm run pricing:update + overrides; Cursor model ids observed in relayhistory's Cursor fixture.
Fidelity policy (reader/fidelity.rs): per-source coverage builders from relayhistory SourceCapabilities + NormalizedUsage.accounting: Grok = UsageGranularity::PerSessionAggregate/Partial with the ContextProxy accounting (relayhistory records context_total_tokens only; burn's estimator from Add Grok CLI harness support #489 — bytes/4 output, context-delta input — lives in analyze/, not in the reader, and is applied only when accounting == ContextProxy); Cursor = whatever relayhistory reports (full if usage present).
burn summary --by-provider on a relayhistory store containing the Cursor and Grok corpus fixtures shows xai/Cursor rows with priced cost and a fidelity note for Grok.
Part of #553 (group 3 — depends on burn #562 cutover (default backend = relayhistory) and relayhistory #166 Cursor / #167 Grok parity; parallel with #563).
Problem
burn's
SourceKind(crates/relayburn-sdk/src/reader/types.rs:32-55) isclaude-code | codex | opencode | anthropic-api | openai-api | gemini-api; only the first three are produced. With relayhistory as the source, Cursor and Grok sessions arrive for free, and every burn per-harness table needs an entry. burn #489 (Grok) planned an 11-PR stack; after cutover only the burn-side slices of it remain.Scope
SourceKind::{Cursor, Grok}("cursor","grok"),RelationshipSourceKindvariants,Harnessvariants,PendingStampHarness::{Cursor, Grok}(+packages/sdk-node/src/index.d.tsunions),AdapterNamefor gap warnings. Decide whetherSourceKindbecomes an open string mirroring relayhistory'sSourceto avoid a burn release per new collector — recommend keeping the enum for exhaustiveness in pricing/overhead tables but addingSourceKind::Other(String)that is priced/classified with defaults and reported asFidelityClass::Partial.TOOL_ALIASES(reader/classifier.rs:54-78) entries for Cursor tools (read_file,edit_file,run_terminal_cmd,codebase_search,grep, …) and Grok tools (Shell→Bash,StrReplace→Edit,CallMcpTool→Mcp,WebSearch/WebFetch→WebFetch, per Add Grok CLI harness support #489's table).grok-composer-2.5-fast,grok-build, $1/$2 per 1M per Add Grok CLI harness support #489) incrates/relayburn-sdk/data/models.dev.jsonviapnpm run pricing:update+ overrides; Cursor model ids observed in relayhistory's Cursor fixture.reader/fidelity.rs): per-source coverage builders from relayhistorySourceCapabilities+NormalizedUsage.accounting: Grok =UsageGranularity::PerSessionAggregate/Partialwith theContextProxyaccounting (relayhistory recordscontext_total_tokensonly; burn's estimator from Add Grok CLI harness support #489 — bytes/4 output, context-delta input — lives inanalyze/, not in the reader, and is applied only whenaccounting == ContextProxy); Cursor = whatever relayhistory reports (fullif usage present).analyze/overhead.rs:73-89source→file mapping): Grok →AGENTS.md(+prompt_context.jsonpath from relayhistory session metadata), Cursor →.cursor/rules/AGENTS.mdas characterized.grok_subagent_dirand Cursor relationships through the [G2] RelayHistoryBackend: depend on theai-histcrate, mapSessionEvidenceonto burn's record types behind the backend seam (feature-flagged, off by default) #557 adapter (no per-harness code).not_plannedonce the mirrors exist. Update thecollectorlabel description.README.mdharness list,CHANGELOG.md.Acceptance
burn summary --by-provideron a relayhistory store containing the Cursor and Grok corpus fixtures showsxai/Cursor rows with priced cost and a fidelity note for Grok.burn hotspots --group-by bash-verbattributes GrokShelland Cursorrun_terminal_cmdcalls.burn overhead --kind agents-mdincludes a Grok session.crates/relayburn-cli/tests/smoke.rs) harness-name expectations updated;cargo test --workspacegreen.Out of scope
Any log parsing in burn.