Skip to content

fix(commands): resolve 13 hidden-pending commands (closes #200) - #201

Closed
Wolfvin wants to merge 1 commit into
mainfrom
fix/issue-200-resolve-hidden-pending-commands
Closed

fix(commands): resolve 13 hidden-pending commands (closes #200)#201
Wolfvin wants to merge 1 commit into
mainfrom
fix/issue-200-resolve-hidden-pending-commands

Conversation

@Wolfvin

@Wolfvin Wolfvin commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Summary

Resolves issue #200 — the 13 hidden-pending commands left after PR #195's consolidation are now all resolved (absorbed, made visible, or dropped).

codelens --command-count: 12 → 13 (plugin now visible)
Hidden-pending commands: 13 → 0

Changes

Absorbed (5 commands → umbrella --check / --mode)

Command Umbrella Dispatch
check audit audit --check check (CI quality gate)
missing-refs audit audit --check missing-refs (CSS/HTML mismatch)
deps-audit security security --check deps-audit (OSV.dev CVEs)
list search search --mode list (list registry entries)
query search search --mode query (query symbol + callers/callees)

Each absorbed command file is kept as a hidden deprecated alias (hidden=True, deprecated_alias_for='<umbrella>') for one version of backward compat. Invoking the old name prints a DEPRECATED redirect warning to stderr. Tests that import cmd_list / cmd_query / check.add_args continue to work unchanged.

Made visible (1 command)

  • plugin: hidden=Truehidden=False. Plugin lifecycle management (install/uninstall/search/validate) is unique and does not overlap with any umbrella.

Dropped (7 commands, files deleted)

Command Reason
analyze Overlap with scan + audit + summary
lsp Server launcher, not an analysis command
entrypoints Subset of context --check orient
state-map No reliable engine behind it
config-drift Overlap with audit --check staleness
test-map No proven engine
type-infer No proven engine

Dropped commands are now invalid choices (not callable via CLI).

Test Results

Per-command evaluation (issue DoD checklist)

Each of the 13 commands was tested against a test workspace (HTML/CSS/JS fixtures + package.json + requirements.txt) as a substitute for the unavailable fought/extension_source/ts codebase.

Command Output Decision
check 14 findings, gate failed absorb → audit
deps-audit 15 vuln findings absorb → security
missing-refs 1 finding on mismatch ws absorb → audit
list 42 entries absorb → search
query found:true, detailed absorb → search
plugin 2 plugins listed visible
analyze full analysis (overlap) drop
lsp server launcher (no workspace arg) drop
entrypoints 3 entrypoints (overlap) drop
state-map 0 stores, empty drop
config-drift drift data (overlap) drop
test-map coverage map (unproven) drop
type-infer type map (unproven) drop

New --check / --mode dispatches return non-empty output

Verified after codelens scan <ws> (registry built):

  • audit --check check → 14 findings ✓
  • audit --check missing-refs → 1 finding ✓
  • security --check deps-audit → 15 findings ✓
  • search --mode list → 42 entries ✓
  • search --mode query → found:true ✓

Test suite

  • test_issue195_consolidation.py: 24 passed (including 7 new issue chore(commands): evaluate and resolve 13 hidden-pending commands #200 tests)
  • test_command_count.py: 6 passed
  • test_command_registry.py: passed
  • test_cli.py (TestCmdQuery, TestCmdList, TestCheckCommandArgs): 12 passed
  • test_deps_audit.py, test_formatters.py, test_codelens.py: passed
  • test_orient.py, test_query_graph.py, test_html_parser.py, test_css_parser.py, test_registry.py: passed
  • sync_command_count.py --check: all docs in sync (idempotent)

Pre-existing failures (unrelated, fail on clean main too):

  • test_cli.py::TestArgparseFormatConflictRegression (3 tests: -f conflict + scan timeout) — environment-specific
  • test_compact_format.py::TestMCPGraphSchemaTool (2 tests: stale _TOOL_DEFINITIONS) — pre-existing
  • test_doctor.py::TestOutputSchema (11 tests: output schema drift) — pre-existing
  • test_lsp_server.py, test_rule_engine.py, test_rule_matcher.py — collection errors (missing deps: lsprotocol)

Files Modified

  • scripts/commands/audit.py — added check + missing-refs checks
  • scripts/commands/security.py — added deps-audit check
  • scripts/commands/search.py — added list + query modes
  • scripts/commands/{check,deps_audit,missingrefs,list,query}.pydeprecated_alias_for set
  • scripts/commands/plugin.pyhidden=True removed (now visible)
  • Deleted: scripts/commands/{analyze,lsp,entrypoints,state_map,config_drift,test_map,type_infer}.py
  • Docs synced (via sync_command_count.py --apply): README.md, SKILL.md, SKILL-QUICK.md, pyproject.toml, skill.json, graph_model.py
  • tests/test_issue195_consolidation.py — updated for 13 visible commands + 7 new dispatch tests

Constraint Compliance

  • ✅ Only commands/*.py touched (no engine files modified)
  • ✅ Umbrella pattern followed (audit.py / security.py --check dispatch; search.py --mode dispatch)
  • ✅ Each new --check/--mode returns non-empty output on test codebase
  • ✅ Dropped commands are invalid choices
  • ✅ No design doc required (no new command files added; only modified/removed)

Findings (out of scope, flagged for BOS)

  1. lsp was a server launcher, not an analysis command. The issue rationale ("subset of doctor --check lsp-status") is not quite accurate — doctor --check lsp-status checks LSP status, while lsp launches the LSP server. Dropped per the issue's explicit instruction, but the BOS may want to reconsider if editor-integration users relied on codelens lsp.

  2. Stale MCP _TOOL_DEFINITIONS. The MCP server still has static tool definitions for commands dropped in refactor(commands): consolidate 78 commands → 12 focused commands #195 (a11y, artifact_scan, ask, etc.) and now chore(commands): evaluate and resolve 13 hidden-pending commands #200 (analyze, config_drift, entrypoints). These appear in tools/list even though the commands are gone. Pre-existing — not touched per the "only commands/*.py" constraint.

  3. context-snapshot/CodeLens/CONTEXT.md in worker-skills repo should be updated to reflect: 13 visible commands (12 umbrellas + plugin), 0 hidden-pending, and the new --check/--mode dispatches. This is a separate PR to Wolfvin/worker-skills.

  4. Test codebase substitution. The issue references fought/extension_source/ts (not available in this environment). Testing was done against CodeLens test fixtures (HTML/CSS/JS) + the CodeLens scripts/ Python codebase as a substitute. All absorb candidates produced substantive output on these workspaces.

Closes #200

Issue #200: resolve the 13 hidden-pending commands left after PR #195.

Absorbed (5 commands → umbrella --check / --mode):
- check → audit --check check (CI quality gate)
- missing-refs → audit --check missing-refs (CSS/HTML mismatch)
- deps-audit → security --check deps-audit (OSV.dev dependency CVEs)
- list → search --mode list (list registry entries)
- query → search --mode query (query symbol with callers/callees)
Each absorbed command remains as a hidden deprecated alias for one
version of backward compat (tests that import cmd_list/cmd_query still
pass).

Made visible (1 command):
- plugin: standalone visible command (hidden=False). Plugin lifecycle
  management is unique and does not overlap with any umbrella.

Dropped (7 commands, files deleted):
- analyze (overlap with scan + audit + summary)
- lsp (server launcher, not an analysis command)
- entrypoints (subset of context --check orient)
- state-map (no reliable engine behind it)
- config-drift (overlap with audit --check staleness)
- test-map (no proven engine)
- type-infer (no proven engine)

Result:
- --command-count: 12 → 13 (plugin now visible)
- hidden-pending commands: 13 → 0
- All 5 new --check/--mode dispatches return non-empty output on test
  workspaces (verified with scan-then-audit workflow).
- Dropped commands are invalid choices (not callable).
- Deprecated aliases print redirect warnings to stderr.
- Docs synced via sync_command_count.py --apply (README, SKILL.md,
  SKILL-QUICK.md, pyproject.toml, skill.json, graph_model.py).
- test_issue195_consolidation.py updated: 13 visible commands, 7 new
  dispatch tests, dropped-commands assertion, no-hidden-pending guard.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@sonarqubecloud

sonarqubecloud Bot commented Jul 4, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
5.8% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@Wolfvin

Wolfvin commented Jul 11, 2026

Copy link
Copy Markdown
Owner Author

PR ditutup — conflict design, bukan mechanical.

PR #202 (issue #199, sudah merged ke main) menghapus parameter deprecated_alias_for sepenuhnya dari register_command(). Signature sekarang: register_command(name, help_text, add_args_fn, execute_fn, hidden=False) — tidak ada lagi deprecated_alias_for.

PR ini (issue #200) masih pakai signature lama: register_command(..., hidden=True, deprecated_alias_for='audit') untuk 5 command yang di-absorb (check, missing-refs, deps-audit, list, query). Ini sekarang tidak kompatibel dengan main.

Sebelum buka PR baru, worker perlu:

  1. Rebase ke main terbaru (sudah include PR chore(commands): remove 32 deprecated aliases (closes #199) #202 dan feat(languages): add Go, Java, PHP, Ruby, C/C++ tree-sitter support (closes #198) #203)
  2. Update pemanggilan register_command() di 5 file yang di-absorb (check.py, missingrefs.py, deps_audit.py, list.py, query.py) — hapus argumen deprecated_alias_for, cukup pakai hidden=True saja (redirect warning stderr sudah dihapus di chore(commands): remove 32 deprecated aliases (post-#195 cleanup) #199, jadi command yang di-absorb sekarang cukup hidden tanpa warning — konsisten dengan 30 alias lain yang sudah di-drop total di chore(commands): remove 32 deprecated aliases (post-#195 cleanup) #199)
  3. Update test_issue195_consolidation.py — hapus assertion yang expect deprecated_alias_for field, sesuaikan dengan pattern yang sudah dipakai di test_command_registry.py setelah chore(commands): remove 32 deprecated aliases (post-#195 cleanup) #199
  4. Re-verify: codelens --command-count harus tetap 13 (12 umbrella + plugin)

Rebase ke main setelah adjustments selesai.

@Wolfvin Wolfvin closed this Jul 11, 2026
@Wolfvin
Wolfvin deleted the fix/issue-200-resolve-hidden-pending-commands branch July 11, 2026 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(commands): evaluate and resolve 13 hidden-pending commands

1 participant