Skip to content

story-132: A planned story's projection reaches its item on a target that configures no board - #220

Merged
jerodw merged 4 commits into
mainfrom
story/story-132
Sep 10, 2026
Merged

story-132: A planned story's projection reaches its item on a target that configures no board#220
jerodw merged 4 commits into
mainfrom
story/story-132

Conversation

@jerodw

@jerodw jerodw commented Sep 10, 2026

Copy link
Copy Markdown
Owner

The item branch validated the status half of a question before it published the document half, and refused outright when the target configured no project. Between them, a target with no board never got a projection at all — the half that has nothing to do with a board was lost to the half that does.

The two changes

The status is resolved after the document, not before. A status the command cannot honour now leaves the projection on the item and then exits non-zero, instead of preventing it from ever being published.

No configured project skips the board work rather than failing it. An empty project is a statement about the target — it declares no board, so nothing here failed — and the item branch now skips silently, exactly as the sync branch above it already did.

The consequence, stated rather than hidden

A non-zero exit may now follow a document that was published. A question carrying both halves is answered in order, so a failure says that not all of the question was answered rather than that none of it was, and a caller reading it as nothing-happened will be wrong about the item's body.

That is written where each reader meets it: the module docstring in orchestration/item_update.py, the item_update_command contract in schemas/harness-config.schema.json, and l5-plan's own failure line, which now tells the developer the projection may already be on the item. The success line stops claiming it "moved" the item and says it told the tracker instead — the harness does not know what a status means to a target, and the old wording implied it did.

Nothing about what refuses changes: a failure still refuses nothing at any of the three moments, still changes l5-plan's exit status on no path, and no exit code is read as a retry.

Planned from the brief filed under 202.

🤖 Generated with Claude Code

https://claude.ai/code/session_01U1HiUf7CrMjZMj32TySdiH

@jerodw
jerodw merged commit 684b10d into main Sep 10, 2026
3 checks passed
@jerodw
jerodw deleted the story/story-132 branch September 10, 2026 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant