Progress view¶
ameesh progress shows the real-time state of a project: lots on a
timeline (requested → frozen → verdict → merged), agents (harness, model,
effort, state, current task), milestones and budget. It is fed by what
ameesh records itself (lot transitions, gated actions, turns and leases,
the cost ledger); neither git nor any issue tracker is read.
ameesh progress [--project P] [--since 24h] # text, fits a narrow terminal
ameesh progress --json [--project P] [--since 24h] # schema ameesh-progress/1
ameesh progress --html FILE [--project P] [--since 24h]
--since: start of the window, a duration (90m,16h,2d) or an ISO 8601 date (2026-10-05,2026-10-05T08:00Z; without a time zone = local time). Default24h.--project P: lots whose app or workstream isP, the project's actions, agents whose project or team isP, and their costs.--html FILE: a standalone static page (inline CSS and script, embedded data,default-src 'none'policy: no network request, no font, no CDN), readable on a phone. No server: open the file, or copy it anywhere. Written atomically; run the command again to refresh it.
Exit codes: 0; 1 (database unreachable, schema missing, SQL error); 2 (unreadable option).
Lot milestones¶
Milestones are declared, not guessed. requested and merged are
recorded automatically; frozen (branch frozen for review) and verdict
(ok or blocked, with the reviewed commit) are declared:
ameesh work milestone <id> frozen --sha <commit>
ameesh work milestone <id> verdict ok --sha <commit> [--note …]
ameesh work list # column DÉLAI: phase and age
ameesh work show <id> # the full timeline: requested → frozen → review → merged
When a lot has no declared freeze or verdict, they are deduced from its
transitions (first entry into qa, exit from qa, approval of its git-merge
action…).
The JSON schema ameesh-progress/1¶
| Key | Meaning |
|---|---|
schema |
"ameesh-progress/1" |
generated_ts, generated_at |
time of the snapshot |
host, project, window |
who produced it, the filter, the time window |
lots[] |
id, title, state (active, review, blocked, approved, merged), raw work_state, milestones {requested, frozen, verdict, merged}, verdict, blocked_verdicts, blocks, assignee, reviewer, qa_loops, budget, linked actions |
agents[] |
name, harness, model, effort, state (working, idle, paused, stopped), since_ts, current turn {started_ts, duration_s, label, task}, turns, unread, lease |
milestones[] |
project milestones declared in the canon (always empty in v1: the v1 profile declares none) |
actions[] |
actions changed in the window or not terminal |
budget |
spend {window, 1h, 24h}, by_agent, subscription gauges plans, hourly_cap_usd, paid_harnesses |
truncated |
render bounds reached (500 lots, 500 actions) |
missing |
what the view cannot read (yet), in plain words |
Conventions: instants are UTC epoch seconds (_ts) or null; durations in
seconds (_s); amounts in US dollars (_usd). Data ameesh does not have is
null or an empty list, never guessed. Fields can be added within
version 1; removing a field or changing its meaning moves to
ameesh-progress/2.
Gauges are local
Subscription gauges are read from the harness logs of the host that produces the snapshot, without history in the database.