You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: resolve PR #155 CI build and CodeRabbit review findings
Docs build failed because an inline-code span `pythinker plugin
enable/disable <name>` wrapped across a line break, so VitePress's Vue
compiler read `<name>` as an unclosed HTML tag. Keep the span on one line
and regenerate the synced docs changelog.
Address unresolved review findings:
- Lock the plugin install / marketplace registries' read-modify-write
cycles with a shared cross-process file_lock helper (no lost updates on
concurrent CLI writers).
- Make MCP inventory refresh side-effect-free: _inventory_mcp_server now
returns the discovered inventory and the caller assigns it only after
the awaited call succeeds, so a timeout/__aexit__ failure can't leave
the published registry inconsistent with the callable tools.
- Roll back partially materialized plugins when dependency resolution
fails, so a failed install never leaves partial on-disk/registry state.
- Always validate ${user_config.*} placeholders (even when a manifest
declares no userConfig) so an unresolved placeholder fails soft instead
of reaching an executable artifact literally.
- Scope-lock plugins.options to user config; it feeds executable plugin
MCP/hook artifacts and must not be repo-controlled.
- Only mark a reviewer ```report block parsed when findings is a list;
raise on unknown eval-case names and wrap gate_report in the CLI error
boundary; trim plugin dependency identifiers before exact-name matching.
Add/adjust tests for rollback, fail-soft hook substitution, the unknown
eval-case error, and the new report-parse and MCP-refresh contracts.
0 commit comments