feat: Runway complete — per-milestone forecasts + real milestone drill-in #48
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/runway-real"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Runway milestone list is now real — the last big fixture screen. Each open gitea milestone's open scope gets its own Monte Carlo forecast (reusing the P2 engine); the p80 landing range shows, and is compared to the due date (on track / at risk) when one exists. Ranges, never point dates.
Change
backlog.ts:runwayView(issues, milestones, deps)→RunwayMilestone[]— per milestone: forecast its open scope, map p50..p90 to a date range, normalize theRunwayBarband across a shared horizon, tone/note from due-vs-p80. Milestones with no open scope (shipped) are omitted; empty → the demo fixture.RunwayScreentakes optionalmilestones; AppShell feedsrunwayView. (The header's calibration note was already real, #1.)Live result
P1/P2/P4/P5 each with a real forecast — e.g. "P2 — Scheduler + Monte Carlo · 80% Aug 14–25 · 32d of work". The fixture lists Beta/Pilot-ready/v1.0, so the real milestone names prove it (screenshot in run).
Scope / honest edges
capacity/members.yaml).Verified
Desktop typecheck clean · 14 fixture e2e green · live spec asserts the real milestone names on Runway.
🤖 Generated with Claude Code
Clicking a milestone on Runway now opens its real detail: scope + done %, a Monte Carlo cone over the remaining open work, and the milestone's issues grouped by lifecycle column. Threaded the gitea milestone id through the Runway row → AppShell → a milestoneView(). - backlog.ts: milestoneView(id, ...) → { name, due, scope/done, forecast cone + range, groups by lifecycle column }. Reuses forecast + buildBurnUpData + lifecycle inference. null for an unknown id → the screen shows the demo fixture. - RunwayMilestone gains an `id`; runwayView sets it; RunwayScreen.onOpenMilestone(id). - MilestoneScreen takes optional `data`; renders real header/stats/cone/issue-groups when present, fixture otherwise. Verified: desktop typecheck clean, 14 fixture e2e green. Live: clicking "P2 — Scheduler + Monte Carlo" opens a real detail — 7 issues · est 20d, 0/7 done, cone "80% Aug 17–26", issues in Triage/In-review from the real event stream (screenshot). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>feat: real Runway — per-milestone Monte Carlo forecaststo feat: Runway complete — per-milestone forecasts + real milestone drill-in