docs: salvage the canon PR #140 wrote into the skills - #142
Merged
Conversation
#140 was opened this morning against 16ae37c and slims CLAUDE.md by moving depth into the three project skills. It conflicts now, and much of what it moved has since arrived by other routes — the outlook work carried its own skill sections, and #141 relocated the SQLite PRAGMA and write-lock depth. What did not arrive is canon written nowhere else, so it is taken here verbatim rather than paraphrased. beacon-collection gains the source kind and options JSON column, the cmd/doctor operator umbrella, and the reason the Telegram bot bypasses the proxy in code rather than by configuration: it is the channel that reports collection failures, so it must not share a failure mode with what it reports on. beacon-http-api gains the HMAC key/message order, which is the way round that is easy to invert; the --api-dsn rationale; and the PublicError contract with the three assertions a controller error test owes. beacon-storage gains the repository pattern, the source-deletion cascade and deploy-time schema reconciliation. All four descriptions are replaced by #140's, whose load triggers are strictly wider. CLAUDE.md is thinned only where that depth moved, and every tripwire stays: the inner-mux bypass, the batching, the cascade warning and the three-assertion rule keep their sentence. 19330 to 17823. #140's own restructuring of CLAUDE.md into Architecture / Tripwires / Configuration is not taken. It is a larger editorial change than this, the file is already under budget, and it should be its own decision rather than a side effect of salvage. Nothing was dropped: all 210 backticked spans and 15 figures in the previous CLAUDE.md still appear in it or in a skill. Refs: #140 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U6jNuzK5PZrhDWBxB3t2gY
prorochestvo
added a commit
that referenced
this pull request
Aug 30, 2026
Collapse the 149-commit alpha history into one snapshot. The tree of this commit is byte-identical to the previous tip, ecbe753, so no source, migration or configuration changed; only the history did. This commit has no parent, so main is no longer an ancestor of alpha. main is deliberately left where it was, at r_0.0.2, and continues to serve as the production pointer until the next non-prerelease release moves it onto this history. The alternative, rebuilding alpha on top of main, was rejected because it leaves alpha at 55 commits rather than one. The prior history remains reachable through the release tags r_0.0.1, r_0.0.2 and r_0.0.3-alpha.24, and in full through main. Five superseded alpha prerelease tags that existed only in the local clone were deleted; the three tags above are the complete set on the remote. Every merged branch was verified absorbed before deletion: thirteen by squash merge, feat/4-hot-archive-split as a plain ancestor, and chore/68-adopt-golangci-lint as an ancestor of the merged PR #80. The one branch whose pull request was closed rather than merged, docs/slim-claude-md, had its canon salvaged into the project skills by PR #142; the four documentation references unique to it carry no code. Makefile VERSION derives from git describe --match 'r_*'. No tag is reachable from this root, so it falls back to the short commit hash until the next r_* tag is cut, at which point it resolves normally again. BREAKING CHANGE: the alpha history is rewritten and force-pushed. Existing clones cannot reconcile this by pulling and must reset to the new alpha ref. To reverse this, restore alpha to ecbe753, which is preserved in the reflog and in a full bundle of every pre-rewrite ref. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nz77JABRj78e92q1sRPuyF
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.
#140 was opened this morning against
16ae37cand slimsCLAUDE.mdby moving depth into thethree project skills. It conflicts now — in
CLAUDE.mdandbeacon-storage— and theconflicts are mine: it merged clean against
alphabefore today's outlook, #139 and #141landed on the same files. That was a preflight I did not run.
Much of what it moved has since arrived by other routes: the outlook work carried its own
skill sections, and #141 relocated the SQLite PRAGMA and write-lock depth. What did not
arrive is canon written nowhere else. Taken here verbatim rather than paraphrased, because it
is someone else's writing and it is better than a restatement would be.
Salvaged
beacon-collection— the sourcekindand theoptionsJSON column; thecmd/doctoroperator umbrella; and the reason the Telegram bot bypasses the proxy in code rather than by
configuration: it is the channel that reports collection failures, so it must not share a
failure mode with the thing it reports on. That "why" existed nowhere.
beacon-http-api— the HMAC scheme, spelling out that the literal"WebAppData"is thekey and the bot token is the message, which is the way round that is easy to invert; the
--api-dsnrationale (it travels with the deployment, not with the secrets file); and thewhole
PublicErrorcontract with the three assertions every controller error test owes.beacon-storage— the repository pattern, the source-deletion cascade, and deploy-timeschema reconciliation.
All four skill
descriptionblocks are replaced by #140's, whose load triggers are strictlywider —
proxyutil,domain.RateSourceOptions,BEACON_CHROMIUM_PATH,internal/tools/tgwebapp/initdata.go,internal.PublicError,RequireMigratedSchema,stubSQLiteDBThroughand more. A skill that does not load is knowledge that is lost, so thisis the half of #140 with the longest reach.
CLAUDE.md
Thinned only where that depth moved, 19330 → 17823. Every tripwire keeps its sentence:
the inner-mux bypass, the batching, the cascade warning, the three-assertion rule.
Not taken: #140's restructuring of
CLAUDE.mdinto## Architecture/## Tripwires/## Configuration(12054 chars). It is a larger editorial change than a salvage, the fileis already 2177 under its budget, and it deserves to be its own decision rather than a side
effect. The branch stays, so it can be revisited.
Nothing dropped
scripts/lint-checks.shandgo vetclean. Docs only — no Go changed.Refs #140