docs: keep planning documents out of version control by default - #28
Merged
Merged
Conversation
The v0.1.2 guidance told projects to commit their planning documents. Plans are development artifacts: they are written for the session that continues the work, they go stale the moment the design moves, and a repository that tracks them accumulates a parallel history nobody reads. The default is now the other way round, with the two recommended .gitignore lines stated where a reader is deciding: the agent workflow reference, and the standards template. The shared standards file is called out as the deliberate exception. `.structured-coding/standards.md` is project configuration, and whether Git tracks it is precisely what standards.py reads to decide whether a declared command needs approval. Ignoring the directory wholesale would turn every team standard into a personal one and silently drop that approval requirement, so the guidance splits the directory rather than ignoring it. The cost of keeping plans local is stated rather than hidden: a teammate cannot read them from a fresh clone, while a later session on the same machine still finds them. Projects for which that tradeoff runs the other way are told to commit them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Merged
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.
What this corrects
v0.1.2 moved planning documents to
.structured-coding/plans/<effort>/and told projects to commit them. That last part was wrong. Plans are development artifacts: written for the session that continues the work, stale as soon as the design moves. The default is now to leave them out of version control, with the two recommended lines stated where the reader is actually deciding.Why the directory is split rather than ignored
.structured-coding/standards.mdstays in version control, deliberately.standards.pyreadsgit ls-filesto decide trust: a tracked standards file is the team's, so a command it declares needs an operator approval recorded outside the working tree; an untracked one is personal, so authoring it is the approval.Ignoring the whole directory would therefore do two things, the second worse than the first:
So the guidance splits the directory: plans and the personal overlay are ignored, the shared standards file is not.
Files
structured-coding/references/agent-workflow.mdand its Chinese mirror — the default flipped, the two lines, the exception, and the honest cost (a teammate cannot read plans from a fresh clone; a later session on the same machine still can). Projects for which that tradeoff runs the other way are told to commit them.structured-coding/standards-template.md— the table already said the personal file is "not committed"; it now says how, once, next to the note that this file is the opposite.Validation
python3 scripts/build_human_docs.py --checkPASSpython3 scripts/build_packages.py --checkPASS (codex 23 files, claude-code 22)translations.jsonmirror hashes refreshed for the changed pair;specification_sha256untouched, as no specification file changedpython3 -m unittest discover -s scripts -p 'test_*.py'—Ran 168 tests ... OK (skipped=1)No runtime change:
standards.pybehaviour is identical, and nothing here is enforced. It is guidance a reader can ignore.🤖 Generated with Claude Code