Oko/Docs

Command reference

oko work progress

Measures how fast the open work moves, who moves it and who does not: the pool's remaining items, those claimed and unclaimed, the items moved (closed, or repaired and claimed while their proof waits) per hour and the time left at that rate, the measured repair norm, each executor holding pool items with its verdict, each model's moves per executor-hour, and the trend the model policy's passes kept.

Invocation#

Command
oko work progress [--hours N] [--all] [--json]

Inputs and options#

  • The pool is the build-first defects; --all measures every open defect instead.
  • The window is --hours, else as long as the longest repair the register ever timed, rounded up to whole hours, so every repair that could have finished in it is counted.
  • The defect register, the claim register (`oko claims`: a repair claim is a repair committed and claimed whose proof waits), the live sessions of `oko sessions agents` for each executor's model and state, and the history ~/Library/Application Support/Oko/progress.jsonl (OKO_PROGRESS_HISTORY) the policy passes append to.

Output and state effect#

  • remaining: the pool's items open with no repair recorded; claimed, those of them carrying a repair claim no verdict has broken; unclaimed, those carrying neither; unheld, those nobody holds. A claim an adversarial or test verdict broke is a repair Oko took back from the defect, so it counts as no claim and moves nothing. closed: the pool's items whose repair or fix was recorded in the window. moved: the items closed or claimed in the window (a recorded repair first, else the newest repair claim no verdict has broken), movedLastHour in its last hour, movedPerHour the rate; timeLeft.hours is unclaimed at that rate, or null with why when nothing moved in the window.
  • repairNorm: from every defect of the register, the time from the assignment its repairer held (the `assigned: … -> <owner>` note) to its recorded repair: samples, medianSeconds, longestSeconds.
  • executors: one row per session holding a remaining pool item or having moved one in the window — a recorded repair counts for the owner assigned before it, a claim for the claim's author (else that owner): session, model, state, alive, holds, moved, lastMoveAt, progressAt (its newest move or assignment), secondsSinceProgress and verdict — `behind` when that time is longer than the longest measured repair, `on pace` when not, `unmeasured` when no repair was ever timed or nothing of it is recorded — with why. behind lists the sessions behind.
  • models: per model, its executors, the items they moved in the window and movedPerExecutorHour. trend: the kept passes over the window, each {at, pool, remaining, unclaimed, moved, movedPerHour, behind}. sessionsUnread names why the live sessions could not be read, when they could not; the executors then show no model or state.
  • Every model policy pass measures the build-first pool over the norm's window as its `progress` step, appends the measurement to the history and returns it as `progress` in its receipt. An executor behind the norm whose turn ended is not typed into again: its next item starts in a fresh session, decided `handed over` with `it is behind the measured repair norm (<why>)`, and the successor's model is the measured choice, not the model that fell behind.
  • Text output prints the pool line, the moved line, the time left for the unclaimed, the norm, one line per executor (`BEHIND|ON PACE|UNMEASURED <session> on <model> (<state>): holds [...], moved [...]; <why>`), one per model and the trend. Oko Desktop → Blockers → Progress shows the same measurement through the native API (`blockers` domain, `work_progress` with optional hours and all), executors behind the norm first in the warning style.

Refusals and safe exits#

  • “oko work progress: --hours takes a positive number, got <n>” (exit 2); “oko work progress: no repair in the register was ever timed from its assignment, so no window is measured; name one with --hours N” without --hours on a register with no timed repair, and “oko work progress: the longest repair the register timed took no time at all, so no window is measured by it; name one with --hours N” when the only timed repairs took no time (exit 1).
  • An unreadable defect or claim register, or a history line that cannot be read (“line <n> of the progress history <path> cannot be read: …”), refuses with its path (exit 1). A pass that cannot measure or keep progress keeps its other decisions and returns `progress: {refused: <cause>}`.

CLI reference#