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
The wave-2 framework review's feature-set assessment (§5.2) flags two High-impact tooling-honesty/discoverability gaps. Both undermine the AI/CI story Wheels otherwise leads on. Verified against origin/develop @ 8971094.
1. CLI failure exit codes (High / Medium effort)
test/migrate/validate (and the upgrade-check scanner) print red but return exit 0 — false-green CI. The throw-for-nonzero pattern already exists in-repo. A broad fix (#2890, "CLI exit non-zero on user-error paths") landed for the CLI generally, but coverage is incomplete:
U1 [High]wheels upgrade check still exits 0 even when breaking changes are found — cli/lucli/Module.cfc:4315-4355 ends the loop with return "";, no throw (contrast the module's throw(message=...) convention at :2003). The comment at :4131-4134 implies breaking findings fail CI; they don't. The primary upgrade-safety tool cannot gate CI, and there's no --format=json.
Audit test, migrate, validate, and upgrade check for nonzero exit on failure and confirm #2890 actually reaches each; add --strict/--ci and JSON output where missing. Prior art: pytest/RSpec; artisan Command::FAILURE; db:migrate abort.
2. MCP tool input schemas (High / Medium effort)
All ~20 auto-discovered MCP tools advertise empty properties with additionalProperties:false, so parameters are undiscoverable to MCP clients; two $-prefixed helpers also leak as tools. Tools are auto-discovered from cli/lucli/Module.cfc public functions but no per-tool input schema is emitted (no inputSchema/properties population found in Module.cfc).
Derive typed input schemas from each tool function's signature (matching the now-landed ArgSpec migration), and exclude $-prefixed helpers from the tool surface. Prior art: FastMCP typed-signature schemas; GitHub MCP per-tool schemas.
MCP schemas: generate per-tool inputSchema.properties from each function's ArgSpec/signature; filter $-prefixed functions out of mcpHiddenTools/discovery.
Acceptance criteria
wheels test/migrate/validate/upgrade check return nonzero when they fail or find blocking issues; covered by specs.
wheels upgrade check supports --format=json and a strict/CI gate.
Each MCP tool advertises a populated inputSchema derived from its signature; no $-helpers appear as tools.
Problem
The wave-2 framework review's feature-set assessment (§5.2) flags two High-impact tooling-honesty/discoverability gaps. Both undermine the AI/CI story Wheels otherwise leads on. Verified against
origin/develop@8971094.1. CLI failure exit codes (High / Medium effort)
test/migrate/validate(and the upgrade-check scanner) print red but return exit 0 — false-green CI. The throw-for-nonzero pattern already exists in-repo. A broad fix (#2890, "CLI exit non-zero on user-error paths") landed for the CLI generally, but coverage is incomplete:wheels upgrade checkstill exits 0 even when breaking changes are found —cli/lucli/Module.cfc:4315-4355ends the loop withreturn "";, nothrow(contrast the module'sthrow(message=...)convention at:2003). The comment at:4131-4134implies breaking findings fail CI; they don't. The primary upgrade-safety tool cannot gate CI, and there's no--format=json.Audit
test,migrate,validate, andupgrade checkfor nonzero exit on failure and confirm #2890 actually reaches each; add--strict/--ciand JSON output where missing.Prior art: pytest/RSpec; artisan
Command::FAILURE;db:migrateabort.2. MCP tool input schemas (High / Medium effort)
All ~20 auto-discovered MCP tools advertise empty
propertieswithadditionalProperties:false, so parameters are undiscoverable to MCP clients; two$-prefixed helpers also leak as tools. Tools are auto-discovered fromcli/lucli/Module.cfcpublic functions but no per-tool input schema is emitted (noinputSchema/propertiespopulation found inModule.cfc).Derive typed input schemas from each tool function's signature (matching the now-landed ArgSpec migration), and exclude
$-prefixed helpers from the tool surface.Prior art: FastMCP typed-signature schemas; GitHub MCP per-tool schemas.
Impact
wheels upgrade check(the primary 3.x→4.x safety tool) or any command fix(cli): exit non-zero on user-error paths instead of silent success #2890 missed — red output with a green exit is silently ignored by CI.Suggested approach
test/migrate/validate/upgrade check; haveupgrade checkthrow (nonzero) when breaking changes exist, add--strict/--ci, and add--format=json.inputSchema.propertiesfrom each function's ArgSpec/signature; filter$-prefixed functions out ofmcpHiddenTools/discovery.Acceptance criteria
wheels test/migrate/validate/upgrade checkreturn nonzero when they fail or find blocking issues; covered by specs.wheels upgrade checksupports--format=jsonand a strict/CI gate.inputSchemaderived from its signature; no$-helpers appear as tools.Source
Internal multi-agent framework review 2026-06-09, wave 2 (issues phase). Feature-set assessment §5.2 (CLI failure exit codes; MCP tool input schemas) and §5.3 upgrade-path finding U1.