fix(guidance): stop pointing at a Ruflo reference file nothing deploys - #422
Merged
Merged
Conversation
The ruflo-reference block, rendered into ~/.claude/CLAUDE.md for every Claude session, told the agent to read ~/.config/ruflo/ruflo-reference-full.md. Nothing deploys that file, so the agent wasted a tool call or concluded the reference was unavailable. The block now names only `ruflo <cmd> --help`, `ak sync` and `ak status`. The full reference still ships as the source for a future on-demand skill, and its header now says it is not deployed. A guard test reads every claude/*.md template and fails if one names the retired ~/.config/ruflo/ folder, so shipped guidance cannot point at a path the kit does not create. Closes #307 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WAbqdRJ4kk8UsjrKxYeUCd
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.
Card: #307 (
A61-01) on the v4.0.0 board, milestone4.0.0-alpha.61, epic #294. It is prerequisite A, it blocks #320, and the plan isdocs/plans/2026-10-01-prereq-ruflo-reference-pointer.md.Summary
The managed
ruflo-referenceblock is rendered fromclaude/ruflo-reference.mdinto~/.claude/CLAUDE.mdfor every Claude session. It told the agent to read~/.config/ruflo/ruflo-reference-full.md, a file nothing deploys any more. Every machine set up with the npm kit had a dangling pointer, so the agent either wasted a tool call on a missing file or concluded the reference was unavailable.claude/ruflo-reference.md:ruflo <cmd> --helpfor commands and flags. Reconcile upgrades withak sync; inspect effective health withak status."claude/ruflo-reference-full.md: its header claimed a "Deployed copy" at that path. It now says the file is not deployed and ships as the source for a future on-demand skill. It names no repository-only path, becausedocs-layout.test.mjsrejects shipped guidance that does.uninstall.mjsthat deletes a shell-kit copy where one exists, and the retired dependency-constraint record that names the file.ak-rufloproject skill.The guard
tests/kit/shipped-guidance-paths.test.mjsreads everyclaude/*.mdtemplate and fails if one names the retired~/.config/ruflo/folder (or its%APPDATA%twin). A first test checks that the guard actually scans the templates and recognises the path it exists to catch, so it cannot pass by scanning nothing. I confirmed the second test fails on the old templates, naming exactlyruflo-reference-full.mdandruflo-reference.md.The card's wording, "a path that nothing deploys", is wider than this. The guard catches the one retired folder this bug came from, not every undeployed path in general. A general check would need a list of everything the kit deploys, which doesn't exist yet and arrives with the project-scope write gate.
Effect on existing machines
ak statusreports1 CLAUDE.md block(s) drifted: ruflo-reference→upserteduntil the nextak sync, the same path as any template change.ak syncreplaces the sentinel span in place and leaves text outside it untouched. The block gets slightly smaller, so it stays within its byte budget.Tests
lint:mdand eslint report nothing.pnpm test: 6,494 passed, 2 failed, 17 skipped. The two failures (process-tree,setup-memory-probe) fail identically on unmodifiedmainin a container that runs as root, and pass in CI.Closes #307
🤖 Generated with Claude Code
https://claude.ai/code/session_01WAbqdRJ4kk8UsjrKxYeUCd
Generated by Claude Code