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
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)
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/timeassert 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.
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.
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)
JWT off environment variables. The cloud token is passed between functions via NDI_CLOUD_* env vars; both NDI-matlab and NDI-python deferred removing this "for parity."
Decide and change together.
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.
Closing — all action items are done and the two deferred items are tracked in their own dedicated issues.
Symmetry parity — DONE on main
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.
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.
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.
timestamp datenum-vs-epoch. Tracked at VH-Lab/DID-matlab#147, which inventories every producer/consumer across DID/NDI/NDR (MATLAB and Python) and records the 2026-06 decision: keep datenum for now.
Activity
Merge pull request #59 from Waltham-Data-Science/claude/dazzling-rama…
Build the napari ladder, and stage gene payloads inside the database
stevevanhooser commentedon Sep 4, 2026
Closing — all action items are done and the two deferred items are tracked in their own dedicated issues.
Symmetry parity — DONE on
mainTime
time_convertsymmetry.tests/symmetry/_time_scenario.py(lines 55-99) builds a_SpecRefscenario referent (the Python analogue of a realndi.element, withepochsetname,epochtable,__eq__/__hash__);tests/symmetry/make_artifacts/time/test_time_convert.py:40-42callsscenario.verify_expected(results)before writing the artifact, andverify_expected(_time_scenario.py:188-200) asserts eachout_time/out_epochmatchesexpected()within 1e-9 against the MATLAB-authoritative reference list at lines 177-185. No more silent skipping.Compute
finalize→advancerename. No remaining hits forfinalize_compute_session,FinalizeSession, orfinalizeSession. Replacement is live atsrc/ndi/cloud/api/compute.py:62(def advanceSession(...), POSTing/compute/{sessionId}/advance), with the bridge yaml mapping to matlab'sadvanceSession.m.Symmetry CI infra.
.github/workflows/test-symmetry.ymlmatches the NDI-matlab branch by name and falls back tomain(line 43); latest run onmain(2026-09-04) is green.Deferred items — tracked separately, closing here
NDI_CLOUD_*env vars. Filed as Cloud credentials in environment variables (token + password): decide MATLAB-parity policy #189 ("Cloud credentials in environment variables (token + password): decide MATLAB-parity policy"), with the full MATLAB-parity policy discussion and both the token and password sites.timestampdatenum-vs-epoch. Tracked at VH-Lab/DID-matlab#147, which inventories every producer/consumer across DID/NDI/NDR (MATLAB and Python) and records the 2026-06 decision: keepdatenumfor now.Generated by Claude Code