I3293 — Usage is attributed to the session, task and issue it was spent on, from records the repository already keeps
Join a usage record's provider session id to the session record (ADR 0164), its active task and the task's issue and intent at read time, storing no join, and report unattributed usage as such.
BLOKOVÁNO wave 2 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3288 is done. The status is derived from that, not declared.
Cíl
Join a usage record's provider session id to the session record (ADR 0164), its active task and the task's issue and intent at read time, storing no join, and report unattributed usage as such.
Proč
Cost per accepted outcome (I0401) needs usage against work, and the owner asked for attribution to intent and issue; the session, task and plan records already carry every key. Events dropped while the receiver was down otherwise leave no record; the new capability owes its generated projections. It extends milestone execution-telemetry. Proposed in ADR 0213 (Usage is observed through each provider's official telemetry into one provider-neutral record, and reported, estimated and billed amounts are never merged) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c234#0, chatgpt-majordomus:c236#0, chatgpt-majordomus:c093#6.
Aktuální stav
Session records name their provider session; nothing reads usage against them.
Cílový stav
economics usage --by issue answers from the join, with an unattributed bucket.
Rozsah
- apps/majordomus-cli/src/economics
- apps/majordomus-cli/src/capability/builtin/economics.rs
- share/commands.yaml
Závislosti
Co na tom čeká
- I3294BLOCKED /ui shows usage by provider, model, session, task and issue, and every figure opens its reported events
- I3295BLOCKED A task declared over its token budget is told so, and refused only where policy says refuse
- I3297BLOCKED A waste finding names its evidence and confidence and is never presented as a saving
- I3380BLOCKED 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
Kritéria přijetí
- A fixture session with an active task attributes its usage to the task's issue
- Usage outside any task is reported unattributed, never dropped
- A session span with episode records but no received usage events is recorded absent with reason receiver_unavailable (case)
- The economics usage capability is declared canonically and its share/commands.yaml and MCP/HTTP/OpenAPI projections are generated (majordomus generate --check)
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
- majordomus generate --check
Požadované důkazy
- case_usage_is_attributed
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3293.yaml. Read it back with majordomus plan show I3293.