Apply Development Effort Calculator to real pilot candidates (WP-0010-T03)

Adds since/until date-range scoping to cluster_commit_hours() and
workplan_task_counts() (threaded through calculate_target_basis()),
needed whenever a candidate is one bounded workplan within a repo
whose overall history spans much more (net-kingdom, railiance-apps)
rather than the whole repo being the candidate (vergabe-teilnahme,
info-tech-canon).

Fixes a real bug found along the way: workplan_task_counts() only
scanned the top level of workplans/, missing net-kingdom's
workplans/archived/ convention entirely - silently reported zero
finished workplans for NK-WP-0002, which lives there. Fixed to scan
recursively; added a regression test.

Updates all three draft pilot-candidate manifests with calculator-
derived target_basis/initial_target values, replacing the hand-picked
placeholders:
  net-kingdom-local-identity:      200,000 -> 10,000 EUR (floor + sanity warnings)
  railiance-vergabe-teilnahme:   3,500,000 -> 648,800 EUR (no warnings)
  info-tech-canon-service-surface: 2,500,000 -> 141,800 EUR (sanity warning)

history/260730-EffortCalculator-CandidateApplication.md records full
derivation, warnings, and the judgment calls made explicit rather than
silently picked (date-scoping windows; measuring vergabe-teilnahme's
own repo rather than railiance-apps' deployment-only wiring, with both
figures shown). Still draft/non-binding - WP-0008-T05 unaffected.

5 new tests (20 -> now covering since/until scoping and the
archived-subdirectory fix). Full suite: 84 passing offline.
This commit is contained in:
tegwick 2026-07-30 13:29:06 +02:00
parent 78a5e72bbf
commit 6eec4f6634
9 changed files with 405 additions and 25 deletions

View file

@ -36,7 +36,14 @@ of how complete or plausible these examples look — including
| `railiance-vergabe-teilnahme/` | `railiance-*` (`railiance-apps`) | `vergabe-teilnahme` (`RAILIANCE-WP-0002`/`-0014`) | Product-defining (100x) |
| `info-tech-canon-service-surface/` | `info-tech-canon` | Cumulative service surface, `ITC-WP-0001``ITC-WP-0012` | Product-defining (100x) |
All figures (`initial_target`, `target_basis`) are illustrative
placeholders for this worked-example exercise, not a real costing or
pricing proposal — see `specs/PilotPhaseCandidateSurvey.md` for the
underlying candidate rationale.
**`target_basis`/`initial_target` figures (updated 2026-07-30):** all
three now use `target_revenue.effort_calculator`-derived values
(`workplans/TREV-WP-0010-development-effort-calculator.md` T03), not the
originally hand-picked illustrative placeholders. Full derivation,
warnings, and the judgment calls involved (date-scoping, and which of two
repos to measure for `railiance-vergabe-teilnahme`) are in
`history/260730-EffortCalculator-CandidateApplication.md`. Two of the
three carry explicit calculator warnings recommending a manual override
before any real use — these are still draft, non-binding figures, not a
settled costing proposal. See `specs/PilotPhaseCandidateSurvey.md` for
the underlying candidate rationale (unaffected by this figure update).

View file

@ -8,11 +8,11 @@
"source_revision": "f7ad73d"
},
"initial_target": {
"amount": 2500000,
"amount": 141800,
"currency": "EUR"
},
"target_basis": {
"estimated_effort_days": 25,
"estimated_effort_days": 1.418,
"daily_rate": 1000,
"approved_direct_costs": 0,
"target_multiple": 100

View file

@ -8,11 +8,11 @@
"source_revision": "3890dca"
},
"initial_target": {
"amount": 200000,
"amount": 10000,
"currency": "EUR"
},
"target_basis": {
"estimated_effort_days": 20,
"estimated_effort_days": 1.0,
"daily_rate": 1000,
"approved_direct_costs": 0,
"target_multiple": 10

View file

@ -8,13 +8,13 @@
"source_revision": "398b0fe"
},
"initial_target": {
"amount": 3500000,
"amount": 648800,
"currency": "EUR"
},
"target_basis": {
"estimated_effort_days": 30,
"estimated_effort_days": 6.488,
"daily_rate": 1000,
"approved_direct_costs": 5000,
"approved_direct_costs": 0,
"target_multiple": 100
},
"future_license": "Apache-2.0",