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
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
- I3368BLOCKED Six large tasks join the economics corpus, each failing on its start, passing on its reference and reviewed by someone other than its author
- I3369BLOCKED Four medium and three small tasks join the economics corpus, each failing on its start, passing on its reference and reviewed by someone other than its author
- I3375BLOCKED A registered suite pins its treatment to one released version, so landings on master during the runs leave them current
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.