Add a context canary to the root CLAUDE.md - #18
Conversation
Address the user as "Daniel" at the start of every conversational response, so a missing address signals that CLAUDE.md has fallen out of context. Scoped to conversational responses only: never in file contents, commit messages, code, or gate artifacts — §5's findings file admits no line that is not a finding or the terminator, so a canary reaching into artifacts would produce malformed passes. Root CLAUDE.md only. AGENTS.md is untouched and nothing under plugins/ changes, so no version bump and no propagation into scaffolded templates. Gate B: skipped — behaviourally trivial. One prose subsection in this repo's own discipline file; it changes no hook, checker, skill, command or template, and ships nothing. Unprofiled story (none cited), judgement call per §5, authorized by the user in the request. Battery green: shellcheck (6 files), hook tests, invariant tests + check (123 assertions), version-bump tests + check (36 assertions), and `claude plugin validate . --strict` — all pass.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
📝 WalkthroughWalkthroughDaniel, CLAUDE.md adds a “Context Canary” section requiring conversational responses to address Daniel while excluding file contents, commits, code, and gate artifacts. ChangesContext Canary Instruction
Estimated code review effort: 1 (Trivial) | ~2 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryAdds a context-canary section to the root
Confidence Score: 5/5The PR appears safe to merge with no actionable issues identified. The documentation-only change clearly limits the canary to conversational responses and explicitly preserves the stricter formatting requirements for files, commits, code, and gate artifacts. Important Files Changed
Reviews (1): Last reviewed commit: "Add a context canary to the root CLAUDE...." | Re-trigger Greptile |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CLAUDE.md`:
- Around line 404-417: Remove the hardcoded “Daniel” requirement from the
reusable CLAUDE.md template, or replace it with a project-configurable user
name. Update the “Context Canary” guidance and its related explanation so
initialized projects do not address every user as Daniel, while preserving the
conversational-only scope.
- Around line 404-417: Run the mandatory Gate B review for the CLAUDE.md change,
treating it as product code despite its Markdown format. Remove or correct the
PR objective’s rationale claiming Gate B was skipped, and ensure the review
follows the required Gate B procedure.
- Around line 413-416: Update the canary scope statement in CLAUDE.md to
explicitly exclude machine-readable review artifacts alongside gate artifacts,
ensuring review output is never prefixed or modified and its required markers
and parsing format remain unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
| ## 6. Context Canary | ||
|
|
||
| Begin every response to the user by addressing him as "Daniel." | ||
|
|
||
| **Why:** it is a context canary. These guidelines are only in force while this file is in | ||
| context, and nothing signals when it falls out. The address is a per-response marker: if | ||
| it disappears, CLAUDE.md is gone from context and the user knows to reload rather than | ||
| discovering it through work that quietly stopped following §1–§5. | ||
|
|
||
| **Scope: conversational responses only.** Never in file contents, commit messages, code, | ||
| or gate artifacts. §5's findings file admits no line that is not a finding line or the | ||
| terminator, and its reply is exactly one line per branch — a greeting there is a malformed | ||
| pass, so a canary that reached into artifacts would break the protocol it sits beside. | ||
|
|
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Do not hardcode Daniel in a reusable CLAUDE.md template.
MANIFEST.md and plugins/dev-workflow/commands/workflow-init.md identify this file as scaffolded project content, so initialized projects may apply this rule to users who are not Daniel. Make the name project-configurable or keep this canary out of the shared template.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CLAUDE.md` around lines 404 - 417, Remove the hardcoded “Daniel” requirement
from the reusable CLAUDE.md template, or replace it with a project-configurable
user name. Update the “Context Canary” guidance and its related explanation so
initialized projects do not address every user as Daniel, while preserving the
conversational-only scope.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
Run the mandatory Gate B review for this change.
The supplied guidelines classify CLAUDE.md as product code requiring full Gate B review even when it is Markdown. The PR objective’s “Gate B was skipped” rationale contradicts that requirement.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CLAUDE.md` around lines 404 - 417, Run the mandatory Gate B review for the
CLAUDE.md change, treating it as product code despite its Markdown format.
Remove or correct the PR objective’s rationale claiming Gate B was skipped, and
ensure the review follows the required Gate B procedure.
Source: Coding guidelines
| **Scope: conversational responses only.** Never in file contents, commit messages, code, | ||
| or gate artifacts. §5's findings file admits no line that is not a finding line or the | ||
| terminator, and its reply is exactly one line per branch — a greeting there is a malformed | ||
| pass, so a canary that reached into artifacts would break the protocol it sits beside. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Exclude review artifacts from the canary scope.
The scope excludes gate artifacts but not machine-readable review artifacts. Prefixing review output with “Daniel” can violate the review protocol’s required markers and parsing format. Add review artifacts explicitly to the exclusions.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CLAUDE.md` around lines 413 - 416, Update the canary scope statement in
CLAUDE.md to explicitly exclude machine-readable review artifacts alongside gate
artifacts, ensuring review output is never prefixed or modified and its required
markers and parsing format remain unchanged.
Source: Learnings
|
Dispositions for the three CodeRabbit findings (head 1. "Do not hardcode Daniel in a reusable The claim rests on What is real: root and template are near-duplicates maintained by hand, and a future parity sync reading root as the source could carry §6 across. That is a drift risk in 2. "Run the mandatory Gate B review" — dismissed, with the rule quoted correctly. CodeRabbit is right that §5 classifies 3. "Exclude review artifacts from the canary scope" — dismissed as already covered. The scope reads "never in file contents, commit messages, code, or gate artifacts". Review artifacts under |
The count rule carried two facts fused into one sentence. They separate: 1. The per-head count is the arbiter of whether a head was reviewed — unchanged, and the diagnostic for any bot. Routing a bot opportunistically does not make its review record less readable or the answer less true. 2. "Merge only on an explicit recorded human decision" binds only bots under Wait for. An absent review from an opportunistic bot blocks nothing and needs no exception: every head reaching a PR has already passed Gate B, the workflow's actual cross-model review, and the PR bots are a supplementary third instance. Requiring a recorded exception whenever a supplementary reviewer stayed quiet would reimpose as ceremony the blocking that opportunistic routing removed. The clause is dormant, not retired — Wait for is empty, so nothing triggers it; promote a bot back and it reactivates unchanged for that bot. The #12–#18 history and the #14 precedent stay as the record of when it was live: a real requirement under the routing of its time. Four sentences elsewhere attached a merge consequence to a `0` and are corrected to state the routing dependency: the scope paragraph above the completion-signal list, the "decides whether you may merge" bullet, "`0` means do not merge", and the "run it on every merge" lead-in to the query. Gate B: N/A — the only staged path is explanatory documentation (docs/pr-review-bots.md) per §5's prose rule. Battery green: shellcheck (6 files), hook tests, invariant tests + check (123 assertions), version-bump tests + check (36 assertions), `claude plugin validate . --strict`.
Docs-only, two files, no plugin path — no version bump. CodeRabbit leaves Wait for after five consecutive unreviewed heads (#12, #13, #15, #16, #17 — the last with zero review records on the PR) followed by a genuine review on #18. Real findings source, unpredictable delivery, and a completion signal that fires regardless of whether a review happened: the opportunistic category by this file's own definition. Wait for is now empty. Row additions: the status check goes green whether or not a review happened, and `@coderabbitai review` is a no-op while automatic reviews are active (CodeRabbit's own message on #17), which retroactively explains #14's "re-trigger produced nothing". Plan corrected to Free; "Pro Plus" was observed on PR #1 only. The count rule's two facts separated: the per-head count remains the arbiter of whether a head was reviewed, for any bot; the recorded-human-decision requirement binds only bots under Wait for, and is dormant while that list is empty. Every head reaching a PR has already passed Gate B, so a quiet supplementary reviewer needs no exception. MANIFEST.md: the bare `CLAUDE.md` row resolved to the repo root and produced a false Major on #18. Qualified to source-files/CLAUDE.md, with the three files distinguished, and root §6 (context canary) recorded as deliberately outside the §1–§5 template range and never to be synced into the scaffolded template. Pre-merge diagnostic: per-head count 1 on head 2634bf2 — reviewed. One Minor finding (drop or explicitly optionalize the re-trigger step) collected, not actioned, per §5's Minor/Nit rule. Gate B: N/A — every path is explanatory documentation per §5's prose rule. Battery green at each commit.
Adds §6 to the repo-root
CLAUDE.md: begin every conversational response by addressing the user as "Daniel."Why it's there, stated in the rule itself: it's a context canary. The guidelines only bind while the file is in context, and nothing signals when it drops out. A per-response marker makes that visible — if the address disappears, the user reloads instead of discovering the loss through work that quietly stopped following §1–§5.
Scope is explicit and narrow: conversational responses only — never file contents, commit messages, code, or gate artifacts. §5's findings file admits no line that isn't a finding line or the terminator, and its reply is one line per branch; a greeting there is a malformed pass. The rule says so, so it can't be read as contradicting the protocol it sits beside.
Blast radius: root
CLAUDE.mdonly — 14 lines added, one file.AGENTS.mduntouched, nothing underplugins/, so no version bump and no propagation into/workflow-init's templates.Gate B: skipped as behaviourally trivial (unprofiled, judgement call, authorized in the request); reason and battery result recorded in the commit body. Battery green — shellcheck (6 files), hook tests, invariant tests + check (123 assertions), version-bump tests + check (36 assertions),
claude plugin validate . --strict.Summary by CodeRabbit