Skip to content

chore: remove dead graph_entry surface from antd proto, antd-py, ant-dev, and 5 SDKs#92

Merged
Nic-dorman merged 3 commits into
mainfrom
feat/v2-296-remove-graph-surface
May 19, 2026
Merged

chore: remove dead graph_entry surface from antd proto, antd-py, ant-dev, and 5 SDKs#92
Nic-dorman merged 3 commits into
mainfrom
feat/v2-296-remove-graph-surface

Conversation

@Nic-dorman
Copy link
Copy Markdown
Collaborator

Summary

`graph_entry_` is a stale surface from v1. Upstream `ant-client` v2 has no graph module (data client modules are adaptive/batch/cache/cached_merkle/chunk/data/file/merkle/payment/peer_cache/quote — zero `graph_entry` matches). The `antd` daemon has no graph routes or services in proto. Running any `graph_entry_` call against a live v2 daemon fails. This PR removes the orphan code that still references it.

What changes

Three slices, one per commit:

  1. `ant-dev` runner — drop `graph` from the example-name help string and per-language adapter dicts (python, csharp, php, elixir, lua, zig). The canonical example set becomes `connect, data, chunks, files, private`.

  2. antd proto + antd-py + playground — delete `message GraphDescendant` from `antd/proto/antd/v1/common.proto`; delete orphan `antd-py/src/antd/_proto/antd/v1/graph_pb2*` stubs (no client wrapper imported them); drop the dead graph block + unused `KEY_GRAPH` + unused `AlreadyExistsError` import from `antd-py/scripts/test_rest.py` + `test_grpc.py`; fix the broken `from antd import GraphEntry, GraphDescendant` in `ant-dev/src/ant_dev/cmd_playground.py` (antd-py never exported these — `ant dev playground` errored at startup before this PR).

  3. 5 SDKs — delete orphan `05_graph` examples and the matching model files in php (no client method ever returned them):

    • `antd-elixir/examples/05_graph.exs` (references `%Antd.GraphDescendant` + `Antd.Client.graph_entry_*`, none of which exist in the elixir client)
    • `antd-lua/examples/05-graph.lua`
    • `antd-php/examples/05-graph.php` + `src/Models/GraphEntry.php` + `src/Models/GraphDescendant.php`
    • `antd-ruby/examples/05_graph.rb`
    • `antd-zig/examples/05-graph.zig` + drop `05-graph` from `antd-zig/build.zig` `example_names` list

In all 5 SDKs, the hand-written client code already had no `graph_entry_*` methods — verified by grep against client.{rb,lua,ex,php,zig}. The examples called methods that don't exist, so they errored before this PR.

What does not change

  • `antd-ruby/lib/antd/v1/common_pb.rb` still contains the proto-generated `GraphDescendant` lookup. This is a side-effect of removing `GraphDescendant` from the source `.proto` in this same PR — the stub clears on next ruby proto regen. Nothing imports it, so it stays here for now.
  • Other SDKs' proto-generated stubs (cs/dart/go/java/js/kotlin/rust/swift) similarly retain the dead class; same deferral, same lack of impact.

