kapi status
Show where the project stands: per-scope coverage against the ship gates,
what is staged locally, and, on a connected project, the server delta and the
venue kapi up would run on. kapi status always exits 0; a locale that is
behind is pending work, not an error.
Usage
kapi status [flags]
What it shows
The coverage grid
One row per scope, a locale or a locale/collection pair, with the number of
units, one column per rung of the target ladder (the share of units that have
reached drafting, translation, review), a pipeline bar showing distance to the
bar, and a ship column. Ship is a verdict rather than a percentage: it
reads ready when the scope clears its gate, blocked: <rung> naming the
first unmet gate so it points at the work, or not gated when no ship gate
matches the scope. Units an autonomous AI approved
are counted under review and qualified as such, because gates only count them
under an any approver class.
Under the grid, two basis lines report what a percentage cannot: how many units carry a decision made against content that has since changed, and how many have never been judged. A project that names no target language reports itself as monolingual rather than as empty.
Staged decisions
Decisions recorded locally but not yet written to the committed record under
.kapi/state/ are counted as staged; kapi commit publishes them. A clean
project prints nothing here.
The server section
On a connected project (the recipe declares a bowrain: block), the plugin
adds the server's standing: the server URL and project, blocks pending push and
pending pull against the tree the project last declared (see
kapi push), the last sync time, any run in flight, and
two more lines:
- terms: when the workspace's governed terms were last snapshotted into the
local terms store (concept and relation counts), or
never syncedwhen no concept pull has run; refresh withkapi pull --concepts. - governance: where this project's declared points, channels and voice stand against the workspace's, so a divergence is visible before a push raises it.
The venue
Where kapi up would run the loop, server or local, with the recipe's
bowrain.converge policy, and a note when the venue is degraded (a server is
declared but the bowrain plugin is missing).
Options
| Flag | Description |
|---|---|
--locale | Limit the grid to a single target locale |
--source-lang | Source language (overrides the project's source_language) |
--review | List the units awaiting review in every language, the source language among them, instead of the grid; approve a translated one with kapi apply |
--lang <tag> | With --review, list only these languages (repeatable, or comma-separated) |
--ship | Emit the minimal ship.json manifest (locale → shippable, verified, state, and any dimension that governs nothing there) instead of the grid: the shape a language picker consumes to hide locales that are not shippable and badge those shipped on machine review |
--emit <path> | With --ship, write the manifest to this path instead of stdout |
--json | Output the structured result as JSON |
kapi status --ship --emit ship.json at build time writes the same manifest
the server publishes at GET /api/v1/projects/:id/ship.json, so a site built
from a checkout and a site reading the server agree. See
Ship states.
Examples
# The coverage grid, the server delta and the venue
kapi status
# One locale
kapi status --locale fr
# The review worklist, and one language of it
kapi status --review
kapi status --review --lang fr
# The ship manifest for a language picker, written at build time
kapi status --ship --emit public/ship.json
# Machine-readable
kapi status --json
Exit codes
0: status displayed (behind is pending work, not an error)1: error (project not found, and so on)
Related commands
kapi diff: the changed blocks, per filekapi pull: fetch the server's changeskapi push: send local changes, and the tree the delta is measured againstkapi up: catch the project upkapi check --ship: the gate that fails a build
When to use
Run kapi status to:
- Check before push to see what will be uploaded
- Check after pull to see what changed
- See what is shippable before a release, and what blocks the rest
- Troubleshoot sync issues or unexpected state