docs: keep only the traps in CLAUDE.md#95
Merged
Conversation
Known Ceilings had drifted into decision history. The self-update bullet and the No AppImage note describe mechanism that already lives in internal/appupdate and docs/chromium-shell.md, and no work breaks by not knowing either — so they were costing a prompt every session to say what the code says better. Both are gone. The Windows and macOS bullets kept what breaks code (cmd.exe as the shell, a GUI build with no console, unsigned binaries) and dropped the roadmap of what is missing, which is issue material. The release fan-out narrative restated release.yml job by job and became one sentence, keeping the one trap in it: the version is injected into nfpm.yaml, never hand-edited there. Two things were missing, and both do break work when unknown. docs/hooks is a contract-first spec whose other side ships in omartelo/lich-plugin, so changing an endpoint or a payload breaks a repo this one cannot see, and the handler gives no hint of that. And a user-facing change needs its CHANGELOG [Unreleased] entry in the same PR, because the release notes are read from there and an entry written later missed its release. The Stack bullet for the frontend was describing xterm and CodeMirror, which frontend/CLAUDE.md already does whenever that directory is touched; it now points there instead. The api-types.ts rule stayed on the root, deliberately: it breaks in the backend direction, where the nested file never loads. The section intro now states the criterion the bullets are held to, so the next one written there has a bar to clear.
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.
CLAUDE.mdis injected into every prompt, so anything in it that the code says better is a cost paid per session. This is a pass over the whole file with one question per line: what breaks if nobody knows this?Out
internal/appupdateanddocs/chromium-shell.md, and nothing breaks by not knowing it..dmg/Homebrew are issues, not ceilings. What breaks code stayed: cmd.exe as the shell, a GUI build with no console (so diagnostics only reach the log file), unsigned binaries.release.ymlsays it. One sentence now, keeping the trap: the version is injected intonfpm.yaml, never hand-edited there.frontend/CLAUDE.mdcovers it and loads whenever that directory is touched. The bullet points there now.In
docs/hooks/as a cross-repo contract. It declares itself contract-first, and the other side ships inomartelo/lich-plugin. Changing an endpoint or payload breaks a repo this one cannot see, and the handler gives no hint.[Unreleased], so an entry written later missed its release. The convention was already in the history, just not written down.The
api-types.tsrule stayed on the root on purpose: it breaks in the backend direction (touch a Go struct's JSON tags), andfrontend/CLAUDE.mdnever loads on that path.Test plan
Docs only — no code touched, so the gate has nothing to run. What was verified instead is that the file still matches the repo:
internal/terminal/cwd.go,internal/store,internal/singleton,frontend/src/lib/git/git-status-store.ts,frontend/src/lib/use-sortable-list.ts,internal/chromium,docs/hooks/).go 1.25.0, React 18,@xterm/xterm^6, the four providers ininternal/providers/providers.go,defaultListenPort = "47821"inmain.go.pnpm checkexit 0,pnpm test43 files / 406 tests green.Noted separately, not fixed here:
biome.jsonc:24still usesrecommended, deprecated and removed in the next Biome major — it warns on everypnpm check.