Shipping with the Allternit Factory build. Campaigns, DAG nodes, WIH pickups, receipts and the judge exist in the work runtime today. Node folders, proof contracts, the Board and the gizzi workspace commands are the approved design and are not live yet.
gizzi workspace is the work itself: what you asked for, how it was split, who picked up each piece, and the proof that it’s done.

Campaigns

A Campaign is one piece of intent (“Saved views”). In Desktop, a project is a Campaign. It holds a plan of nodes and a summary of where they stand.
gizzi workspace plan new|refine creates or changes the plan behind a Campaign. Every change is a Gate event with provenance. See Campaigns.

Nodes

A node is one unit of work in the plan’s DAG. It has a status (new, ready, working, checking, needs_you, done, failed or blocked), an assignee (bot@team), the nodes blocking it, and a proof count.
A claim is a WIH (work identity handle) pickup through the Gate. The bot gets a context pack, works inside a lease, and closes the pickup with evidence. A bot never marks a node done by itself: the judge decides. node handoff passes a claimed node to another agent without closing it. The Gate records the new owner (so a rebuild from the ledger keeps it), the note is added to the node’s PROGRESS.md, and a bot on this computer gets a message telling it to read the node folder. A node that isn’t claimed can’t be handed off; claim it or assign it first. --dry-run shows who it would move from and to.

The node folder

Every node gets a folder. It’s what a bot reads before it starts and what you read before you approve.
SPEC.md has three sections:
  • Intent is the outcome in one or two sentences.
  • Mini-requirements are the concrete pieces of that outcome.
  • Proof contract is the list of things that must be shown, each with who checks it. A line isn’t proven by ticking its box. It’s proven when evidence in proof/ gets an accomplished verdict from the judge.
PROGRESS.md is narrative. Screens show it to the side and label it that way. It never counts toward proof. Any ```mermaid block in SPEC.md, PROGRESS.md or a Campaign doc renders as a diagram in Desktop and on the phone.

Proof and the judge

Each proof contract line gets evidence (a file in proof/, with a receipt) and a verdict: accomplished, not_accomplished or needs_human. A needs_human verdict lands in Needs you. Receipts are written when the pickup closes, and they’re what replay checks. See Verification and Receipts.

The Board

The Board is a Campaign’s dashboard. It’s built from the node folders and the judge’s verdicts:
  • Summary line: NOW (being worked on), NEXT (ready), PROVEN k/n, NEEDS YOU.
  • Waves: nodes grouped by how deep they are in the blocked_by chain, so wave 1 is what can start now.
  • One card per node: title, assignee and binding, status, proof k/n.
The same input always draws the same Board. Empty shows ”—”. Counts come from the judge, never from narrative. In Desktop the Board is a tab on the project page, and the Node page opens in the shared pane: intent, plan and delivered, with proof paired to each contract line and an Approve button. On the phone it’s a one-column list.

Tasks

gizzi workspace tasks is your task list. It replaces gizzi cowork. Each cowork task is a node in your standing Tasks DAG (tasks-<you>-<workspace>), written through the Gate like any other node, so the board, approvals and proof work the same way:
  • gizzi workspace tasks board [--workspace <id>]: the Tasks board (needs you, now, next, done).
  • gizzi workspace tasks tasks: the task list, with scheduling.
  • gizzi workspace tasks queue list: work waiting for an agent to claim it.
Tasks live with your account (/api/factory/tasks/* on allternit-api), so Desktop, the web app and your phone show the same list. The engine’s own allternit-factory workspace tasks points you here.