Skip to content

the-product-shows-what-it-caught — What finish caught is counted from the ledger and compared on the benchmark, never asserted

One read over the ledger answers what finish caught and what it cost, a refusal nobody answered is separated from a caught one, /ui shows it, and the benchmark gains an acceptance metric beside its token metric.

BLOCKED 0 of 4 issues done

ready
0
blocked
4
active
0
verify
0
done
0
cancelled
0

Problem

task.refused was added to the ledger so that the tool's own benefit could be counted (share/events.yaml: 'a refusal that was later satisfied is a false done that was caught'), but no capability, page or report reads it. The economics benchmark compares tokens and states that the finish contract's effect is not measured (docs/ECONOMICS.md, 'What this does not measure'), and no live pair has been recorded (docs/generated/economics.md at 707a04c7ce8: 0 valid pairs under methodology 1). So the one product metric every assessment named has a producer and no reader. Proposed in ADR 0208 (The product's value is stated as the false dones its finish caught, beside the friction it cost) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c119#7, chatgpt-majordomus:c119#10, chatgpt-majordomus:c256#2, chatgpt-majordomus:c277#1.

Outcome

One read over the ledger answers what finish caught and what it cost, a refusal nobody answered is separated from a caught one, /ui shows it, and the benchmark gains an acceptance metric beside its token metric.

Current state

lib/finish.sh:108 appends task.refused (task_id, outcome, unmet, refused, contract) to each checkout's $MJ_STATE_DIR/ledger.jsonl, which is checkout-local and lost when a worktree is removed; task.finished already records verify.tree from mj_worktree_tree_id; lib/history.sh:158 only prints the line. gates.completion judges one task; no capability aggregates, and the Rust side already reads the ledger through apps/majordomus-cli/src/ledger.rs. .ai/repo/benchmarks/economics/methodology.yaml measures effective_token_reduction, and its pairing treats a failed run as invalid; tasks carry hidden acceptance tests already.

Desired state

A gates capability (one capability! declaration, every transport generated) aggregates task.refused and task.finished; events carry a tree digest; /ui dashboard draws it with view::kpi_not_observed for absence; the methodology names an acceptance metric over the existing pilot corpus.

Scope

  • apps/majordomus-cli/src/capability/builtin/gates.rs
  • lib/finish.sh
  • share/events.yaml
  • apps/majordomus-cli/src/ui/dashboard.rs
  • .ai/repo/benchmarks/economics/methodology.yaml
  • docs/ECONOMICS.md
  • apps/majordomus-cli/src/ledger.rs

Out of scope

  • Token economics (ADR 0082)
  • Cost per accepted outcome, which waits on execution-telemetry
  • Publishing checkout-local ledger figures on the public site
  • The /cockpit overview card (dashboard.overview), until its measure renders absence as not observed

Acceptance criteria

  • Every criterion of intent the-product-shows-what-it-caught has its evidence
  • No second ledger, registry or hand-written OpenAPI entry is added

Validation

  • majordomus plan validate

Risks

  • The ledger is checkout-local, so a figure covers one checkout; it must say which
  • A counted refusal invites gaming by refusing more; the figure is shown beside the unanswered-refusal count

Issues

Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.

issuestatuswavedepends ontitle
I3130 BLOCKED 1 I0401 The ledger answers how many false dones finish caught, by doctrine, with the tasks it counted
I3131 BLOCKED 2 I3130 A refusal answered by no change to the tree is not counted as a caught false done
I3132 BLOCKED 2 I3130 /ui shows what finish caught beside what being caught cost, and says not observed where there is no ledger
I3133 BLOCKED 1 I0401 The economics benchmark measures acceptance: how many sessions declared done while the task's hidden tests fail, with and without the finish contract

The graph

the-product-shows-what-it-caught dependency graphfrom .ai/repo/project
flowchart LR
    I3130["I3130<br/>The ledger answers how many false dones finish caught, by doctrine, with the tasks it counted"]:::blocked
    I3131["I3131<br/>A refusal answered by no change to the tree is not counted as a caught false done"]:::blocked
    I3132["I3132<br/>/ui shows what finish caught beside what being caught cost, and says not observed where there is no ledger"]:::blocked
    I3133["I3133<br/>The economics benchmark measures acceptance: how many sessions declared done while the task's hidden tests fail, with and without the finish contract"]:::blocked
    I3130 --> I3131
    I3130 --> I3132
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Canonical record: .ai/repo/project/milestones/the-product-shows-what-it-caught.yaml. Read it back with majordomus plan show the-product-shows-what-it-caught.

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