Conversation
Crush's project registry has used a ProjectList wrapper since it was introduced, so loadRegistry parsed a real registry as zero entries and reported no usage. Accept the wrapper alongside the array and keyed-object shapes the parser already handles, and correct the registry-format description in the provider docs.
ozymandiashh
approved these changes
Sep 22, 2026
ozymandiashh
left a comment
Collaborator
There was a problem hiding this comment.
Verified the diff: accepts the {"projects":[...]} registry shape while keeping the array and keyed-object forms working. Tests cover all three shapes. LGTM.
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.
Summary
loadRegistrydoesn't recognize Crush's{"projects": [...]}registry wrapper, so a standard upstream Crush registry resolves to zero projects and reports no usagedocs/providers/crush.mdDetail
loadRegistryaccepts a top-level array, or for any other object falls back toObject.values(parsed). On the wrapper that yields a single element — the arrayitself — which fails the per-entry
path/data_dircheck. Zero databases arediscovered and
overviewreports "No usage found" for standard upstream Crushregistries.
doctordoes not surface this:probeRoots(#903) confirmsprojects.jsonexists without parsing it, so Crush reports healthy while
overviewreturnsnothing.
Crush's centralized project registry has used this wrapper since the feature was
introduced:
4b86d090(Dec 15 2025)v0.95.0and on mainI could not find any committed Crush version that writes a bare array or a keyed
object. The provider docs currently say:
Current upstream Crush and tokscale's committed Crush fixtures use the wrapper.
This PR corrects that sentence but keeps both existing branches, since removing
them is a separate decision.
Testing / Verification
npm testpassesnpm run buildsucceedsCrush
v0.95.0, CodeBurn0.9.24, macOS. Same machine, same registry, samedatabases; only the parser differs.
Three tests added, one per accepted registry shape, each asserting the resolved
session.
npm teston this branch: 4427 passed, 5 skipped. Onmain: 4425passed, 5 skipped.
tsc --noEmitclean on both.