Remove ogar-blockly: a palette belongs to its consumer, not the substrate - #260
Merged
Merged
Conversation
…rate blockly-rs now declares its own palette at 0x1717 and plugs it into ogar_loco::registry::VocabularyRegistry at boot (blockly-rs b7ee0a4), so the OGAR-side crate had nothing left to own: a concept id, an empty Vocabulary impl, and a plug helper the consumer can write itself. Healthcare is the precedent that settles what stays. medcare-rs is a private consumer, yet its concepts (0x09XX) are minted in the canon codebook and healthcare_actions registers unconditionally in domain_tables() -- activation is Cargo presence of the consumer, never a feature that switches the codebook on. That works because those concepts are SHARED: RBAC and ontology both key on the canon half, and the consumer pulls addresses it does not own. A palette is the opposite shape. Which bytes above ogar-loco's shared floor mean what is one frontend's private reading of a stored body -- not ontology, not RBAC-relevant, nothing another consumer resolves against. It routes through VocabularyRegistry, keyed by a consumer-declared slot, with ConceptTaken as the uniqueness enforcement. So the `blocks` Cargo feature and its activated-concept seam (activated_concepts / activated_concept_id / the or_else arm in derive_action_rows / resolve_concept_row's second lookup) were a second activation mechanism built for a case the registry already served -- and it made the substrate name a consumer crate in another repository (BLOCKS_EXPECTED_EXECUTORS = ["blockly-abi"]). Removed entirely; there is one codebook and no feature adds to it. What replaces the OFF-half gate: two always-compiled tests asserting the canon carries no 0x17XX row (the count the lance-graph fuse pins stays 90) and that a palette classid does not resolve as a hot-plug in any build, while canonical_concept_domain(0x1717) still routes on the reserved byte. Both run under `cargo test --workspace`, so the CI step that forced `--no-default-features` to reach a cfg-gated module is gone with the feature. ogar-ro's cross-crate test no longer borrows a frontend's vocabulary -- it plugs a local StubPalette at 0x1718 -- and the ogar-loco / ogar-ro docs name blockly-rs where they named the deleted crate. cargo test --workspace: 78 test targets, 0 failures. clippy clean.
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_bd79662e-0c44-4bd1-8a1c-9d63026568a3) |
AdaWorldAPI
marked this pull request as ready for review
August 7, 2026 20:01
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.
Removes
ogar-blockly. blockly-rs declares its own palette at0x1717and plugs it intoogar_loco::registry::VocabularyRegistryat boot (blockly-rsb7ee0a4), so the OGAR-side crate had nothing left to own — a concept id, an emptyVocabularyimpl, and a plug helper the consumer can write itself.Why healthcare is the deciding comparison
medcare-rsis a private consumer, yet its concepts (0x09XX) are minted in the canon codebook andhealthcare_actionsregisters unconditionally indomain_tables(). Activation is Cargo presence of the consumer (lance-graph-ogar's rule), never a feature that switches the codebook on. That works because those concepts are shared: RBAC and ontology both key on the canon half, and the consumer pulls addresses it does not own.A palette is the opposite shape. Which bytes above
ogar-loco's shared floor mean what is one frontend's private reading of a stored body — not ontology, not RBAC-relevant, nothing another consumer resolves against. It routes throughVocabularyRegistry, keyed by a consumer-declared slot, withConceptTakenas the uniqueness enforcement.So there are two shapes, and the
blocksCargo feature was a third mechanism invented for a case the second already served — while making the substrate name a consumer crate in another repository (BLOCKS_EXPECTED_EXECUTORS = ["blockly-abi"]).DomainTable+resolve_hotplug0x09XX, medcare-rs)VocabularyRegistry::plug0x1717, blockly-rs)Removed
crates/ogar-blockly/andogar-vocab/src/blocks_actions.rsblocksCargo feature and its activated-concept seam:activated_concepts,activated_concept_id, theor_elsearm inderive_action_rows,resolve_concept_row's second lookup, the feature-gatedDomainTableWhat replaces the OFF-half gate
Two always-compiled tests: the canon carries no
0x17XXrow (the count the lance-graph fuse pins stays 90), and a palette classid does not resolve as a hot-plug in any build — whilecanonical_concept_domain(0x1717)still routes on the reserved byte. Both run undercargo test --workspace, so the CI step that forced--no-default-featuresto reach acfg-gated module is gone with the feature it guarded.ogar-ro's cross-crate test no longer borrows a frontend's vocabulary — it plugs a localStubPaletteat0x1718.ogar-loco/ogar-rodocs name blockly-rs where they named the deleted crate.Verification
cargo test --workspace— 78 test targets, 0 failures.cargo clippy --workspace --all-targetsclean.cargo fmtscoped per-crate.Generated by Claude Code