Skip to content

GFQL/Cypher: drive down expr-temporal wrong-row tranche (14 cases, #1353 item #2) #1361

Closed

Description

@lmeyerov

Summary

Concrete tranche from meta-issue #1353 item #2 — Temporal comparison / canonicalization. Drives down 14 `success_wrong_rows` cases under `expressions/temporal` to `success_matches_expected` without growing `unexpected_success_expected_error`.

Targets:

  • `expr-temporal2-6-5`
  • `expr-temporal6-6-2`, `expr-temporal6-6-8`
  • `expr-temporal7-1-1`, `expr-temporal7-1-2`
  • `expr-temporal7-2-1`, `expr-temporal7-2-2`
  • `expr-temporal7-3-1`, `expr-temporal7-3-2`
  • `expr-temporal7-4-1`, `expr-temporal7-4-2`
  • `expr-temporal7-5-1`, `expr-temporal7-5-2`
  • `expr-temporal7-6-8`

Approach

  1. Triage first — for each scenario, capture: actual rows, expected rows, root-cause hypothesis (compile vs. row-pipeline temporal comparator vs. fixture-parser limitation), candidate fix locus. Findings live under `plans/1361-temporal-wrong-rows/findings/` (gitignored).
  2. Decide ordering after triage. Prefer one issue / one branch / one or two clean commits over a PR stack to limit management overhead.
  3. Implement fixes with behavioral tests under `graphistry/tests/compute/gfql/...` and contract update in tck-gfql `tests/cypher_tck/direct_cypher_xfail_contract.py`.
  4. Use repo-local review skill (`agents/skills/review/SKILL.md`); iterate until convergence.
  5. cuDF dual-version validation on `dgx-spark` (RAPIDS 25.02 + 26.02) only if changes touch row-pipeline runtime path; skip for compile-time-only.

Lesson from #1359

Item #1's 14 wrong-row cases all bottomed out as tck-gfql repo bugs (parser stored list literals as strings; `_rows_ordered` ignored "in any order"). Tracked in tck-gfql#36. Temporal values survive `_parse_properties` cleanly (string literal in CREATE → string in df, which GFQL handles natively), so this tranche is more likely to contain real pygraphistry semantic bugs.

The `_rows_ordered` fix in tck-gfql#36 will likely incidentally clear some of these scenarios too — re-snapshot after that lands.

Acceptance criteria

  • 14 listed scenarios move from `success_wrong_rows` → `success_matches_expected`.
  • `unexpected_success_expected_error` does not increase.
  • `tck-gfql` focused contract checks remain green.
  • Existing `graphistry/tests/compute/gfql/...` suite remains green.

Repro

```bash
PYTHONPATH=/home/lmeyerov/Work/pygraphistry:/home/lmeyerov/Work/tck-gfql UV_EXCLUDE_NEWER="6 days" \
uv run --python 3.13 --no-project --with pytest --with pandas \
python -m pytest -q tests/cypher_tck/test_tck_runner.py -k "test_direct_cypher_xfail_contract"
```

Cross-reference

Tracks meta-issue #1353 item #2. Sibling: #1359 (item #1, gated on tck-gfql#36).

Activity

  1. lmeyerov commented on May 9, 2026

    @lmeyerov
    ContributorAuthor

    Closed by pygraphistry #1364 (squash f7767a3e) + tck-gfql#39 (squash c31a9a6) + tck-gfql#38 follow-up.

    Outcome of the 14-case tranche under #1353 item #2:

    • 13 of 14 → success_matches_expected in tck-gfql contract:
    • 1 of 14 deferred: expr-temporal2-6-5 — historical timezone offset for Stockholm 1818 (pygraphistry IANA tzdata says +01:12:12; openCypher TCK expects +00:53:28). Niche pre-1879 LMT case; not worth a fix here. If needed, file a fresh pygraphistry issue at that point.

    Closing this tracker.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions