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
dataset.isIngested() and convertLinkedSessionToIngested() are missing: uploadDataset cannot make the check MATLAB refuses to skip #136
Part of #90 (PR #61 catch-up), recovered by the triage correction. #90 listed isIngested as "already present at the fork point"; that is true of session.isIngested and false of dataset.isIngested, which is a different method.
❌ absent — the name appears only in a docstring at dataset/_dataset.py:50
dataset.convertLinkedSessionToIngested
dataset.m:381
❌ absent — only a bridge-yaml entry, no implementation
Neither was present at ed78f8b either; session.isIngested was added to main independently after the fork point, which is what the corrected triage row records.
The consequence: an upload gate that cannot be evaluated
MATLAB refuses to upload a dataset that is not fully ingested — +ndi/+cloud/uploadDataset.m:53:
if ~ndiDataset.isIngested()
Python's uploadDataset (src/ndi/cloud/orchestration.py:372) has no ingestion check at all, because there is no dataset.isIngested() to call. A dataset with linked (non-ingested) sessions will be uploaded, and whatever lives outside the dataset directory simply will not go. That is the same failure surface as #130 (uploadDataset silently uploading zero documents) and worth fixing alongside it.
The navigator has the same gap: +ndi/+gui/+nav/datasetsPane.m:958 gates a menu action on s.isIngested().
convertLinkedSessionToIngested
MATLAB's contract (dataset.m:381), worth mirroring rather than inventing:
copies a linked session's documents and binary files into the dataset, making it self-contained;
requires S.isIngested() to be true first — so this issue's two halves are ordered: isIngested first;
areYouSure (default false) and askUserToConfirm (default true) options — a destructive-ish operation behind an explicit gate;
documented as needing ~2x the disk space of the session during the copy.
That last point matters for the port: it should fail cleanly on a short disk rather than half-copying. Worth an explicit precheck and a test, which MATLAB does not have.
Notes
The branch catchup/ndi-python-2026-08 has both (dataset/_dataset.py:252 and :332), but predates the DID file-services rewrite — and the binary-file copy is exactly the part that rewrite changed. Treat it as a reference for the contract, not for the file mechanics.
src/ndi/dataset/ndi_matlab_python_bridge.yaml already has the convertLinkedSessionToIngested entry; it needs an INTERFACE UPDATE with a real python_path and matlab_last_sync_hash when this lands.
A dataset with no sessions is considered ingested (MATLAB dataset.m:241-247) — easy to get wrong.
Activity