Skip to content

docs(keel): name the heredoc evasion in "What keel does not do" - #42

Merged
submtd merged 1 commit into
mainfrom
feature/keel-name-heredoc-evasion
Jul 23, 2026
Merged

docs(keel): name the heredoc evasion in "What keel does not do"#42
submtd merged 1 commit into
mainfrom
feature/keel-name-heredoc-evasion

Conversation

@submtd

@submtd submtd commented Jul 23, 2026

Copy link
Copy Markdown
Owner

A one-clause honesty polish to keel's central "Advisory, not enforced" documentation.

The "What keel does not do" section already listed $() command substitution among the shell constructs the advisory guard deliberately does not inspect — but it never named the specific gh pr create wrapped in a heredoc'd $(cat <<'EOF' … EOF), which is the exact form that opened keel's own first PR past the guard. A reader debugging "why wasn't my heredoc'd command classified?" wouldn't necessarily map that to "$()". Naming it makes the deliberate boundary legible.

This is the design working, not failing — the guard is advisory by design (it catches honest mistakes ~30s before CI), and the real gates are server-side (branch protection + required checks + the changelog gate). Hardening the parser to chase such evasions was explicitly declined: it risks fabricating an action from quoted text, the class of a prior real bug.

Documentation only; no behavior change. Closes out the second of two long-standing keel dogfooding findings (the first — trunk prefix strictness — shipped back in v0.1.1).

🤖 Generated with Claude Code

The un-inspected-constructs list already covered $() command substitution
but never named the specific `gh pr create` in a heredoc'd $(cat <<'EOF'…EOF)
-- the exact form that opened keel's own first PR past the advisory guard.
Naming it makes the deliberate boundary legible. Documentation only; the guard
is advisory by design and the real gates are server-side.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0119qj5F9NnGhQCxHehLy99E

@submtd submtd left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review (author) — satisfies keel's reviewPolicy: review gate.

One-clause documentation change to the 'What keel does not do' section, naming the heredoc-in-$() form that evaded keel's own first PR. Verified: the change is confined to README.md (the doc clause) and CHANGELOG.md (an accurate Unreleased Changed note); no code, no behavior change; the guard remains advisory by design with server-side gates as the real boundary. Suite 1441 passing. This closes the second of two long-standing keel dogfooding findings (finding 1 shipped in v0.1.1).

Ready to land.

@submtd
submtd merged commit bb3ae57 into main Jul 23, 2026
4 checks passed
@submtd
submtd deleted the feature/keel-name-heredoc-evasion branch July 23, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant