···11+Test bad example - main.ml defines two Cmd.v subcommands:
22+ $ merlint -B -r E524 bad/
33+ Running merlint analysis...
44+55+ Analyzing 0 files
66+77+ ✓ Code Quality (0 total issues)
88+ ✓ Code Style (0 total issues)
99+ ✓ Naming Conventions (0 total issues)
1010+ ✓ Documentation (0 total issues)
1111+ ✗ Project Structure (1 total issues)
1212+ [E524] Multiple Cmdliner subcommands in one file (1 issue)
1313+ Each Cmd.v subcommand should live in its own file. Move each Cmd.v into a
1414+ sibling file (e.g. cmd_<name>.ml exposing a single val cmd) and reference it
1515+ from main.ml's Cmd.group. Sub-subcommands of a grouped subcommand follow the
1616+ same rule — use cmd_<parent>/<leaf>.ml or cmd_<parent>_<leaf>.ml siblings.
1717+ - (global) bad/main.ml defines 2 Cmdliner subcommands in one file; split them into one file per subcommand
1818+ ✓ Test Quality (0 total issues)
1919+ ✓ Interop Testing (0 total issues)
2020+ ✓ Code Generation (0 total issues)
2121+2222+ ╭───────────────────┬─────────────────────────────────────────────────╮
2323+ │ Category │ Issues │
2424+ ├───────────────────┼─────────────────────────────────────────────────┤
2525+ │ Project Structure │ 1 (1 multiple cmdliner subcommands in one file) │
2626+ ╰───────────────────┴─────────────────────────────────────────────────╯
2727+2828+2929+ Summary: ✗ 1 total issue (applied 1 rule)
3030+ ✗ Some checks failed. See details above.
3131+ [1]
3232+3333+Test good example - main.ml defines a single Cmd.v subcommand:
3434+ $ merlint -B -r E524 good/
3535+ Running merlint analysis...
3636+3737+ Analyzing 0 files
3838+3939+ ✓ Code Quality (0 total issues)
4040+ ✓ Code Style (0 total issues)
4141+ ✓ Naming Conventions (0 total issues)
4242+ ✓ Documentation (0 total issues)
4343+ ✓ Project Structure (0 total issues)
4444+ ✓ Test Quality (0 total issues)
4545+ ✓ Interop Testing (0 total issues)
4646+ ✓ Code Generation (0 total issues)
4747+4848+ Summary: ✓ 0 total issues (applied 1 rule)
4949+ ✓ All checks passed!