Oko/Docs

Command reference

oko roadmap push

Writes one roadmap item into work_items as a task contract for future work: what it promises, what the product already has, what it still lacks, and the acceptance that decides it is done.

Invocation#

Command
oko roadmap push --product P --title T --outcome O --acceptance A [--exists TEXT] [--missing TEXT] [--source URL] [--status backlog|ready|in_progress|blocked|done] [--priority high|medium|low] [--slug S]

Inputs and options#

  • --product, --title, --outcome and --acceptance are required; a contract without its acceptance cannot be finished by anyone. --product must be a product id Stado's catalog holds (stado product catalog --json).
  • --status defaults to backlog, because a roadmap item is future work; --priority defaults to medium.
  • --slug overrides the identifier derived from the title; the row is keyed by external_id roadmap:<product>:<slug>, so pushing the same title again updates that row instead of adding a second one.

Output and state effect#

  • Upserts one work_items row of the signed-in member's organization in the shared Oko database, with kind task, milestone <product>, tags roadmap and <product>, and metadata.roadmap_contract carrying outcome, exists, missing, acceptance, source and the push time; prints the external id, status and title as JSON. oko writes it with the member's own Wisent session, not a service-role key.

Refusals and safe exits#

  • A status work_items does not declare is refused before anything is written, naming the five it does.
  • A --product the Stado product catalog does not hold is refused before anything is written: oko roadmap push: '<product>' is not a product in Stado's catalog (stado product catalog --json lists <n> products); name the catalog id. When the catalog cannot be read, Stado's own refusal is printed and nothing is written.
  • Without a Wisent session (oko login), or when the database refuses the write, it exits unsuccessfully with the database's own answer.

CLI reference#