fold/docs/compatibility.md
2026-07-29 00:58:19 -04:00

3.5 KiB

CLI and MCP compatibility

This checkpoint records the compatibility decision after the CLI/MCP surface convergence work. Aliases are not removed solely because they are old.

2026-07-29 checkpoint

Decision: retain every compatibility alias. They remain callable but hidden from normal CLI help or MCP tools/list/advertised schemas. Calls emit a single warning or structured deprecation metadata.

Removal is not yet eligible:

  • first-party tests still exercise --input-type binary compatibility;
  • Rust/Swift goldens and frontend tests were migrated from --format json to --format sarif, but an explicit compatibility test still covers the old spelling;
  • repository documentation still contains migration examples and historical research commands using old forms;
  • no deprecation telemetry or release feedback channel has produced evidence that external callers have migrated;
  • Fold has not crossed the selected major-version boundary.

The earliest eligible removal boundary is Fold 1.0.0. Reaching that version is necessary but not sufficient: a later checkpoint must also show no first-party operational use, review available release feedback/telemetry, and retain migration documentation.

CLI migrations

Deprecated form Canonical replacement Current behavior
fold scan --input-type source ... fold scan --mode source ... Hidden, callable
fold scan --input-type binary --binary app fold scan --mode binary --binary app Hidden, callable
fold scan --format json -o report.json fold scan --format sarif -o report.sarif Callable; warns once
fold scan --profile freestanding ... fold scan --preset freestanding ... Callable; warns once
--null-deref-nullable-allocations --nullable-allocations Hidden, callable
fold fuzz-prep ... fold fuzz prep ... Hidden, callable; warns once
fold fuzz-run ... fold fuzz run ... Hidden, callable; warns once

Bare fold scan --profile remains canonical for performance metrics. Native finding JSON is --format findings-json; the deprecated json spelling means SARIF and must not be used when native JSON is intended.

MCP migrations

Advertised schemas contain canonical argument names only. The call boundary continues to accept these hidden aliases and returns a deprecations array with alias, replacement, and removal-boundary fields:

Deprecated argument Canonical argument
binary_path binary
max_functions binary_max_functions
null_deref_nullable_allocations nullable_allocations
fold.scan with background: true fold.scan_start

Providing a canonical argument and its alias together is rejected as ambiguous.

Hidden tool aliases remain callable and return structured deprecation metadata:

Deprecated tool Canonical tool
fold.get_job_findings fold.scan_job_findings
fold.activate_scan_job fold.scan_activate
fold.scan_project fold.scan
fold.scan_rust fold.scan with mode: "rust"
fold.scan_swift fold.scan with mode: "swift"
fold.scan_binary fold.scan with mode: "binary"
fold.find_duplicates fold.scan with clone/equivalence detectors
fold.find_dead_code fold.scan with dead-code detectors
fold.find_duplicate_classes fold.scan with class-dup detectors
fold.find_security_issues fold.scan with source security detectors
fold.find_binary_security_issues fold.scan with binary security detectors