6-Week Execution Plan (Milestones + Acceptance Criteria)
Week 1 — Data Contracts + Beamline Adapter
Goal: lock down how your 3 sequential scans are interpreted as one operando time series.
Tasks
Define canonical coordinate/data model:
ScanVolume: voxel array + axes (mu, chi, d) + units + timestamps.
ExperimentSequence: ordered list of scans (scan0001, scan0002, scan0003, …).
Implement a beamline-specific NeXus adapter:
Parse your exact group paths and attributes.
Validate scan ordering and metadata continuity (start/end times, motor ranges, detector config).
Add a validate_dataset command that reports missing fields, shape mismatches, and non-monotonic time.
Acceptance criteria
Can load all three scans into a single ordered sequence object.
Metadata schema validation passes with a machine-readable report.
Unit tests cover path parsing + ordering + required-field checks.
Week 2 — Segmentation Baseline (Classical CV)
Goal: produce stable per-scan 3D spot instances without foundation models yet.
Tasks
Implement:
3D LoG enhancement
h-maxima seed extraction
3D watershed segmentation
Add post-processing:
remove tiny objects
hole fill / mask cleanup
Compute object-level descriptors:
centroid in (mu,chi,d)
covariance/eigenvalues
integrated intensity and bbox
Acceptance criteria
Segmentation runs end-to-end on all three scans.
Produces spot table (N spots/scan) and masks in a reproducible format.
Visual QC notebook shows at least 20 representative objects with overlays.
Week 3 — Tracking v1 (Physics-Only Association)
Goal: establish a robust baseline tracker before semantic embeddings.
Tasks
Build frame-to-frame association using:
gated distance in position/shape space
Hungarian global assignment
Add basic lifecycle events:
born, continued, terminated
Build trajectory outputs + simple lineage graph.
Acceptance criteria
Tracks are generated across all three scans.
ID-switch rate and track fragmentation are computed.
Manual QC on selected difficult regions (near-overlap cases) documented.
Week 4 — 2.5D Multi-View Semantic Features
Goal: integrate your key novelty.
Tasks
For each segmented spot, generate 3 orthogonal MIPs:
proj along mu → (chi,d)
proj along chi → (mu,d)
proj along d → (mu,chi)
Extract frozen features (DINO family) per view, concatenate + normalize.
Update association cost:
C
i
j
α
∥
x
i
−
x
j
∥
2
+
β
(
1
−
s
i
m
(
f
i
,
f
j
)
)
C
ij
=α∥x
i
−x
j
∥
2
+β(1−sim(f
i
,f
j
))
Run ablation: geometry-only vs geometry+semantic.
Acceptance criteria
Semantic feature extraction completes for all scans.
Tracking with semantic term reduces ID switches on overlap-heavy subsets.
Ablation report with tuned
α
,
β
α,β and confidence intervals.
Week 5 — Split/Merge + Fracture Precursor Logic
Goal: capture chemomechanical failure events, not just trajectories.
Tasks
Add lineage DAG event handling:
split (1→2+), merge (2+→1)
Implement precursor score:
clustering on dense/patch features
persistence requirement (e.g., ≥2 consecutive scans/frames)
Emit event table with timestamps and parent/child track IDs.
Acceptance criteria
Split/merge events are explicitly represented and queryable.
Precursor detection produces ranked candidates with confidence.
At least 5 manually reviewed event examples included in notebook/report.
Week 6 — Packaging, Benchmarking, and Release Candidate
Goal: make this usable by others and reproducible for publication.
Tasks
Harden CLI workflows:
validate, segment, track, events, report
Add configs and reproducible run manifests.
Write docs:
install, data layout, quickstart, FAQ, troubleshooting
Create benchmark outputs:
metrics summary + sample visualizations + runtime profiling.
Acceptance criteria
One-command pipeline run on your three-scan sample sequence.
Documentation allows a new user to reproduce baseline outputs.
v0.1.0 release candidate tagged with changelog and known limitations.
Weekly Deliverables (what you should have in-hand every Friday)
Code merged on a stable branch.
Run artifact (JSON/CSV/Parquet + plots) for the current milestone.
Short decision memo: what worked, what failed, what changed next week.
6-Week Execution Plan (Milestones + Acceptance Criteria)
Week 1 — Data Contracts + Beamline Adapter
Goal: lock down how your 3 sequential scans are interpreted as one operando time series.
Tasks
Define canonical coordinate/data model:
ScanVolume: voxel array + axes (mu, chi, d) + units + timestamps.
ExperimentSequence: ordered list of scans (scan0001, scan0002, scan0003, …).
Implement a beamline-specific NeXus adapter:
Parse your exact group paths and attributes.
Validate scan ordering and metadata continuity (start/end times, motor ranges, detector config).
Add a validate_dataset command that reports missing fields, shape mismatches, and non-monotonic time.
Acceptance criteria
Can load all three scans into a single ordered sequence object.
Metadata schema validation passes with a machine-readable report.
Unit tests cover path parsing + ordering + required-field checks.
Week 2 — Segmentation Baseline (Classical CV)
Goal: produce stable per-scan 3D spot instances without foundation models yet.
Tasks
Implement:
3D LoG enhancement
h-maxima seed extraction
3D watershed segmentation
Add post-processing:
remove tiny objects
hole fill / mask cleanup
Compute object-level descriptors:
centroid in (mu,chi,d)
covariance/eigenvalues
integrated intensity and bbox
Acceptance criteria
Segmentation runs end-to-end on all three scans.
Produces spot table (N spots/scan) and masks in a reproducible format.
Visual QC notebook shows at least 20 representative objects with overlays.
Week 3 — Tracking v1 (Physics-Only Association)
Goal: establish a robust baseline tracker before semantic embeddings.
Tasks
Build frame-to-frame association using:
gated distance in position/shape space
Hungarian global assignment
Add basic lifecycle events:
born, continued, terminated
Build trajectory outputs + simple lineage graph.
Acceptance criteria
Tracks are generated across all three scans.
ID-switch rate and track fragmentation are computed.
Manual QC on selected difficult regions (near-overlap cases) documented.
Week 4 — 2.5D Multi-View Semantic Features
Goal: integrate your key novelty.
Tasks
For each segmented spot, generate 3 orthogonal MIPs:
proj along mu → (chi,d)
proj along chi → (mu,d)
proj along d → (mu,chi)
Extract frozen features (DINO family) per view, concatenate + normalize.
Update association cost:
C
i
j
α
∥
x
i
−
x
j
∥
2
+
β
(
1
−
s
i
m
(
f
i
,
f
j
)
)
C
ij
=α∥x
i
−x
j
∥
2
+β(1−sim(f
i
,f
j
))
Run ablation: geometry-only vs geometry+semantic.
Acceptance criteria
Semantic feature extraction completes for all scans.
Tracking with semantic term reduces ID switches on overlap-heavy subsets.
Ablation report with tuned
α
,
β
α,β and confidence intervals.
Week 5 — Split/Merge + Fracture Precursor Logic
Goal: capture chemomechanical failure events, not just trajectories.
Tasks
Add lineage DAG event handling:
split (1→2+), merge (2+→1)
Implement precursor score:
clustering on dense/patch features
persistence requirement (e.g., ≥2 consecutive scans/frames)
Emit event table with timestamps and parent/child track IDs.
Acceptance criteria
Split/merge events are explicitly represented and queryable.
Precursor detection produces ranked candidates with confidence.
At least 5 manually reviewed event examples included in notebook/report.
Week 6 — Packaging, Benchmarking, and Release Candidate
Goal: make this usable by others and reproducible for publication.
Tasks
Harden CLI workflows:
validate, segment, track, events, report
Add configs and reproducible run manifests.
Write docs:
install, data layout, quickstart, FAQ, troubleshooting
Create benchmark outputs:
metrics summary + sample visualizations + runtime profiling.
Acceptance criteria
One-command pipeline run on your three-scan sample sequence.
Documentation allows a new user to reproduce baseline outputs.
v0.1.0 release candidate tagged with changelog and known limitations.
Weekly Deliverables (what you should have in-hand every Friday)
Code merged on a stable branch.
Run artifact (JSON/CSV/Parquet + plots) for the current milestone.
Short decision memo: what worked, what failed, what changed next week.