You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
GFQL type system follow-on A: public declarative schema model + stable exports #1337
Expose a user-facing schema declaration API (node/edge/schema contracts) with stable import paths, while preserving compatibility with current binder/preflight internals.
In scope
Public schema model module(s) and stable exports
Declarative node/edge contracts, including topology constraints
Adapter path from public schema objects to internal GraphSchemaCatalog
Strict/permissive validation policy wiring at schema-binding seam
Out of scope
Schema inference implementation
Public Arrow/plottable schema boundary APIs
Acceptance
Users can declare graph schema objects via stable public imports.
Declared schema can be bound and consumed by binder/preflight validation.
Topology/property mismatches produce clear compile-time/preflight diagnostics.
Tests cover declaration, adapter mapping, and schema-bound validation behavior.
CHANGELOG/docs updated with public API contract and migration notes.
Scoping alignment note: lane D #1345 tracks cross-lane API contract alignment in parallel.\n\nThis lane A issue remains independently executable and non-blocked by D; please include compatibility notes needed for D drift checks.
Coordinator research follow-up note for #1337 / #1457 scope:
The type-system research reinforces keeping this lane narrow:
Land the public declared schema contract as open and Arrow-backed.
Do not expand this issue/PR into full label algebra, schema effects, remote payload transport, or tutorial work.
Cypher labels should be described as predicates over label membership.
NodeType / EdgeType should be treated as trait-like contracts, not nominal Java-style classes.
Conjunctive labels such as (:A:B) should eventually merge trait/property fragments, but conflict/presence policy belongs in follow-ons, not this merge gate.
Merged PR #1457 as 3d85344d083295a05c7619baa1a5e415a8d69b8f.
Closeout:
Public schema surface landed as experimental: NodeType, EdgeType, GraphSchema, EdgeTopology from graphistry.schema plus top-level re-exports.
Docs/docstrings/changelog now mark the surface experimental, and the schema docs example uses real graphistry.edges(...).nodes(...).bind(schema=schema) graph binding.
Local validation contract is explicit: provided schema only in this PR; local dataframe fallback still works; no schema inference yet; gfql_remote(...) does not transport the bound GraphSchema.
Review skill reconverged after final docs/changelog changes.
CI/RTD green on head 117e52436974e2cf8681f2712c6f68adda0e6c8b.
Activity
lmeyerov commentedon May 7, 2026
Scoping alignment note: lane D #1345 tracks cross-lane API contract alignment in parallel.\n\nThis lane A issue remains independently executable and non-blocked by D; please include compatibility notes needed for D drift checks.
lmeyerov commentedon May 17, 2026
Coordinator research follow-up note for #1337 / #1457 scope:
The type-system research reinforces keeping this lane narrow:
NodeType/EdgeTypeshould be treated as trait-like contracts, not nominal Java-style classes.(:A:B)should eventually merge trait/property fragments, but conflict/presence policy belongs in follow-ons, not this merge gate.Follow-ons now carry the broader work:
Practical coordinator rule: do not block #1457 on the full graph type calculus.
lmeyerov commentedon May 20, 2026
Coordinator audit cross-link: typed-schema cluster dispatch audit posted on #1058:
#1058 (comment)
This issue/PR was included in the 2026-05-20 audit covering #1457/#1337/#1338/#1339/#1485/#1465 and downstream implications for #1567/#1580.
lmeyerov commentedon May 25, 2026
Merged PR #1457 as
3d85344d083295a05c7619baa1a5e415a8d69b8f.Closeout:
NodeType,EdgeType,GraphSchema,EdgeTopologyfromgraphistry.schemaplus top-level re-exports.graphistry.edges(...).nodes(...).bind(schema=schema)graph binding.gfql_remote(...)does not transport the boundGraphSchema.117e52436974e2cf8681f2712c6f68adda0e6c8b.Follow-ons remain #1338 schema inference, #1339 Arrow/plottable boundary enforcement/coercion, #1485 schema effects, and #1465 remote schema transport.