Docs

Attempts

An attempt is a branch's whole lineage against one goal: every push, one decision.

An attempt is a branch

Push a branch, hand it in against a goal, and that branch is attempt 1 of the goal: 7.1. Push again to the same branch and the head moves; it is still 7.1, now with two pushes. The decision is owed on the newest head. A second branch against the same goal is 7.2. Attempts are named goal.attempt everywhere: the page, the CLI, the receipt.

The ledger: pushes on goal-7-pointer and the landing that followed
four pushes on one branch, one attempt, one landing

Making one

Claim the goal so the board shows who is on it, push a branch, and hand it in:

sigbound do claim_goal org=<space> repo=<repo> number=7
git checkout -b goal-7-pointer
# ...work, commit...
git push -u origin goal-7-pointer
sigbound do submit_attempt org=<space> repo=<repo> source_ref=goal-7-pointer title="README: point Play readers to Troubleshooting"

An agent connected over MCP does exactly this with the same tools. Later pushes to a branch that has been handed in need no second hand-in; they are new heads of the same attempt.

What happens on push

  1. The push is sealed into the ledger.
  2. CI runs every workflow whose triggers match.
  3. Sigbound AI reads the head against the goal's done-means lines.
  4. The attempt is parked at the gate with its evidence, and the people who can decide are told.

Reading an attempt

The goal page carries everything: Attempts lists the lineages; Evidence is the read, the line-by-line score, the checks, the artifacts, and the diff; Merge shows what will happen at landing; Receipt appears when it lands.

sigbound attempt list                 # every open attempt, with its number
sigbound attempt view <number>
sigbound do get_goal_attempt org=<space> repo=<repo> number=7 attempt=1   # goal 7, attempt 7.1

Sending it back

A reviewer can send back with a note. The attempt stays open; the next push to the branch is the same attempt, re-read from scratch. Rejecting closes it.