Repository navigation
Open
Labels
app/pm-stackpm-stack (Pad/Grist) in developing-today/codepm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/queue-workerFiled or worked by the queue/worker pilotFiled or worked by the queue/worker pilotstatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Parent chain: #1184 → #1256 → this issue. GitHub currently caps #1184 at 100 direct sub-issues and rejects additional links (REST 422), so implementation slices are nested under #1256, already a native child of #1184; no existing parent links were changed.
Design context: #1256; doc/2026-11-01T21-07-00Z_design_pm-stack_forecasting/2026-11-01T21-07-00Z_design_pm-stack_forecasting.md (§4). Consume the models in #3982 and #3983, and report unsupported values honestly.
Goal
Expose one machine-first forecast contract and render the same information in Roadmap and Projects without making a weak estimate look like a commitment.
Acceptance criteria
- A forecast JSON endpoint returns scope/subject,
asOf, model version, input window/coverage, remaining units, nullable P50/P80 date ranges, confidence, baseline source, and structured reasons/limitations. Quota/stall outputs carry their additional fields from design(pm-stack): forecasting — epic ETAs from measured velocity, quota-wall prediction, and stall-risk scoring #1256 design. - Roadmap and Projects consume the same contract and render ranges with confidence, sample/window and source limitations beside them; no forecast is a bare date.
- “No measurable pace,” “not enough history,” and “quota rate unavailable” are first-class states; missing values are never rendered as zero or safe.
- Project/pool scope and GitHub-vs-Project status disagreement remain visible.
- API and rendering tests cover high/low/unavailable confidence, stale source, missing baseline, and all three forecast types.
Metadata
Metadata
Assignees
Labels
app/pm-stackpm-stack (Pad/Grist) in developing-today/codepm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/queue-workerFiled or worked by the queue/worker pilotFiled or worked by the queue/worker pilotstatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done
Evidence (fresh, 2026-11-03 ~19:32Z):
grep -rln "forecast" pm-stack/aggregator/src/at current main returns zero files, and there is no forecast JSON endpoint or Roadmap/Projects forecast rendering.doc/2026-11-01T21-07-00Z_design_pm-stack_forecasting/2026-11-01T21-07-00Z_design_pm-stack_forecasting.md(§4), parent design issue design(pm-stack): forecasting — epic ETAs from measured velocity, quota-wall prediction, and stall-risk scoring #1256 OPEN, epic epic(dashboard): PM stack coherence - single-URL, fresh data, triage-able, hierarchical #1184 OPEN.asOf, model version, window/coverage, remaining units, nullable P50/P80 ranges, confidence, baseline source, structured limitations; quota/stall extra fields), render the same contract on Roadmap and Projects with the three first-class unavailable states, plus the API/rendering tests the acceptance criteria name. Effort/m as labelled.status/blockedto record the gate; the next coverage pass after issue aggregator: derive epic ETA bands and explainable stall risk #3982 and issue aggregator: forecast per-pool quota exhaustion intervals #3983 land should re-route it to implementation.