Skip to content

2026-06 audit: NDI-python follow-ups & symmetry parity with merged NDI-matlab #828 #58

Closed

Description

@stevevanhooser

Tracking issue for the NDI-python side of the 2026-06 NDI ecosystem audit. The
NDI-matlab half merged as VH-Lab/NDI-matlab#828 (DID halves:
VH-Lab/DID-matlab#148, VH-Lab/DID-python#24). This captures the changes there
that need an NDI-python counterpart, plus what was deliberately not changed.

Symmetry parity (so the cross-language tests agree)

  1. Time time_convert symmetry (audit item 28) — MATLAB is now the reference. NDI-matlab:

    • fixed a real ndi.time.syncgraph/time_convert bug (the same-referent/different-clock
      path indexed the cell-array epoch_clock with == instead of cellfun(@(x) eq(x,...)));
    • rebuilt the symmetry referent as a real ndi.element (the bespoke scenarioReferent
      lacked ==, so every same-referent conversion returned empty);
    • made makeArtifacts/time assert each case equals scenario.expected()
      (MATLAB-authoritative) instead of silently skipping.
      The shared scenario spec (scenarioStruct) is unchanged. Action: ensure the Python
      _time_scenario/_SpecRef produces the same conversions and asserts the same expected
      values; treat the MATLAB scenario as the source of truth.
  2. Compute finalize → advance rename. NDI-matlab renamed
    finalizeSession/FinalizeSession/finalize_compute_session →
    advanceSession/AdvanceSession/advance_compute_session to match the cloud API
    (swagger exposes only POST /compute/{sessionId}/advance; there is no /finalize).
    Action: rename the NDI-python cloud client's equivalent finalize call to advance.

  3. Symmetry CI infra. The cross-language symmetry workflow is driven from NDI-python.
    NDI-matlab fixed its side (authenticated GITHUB_TOKEN for matbox dependency resolution;
    tests/+ndi/+symmetry/requirements.txt present). Action: confirm the NDI-python-driven
    workflow passes against the updated NDI-matlab main.

Deferred — cross-client, not changed (need a joint decision)

Deferred — NDI-matlab-side (FYI, no NDI-python action)

requirements.txt SHA-pinning (needs matbox @sha verification), GenBank vocabulary dedup →
git-LFS, and a bulk error()-identifier rewrite were flagged but not done on the MATLAB side;
listed here only so the audit's full deferral set is in one place.

Activity

  1. added a commit that references this issue on Jun 15, 2026
  2. stevevanhooser commented on Sep 4, 2026

    @stevevanhooser
    ContributorAuthor

    Closing — all action items are done and the two deferred items are tracked in their own dedicated issues.

    Symmetry parity — DONE on main

    1. Time time_convert symmetry. tests/symmetry/_time_scenario.py (lines 55-99) builds a _SpecRef scenario referent (the Python analogue of a real ndi.element, with epochsetname, epochtable, __eq__/__hash__); tests/symmetry/make_artifacts/time/test_time_convert.py:40-42 calls scenario.verify_expected(results) before writing the artifact, and verify_expected (_time_scenario.py:188-200) asserts each out_time/out_epoch matches expected() within 1e-9 against the MATLAB-authoritative reference list at lines 177-185. No more silent skipping.

    2. Compute finalize → advance rename. No remaining hits for finalize_compute_session, FinalizeSession, or finalizeSession. Replacement is live at src/ndi/cloud/api/compute.py:62 (def advanceSession(...), POSTing /compute/{sessionId}/advance), with the bridge yaml mapping to matlab's advanceSession.m.

    3. Symmetry CI infra. .github/workflows/test-symmetry.yml matches the NDI-matlab branch by name and falls back to main (line 43); latest run on main (2026-09-04) is green.

    Deferred items — tracked separately, closing here


    Generated by Claude Code

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

Metadata

Metadata

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