Repository navigation
docs: the hot-plug migration guide — fuse to plug-and-play - #269
Merged
Merged
Conversation
Operator direction (2026-08-14): the compile-time fuse is deprecated; migrate to the ogar-vocab + hotplug.rs pattern, "akin to USB plug and play". This is the guide for doing that, written from the migration that has now landed. Covers: why a hand-maintained mirror plus a global equality assert is the OPPOSITE of plug-and-play; the incident that forced it (osm_street_node 0x0F0B minted with its mirror row in a second unopened PR -> E0080 at const-eval -> production deploy dead at COMPILE, for a concept it never used); the three roles (zero-dep socket / OGAR authority / consumer) and why the socket must stay dependency-free; the four migration steps; a table reading each ActivationDrift arm as an instruction rather than noise; and the verification recipe. Three generalisations are stated explicitly, because they outlive this one fuse: - it asserted a GLOBAL invariant for a LOCAL need — no consumer needs the whole codebook to agree, only the ids it uses; - it fired in the wrong place — the crate is workspace-EXCLUDED, so the fuse never gated the producer's CI, only every consumer's build; - it could only DETECT, in a repo that cannot resolve the mismatch. And two traps worth not re-deriving: a length check cannot see a WRONG id (counts still match), which is why MirrorDrift carries mirror_id: Option<u16>; and a mirror checker must be tested against a deliberately-wrong table, because with the real mirror there is by construction no disagreeing concept — such a test asserts only the happy path and passes with the checker deleted. Complements CONSUMER-MIGRATION-HOWTO.md (classid-first migration); this one is about how the two sides stay honest about each other. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMeiLmtDKhomJNSo2ecbJw
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_732da873-ec7d-4d18-9784-a6970a2153c7) |
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.
Docs only. The guide for the migration operator-directed on 2026-08-14 — "the compile-time fuse is deprecated and should be migrated to the ogar-vocab + hotplug.rs pattern", "akin to USB plug and play" — written from the migration that has now landed (lance-graph #954).
What it covers
osm_street_node(0x0F0B) minted with its mirror row in a second, unopened PR →E0080at const-eval → a production deploy dead at compile, for a concept it never used.HotPlugconst andactivatecall written out.ActivationDriftarm as an instruction, not noise — what it means and what to do.Three generalisations, stated because they outlive this one fuse
Two traps worth not re-deriving
COUNT_FUSEis blind.MirrorDriftcarriesmirror_id: Option<u16>so missing and wrong stay distinguishable.Scope
Complements
CONSUMER-MIGRATION-HOWTO.md, which covers classid-first migration; this one is about how the two sides stay honest about each other. No code, no codebook change.Generated by Claude Code