fix(build,validate,doctor): run the Claude host validator and --plugin-dir load check; doctor reads enabled (AB7327) (#475, #476) - #504
Merged
Conversation
🦋 Changeset detectedLatest commit: fe1d855 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
commit: |
ScriptedAlchemy
deleted the
fix/claude-host-validator-in-doctor-build
branch
September 4, 2026 01:58
This was referenced Sep 4, 2026
ScriptedAlchemy
added a commit
that referenced
this pull request
Sep 4, 2026
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.
Fixes #475, Fixes #476
What changes
buildruns the Claude host validator (#476).agent-bundle buildnow runs the same Claude Code checks asvalidate --artifactover every builtclaudeandplugintarget:--host-validation(default on),--no-host-validation,--strict. Findings keepAB6019–AB6022. WithoutclaudeonPATHthe build spawns exactly once, reports one informationalAB6019, and marks the remaining Claude targetsunavailablewithout another spawn. Programmaticbuild()never runs it unlesshostValidation: trueis passed (dev/eval/temporary artifacts stay fast). The JSON document carrieshostValidation[].Load check in the shared runner (#479 follow-up).
claude plugin validate --strictaccepts manifests Claude then refuses to load (verified 2.1.250–2.1.260: invalidmonitors/monitors.json, auto-loadedhookspointer, …).validateClaudePluginnow follows the two validation runs withclaude --plugin-dir <dir> plugin list --jsonand reads the bundle's<name>@inlinerow:load.statusloadedrefused(row carrieserrors[], quoted verbatim)AB7325error — a warning when every entry isDependency "…" is not installed(that describes the validating machine, not the artifact;--strictpromotes it)unregistered(no row)AB7311failed(listing unreadable)AB6022This applies to both
buildandvalidate --artifactbehind the existing--host-validationflag. Skipped when the bundle has no readableplugin.jsonname;loadCheck: falseopts out (Doctor uses it — its registration proof and inventoryerrors[]from #479 already hold the verdict).doctor --host claude(#476). Runs the validator over the--frombundle and every installed copy Claude lists (findings prefixedBundle at …/Installed copy at … (scope …), one--versionprobe per host via the newversionoption), and reads each row'senabled: an installed-but-disabled copy isstate: 'disabled', the comparison carriesenabled: falsenext to its content verdict, and a newAB7327warning names the exactclaude plugin enable <name>@<marketplace> [--scope …]command (reinstalling does not enable).#482tookAB7326while this was in flight, henceAB7327. Workbench discovery gained thedisabledstate (Zod schema + presentation).Native proofs validate in plugin mode (#475).
host-adapters.native.test.tsandpacked-native-smoke.tsgo through the shared runner (plugin.json→marketplace.json→ load check) instead ofclaude plugin validate <dir>(marketplace mode). Re-recorded on Claude Code 2.1.250 (CI pin) and 2.1.260: the symlinked-skill case now asserts the documented plugin-mode warning (plugin-marketplaces-0.md→ "Validate a plugin or a directory without a manifest" → "Check files behind symlinks":directory: 1 entry here is a symlink and was not read,--strict→ exit 1) and proves the marketplace run never reports it; the monitors case records that validation passes but the load check refuses (AB7325); the dependencies case records the machine-boundAB7325warning.native-claude-contract.tshad nothing left to change.Docs
docs/diagnostics.md(host-validation section now coversbuild/doctor, the load check,AB7311/AB7325there, newAB7327section citing plugins-reference "plugin enable"/"plugin disable"/"Default enablement"); en+zhguide/distribution/validation.mdx,guide/distribution/installation.mdx,reference/cli.mdx. Also adds thedetailtable headerwebsite/plugins/generated-reference.ts(#490) references but never defined — main's Docs workflow is red on it; without this the docs gate cannot pass here.Tests
claude-plugin-validation.test.ts: load check call order/report shape,AB7325refused, dependency warning +--strict,AB7311,AB6022(nonzero / not JSON / not array), opt-out and nameless-manifest skip.api.test.ts:buildruns validate+load only when asked,--strict,AB7325from a refused load, singleAB6019+ single spawn with claude absent.cli.test.ts:buildflag policy and human output.doctor.test.ts:AB7327disabled copy, validator over bundle + installed copy with one probe and no second listing; existing expectations updated forenabledand the validate calls.pnpm typecheck(clean afterpnpm build),pnpm lint,pnpm test:unit(3113 passed), targeted integration suites (api, cli, cli-routes-build, artifact-validator, packed-consumer, claude-plugin-validate-acceptance, host-install-proof — 180 passed),test:host-install,test:host-install:packed,test:packed:nativewith the pinned Claude 2.1.250, native host-adapter proofs on 2.1.250 and 2.1.260 (the only failures are pre-existing and untouched: the2.1.257help pin and a 2.1.250 marketplace source-constraint wording),pnpm docs:site:build.Review status
Codex review completed on
e9ec043with no findings (no review threads). Headfe1d855differs only by the changeset's(#504)PR reference and is unreviewed; merging on green CI per the reviewer-fallback rule (no PR comments are posted from this worker).