Files
bytecii 5ba62a8f0d refactor(integ): nest JSON test cases as category/name/facet (#602)
Restructure the JSON-runner integ corpus from a flat
`category/command.json` layout into a three-level
`category/name/facet.json` tree, so cases are navigable by the flag or
feature they exercise (e.g. `unix/grep/n.json`, `unix/find/name.json`,
`unix/meta/chmod.json`, `resources/dify/search.json`).

Faceting rules:
- unix command files split by the primary flag on the named command,
  with reserved `basic` / `error` / `operand` buckets, and populate the
  previously-dormant `flags` field on those cases (370 cases).
- feature files plus bash/crossmount/resources split by the case-id's
  distinguishing segment (`meta_chmod_*` -> chmod, `col_parquet_*` ->
  parquet).
- 9 high-cardinality flat files (provision, printf, gmail, ...) collapse
  to a single `basic.json` instead of exploding into 40+ singletons.
- uppercase-only flags get a `.upper` suffix so filenames stay unique on
  case-insensitive filesystems (`grep -C` -> `C.upper.json`).

Discovery now walks recursively: `rglob` in the Python harness and the
existing `walkFiles` helper in the TypeScript harness.

177 flat files -> 701 facet files, 1898 cases. The migration preserves
each case's `seq`, so the global execution order and every case body are
byte-identical to before (only the additive `flags` field differs);
verified 0 content mismatches vs the flat tree, unchanged id order, and
the Python runner green (1582/1582 on ram). Adds
runners/tools/refile_facets.py, the deterministic, re-runnable migration
tool (with a case-collision guard).

Co-authored-by: bytecii <bytecii@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:10:49 -07:00
..