story-116: Every brief is titled for the behaviour it produces, defects included - #172
Merged
Conversation
…ts included 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.
Story
Every brief is titled for the behaviour it produces, defects included.
A brief's title is the line a developer reads in a tracker column, and nothing told a writer how to pitch it. The three places that describe a title all said the same thing about what it is not — not part of what a brief is filed under, so phrase it freely — and nothing about what it should say.
The schema went further and taught a split: "what is wrong where the brief states a defect, what should exist where it states work to be done". So defects were titled for the state the system is in today — A pending outbox entry never says why it is pending — and a tracker column read as a list of complaints in which every line describes something that will not exist once the work lands.
One rule, defects included
A title states the finished behaviour, in the present tense, as though it already holds. A pending outbox entry says why it is pending.
The fact that something is broken now is carried by category and severity, which is what those fields are for, and by the body's opening line. The title does not need to carry it a fourth time.
The clause saying a title is deliberately not part of the identity stays, with its reason: two writers of one brief will phrase it differently, and filing on the phrasing would file it twice.
Evidence
tests/test_a_brief_is_titled_for_its_end_state.py(782 lines); 9 files changed, +865 / −6This is the first story planned from a filed brief
Its artifact opens "Planned from the brief filed under key 169" — issue #169, filed by the Inspector, fetched by
l5-plan --briefand handed to the planner as the request. The loop story-096 built is now closed end to end: the Inspector files a brief to the tracker,l5-planreads it back whole, and a story comes out the other side.Notes for review
The one
unverifiednote is honest and not closable by machine. Whether the four documents state the rule in each document's own voice, rather than as near-paraphrases of one another, is judged by reading them. No scan produces that evidence.Naming convention, for continuity. This is the title-side counterpart to the slug convention adopted on 2026-09-07: a slug names the rule that holds after the fix rather than the defect, and now a title does too. Two open briefs were renamed by hand under that convention; this story makes it the standing rule for everything filed from here.
🤖 Generated with Claude Code
https://claude.ai/code/session_019WkxmJ5ArLEaC2RDPGkbRU