fix(plugins): skip broken web provider factories#88936
Conversation
|
Codex review: found issues before merge. Reviewed June 29, 2026, 6:03 PM ET / 22:03 UTC. Summary PR surface: Source -9, Tests +20. Total +11 across 2 files. Reproducibility: yes. Current main and v2026.6.10 throw for an all-failing selected bundled web-provider factory, while PR head changes that same source path to return an empty provider list. Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Keep healthy sibling-provider isolation, but preserve an observable all-failing provider path through a thrown error, diagnostic-backed failure result, or explicit maintainer-approved policy applied consistently across public-artifact loaders. Do we have a high-confidence way to reproduce the issue? Yes. Current main and v2026.6.10 throw for an all-failing selected bundled web-provider factory, while PR head changes that same source path to return an empty provider list. Is this the best way to solve the issue? No, not as written. Sibling-provider isolation is a plausible bug fix, but the all-failing selected provider path should stay observable or receive explicit maintainer approval before becoming fail-open. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 843ad143647e. Label changesLabel justifications:
Evidence reviewedPR surface: Source -9, Tests +20. Total +11 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (1 earlier review cycle)
|
|
Closing this old provider fallback PR. A plugin factory or normalization hook can genuinely throw, but silently ignoring that failure and continuing with a manifest, sibling provider, or alternate transport changes routing and fail-closed behavior. There is no linked production report or explicit fallback contract justifying that compatibility/security tradeoff. The right fix needs an observed failure, an owner decision about whether startup/request routing should fail or degrade, and diagnostics at the provider boundary. It should not turn arbitrary plugin exceptions into implicit fallback policy. Thanks for investigating the failure mode. |
Summary
nullfallback path for modules that simply do not expose a matching provider factoryVerification
node scripts/run-vitest.mjs src/plugins/web-provider-public-artifacts.explicit-fast-path.test.ts --reporter=dotnode_modules/.bin/oxfmt --check --threads=1 src/plugins/web-provider-public-artifacts.explicit.ts src/plugins/web-provider-public-artifacts.explicit-fast-path.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.json src/plugins/web-provider-public-artifacts.explicit.ts src/plugins/web-provider-public-artifacts.explicit-fast-path.test.tsgit diff --check.agents/skills/autoreview/scripts/autoreview --mode local --prompt 'Review this focused plugin public-artifact provider hardening patch. It changes bundled web provider factory exceptions from fatal errors into per-plugin unavailability so one broken provider factory cannot poison assistant startup or sibling providers. Focus on runtime behavior, fallback semantics, diagnostics risk, and whether the tests cover the crash surface.'node scripts/crabbox-wrapper.mjs run --provider aws --idle-timeout 90m --ttl 240m --timing-json --shell -- "corepack pnpm check:changed"(run_70b582d21a6b, leasecbx_ec1a78220a74)Behavior addressed: A bundled plugin public-artifact provider factory can throw during discovery without poisoning sibling web providers or the assistant startup path.
Real environment tested: Local Codex gwt worktree on macOS using the repo Vitest node wrapper and repo lint/format wrappers.
Exact steps or command run after this patch: See Verification above.
Evidence after fix: Focused Vitest passed 1 shard / 6 tests; oxfmt, oxlint,
git diff --check, private-name scrub, autoreview, and AWS Crabboxcheck:changedall passed.Observed result after fix: A plugin whose matching web provider factories all throw contributes no provider entries; a healthy sibling provider still resolves from the same selected provider set.
What was not tested: Full repo test suite was not run; this patch is limited to the plugin web-provider public-artifact loader and focused regression coverage plus changed-gate proof.