fix(story-mode): name the check that failed, say whose plan a failure was, and when background work finished

From review round 9:
- "another check" was too vague to act on. A check other than the tests
  is named by its tool: a layout check (a formatter), a style check (a
  linter), a type check, the build. "Fix and test, 2 rounds: a test fails
  and Claude fixes it, then a layout check fails and Claude fixes that;
  everything passes."
- A failure the prompt asked for reads "The first run fails on purpose,
  as you asked; the second passes." ("The tests don't even load, as you
  asked."); one Claude planned itself keeps "Test first: … as planned".
- A test run sent to the background that reported in a later turn reads
  "Claude starts the tests in the background; later they pass.", not as
  if they passed in that turn.
- The test board says "1 test" and, when nothing loaded, "1 error".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer committed 2026-10-18 15:45:17 +02:00
1 parent 59d70caeb3
commit 555efef53d
9 files changed
+66 -35

No files matched your search

@@ -221,7 +221,7 @@
{
"kind": "check",
"ok": true,
"story": "The tests run in the background and pass.",
"story": "Claude starts the tests in the background; later they pass.",
"director": "python3 -m pytest -q → ok",
"balloon": null,
"tests": null,
@@ -73,7 +73,7 @@
{
"kind": "check",
"ok": false,
"story": "The tests don't even load, as planned.",
"story": "The tests don't even load, as you asked.",
"director": "python3 -m pytest -q → error · 0 passed, 1 error",
"balloon": "Now the red run, once, with calc_stats.py confirmed absent:",
"tests": {
@@ -51,7 +51,7 @@
{
"kind": "loop",
"ok": true,
"story": "Test first: the first run fails as planned, the second passes.",
"story": "The first run fails on purpose, as you asked; the second passes.",
"director": "2 checks · 3 edits · +35 −1 · last: ok",
"balloon": "All 4 pass.",
"tests": {
@@ -133,7 +133,7 @@
{
"kind": "loop",
"ok": true,
"story": "Test first: the first run fails as planned, the second passes.",
"story": "The first run fails on purpose, as you asked; the second passes.",
"director": "2 checks · 2 edits · +5 −1 · last: ok",
"balloon": "All 5 pass.",
"tests": {
@@ -73,7 +73,7 @@
{
"kind": "loop",
"ok": true,
"story": "Build and test, 4 rounds. The tests pass every time; another check fails once, then passes.",
"story": "Build and test, 4 rounds. The tests pass every time; a layout check fails once, then passes.",
"director": "5 checks · 10 edits · +694 · last: ok",
"balloon": "All 4 modules are done: 63 tests pass and ruff is clean.",
"tests": {
@@ -51,7 +51,7 @@
{
"kind": "loop",
"ok": true,
"story": "Fix and test, 2 rounds: a test run fails, then another check, then everything passes. Claude saves the work in 4 commits along the way.",
"story": "Fix and test, 2 rounds: a test fails and Claude fixes it, then a layout check fails and Claude fixes that; everything passes. Claude saves the work in 4 commits along the way.",
"director": "3 checks · 5 edits · +218 −1 · last: ok",
"balloon": "All 19 tests pass, ruff check is clean, and the output matches real wc column for column.",
"tests": {