### expert_build/cli.py:main (validation block)
VERDICT: PASS
CORRECTNESS: VALID
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: The set-comparison logic is correct — `sub.choices.keys()` vs `commands.keys()` will catch any drift between subparsers and the dispatch dict. Using `sorted()` for deterministic output is good. The check runs after `parse_args()` and the `if not args.command` guard, so it fires on every valid subcommand invocation. Cost is negligible (set diff over ~11 strings). However, this code path is never exercised by the test (see below).

---

### tests/test_cli.py:test_cli_registration_is_consistent
VERDICT: CONCERN
CORRECTNESS: QUESTIONABLE
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: PARTIAL
INTEGRATION: WIRED
REASONING: The test patches `sys.argv` to `["expert-build", "--help"]`. Argparse handles `--help` internally and raises `SystemExit(0)` inside `parser.parse_args()` — **before** the validation block is ever reached. This means the test verifies that the CLI can be imported and argparse can render help, but it does **not** test the new validation logic at all. If you added a subparser without a dispatch entry (or vice versa), this test would still pass. To actually cover the validation, the test would need to reach past `parse_args()` — e.g., by invoking a real subcommand with the handler mocked out, or by extracting and comparing the two key sets directly.

---

### SELF_REVIEW
LIMITATIONS: The observation results for `main_callers` were polluted with `.venv` matches and didn't show the real entry point (e.g., console_scripts in pyproject.toml). I relied on the full function body observation to verify the control flow ordering, which was sufficient. Could not verify whether any other tests elsewhere indirectly exercise the validation path.

---

### FEATURE_REQUESTS
- Filter `.venv`/`node_modules` from caller search results by default — the 200+ false matches in vendored dependencies added noise without value
- For new test files, automatically check whether the test actually exercises the code path it claims to (e.g., flag when `SystemExit` is raised before the code under test)
