fix(cli): restore unreachable corpus verify command and parsel verify alias - #34
Open
ra-co88 wants to merge 2 commits into
Open
fix(cli): restore unreachable corpus verify command and parsel verify alias#34ra-co88 wants to merge 2 commits into
ra-co88 wants to merge 2 commits into
Conversation
… 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
force-pushed
the
fix/restore-corpus-verify-cli
branch
from
September 1, 2026 11:11
504ef67 to
bd30f99
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
wallbreaker corpus verify [--update]— the interactive surface for the corpus integrity pins inlibrary.lock.toml— is defined but unreachable onmain. Running it today does not verify anything:corpusis 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:570tells users to runwallbreaker corpus verify --updatewhen a corpus SHA is unpinned — a command that cannot run.Root cause
The command was added in
53c9ca2(roadmap-implementation, TG3):corpusinSUBCOMMANDS, acorpus verifysubparser, and its dispatch line. When the PR #21 line merged with the PR #24 (Daedalus) line inda21689, thecli.pyconflict resolved to the PR #24 side, which had forked from main before53c9ca2and 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):corpusback inSUBCOMMANDScorpus verifysubparser (--update,--lock) inbuild_sub_parser()corpus→_run_corpus_verify(args), plus theparsel verifyalias (verifyadded toparsel_actionchoices +getattrrouting, matching the function's documented alias)import subprocessandfrom pathlib import PathThe 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:corpus verifyparses (corpus_action == "verify"), with--update/--lock"corpus" in SUBCOMMANDSmain()routing:_run_corpus_verifyinvoked with the parsed args, return code propagatedparsel verifyalias parses and routes to the same functionparselactions (parsel liststill routes torun_parsel_cli)Plus a CHANGELOG entry under Unreleased.
Test plan
python -m py_compile wallbreaker/cli.py— cleanpython -m pytest tests/test_corpus_cli_routing.py tests/test_tg3_corpus.py tests/test_cli_one_shot.py -q→ 15 passedwallbreaker corpus verify --help/wallbreaker corpus verify/wallbreaker corpus verify --update— work as documented (resolves UNRESOLVED pins viagit ls-remote; exits non-zero on MISSING/UNRESOLVED as designed)wallbreaker parsel verify— alias routes to the same function--helpcleanlyNote: an earlier iteration of this branch carried two
session_cardhardening commits; they were split out to keep this PR focused on the CLI fix.