Make the runbook's commands paste-safe - #518
Merged
Merged
Conversation
OPERATIONS.md used <owner>/<repo> style placeholders inside shell snippets. A POSIX shell parses < as input redirection, so pasting one is a syntax error, in a file whose entire purpose is being pasted: $ repo-config/configure.sh check <owner>/<repo> bash: syntax error near unexpected token `newline' STANDUP.md already writes the same command as [owner/repo] [release|operational], so the runbook was also the odd one out. All eight placeholders across six shell blocks now use the bracket form, and every block was verified to parse with bash -n rather than by eye. That check caught <RepoName>, which a lowercase-only grep had missed. Two of the eight were reported by Copilot on #517, one as an inline comment and one suppressed. The other six were found by looking for the whole class. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Updates OPERATIONS.md runbook examples to use paste-safe placeholder syntax (square brackets) instead of HTML-escaped angle brackets, so copied commands no longer trigger shell redirection parsing errors. This aligns the operations runbook with the repository’s existing placeholder convention and supports the develop-first promotion workflow described in the PR metadata.
Changes:
- Replaced
<...>/<...>placeholders with[...]across runbook command examples (prose lint, audit, configure, branch recovery,gh run, andgh api). - Ensured all updated shell snippets remain syntactically valid when pasted.
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Fixes the two placeholder findings Copilot raised on the promotion #517, plus the six more of the same class.
This has to land on
developfirst: #517's head isdevelop, anddevelopcarries apull_requestrule, so the promotion cannot be fixed in place.The defect
OPERATIONS.mdwrote shell placeholders as<owner>/<repo>. A POSIX shell parses<as input redirection, so pasting one is a syntax error, in a file whose entire purpose is being pasted:The bracket form pastes cleanly, and
STANDUP.mdalready writes the same command that way:So the runbook was both unpastable and the odd one out against the repo's own convention.
Scope: eight, not two
Copilot reported two, one inline and one suppressed. Looking for the whole class found eight across six shell blocks: the
prose_lint.pyinvocation, bothconfigure.shlines, the branch-recoverygit push, bothgh runexamples, thegh apibase-retarget, and twospec/audit.pycalls.Verified by parsing, not by eye
Every
shblock was run throughbash -n:That check earned its place. A first pass grepping
<[a-z|-]*>reported zero remaining and the parse test still failed block 3, because<RepoName>is uppercase and the pattern was lowercase-only. Checking the property directly caught what checking a proxy for it missed.Verification
Once this merges, #517 picks it up automatically, since its head is
develop.🤖 Generated with Claude Code