Skip to content

Bolt: tracking issue for protocol/type-fidelity gaps surfaced by certification #4890

Description

@robfrank

Part of #4882.

Motivation

Four concrete depth gaps were confirmed by code audit up front: (1) temporal types serialize as ISO strings instead of native Bolt structures, (2) Duration and spatial Point have no handling at all in BoltStructureMapper/PackStreamWriter, (3) no Neo.TransientError.* error codes are defined so driver-side transient retry can't trigger correctly, (4) ROUTE returns only this node's own address - no HA-aware multi-server routing table - and Bolt 5.x is never advertised/negotiated. Group B's suites would surface exactly how each of these fails and might reveal more; this issue exists to coordinate fixes rather than guess scope upfront.

Proposed design

  • This issue stays a tracking issue - as Group B suites go red on these (and possibly other) scenarios, spawn concrete, narrowly-scoped fix sub-issues from here.
  • Each spawned sub-issue follows the same template (Motivation/Proposed design/Acceptance criteria/Dependencies/Effort) and links back here and to the Epic.

Status update (2026-07-05): gate lifted, children spawned

All five Group B suites are now merged (#4885 python, #4886 csharp, #4887 go, #4888 js, #4889 java), and bolt/conformance/spec.yaml pins the red cells authoritatively (current_status: expected-fail, each tracking_issue: "#4890"). The evidence exists, so children are now scoped.

Reconciliation of the original 4 gaps against actual suite evidence:

  • Gap (1) temporal ISO strings -> RESOLVED by Bolt: serialize outbound temporal values as native PackStream structs instead of ISO strings #4907 (serialize outbound Bolt temporals as native PackStream structs). Temporal TYPE scenarios pass. No child needed.
  • Gap (3) Neo.TransientError.* -> NOT a gap. TX-005/ERR-004 are certified positive in the Java suite: Neo.TransientError surfaces on a write-write race via overlapping explicit transactions. Documented as certified working; no child needed.
  • Gap (2) Duration/Point -> still red (TYPE-011, TYPE-012).
  • Gap (4) ROUTE + 5.x -> still red (CONN-004, PROTO-002).

Plus three additional gaps the suites revealed (as anticipated): RESULT-004 (summary counters), TYPE-003 (Path never constructed), ERR-002 (semantic vs syntax error code).

Spawned sub-issues (one per remaining red cell / logical group)

Acceptance criteria

  • All confirmed gaps have a corresponding spawned sub-issue once Group B's tests are red on them, or are explicitly re-classified (gaps 1 and 3 above are resolved/certified, documented here).
  • Every spawned child closes its scenario in spec.yaml (flip expected-fail -> passing) or the cell is documented as an accepted limitation in the compatibility matrix.
  • No gap remains silently unhandled - the A1 conformance spec is authoritative on what "handled" means.

Dependencies

Depended on Group B (the five per-language suites) surfacing red cells - now satisfied.

Effort estimate

S for this tracking issue itself (children each carry their own estimate above).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

parent-issueLabel to mark issues used to group related topics

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions