Development Roadmap¶
Planned improvements to the DynVision toolbox itself (code, workflow, and tooling — as distinct from the documentation tasks tracked in Documentation TODOs).
Each item links to the detailed design note in development/planning/ where one
exists. Status markers: ⬜ planned · 🚧 in progress · ✅ done (kept briefly for
context, then folded into release notes).
Compatibility & Packaging¶
- ⬜ Python 3.12 / 3.13 support — currently pinned to
>=3.11,<3.14but only tested on 3.11. The only blocker is FFCV:torch>=2.4.0/torchvision>=0.19.0are required for 3.12, and FFCV's C++ extension must be verified to build against them. All other dependencies are already 3.12-compatible. See Python 3.12 compatibility notes. - ⬜ CI matrix across Python versions — extend the test workflow to run on 3.11, 3.12, and 3.13 once FFCV builds cleanly, so regressions surface early.
- ⬜ Custom-model template files — the README refers to model templates that
do not yet exist in the repo. Ship a minimal, copy-pasteable template (a
BaseModelsubclass plus a config stub) underexamples/.
Configuration & Parameters¶
- 🚧 Config-driven transform system — move transform selection out of
hardcoded logic in
dynvision/data/transforms.pyinto the config layer so presets are inspectable and overridable from YAML. Fixes the fragile substring-matching lookup (e.g.ffcv_test_imagenettefailing) and makes the torch/FFCV composition rules consistent. See Transform configuration roadmap. - ⬜ Parameter-provenance logging — replace the generic
(override)/(adjusted)markers with explicit provenance (which precedence tier —default/config/cli/override— set each value, and whether it was later mutated at runtime or derived by a validator). See the Provenance Tagging Plan in Logging modernization. - ⬜ Document mode-detection precedence — the interaction between
log_level="DEBUG"andepochs <= 5(and other mode triggers) needs a single authoritative decision tree in code and docs so mode activation is predictable.
Workflow & Reproducibility¶
- ✅ Parallel experiment processing —
process_test_datasplit into a per-output processing stage plus aggregation, enabling parallelism and reduced disk pressure for large (30 GB+) response files. See Parallel experiment processing. - ⬜ Config snapshot isolation — editing config files while a cluster workflow is running can leak the updated config into jobs Snakemake submits later, breaking within-run reproducibility. Freeze the resolved config at workflow start and point running jobs at the snapshot. See Snakecharm config stability.
- ⬜ Standardise experiment-config wildcards — mark which wildcards are required vs optional in experiment paths so users don't produce incomplete targets.
Logging & Diagnostics¶
- 🚧 Centralised, structured logging — route every entrypoint through
dynvision.utils.configure_logging, let each Pydantic params class own itssummary_sections, and trim duplicate/chatty output between params modules and runtime scripts. See Logging modernization.
Performance & Visualization¶
- 🚧 Memory-efficient response plotting —
plot_responses.pyOOMs on ~450 MB / ~7.5 M-rowtest_data.csv. Load only required columns, downcast, aggregate before rendering, and stop Seaborn from recomputing error bars per trace. Shared helpers move todynvision/utils/visualization_utils.py. See Visualization refactor plan. - ⬜ FFCV guidance — document when FFCV helps vs. adds overhead, and the fallback behaviour when it is unavailable, alongside the existing install troubleshooting.
- ⬜ Mixed-precision guidance — GPU requirements, numerical-stability caveats,
and representative speedups for
precision: "bf16-mixed"/"16-mixed".
Testing¶
- ⬜ Broaden the test suite — extend coverage of temporal-dynamics correctness, recurrence integration, data-loading pipelines, parameter validation, and model initialization / coordination-network building.
Naming Cleanup¶
- ⬜ Single canonical project name — reconcile the mixed use of
rhythmic_visual_attention(Makefile),Modeling_Dynamical_Vision(project_paths.pyproject_name), andDynVision(toolbox_name) so commands and paths are consistent, and drop the user-specific defaultworking_dir.
Where completed work lives
Finished items are summarised in release notes rather than accumulating
here. The detailed design notes in development/planning/ are retained as a
historical record even after their work lands.