This repository was archived by the owner on Apr 7, 2026. It is now read-only.
Description Kaizen Surface Gate K3 Failures (8 defects)
CRITICAL: batuta falsify hangs indefinitely
Running batuta falsify with no args hangs with no output
No panic, no error, no timeout — must be killed
Should exit non-zero with "error: required argument not provided"
HIGH: batuta code spawns orphan process
Running batuta code with no args auto-discovers a model, launches apr serve on a random port
The apr serve child process persists after batuta exits (PID leak)
Should require explicit --model arg or exit non-zero when no model specified
MEDIUM: 6 subcommands exit 0 with no required args
These all silently succeed when run without arguments, mutating CWD or producing output:
batuta init — initializes project in CWD
batuta analyze — analyzes CWD
batuta report — generates migration_report.html in CWD
batuta parf — runs PARF analysis on CWD
batuta oracle — prints header then exits
batuta serve — prints server banner and starts listening
Five-Whys (falsify hang)
Why does it hang? No timeout on the main loop when no input is provided
Why no input detection? The falsify command expects spec file paths but doesn't validate args before entering the processing loop
Why no early validation? Likely reads from an empty iterator and blocks on I/O or channel
Why no timeout? The command was designed for long-running falsification runs, not for empty-arg detection
Why not caught? No K3 surface gate testing — unit tests always provide valid inputs
Fix
falsify: Add early arg validation — require at least one <spec-path> positional arg
code: Require --model or detect non-TTY stdin and exit with usage hint
Others: Add required args or --force flag for CWD-mutating operations
Found via kaizen surface gate sweep.
Reactions are currently unavailable
Kaizen Surface Gate K3 Failures (8 defects)
CRITICAL:
batuta falsifyhangs indefinitelybatuta falsifywith no args hangs with no outputHIGH:
batuta codespawns orphan processbatuta codewith no args auto-discovers a model, launchesapr serveon a random portapr servechild process persists after batuta exits (PID leak)--modelarg or exit non-zero when no model specifiedMEDIUM: 6 subcommands exit 0 with no required args
These all silently succeed when run without arguments, mutating CWD or producing output:
batuta init— initializes project in CWDbatuta analyze— analyzes CWDbatuta report— generatesmigration_report.htmlin CWDbatuta parf— runs PARF analysis on CWDbatuta oracle— prints header then exitsbatuta serve— prints server banner and starts listeningFive-Whys (falsify hang)
Fix
falsify: Add early arg validation — require at least one<spec-path>positional argcode: Require--modelor detect non-TTY stdin and exit with usage hint--forceflag for CWD-mutating operationsFound via kaizen surface gate sweep.