Found while stress testing the CLI on Windows (v0.9.0, built from main).
Steps to reproduce
- Generate a report:
fixmap plan --issue "reset token ttl" --repo examples/tiny-auth-app --format json --output out.json
- Edit
contextFiles[0].path to a traversal path, e.g. ../../evil.ts (everything else untouched)
- Run:
fixmap verify --report out.json --repo examples/tiny-auth-app --working-tree
Actual
"out.json" has an invalid contextFiles entry at index 0; each entry needs a non-empty string "path", and
version 1 requires rank, score, confidence, and reasons fields with their documented types.
Expected
All field types are valid - the real problem is that the path escapes the repository root. The error should say something like:
"contextFiles[0].path must stay inside the repository (got "../../evil.ts")"
For comparison, changing the path to a benign non-existent file (src/other.ts) is accepted and verify proceeds normally, which confirms the type-check is not what is failing.
Why it matters: hand-edited or third-party-generated reports are a supported workflow (verify exists precisely for that), and this message sends users hunting for a schema problem that does not exist.
Found while stress testing the CLI on Windows (v0.9.0, built from main).
Steps to reproduce
fixmap plan --issue "reset token ttl" --repo examples/tiny-auth-app --format json --output out.jsoncontextFiles[0].pathto a traversal path, e.g.../../evil.ts(everything else untouched)fixmap verify --report out.json --repo examples/tiny-auth-app --working-treeActual
Expected
All field types are valid - the real problem is that the path escapes the repository root. The error should say something like:
For comparison, changing the path to a benign non-existent file (
src/other.ts) is accepted and verify proceeds normally, which confirms the type-check is not what is failing.Why it matters: hand-edited or third-party-generated reports are a supported workflow (verify exists precisely for that), and this message sends users hunting for a schema problem that does not exist.