Test plan

  • `git grep -E "graph_entry|graphEntry|GraphEntry|GraphDescendant"` returns zero matches in hand-written code across the repo (only proto-generated stubs remain).

  • Python AST parse of every edited `.py` file clean.

  • `zig build` on dev2 with the trimmed `example_names` exits 0.

  • End-to-end on dev2 against `ant dev start --enable-evm` — sweep across 9 SDKs (python/cpp/js/rust/elixir/lua/php/ruby/zig). Result:

    SDK Status Notes
    python ✅ PASS (13s)
    js ✅ PASS (14s)
    ruby ✅ PASS (5s) adapter only dispatches connect/data/chunks (pre-existing)
    cpp, rust, elixir, lua, php, zig ❌ FAIL unrelated — `04-files` examples hard-code `/tmp/example.txt` placeholder paths, get `HTTP 400: Bad request: invalid path` from the daemon. Same stub-shape bug fixed for antd-go in fix(antd-go): make 03-files example self-contained and runnable #91; needs broader cross-SDK fix as a follow-up. None of these failures are caused by or related to this PR.
  • Reviewer: confirm no live consumer is calling `graph_entry_*` (none expected — every existing call site is in this PR's diff).

Why now

v1.0 ship target is this week or next. Shipping v1.0 with stale graph methods that 404 against a live daemon would be a bad first impression for any consumer reading the SDKs. Removing them is a net subtraction (-680/+12) with zero feature impact.

🤖 Generated with Claude Code

Nic-dorman and others added 3 commits May 18, 2026 11:04
graph_entry_* is a stale v1 surface. Upstream ant-client v2 has no
graph module; the antd daemon has no /v1/graph routes; running the
graph examples against a live v2 daemon yields 404. Drop 'graph' from
the example-name help string and from the per-language adapter dicts
so `ant dev example all -l <lang>` stops asking for it.

The canonical example set becomes: connect, data, chunks, files,
private.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream ant-client v2 has no graph module; the antd daemon has no
graph routes or services in proto; running any graph_entry_* call
against a live v2 daemon fails. Remove the orphans that remain in
this tree:

* antd/proto/antd/v1/common.proto — drop `message GraphDescendant`.
  Nothing in any service references it. Generated stubs across SDKs
  still contain the dead class but no live code imports it; they'll
  clear on next proto regen.

* antd-py/src/antd/_proto/antd/v1/graph_pb2*.{py,pyi} — delete. No
  hand-written client wrapper imports these.

* antd-py/scripts/test_rest.py + test_grpc.py — drop the graph block.
  These call client.graph_entry_put/get/exists/cost which the antd
  client doesn't expose, so the scripts errored at the graph stanza.
  Removes the dead block + the unused KEY_GRAPH constant + the
  now-unused AlreadyExistsError import.

* ant-dev/src/ant_dev/cmd_playground.py — drop the broken
  `from antd import GraphEntry, GraphDescendant` import. antd-py
  doesn't export these, so `ant dev playground` errored at startup;
  this fixes the playground.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…models

Verified 2026-05-18 — upstream ant-client v2 has no graph module,
antd daemon has no graph routes, and the hand-written client code in
all 5 SDKs already has no graph_entry_* methods. The only remaining
graph surface in these SDKs is dead example files and (for php)
orphan model classes that no client code constructs.

Deletions:
* antd-elixir/examples/05_graph.exs — references %Antd.GraphDescendant
  and Antd.Client.graph_entry_*, neither of which exist in the
  elixir client. Example errors at compile.
* antd-lua/examples/05-graph.lua — calls client:graph_entry_*; client
  has no such methods.
* antd-php/examples/05-graph.php — calls $client->graphEntry*; client
  has no such methods.
* antd-php/src/Models/GraphEntry.php + GraphDescendant.php — orphan
  model classes; no client method returns them, no example survives.
* antd-ruby/examples/05_graph.rb — calls client.graph_entry_*; client
  has no such methods.
* antd-zig/examples/05-graph.zig — references antd.GraphDescendant
  and client.graphEntry*; antd module has no such types.
* antd-zig/build.zig — drop "05-graph" from example_names list.

The proto-generated stub at antd-ruby/lib/antd/v1/common_pb.rb still
has a GraphDescendant lookup. That's a side-effect of the .proto
removal landing in this same PR; the stub will clear on next proto
regen for ruby. Nothing imports it, so it stays here for now.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Nic-dorman Nic-dorman merged commit 865be9b into main May 19, 2026
3 checks passed
Nic-dorman added a commit that referenced this pull request May 19, 2026
… + 15 SDKs + docs)

