Commit Graph
402 Commits
Author SHA1 Message Date
istos 6a58880f7c phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 13:33:33 +02:00
istos d2243ac4f2 board: 61 phase log (istos) 2026-08-02 13:33:01 +02:00
istos f40ba67f44 board: 46 → in-progress (istos) 2026-08-02 13:33:01 +02:00
istos 80f1b10cd6 board: 61 phase log (istos) 2026-08-02 13:33:00 +02:00
istos 0768a866e5 phase: merge task/54-a-work-agent-must-refuse-a-phase-card into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 13:32:58 +02:00
istos 393ab32c9e phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 13:32:56 +02:00
istos b0fcb1373b board: 54 PR opened (istos) 2026-08-02 13:32:45 +02:00
istos 2cc0dd5c7e board: 54 → review (istos) 2026-08-02 13:32:37 +02:00
istos 341edf2132 board: 54 Work report filed (istos) 2026-08-02 13:32:37 +02:00
istosandClaude Opus 5 ccffbec831 A work agent refuses a phase card
`▸ run phase` guarded its own door and left the neighbour's open:
`/api/agent/start` accepted a phase card, cut `task/<stem>` and handed a
list of other cards to a work agent as a brief. It did that once, and the
agent implemented two cards at once in a worktree nobody was watching.

The refusal is a server rule, in `_validate` with the stage check — ahead
of the claim and well ahead of the worktree, so it costs nothing and
leaves nothing to clean up — and it names ▸ run phase rather than just
saying no. Which headless kinds a phase card may host is now decided kind
by kind where the guard lives: ▸ start work and ↻ act on PR refuse it
(both are work agents), while ◔ still true? and ◔ review PR are allowed —
the latter now told the phase's own branch, since its PR is from
`phase/<stem>` and `task/<stem>` was never cut. The guard is about
starting, so a card retyped under a running agent is left alone.

And the card says which state it is in: an `in-progress/` phase nobody has
started read exactly like one mid-run, the header chip being absent in
both cases. It now wears `not started` (or `held`) in the settled
register, with the line under it saying what ▸ run phase would do — never
the accent, the breathing mark or the caret, which mean work is happening.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 13:32:08 +02:00
istos 4a12da8d1b phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 13:07:39 +02:00
istos 8dc83d221b board: 55 PR review filed (istos) 2026-08-02 13:07:16 +02:00
istos 8cb89d8653 phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 12:52:29 +02:00
istos 95ec6df0df board: 61 phase log (istos) 2026-08-02 12:51:57 +02:00
istos f798c17f3a board: 54 → in-progress (istos) 2026-08-02 12:51:56 +02:00
istos 0412c78f39 board: 61 phase log (istos) 2026-08-02 12:51:56 +02:00
istos a5f05ea29d phase: merge task/55-a-headless-run-is-one-turn-and-must-say-so into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 12:51:54 +02:00
istos c6752efc3c phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 12:51:51 +02:00
istos 4d5cd19f7e board: 55 PR opened (istos) 2026-08-02 12:51:48 +02:00
istos eccaa415ed board: 55 → review (istos) 2026-08-02 12:51:40 +02:00
istos 331e5acc21 board: 55 Work report filed (istos) 2026-08-02 12:51:40 +02:00
istosandClaude Opus 5 f676c9fe2a prompts: say that a headless run is one turn
A work agent ended its turn to wait for a four-minute test suite it had backgrounded, and the run ended with it: 314 lines of passing work staged and never committed, an empty branch, a halted phase. Nothing in the prompts said the run was a single non-interactive turn, so waiting looked like a sensible strategy.

All four core prompts now open with the same block: this is one turn, the process exits with your reply, and nothing you meant to finish afterwards survives. It names the trap directly — do not background a command and end the turn to wait for it, do not promise to come back — and each template follows it with what its own run loses: work.md commits around long-running commands, act-pr.md commits and pushes, review-pr.md posts its verdict inside the turn, review.md writes its report there.

The block sits before the task body and carries no braces, so str.format still renders it and the NOT READY / ADDRESSED / PR REVIEW / RELEVANCE REVIEW marker lines keep their place after it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 12:39:07 +02:00
istos 24b7fdd9cf phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 12:37:52 +02:00
istos a445b660b5 board: 50 → archived (istos) 2026-08-02 12:37:29 +02:00
istos 46e4f143d2 board: 51 → archived (istos) 2026-08-02 12:37:26 +02:00
istos 343df6604f board: 52 → archived (istos) 2026-08-02 12:37:22 +02:00
istos d61b06f50c phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 12:37:18 +02:00
istos a44dfc2fb8 board: 56 → archived (istos) 2026-08-02 12:37:18 +02:00
istos 43ffa1c0ec board: 58 → archived (istos) 2026-08-02 12:37:14 +02:00
istos 88e5e6ea9a board: 59 → archived (istos) 2026-08-02 12:37:12 +02:00
istos 19e134e8f9 board: 53 → archived (istos) 2026-08-02 12:37:01 +02:00
istos 5a38f10f66 phase: merge origin/main into phase/61-what-an-agent-is-told-before-it-starts 2026-08-02 12:36:11 +02:00
istos 2691d8ff80 board: 61 phase log (istos) 2026-08-02 12:35:54 +02:00
istos 98d4157135 board: 55 → in-progress (istos) 2026-08-02 12:35:54 +02:00
istos dab8d97ecb board: 61 phase log (istos) 2026-08-02 12:35:52 +02:00
istos db418d47bf board: 61 → in-progress (istos) 2026-08-02 12:35:35 +02:00
istos 90c1ccd7ea board: 61 → to-do (istos) 2026-08-02 12:35:32 +02:00
istos d2b44ca133 board: 57 → archived (istos) 2026-08-02 12:35:14 +02:00
istos 11e84d94c0 board: 20 → archived (istos) 2026-08-02 12:34:34 +02:00
istos f4104d605d board: 19 → archived (istos) 2026-08-02 12:34:31 +02:00
istos b421291f15 tasks: phase 61 — what an agent is told before it starts
Runs 55 (the prompt says the run is one turn), then 54 (start_agent
refuses a phase card), then 46 (a board with no runnable commands says
so). No card depends on another; 55 is prompt-only and goes first, 54
and 46 both edit board.html so they run adjacent.

Also the first exercise of the Phases view: 56-59 landed after phase 53
finished, so hiding, the lane, the move refusal and the sweep have not
yet been watched on a live run.
2026-08-02 12:34:29 +02:00
istos c012987490 board: 18 → archived (istos) 2026-08-02 12:34:28 +02:00
istos a32ee33653 board: 17 → archived (istos) 2026-08-02 12:34:24 +02:00
istos d97fc4f34d board: 16 → archived (istos) 2026-08-02 12:34:21 +02:00
istos b20ef0344f board: 10 → archived (istos) 2026-08-02 12:34:18 +02:00
istos 0b975ce502 board: 04 → archived (istos) 2026-08-02 12:34:11 +02:00
istos e488a73832 board: 01 → archived (istos) 2026-08-02 12:34:02 +02:00
istos 8a69df87de board: 59 → done (istos) 2026-08-02 12:31:28 +02:00
Ronald AshriandGitHub 0745e68883 Merge pull request #50 from 12vectors/task/59-finishing-a-phase-finishes-its-cards
59 — Finishing a phase finishes its cards, and clears up after them
2026-08-02 12:31:20 +02:00
istos f601a078d5 board: 59 PR review filed (istos) 2026-08-02 12:21:04 +02:00