omnigraph/crates/omnigraph-cli/tests
Andrew Altshuler 106356ab25
feat(cli): RFC-010 Slice 1 — declared plane capability surface + honest addressing (#217)
* feat(cli): declared plane capability surface + wrong-plane guard (RFC-010 Slice 1)

New `planes.rs` is the single source of truth for which plane each subcommand
belongs to (Data / Storage / Control / Session). `command_plane` is an
exhaustive match — adding a `Command` variant is a compile error until its
plane is declared, so the surface cannot silently drift from the command set.
It descends into the nested enums where the plane differs per subcommand
(`schema plan` is storage while `schema show/apply` are data; `queries
validate` opens the graph while `queries list` reads only config).

`guard_addressing` runs once in `main` before dispatch: the data-plane
addressing flags `--server`/`--graph` on any non-data verb now fail with one
declared, pinned error instead of being silently ignored (`optimize --server
prod` previously dropped `--server`). `init`'s message drops the `--target`
half since it takes only a positional URI today.

Test: `cli_schema_config::schema_plan_with_server_flag_errors_wrong_plane`
pins the per-subcommand label, proving the guard descends into the nested enum.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(cli): storage-plane verbs fail loudly on a remote target (RFC-010 Slice 1)

`optimize`/`repair`/`cleanup` switch from `resolve_uri` to `resolve_local_uri`,
so a `--target` (or positional URI) that resolves to a remote server now fails
with a declared storage-plane message instead of whatever `Omnigraph::open`
said about an `http(s)://` URI. The `resolve_local_graph` bail is reworded to
that storage-plane message, so every storage verb already on the local resolver
(`schema plan`, `queries validate`, `lint`) speaks with one voice.

Net: `optimize --target knowledge` resolves to the graph's storage URI and runs
embedded; `optimize --target prod` (remote) fails loudly; `optimize --server`
is caught earlier by the guard. Positional-URI invocations are unchanged.

Tests (pinned strings, per RFC-010's test plan): optimize happy path on a local
graph, `optimize --server` wrong-plane error, `optimize <https>` storage-plane
error; the existing `query_lint_rejects_http_targets_without_schema` assertion
is updated to the new shared message.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:45:58 +03:00
..
support test(cli): the embedded/remote parity matrix (RFC-009 Phase 1) 2026-06-12 17:50:46 +03:00
cli_cluster.rs refactor(cli): drop cluster init — no replacement scaffold 2026-06-11 23:45:18 +03:00
cli_cluster_e2e.rs refactor(cli): split the test monolith into command-area suites 2026-06-11 15:16:51 +03:00
cli_data.rs feat(cli): RFC-010 Slice 1 — declared plane capability surface + honest addressing (#217) 2026-06-13 22:45:58 +03:00
cli_queries.rs refactor(cli): split the test monolith into command-area suites 2026-06-11 15:16:51 +03:00
cli_schema_config.rs feat(cli): RFC-010 Slice 1 — declared plane capability surface + honest addressing (#217) 2026-06-13 22:45:58 +03:00
parity_matrix.rs refactor(cli): collapse export + graphs-list onto GraphClient (RFC-009 Phase 3c) (#213) 2026-06-13 21:03:45 +03:00
system_local.rs feat(cli): operator aliases — pure bindings invoking stored queries (RFC-007 PR 3, part 2) 2026-06-11 22:25:42 +03:00
system_remote.rs feat(cli)!: unified load command; deprecate ingest as an alias 2026-06-11 04:18:00 +03:00