I3380 — A task's spend is the usage attributed to it, as reported tokens with their class, and money stays not observed until it is a separate field
Fill spend from the usage-by-task reading I3293 provides: reported input, output, cache-read and cache-write tokens, the models reported and the measurement class, with the usage event ids. Never re-join or estimate; a task with no received usage reads not_observed with the receiver's reason; any money amount stays not_observed until I3292's fields exist.
BLOCKED wave 3 · p1 · implementation profile · parallel safe
Blocked. This issue cannot start until I3376, I3293 are done. The status is derived from that, not declared.
Objective
Fill spend from the usage-by-task reading I3293 provides: reported input, output, cache-read and cache-write tokens, the models reported and the measurement class, with the usage event ids. Never re-join or estimate; a task with no received usage reads not_observed with the receiver's reason; any money amount stays not_observed until I3292's fields exist.
Why
T3 of the owner's report of 2026-10-19 asks for spend per task. every-sessions-usage-is-observed owns receiving and attributing usage and forbids an estimate shown as spend, so depending on I3293 keeps one account of usage.
Current state
apps/majordomus-cli/src/economics/usage.rs:106-134 normalises benchmark harness usage only; I3288 and I3293 are BLOCKED and not on master; docs/ECONOMICS.md:139-140 says cost is the harness's projection, not a bill.
Desired state
Every record shows reported tokens with class and event ids, or not_observed with a reason.
Scope
- apps/majordomus-cli/src/economics
- apps/majordomus-cli/tests/economics.rs
- docs/ECONOMICS.md
Out of scope
- Receiving or attributing usage (I3288, I3293)
- Pricing (I3292)
- Any saving figure
Dependencies
- I3376READY One capability states each task's wall time and episodes from every checkout's ledger, and names every field it cannot yet fill as not observed
- I3293BLOCKED Usage is attributed to the session, task and issue it was spent on, from records the repository already keeps
Acceptance criteria
- A fixture task shows each token category with class and event ids
- A task with no received usage reads not_observed with I3293's reason
- No money amount appears
- spend equals I3293's reading for the same task on the same fixture
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
- bash test/run.sh 431_economics_claims_gated
Evidence required
- test_task_spend_is_attributed_usage
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3380.yaml. Read it back with majordomus plan show I3380.