Resolved against origin/main (which now contains #91/#92/#93/#94/#96) using
dev2 integration HEAD aa94940 as the canonical post-merge state. Net of the
example-file overlap with #93/#94, V2-300 reduces to 99 files / 44+ / 1694-.
Nic-dorman added a commit that referenced this pull request May 19, 2026
… + 15 SDKs + docs) (#95)

Resolved against origin/main (which now contains #91/#92/#93/#94/#96) using
dev2 integration HEAD aa94940 as the canonical post-merge state. Net of the
example-file overlap with #93/#94, V2-300 reduces to 99 files / 44+ / 1694-.
Nic-dorman added a commit that referenced this pull request May 20, 2026
…108)

The canonical antd proto and every other SDK's proto copy had this
message removed alongside the graph_entry surface deletion in #92.
The antd-kotlin local proto copy was missed in that sweep, leaving
kotlin out of sync with the rest of the ecosystem.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
Cuts v0.8.0 atop v0.7.1. Substantial breaking-change roll-up of the
put/get rename, the private-file PUT/GET gap close, and several minor
surface cleanups -- bundled here so the v1.0 cut can ship stable on top.

## Breaking (antd daemon)

- feat(antd)!: bind to 127.0.0.1 by default on REST and gRPC (#107).
  Previously bound 0.0.0.0; use --bind-rest / --bind-grpc to override.
- chore: remove dead graph_entry surface from antd proto + 5 SDKs (#92).
  GraphService and its 4 RPCs are gone; REST mounts dropped.
- chore: remove dir_upload_public / dir_download_public surface (#95).
  Use file_put_public on a directory path instead; the daemon recurses.
- feat(antd)!: normalize put/get convention + close private-file PUT and
  GET gaps (#115). Method renames across proto + REST + SDKs:
    data_put_private    -> data_put
    data_get_private    -> data_get
    file_upload_public  -> file_put_public
    file_download_public -> file_get_public
  New: file_put / file_get for the private file path (previously only
  the public variant existed). New typed results: DataPutResult,
  DataPutPublicResult, FilePutResult, FilePutPublicResult; PutResult
  is now annotated as chunk_put only.

## Additive

- feat(antd): honor payment_mode on gRPC put/cost paths and REST cost
  endpoints (#114). Optional kwarg threaded through every put/cost
  signature; empty/omitted maps to "auto" so older clients keep working.
- feat: external-signer public uploads + single-chunk prepare/finalize
  across 15 SDKs (#90).
- docs+spec: openapi.yaml refreshed for the v1.0 surface, including
  POST /v1/chunks/prepare and /v1/chunks/finalize for single-chunk
  external-signer publish (#126).

## SDK fan-out (PaymentMode + put/get convention, all 15)

#116 antd-go, #117 antd-py/ruby/elixir, #118 antd-rust, #119 antd-csharp,
#120 antd-java, #121 antd-swift, #122 antd-dart, #123 antd-kotlin,
#124 antd-cpp, #125 antd-js/php/zig/lua, #127 antd-mcp.

## SDK example + build fixes

- fix(antd-go): make 03-files example self-contained and runnable (#91)
- fix(examples): make 04-files runnable across cpp/rust/elixir/lua/php/ruby/zig (#93)
- fix(examples): runnable dart 04_files + java Example03Files; add java Example03Chunks (#94)
- feat: gRPC transport example for antd-py and antd-rust (#113)
- feat(antd-py): 07_external_signer example + ant-dev dispatcher entry (#98)
- feat(antd-js): 07-external-signer example + antd-py empty-payments fix (#99)
- feat(rust/go): 07-external-signer examples (#100)
- feat(antd-csharp): 07_external_signer example (#101)
- feat(antd-java): 07_external_signer example (#102)
- feat(antd-kotlin): 07_external_signer example (#103)
- feat(antd-dart): 07_external_signer example (#104)
- feat(antd-ruby): 07_external_signer example (#105)
- feat(antd-php): 07_external_signer example (#106)
- chore(antd-kotlin): drop stale GraphDescendant from local proto copy (#108)

## Docs / infra

- docs: external-signer flow reference + ABI + python smoke test (#97)
- docs: add SECURITY.md with threat model and disclosure policy (#109)
- docs!: refresh per-SDK READMEs + llms-full.txt + openapi.yaml for v1.0 surface (#126)
- ci: add Go lint + test + vuln scanning for antd-go (#112)
- ci: extend antd-rust to sibling-repo parity (fmt + clippy + audit + doc) (#111)
- ci: skip antd/openapi.yaml and llms-full.txt from triggering CI (#128)
- chore(scripts): add full-stack + integration sweep helpers (#96)
- fix(antd-rust): regenerate Cargo.lock to unbreak --locked CI (#110)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant