Skip to content

fix(cli): restore unreachable corpus verify command and parsel verify alias - #34

Open
ra-co88 wants to merge 2 commits into
JailbrokenAI:mainfrom
pt-act:fix/restore-corpus-verify-cli
Open

fix(cli): restore unreachable corpus verify command and parsel verify alias#34
ra-co88 wants to merge 2 commits into
JailbrokenAI:mainfrom
pt-act:fix/restore-corpus-verify-cli

Conversation

@ra-co88

@ra-co88 ra-co88 commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Problem

wallbreaker corpus verify [--update] — the interactive surface for the corpus integrity pins in library.lock.toml — is defined but unreachable on main. Running it today does not verify anything: corpus is not in the CLI's subcommand list, so the word is consumed as a one-shot prompt and the TUI starts.

This also breaks the tool's own guidance: wallbreaker/tools/parsel_engine.py:570 tells users to run wallbreaker corpus verify --update when a corpus SHA is unpinned — a command that cannot run.

Root cause

The command was added in 53c9ca2 (roadmap-implementation, TG3): corpus in SUBCOMMANDS, a corpus verify subparser, and its dispatch line. When the PR #21 line merged with the PR #24 (Daedalus) line in da21689, the cli.py conflict resolved to the PR #24 side, which had forked from main before 53c9ca2 and never carried the corpus dispatch. Result: _run_corpus_verify() and _resolve_lock_path() survived as definitions, but their routing, the subparser block, and two imports (subprocess, pathlib.Path) were dropped.

Fix

Restores exactly what the merge dropped (verified against f086481's tree):

  • corpus back in SUBCOMMANDS
  • the corpus verify subparser (--update, --lock) in build_sub_parser()
  • dispatch: corpus_run_corpus_verify(args), plus the parsel verify alias (verify added to parsel_action choices + getattr routing, matching the function's documented alias)
  • re-add import subprocess and from pathlib import Path

The load-time pin check (load_corpus_with_pin_check, fail-closed on mismatch) was always intact and is untouched — this only restores the interactive pin/verify surface.

Regression tests

New tests/test_corpus_cli_routing.py (7 tests) pins the routing so a future merge cannot silently strand the command again:

  • parser-level: corpus verify parses (corpus_action == "verify"), with --update/--lock
  • "corpus" in SUBCOMMANDS
  • main() routing: _run_corpus_verify invoked with the parsed args, return code propagated
  • parsel verify alias parses and routes to the same function
  • the alias does not swallow the real parsel actions (parsel list still routes to run_parsel_cli)

Plus a CHANGELOG entry under Unreleased.

Test plan

  • python -m py_compile wallbreaker/cli.py — clean
  • python -m pytest tests/test_corpus_cli_routing.py tests/test_tg3_corpus.py tests/test_cli_one_shot.py -q → 15 passed
  • wallbreaker corpus verify --help / wallbreaker corpus verify / wallbreaker corpus verify --update — work as documented (resolves UNRESOLVED pins via git ls-remote; exits non-zero on MISSING/UNRESOLVED as designed)
  • wallbreaker parsel verify — alias routes to the same function
  • all 12 subcommands parse --help cleanly

Note: an earlier iteration of this branch carried two session_card hardening commits; they were split out to keep this PR focused on the CLI fix.

… alias

The corpus integrity CLI (wallbreaker corpus verify [--update], aliased as
'wallbreaker parsel verify') was added in 53c9ca2 (roadmap-implementation
TG3) but its dispatch was lost when the PR JailbrokenAI#21 line merged with the PR JailbrokenAI#24
line in da21689: the Daedalus side of cli.py won the merge, leaving
_run_corpus_verify() defined but unreachable from the CLI.

- add 'corpus' back to SUBCOMMANDS
- restore the corpus subparser (--update / --lock) in build_sub_parser()
- restore the dispatch: 'corpus' -> _run_corpus_verify(), plus the
  'parsel verify' alias (choices + getattr routing)
- re-add 'import subprocess' / 'from pathlib import Path' used by
  _run_corpus_verify / _resolve_lock_path (also lost in the merge)

The load-time pin check (load_corpus_with_pin_check) was always intact;
this only restores the interactive pin/verify surface its own error
messages point users at ('run: wallbreaker corpus verify --update').
Regression tests for the dispatch restored in the previous commit:
parser-level parsing (corpus verify, --update/--lock, parsel verify
alias), main() routing via monkeypatched _run_corpus_verify with
return-code propagation, and a guard that the alias does not swallow
the real parsel actions. Prevents a future merge from silently
stranding the command again. CHANGELOG notes the fix under Unreleased.
@ra-co88
ra-co88 force-pushed the fix/restore-corpus-verify-cli branch from 504ef67 to bd30f99 Compare September 1, 2026 11:11
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.

2 participants