Skip to content

I3374 — Task difficulty is a proxy measured from each task's reference, and the stratum cut-offs are registered before any new task is written

Compute per task a difficulty proxy from records that exist: reference patch lines changed, files and fixture modules it touches, and the number of sessions the task declares. Let a registration declare stratum cut-offs on the proxy, and refuse on load a task whose measured proxy falls outside its stratum's cut-offs or whose declared complexity disagrees. Commit the cut-offs, with the proxies of the seven existing tasks, into the corpus registration skeleton before I3368 and I3369 write a task.

BLOCKED wave 2 · p1 · implementation profile · parallel safe

Part of the-corpus-is-registered-before-it-runs — A corpus of 20 tasks, stratified by a difficulty proxy measured and registered before the new tasks are written, is registered with its analysis, run order, stopping rule and a pinned release.

Blocked. This issue cannot start until I3367 is done. The status is derived from that, not declared.

Objective

Compute per task a difficulty proxy from records that exist: reference patch lines changed, files and fixture modules it touches, and the number of sessions the task declares. Let a registration declare stratum cut-offs on the proxy, and refuse on load a task whose measured proxy falls outside its stratum's cut-offs or whose declared complexity disagrees. Commit the cut-offs, with the proxies of the seven existing tasks, into the corpus registration skeleton before I3368 and I3369 write a task.

Why

T2 of the owner's report of 2026-10-19 asks for a split by difficulty in advance. The critique found that a complexity the author declares while designing tasks with the treatment in mind is open to bias, so the split is a measured quantity whose thresholds precede the tasks.

Current state

model.rs:527 every task declares complexity; wc -l test/fixtures/economics/reference/*.patch gives 11 to 92 lines, the largest recurring-invoices with two sessions. No proxy is computed.

Desired state

economics references prints each task's proxy; the corpus skeleton holds cut-offs committed before any new task file.

Scope

  • apps/majordomus-cli/src/economics/model.rs
  • apps/majordomus-cli/src/economics/mod.rs
  • apps/majordomus-cli/tests/economics.rs
  • .ai/repo/benchmarks/economics/suites
  • .ai/repo/benchmarks/economics/README.md

Out of scope

  • Writing tasks (I3368, I3369)
  • Changing any existing task

Dependencies

What waits on this

Acceptance criteria

  • The proxy of each existing task is printed and matches a hand count in a test
  • A task outside its stratum's cut-offs is refused on load, naming the measure
  • The cut-offs' commit precedes every new task file's first commit, checked by a test reading git

Validation

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
  • majordomus economics references --work-dir \"$(mktemp -d)\"

Evidence required

  • test_difficulty_proxy_registered_first

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

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