refactor: split verify modules and main.rs into commands/, add release hygiene - #17
Merged
Merged
Conversation
…mmands/ The two remaining monoliths from the earlier refactors are gone. Adding an agent ecosystem or a subcommand no longer means editing a 1.3–2.5k-line file. verify/discovery.rs (1,349 lines) -> discovery/: the Claude Code checks (marketplace/plugin.json) moved to claude.rs, the SKILL.md parsing + per-skill structural checks to skill_md.rs, and mod.rs keeps the run() dispatcher, shared helpers (rel_unix/strip_bom/find_kv_colon/is_valid_kebab) and the existing per-ecosystem submodules. verify/invocation.rs (1,365 lines) -> invocation/: parse.rs holds the pure text-extraction fns, drift.rs the set-diff checks, mod.rs the spawn/orchestration + InvocationInput. main.rs (2,536 lines) -> src/commands/ with one module per subcommand (init/verify/doctor/update/diff/add/remove/config) plus shared helpers (Confirm overrides, print_profile, compute_candidates, target detection) in the module root; main.rs is now a thin clap dispatch (148 lines). The confirm_tests module moved to commands/mod.rs; the panic_message test stays in main.rs. Behavior-neutral: all 260 tests pass, fmt + clippy -D warnings clean, self-dogfood verify 100/100 with all 22 files byte-identical. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…oading
The prune step's GitHub expression `(steps.release-plz.outputs.pr |
fromJSON).head_branch` is rejected by GitHub's expression grammar
(property access on a parenthesized filter chain), so the whole
release-plz.yml failed to load and every triggering run died with 0 jobs
("This run likely failed because of a workflow file issue").
Parse the raw output with jq from an env var instead — same information,
no expression-gym syntax.
This was referenced Aug 15, 2026
Closed
Closed
Closed
Closed
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.
What
Follow-up to the module-per-language / module-per-target refactors: eliminate the remaining monoliths and add release-hygiene fixes identified in the review.
Code structure
src/verify/discovery.rs(1,349 lines) →discovery/:claude.rs(Claude-specific checks),skill_md.rs(generic SKILL.md checks),mod.rs(shared infra + tests).src/verify/invocation.rs(1,000+ lines) →invocation/:parse.rs(pure extraction fns),drift.rs(subcommand/version drift checks),mod.rs(run/spawn infra + tests).src/main.rs(2,536 → 148 lines): each subcommand handler moved intosrc/commands/(init,verify_cmd,doctor,update,diff,add,remove,config) behind a thin dispatcher.Release hygiene
main(ruleset): requires a PR + CI checks for all pushes. This blocks the old direct push from the Homebrew re-pin job, so that job now opens an auto-merged PR instead.release-plz-*branch cleanup: 11 merged branches deleted;release-plz.ymlnow prunes merged branches post-release so they can't accumulate.release-rehearsal.yml—workflow_dispatchjob that builds release binaries and smoke-tests--versionwithout publishing (dry-run upload).Docs / tooling
docs/format-compat.md: format-version compatibility matrix (which agents read which files, version tolerance,--format-versionmapping).run.shdefault--runs 1 → 5, with statistical rationale documented indocs/benchmark.md.Verification
cargo fmt --check+clippy -D warningsclean; self-dogfoodverify100/100 (all 22 files byte-identical).mainis now rejected (which is why this lands via PR).