story-132: A planned story's projection reaches its item on a target that configures no board - #220
Merged
Conversation
…rget that configures no board
…that configures no board Implemented by the l5 harness story workflow.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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, theitem_update_commandcontract inschemas/harness-config.schema.json, andl5-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