Skip to content

I3419 — A conclusion's independent review count counts distinct sources, defined as adapter plus recorded model, so two answers from one source are one review

Define a source as the adapter plus the recorded model. A mesh-review consultation that reported no model counts as the adapter plus the answering peer runtime, and any other consultation without a model counts as the adapter alone. Compute independent_review_count and the task totals' independent reviewers from distinct sources instead of distinct advisor ids, and list the sources a conclusion was reviewed by.

BLOCKED wave 2 · p1 · implementation profile · parallel safe

Part of an-inference-names-its-source-and-budget — Every inference a decision rests on names its model and source, stays inside a declared budget, counts independent sources rather than answers, and is never reached from a hook path.

Blocked. This issue cannot start until I3418, milestone:an-inference-names-its-source-and-budget are done. The status is derived from that, not declared.

Objective

Define a source as the adapter plus the recorded model. A mesh-review consultation that reported no model counts as the adapter plus the answering peer runtime, and any other consultation without a model counts as the adapter alone. Compute independent_review_count and the task totals' independent reviewers from distinct sources instead of distinct advisor ids, and list the sources a conclusion was reviewed by.

Why

The owner's 2026-10-19 Cognitive Fabric pack asks for source diversity rather than a vote count, and names duplicate models through one adapter as a required test (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/04_REASONING_MESH.md).

Current state

Selection treats an adapter as one source (apps/majordomus-cli/src/reasoning/policy.rs:356-358). The conclusion writer adds each distinct advisor id to reviewed_by (store.rs:789-791) and counts it (store.rs:841-843), so two mesh peers through the one mesh-review adapter count as two independent reviews.

Desired state

reviewed_by stays the advisors cited. reviewed_sources lists the distinct sources, and independent_review_count equals its length. The records check of reasoning check recomputes the count.

Scope

  • apps/majordomus-cli/src/reasoning/store.rs
  • apps/majordomus-cli/src/reasoning/state.rs
  • apps/majordomus-cli/src/reasoning/check.rs
  • docs/REASONING.md

Out of scope

  • Changing advisor selection order
  • Weighting answers by source

Dependencies

What waits on this

Acceptance criteria

  • Two completed consultations through one adapter with the same model give independent_review_count 1
  • Two mesh peers reporting the same model give 1, and two reporting different models give 2
  • Two consultations through different adapters give 2
  • reasoning check reports a stored conclusion whose count disagrees with its sources as a records finding
  • Case 732's conclusion still records its computed count

Validation

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib reasoning
  • bash test/run.sh 732_disagreement_is_settled_by_evidence 734_reasoning_survives_the_session
  • majordomus reasoning check

Evidence required

  • duplicate_sources_are_one_review

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/I3419.yaml. Read it back with majordomus plan show I3419.

Searches the titles and descriptions of every page this site publishes.