Skip to content

refactor(cli): extract modal/confirm machinery into CLIModalConfirmMixin (cli.py god-file slice R3) - #79367

Open
andrexibiza wants to merge 1 commit into
NousResearch:mainfrom
andrexibiza:fix/cli-modal-confirm-extract
Open

refactor(cli): extract modal/confirm machinery into CLIModalConfirmMixin (cli.py god-file slice R3)#79367
andrexibiza wants to merge 1 commit into
NousResearch:mainfrom
andrexibiza:fix/cli-modal-confirm-extract

Conversation

@andrexibiza

@andrexibiza andrexibiza commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

cli.py god-file slice R3: extract the modal/confirm machinery from cli.py into hermes_cli/cli_modal_confirm_mixin.py (class CLIModalConfirmMixin). Part of the repo-wide large-file decomposition (tracker #78647).

What changed and why

  • Modal/confirm cluster (window 8584–8914, 331 lines, 6 members: _run_curses_picker, _prompt_text_input, _prompt_text_input_modal, _submit_slash_confirm_response, _normalize_slash_confirm_choice, _get_slash_confirm_display_fragments) moved byte-verbatim (golden sha b38e6f4b… verified)
  • Zero cli-module-global deps (only stdlib queue/shutil/sys/textwrap + lazy in-function imports) — the cleanest slice in R3
  • CLIModalConfirmMixin appended last to HermesCLI bases; zero __init__ change; _run_curses_picker has zero callers at pin (moved verbatim anyway; dead-code retirement is a separate diff)
  • Double-blind: 2 analysts → consensus (R3-CONSENSUS.md, pass B's pick won on zero-global-deps evidence) → implementer → 2 blind re-reviewers (both APPROVED, 0C/0I)

Testing

  • test_cli_modal_confirm_seam.py: 18 passed (identity asserts 6/6, no-back-import subprocess, modal-flow, slash-confirm normalization, display fragments)
  • Full tests/cli: 938/934 passed — identical 4 failures reproduced at base (pre-existing/environmental)
  • Mixin body sha == pin golden window sha (byte-verbatim proof)
  • ruff clean · git diff --check clean · LF-only · DCO signed

Coordination / interlock

Part of #78647
Part of #55136

…xin (cli.py god-file slice R3)

Signed-off-by: andrexibiza <84248988+andrexibiza@users.noreply.github.com>
@alt-glitch alt-glitch added type/refactor Code restructuring, no behavior change comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have labels Aug 5, 2026
@andrexibiza

Copy link
Copy Markdown
Contributor Author

🔒 This shard is part of the cli.py KILL LOCK — the permanent record of the 18,485-line whole, the mess it caused (#54960 duplicate-tracking chaos, #65303 no ESC-interrupt, #72797 XML-tag loss, #75461 redaction bypass, #76914 unfinalized sessions, #77764 approval truncation, #39446 /reload-mcp blocking, terminal-escape leaks), every shard in the wave, the #12355 block on R1, and every open fixer PR still fighting the surface (#73104 #75476 #77776 #75084 #76804 #76995 #71295 #78871 #74491 #72821 #57453 #61429 #71027 #62027 #65192 #71088 #74038 #69918 #67484 #12355 #75207 #32193 #74281 #37818 #27172 #65785).

Lock: posted on #55136 · Indexed by the Kill All Gods meta-issue #78647.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/refactor Code restructuring, no behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants