Skip to content

pcgv3: manifest v2 for non co-located seg and meshes#543

Open
akhileshh wants to merge 8 commits into
pcgv3from
meshing-v2-pcgv3
Open

pcgv3: manifest v2 for non co-located seg and meshes#543
akhileshh wants to merge 8 commits into
pcgv3from
meshing-v2-pcgv3

Conversation

@akhileshh

Copy link
Copy Markdown
Contributor

No description provided.

akhileshh and others added 4 commits July 10, 2026 02:41
MeshMeta wraps a ChunkedGraph and exposes mesh dir locations and
per-dataset params from custom_data["mesh"] (the single source of truth),
shared branch-agnostically across the pcgv2/pcgv3 lines. Resolves absolute
initial/dynamic dirs so meshes can live in a different bucket than the
watershed, and flags graphs old clients can't reach.

Co-Authored-By: Claude <noreply@anthropic.com>
Branch-agnostic manifest/v2.py: parse the client's advertised manifest
version from the Accept header, and assemble the v2 format that groups
fragments by absolute mesh bucket path so mesh location travels in the
manifest itself.

Co-Authored-By: Claude <noreply@anthropic.com>
Replace custom_data["mesh"] reads (mesh dir, max_layer, initial_ts,
dynamic path) with MeshMeta, making the meshing manifest byte-identical to
the main line so v2 changes cherry-pick clean both ways.

Co-Authored-By: Claude <noreply@anthropic.com>
Serve the v2 grouped-by-bucket manifest to clients that advertise
manifest_version=2, else the v1 flat list (byte-identical). Refuse with 406
when a migrated graph is requested without v2, so old clients fail loudly
instead of getting unreachable paths.

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

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Impacted file tree graph

@@           Coverage Diff           @@
##            pcgv3     #543   +/-   ##
=======================================
  Coverage   67.66%   67.66%           
=======================================
  Files          89       89           
  Lines        8624     8626    +2     
  Branches     1149     1149           
=======================================
+ Hits         5835     5837    +2     
  Misses       2600     2600           
  Partials      189      189           
Files with missing lines Coverage Δ
pychunkedgraph/graph/exceptions.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

akhileshh and others added 2 commits July 13, 2026 16:25
Anchor the verify=1 shard reader at initial_path (via reader_anchor) so migrated datasets read initial meshes from the real bucket, and append Accept-Encoding to Vary so manifests keep advertising Accept.

Co-Authored-By: Claude <noreply@anthropic.com>
_remeshing wrote unsharded meshes to the dataset_info-derived path,
not the dynamic_path the v2 manifest advertises, so clients 404 on
freshly remeshed meshes. Source mesh paths from MeshMeta.

Co-Authored-By: Claude <noreply@anthropic.com>
v2 emits each fragment identical to v1 (seg id prepended when asked) and honors return_seg_ids, differing only by grouping fragments under their bucket key, so the client reuses its v1 handling unchanged.

Co-Authored-By: Claude <noreply@anthropic.com>
Emit initial/dynamic absolute bucket locations in mesh_metadata on both
the served /info endpoint and get_json_info, so external clients and
PCG's own manifest-bypass reads resolve meshes from the real buckets.

Co-Authored-By: Claude <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