Implement Development Effort Calculator (WP-0010-T02)
src/target_revenue/effort_calculator.py implements Candidate A (labor-cost-anchored, accepted T01): commit-timestamp session-gap clustering for human interaction time, workplan/task-volume counts via direct workplans/ directory parsing (no state-hub dependency, works uniformly on any repo using this repo's own convention), file/line counts with generated/vendored-path exclusion, and caller-supplied token-cost pricing. estimate_target_basis() combines these and returns a derivation dict (every input shown) plus a warnings list - never a black-box dollar figure. 1-day manual-work floor, as requested: any raw commit-clustered estimate below 1.0 day is floored and flagged with a warning that this is very likely a measurement gap (commit-clustering is a floor estimate by design) that should usually be compensated for by manual override, not trusted at face value. A second, independent sanity-check warning fires when finished-workplan/task volume is substantial but the time estimate is still low, even above the floor - demonstrated live against target-revenue's own history (7 finished workplans, 57 tasks correctly flagged a 2.38-day estimate as under-counted). scripts/effort_calculator_cli.py: CLI wrapper printing JSON, following the same offline-first, no-Phase-declaration pattern as scripts/trf_onboard.py. tests/test_effort_calculator.py (15 deterministic tests, throwaway git repos/tmp_path fixtures) covers commit clustering, workplan/task parsing, size-metric exclusion, token-cost pricing, the floor-and-warning behavior, the sanity-check warning, and an end-to-end smoke test. No new hard dependency.
This commit is contained in:
parent
37ccee22ab
commit
9566e16a97
6 changed files with 720 additions and 2 deletions
|
|
@ -67,6 +67,18 @@ across every repo without depending on hub coverage — explicitly a
|
|||
*floor* estimate (real effort is almost certainly higher), not a
|
||||
best-effort true count.
|
||||
|
||||
**Implemented 2026-07-30** (`workplans/TREV-WP-0010-development-effort-calculator.md`
|
||||
T02, `src/target_revenue/effort_calculator.py`), including a maintainer-
|
||||
requested **1-day manual-work floor**: any raw commit-clustered estimate
|
||||
below one day is floored to one day and flagged with a warning explaining
|
||||
this is very likely a measurement gap, not a true "under a day" fact —
|
||||
and should usually be compensated for by a manual override of
|
||||
`estimated_effort_days` rather than trusted at face value. A second,
|
||||
independent sanity-check warning fires whenever a repo's finished-
|
||||
workplan/task volume (§2b) is substantial but the raw time estimate is
|
||||
still low, catching cases above the 1-day floor that still look
|
||||
implausible.
|
||||
|
||||
### 2b. Workplan/task volume — complexity index component
|
||||
|
||||
**What:** number and status distribution of workplans and tasks
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue