Concepts · Work, Attempts & Pull Requests

Intent, isolated execution, familiar review.

Work is the human-facing task or issue. Attempts are optional candidate executions underneath it. Pull Requests are the familiar Git collaboration boundary where a candidate asks to become canonical.

The three layers

ConceptAnswersCan exist without Agents?
WorkWhat are we trying to accomplish, who owns it, and is it open/closed?Yes. Work is useful as an ordinary issue/task with body, assignee and comments.
AttemptWhich isolated candidate is trying to implement the Work?Yes. A human or deterministic tool can own an Attempt; it is not inherently an LLM concept.
Pull RequestIs this concrete Git branch ready to review and integrate?Yes. It remains a normal PR surface with commits/files/checks/conversation.

Work is the issue/task model

A Work item records durable intent: feature, bug, refactor, investigation, maintenance or release task. It can have a description, status, assignee and comments and may never create an Attempt at all. That keeps the simple human-only case familiar.

Work #142  Improve repository error states
  status: open
  assignee: nick
  comments: 3

  # no Attempt is required until somebody chooses to execute it

Attempts make concurrency explicit

When implementation begins, one Work item can have multiple Attempts. Each Attempt has isolated Git state and its own execution/provenance history. That makes competing approaches first-class instead of forcing every Agent onto one shared branch.

AttemptActorBranchPossible outcome
Aimplementer Agentattempt/apasses review and opens the winning PR
Bhumanattempt/babandoned after benchmark comparison
Calternate Agent roleattempt/cfails a contract check but remains useful provenance

Failed and losing Attempts are not silently discarded. They explain what was tried, which can matter as much as the final diff when automated engineering becomes highly concurrent.

Pull Requests stay familiar

A PR proposes an Attempt branch against a base. The default surface is ordinary Git-host collaboration: conversation, commits, files changed and checks. Switchyard-specific state — Attempt, Agent execution, provenance, risk, queue state — appears progressively when it exists.

Lifecycle example

Work: "Add repository search"
  ├─ Attempt A (human)  ──┐
  └─ Attempt B (agent)  ──┼─ compare/review
                           └─ PR from B
                               ├─ check
                               ├─ Review Findings
                               ├─ preview against current main
                               └─ Integration Queue → main
Demodemo-agents is one Work item with concurrent Attempts so the distinction can be explored without reading implementation fixtures.