75 lines
3.5 KiB
Markdown
75 lines
3.5 KiB
Markdown
# 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 |
|