Skip to content

Build Orders

A Build Order turns a large feature into typed members, lanes, phases, dependencies, complexity, and optional icons.

Pack contents

File or fieldPurpose
.aiur/build_orders/<slug>.jsonWritable workspace mirror discovered by the daemon.
build-order.jsonMembers, lanes, phases, dependencies, complexity, and icons.
status.jsonCurrent execution state.
tickets/<ID>.mdDraft member contract before tracker promotion.

The canonical state-node copy lives at ~/.aiur/repo/<owner>/<repo>/builds/<slug>/.

Pack locationVisible to Aiur?
Active workspace mirrorYes.
Repository state nodeYes.
docs/ onlyNo.
Another inactive branch onlyNo.

The Build Order page

SurfaceShows
/build-ordersDiscovered catalog.
/build-orders/:root_numberOne root's phases, lanes, graph, members, usage, and analytics.
aiur build-orders [<root>]The same projection in a terminal.
--jsonMachine-readable Build Order rows.

On the catalog, ticket, epic and wave counts remain numeric when resolution succeeds, including a real 0. A count that could not be resolved never renders as 0 or as a bare dash—it names its cause instead:

CellMeaningWhat to do
Budget exhaustedThe planning query budget or a local GraphQL hold blocked the read. Shows the reset time when the hold reports one.Wait for the reset, or raise tracker.github.planning_page_budget / planning_call_budget.
Rate limitedThe tracker rate limited the read. Shows the reset time when reported.Wait for the reset; reduce concurrent agents if it repeats.
Timed outThe request exceeded its deadline.Usually transient; it retries on the next labelled read.
UnreachableThe connection was refused or dropped.Check network reachability to the tracker—not latency.
Not authorizedThe credential was missing or rejected.Check the configured GitHub token.
Unreadable responseThe response did not match the expected shape.Likely an Aiur or tracker schema change; report it.
Partial readThe read succeeded but hit Aiur's own planning page limit before every member. This is an Aiur bound, not a tracker fault.Raise planning_page_budget.
UnresolvedThe failure could not be classified.No cause is claimed on purpose—a wrong reason is worse than none.

These states are intentionally not estimates. aiur build-orders --json reports the same cause as count_resolution_failure, with count_resolution_reset_at when a reset horizon is known.

Desktop Build Order graph with synthetic example member tickets

The repository state node

Aiur separates the repository's tracked code from daemon-owned state under ~/.aiur/repo/<owner>/<repo>/.

PathHolds
latest/Aiur-managed warm clone of the configured base branch.
builds/State-node Build Order packs, daemon status projections, and cross-boot build summaries.
analytics/Telemetry summaries, including runs/<boot-id>/run-summary.json.
meta/Executor findings at findings.ndjson and narrative retrospectives at retros/<boot-id>.md.

These paths are machine-local. Do not commit them, and do not expect copying a repository to copy its run state.

aiur init and the first run create this state as needed. Aiur does not create executor/handoff.md: the durable narrative is meta/retros/<boot-id>.md, and the shareable artifact is the generated docs/executor/open-findings.md digest.

Executor handoff and findings

Durable recordLocation or command
Accepted boundary, run identity, decisions, evidenceExecutor handoff.
Hourly retrospectivemeta/retros/ under the repository state node.
Deferred findingaiur findings --record into meta/findings.ndjson.
Current bottleneckNamed in the hourly filing with evidence-supported follow-up.

Git history and an old Dashboard capture are not substitutes for current Build Order state.

Command macro, delegate micro, maximize APM.