I3418 — Every advisor consultation records the model that answered, the source it came through and the session that asked
Add to the consultation record the model the transport actually used, or its absence with a reason, and the adapter and vendor or peer runtime it came through. Add to the reasoning record envelope the session id of the writer. Every inference a decision rests on is then attributable.
BLOCKED wave 1 · p1 · implementation profile · parallel safe
Blocked. This issue cannot start until I3426, milestone:an-inference-names-its-source-and-budget are done. The status is derived from that, not declared.
Objective
Add to the consultation record the model the transport actually used, or its absence with a reason, and the adapter and vendor or peer runtime it came through. Add to the reasoning record envelope the session id of the writer. Every inference a decision rests on is then attributable.
Why
The owner's 2026-10-19 Cognitive Fabric pack asks for model and source diversity to be tracked (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/04_REASONING_MESH.md), and contracts/ECONOMICS.md asks for attribution per inference.
Current state
ConsultationInput (apps/majordomus-cli/src/reasoning/record.rs:414-460) has advisor, status, duration_ms and usage, and no model. The envelope (record.rs:912-930) has task, recorded_at and head, and no session. scripts/advisor-consult:119-125 copies a fixed field list with no model. ollama-chat.mjs:11-15 and lmstudio-chat.mjs:10-11 choose the first served model and do not return it.
Desired state
Each adapter returns the model it used, and advisor-consult records model, adapter and vendor or peer runtime on the consultation. The writer stamps the active session id, or records its absence with the reason. reasoning status and explain print them, and records stored earlier read as absent.
Scope
- apps/majordomus-cli/src/reasoning/record.rs
- apps/majordomus-cli/src/reasoning/store.rs
- scripts/advisor-consult
- scripts/lib/advisors/contract.mjs
- scripts/lib/advisors/ollama-chat.mjs
- scripts/lib/advisors/lmstudio-chat.mjs
- scripts/lib/advisors/openai-chat.mjs
- scripts/lib/advisors/contract.test.mjs
- docs/REASONING.md
Out of scope
- Recording prompt or answer text
- Pricing or cost fields (I3422, I3292)
- Observing local runtimes
Dependencies
What waits on this
- I3419BLOCKED A conclusion's independent review count counts distinct sources, defined as adapter plus recorded model, so two answers from one source are one review
- I3420BLOCKED A mesh peer asked for critique receives the question and its evidence, and its answer is recorded with the session that gave it
- I3422BLOCKED Advisor consultations are economics usage with their measurement class, and a consultation over its plan's budget is a finding
Acceptance criteria
- A completed consultation through each api and local_runtime adapter carries the model the fake transport reported
- A transport that reports no model yields model absent with a reason, never a guessed name
- Every reasoning record written inside a session carries that session id, and one written outside a session says so
- reasoning check still finds no advisor or model literal in the provider-independent files
Validation
- node --test scripts/lib/advisors/contract.test.mjs
- bash test/run.sh 731_advisor_transport_contract 733_advisor_failure_and_recovery
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib reasoning
- majordomus reasoning check
Evidence required
- contract test naming the served model per adapter
- unit test of the envelope session stamp
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/I3418.yaml. Read it back with majordomus plan show I3418.