Command Detection Language Awareness

Non-Node projects with a package.json (Ruby/Mastodon, Rust/Biome) get JS commands in ana.json. The pipeline executes these mechanically — Build runs `yarn run test -- --run` on a Ruby project. The entire pipeline produces wrong results. Fix the scan engine and init layer so non-Node projects get correct native commands or honest nulls, and ensure the user-facing flow (init display + setup) guides non-Node users to configure any remaining null commands before entering the pipeline.

verdict PASSscore 28 / 28findings 7 (0 risk · 2 debt · 5 obs)duration 1h 23mrejection cycles 0shipped May 20, 2026surface cli

Pipeline timeline

Intent to proven code in 1h 23m across Think, Plan, Build, and Verify.

Think
23m
Plan
23m
Build
21m
Verify
5m

Assertion ledger

28 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001A Ruby project with JS devDependencies only shows native testing frameworksverifiedok
A002JS testing frameworks are removed from Ruby project scan resultsverifiedok
A003Rust projects detect the built-in test runnerverifiedok
A004Ruby projects detect Minitest when test directory existsverifiedok
A005Ruby projects do not get JavaScript build commandsverifiedok
A006Ruby projects do not get JavaScript test commands from package.jsonverifiedok
A007Package.json scripts are still recorded for polyglot projectsverifiedok
A008TypeScript projects still get all commands from package.jsonverifiedok

Findings 7 total

debtpackages/cli/src/commands/init/state.tsclosed
A020 has no tagged test — verified by source inspection only
obsclosed
AC11 (Skills Detected section) tests absence of something never present — skills manifest contains skill file names, not test commands
obspackages/cli/src/commands/init/state.tsmonitor
displaySuccessMessage treats empty string test command as null for init display — consistent with upstream blank sanitizer
debtpackages/cli/src/commands/init/state.tsclosed
buildNonNodeCommands returns early per-language without fallthrough — adding a new language requires a new if-block, no extensibility pattern
obspackages/cli/src/utils/worktree.tsclosed
getBuildCommandString exported solely for testing with @internal tag — follows project convention but increases public API surface
+2more findings

Integrity seal

scopesha256:e58a2fd005ee4...
contractsha256:525810fddf5bb...
plansha256:d4bc8df035137...
specsha256:b0783ca779be2...
build-reportsha256:3bf209581d566...
build-datasha256:0286a0a4670e3...
verify-reportsha256:79a96255f2fa5...
verify-datasha256:61a1e6bf716cd...
audit cmd$ ana proof audit command-language-awareness   → all hashes match