Repository navigation
Fall back to master for the base branch; pass decision bodies through a quoted heredoc (DL-090, DL-091) - #105
Merged
Merged
Conversation
docs/releasing.md now lists everything semver covers from 1.0.0: decision records, annotations, the config schema, the setup and CI commands and the Decision-Edit trailer, skill names, distribution channels and file names, and the Node support policy; the README points to it and the record format spec says unknown frontmatter fields are kept and ignored. Node 20 is end-of-life, so engines, the build target, @types/node, the CI matrix (22, 24) and every compatibility line move to Node 22. package-lock.json catches up with @changesets/cli. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
Add the installed layout and rule-block markers, the --agent names, the skill and dld-common names, every install channel, PRACTICES.md and the config location to the contract, and the section headings the CLI reads. Reserve the x- prefix for projects' own frontmatter fields and config keys, and stop warning about x- config keys. Test Node 26, now active LTS. Skills that edit frontmatter by hand keep unknown fields, and the 0.x upgrade guide states the Node requirement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
…' into claude/review-settings
…e/review-settings # Conflicts: # skills/dld-snapshot/SKILL.md # templates/skills/dld-snapshot/SKILL.md
…087 to DL-089) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
…7 to DL-089) dld.local.yaml holds one developer's review settings for a checkout, over dld.config.yaml; it accepts only the review keys and x- keys, and init and update add it to .gitignore. review_model, implement_review_model and plan_review_model pick the reviewers' model, and plan_review adds a review subagent to /dld-plan. The new internal command review-settings resolves them for the implement and plan skills. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
Warn when dld.local.yaml is committed, respect a deliberate !dld.local.yaml rule, reject multi-line or padded model names, document `default` as the reset, drop the unused Config.implementReview, keep the developer's global git excludes out of the test fixture, and complete the skills' report lines and plan-review placeholders. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
… a heredoc (DL-090, DL-091) resolve-base tries origin/master and master after main, and list-proposed lists every proposed decision as unknown, with a warning, when no base branch is found. The decide, plan and retrofit skills pass the body to create-decision through a quoted heredoc instead of printf, so backticks, $ and % are recorded as written; the generator rejects a template that pipes printf into create-decision. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
A configured base_branch that doesn't resolve fails list-proposed, like --base. The generator now checks every create-decision --body-stdin command in a code block, across continued lines: no pipe into it, and a quoted heredoc. The skills single-quote titles and tags and say where the closing delimiter goes, the reindex skill and resolve-base's docs give the new order, /dld-implement says what to do if list-proposed fails, and the records and tests cover the remaining cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
Contributor
Unit test coverage
Changes are relative to Per file
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG
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.
#101 to #104 are now on main, and main has been merged into this branch (
4cc34e9). The diff shows only this PR's work.The end-to-end run for #104 turned up two problems that are already on main. This PR fixes both before rc.6.
DL-090:
masterrepositories (amends DL-071, DL-076)Problem: the base-branch lookup only tried
origin/HEAD,origin/mainandmain. So in a repo whose main branch ismaster, with no remote,check-decision-editsgave no protection, andlist-proposedexited 1 without listing anything.Fix:
origin/master, thenmaster, aftermain. A repo that has both still resolves tomain.--base, when no base resolves,list-proposedlists every proposed decision asunknown, warns, and exits 0.--baseor frombase_branch./dld-implementshows theunknownlines with none selected. Iflist-proposedfails for another reason, it reads the records directly.resolve-basehelp, the reindex skill and the configuration spec now describe the new order.DL-091: decision bodies through a quoted heredoc
Problem:
/dld-decide,/dld-planand/dld-retrofitpiped the body throughprintf "...". In double quotes the shell ran anything in backticks or$(...)as a command, andprintfmangled%. Decision bodies very often contain code in backticks.Fix:
create-decision ... --body-stdin <<'DLD_BODY'with real newlines. Titles and tags are single-quoted, and the skills say where the closing delimiter goes.create-decision --body-stdincommand that has something piped into it or doesn't use a quoted heredoc. Backslash-continued lines are joined first, and prose mentions aren't checked.OVERVIEW.mdnow covers DL-090 and DL-091.Testing
check:generatedpass.masterrepo:resolve-basefindsmaster.masteris caught (exit 3).mainnormaster,list-proposedlists the decision asunknownand warns.$subtotal,$(whoami),%s,%%and a literal\nwas recorded byte for byte, with nothing executed.Changeset:
patch.🤖 Generated with Claude Code
https://claude.ai/code/session_01GmUuswDi3BJNN76DyoJHCG