Skip to content

Read model & console surface for milestone runs #286

Description

@xlight05

Question

(Re-aimed 2026-07-23 by the milestone decision (#312) — runs key on milestones, not parent issues.)

  • The console Builds page is keyed by spec tag today; what does it show now — a list of milestone runs? What is a "run" row, and how does it render the loop's cycles (initial coding, conflict re-dispatch, fix rounds, validation) — input from Run loop mechanics (#314) on rows-per-run vs rows-per-cycle and where the validation verdict lands?
  • API surface (owner-directed): GET /projects/{p}/build/{tag} is removed — verified unused, the console calls only GET /projects/{p}/tasks?state=all&tag=. That read keeps its tag parameter but filters by milestone membership (title == tag) instead of the aep:spec/<tag> label. Which other read endpoints change in the committed OpenAPI contract?
  • Task board: how milestone + issue status renders; what replaces the derived status algebra (taskmeta/derive.go) and the blockedBy projection. Note: issues close only at merge, so mid-run issue state is NOT a progress signal; there are no native edges — the provisioning wait renders from open aep:provision issues in the milestone (drawer deep-links), not from blocked_by.
  • Progress: unchanged contract — ONE run-level feed (pod-log tail keyed to the execution) carrying main-agent and subagent frames, each identifying its emitter. Design the UI that renders that single run view, replacing the per-task SSE task-log stream.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions