AllenNeuralDynamics / AllenNeuralDynamics/aind-motion-energy
Tracking: AIND standards compliance for the motion energy pipeline (23 issues)
- 主要言語
- Python
- スター
- 1
- フォーク
- 0
- 平均マージ
- 2時間 27分
- マージ済み PR(30日)
- 21
説明
Tracking issue for bringing the motion energy pipeline — `aind-motion-energy`, `aind-motion-energy-capsule`, `aind-motion-energy-batch` — up to the [AIND software practices](https://docs.allenneuraldynamics.org/en/latest/policies_practices/software_practices.html).
Full plan, dependency graph, and rationale: [docs/standards-compliance.md](https://github.com/AllenNeuralDynamics/aind-motion-energy/blob/main/docs/standards-compliance.md).
> **Revised 2026-09-10 after a source audit.** Every remaining item traces to a specific requirement in the practices page, one of the three template repos it names, or the reusable workflows it mandates — plus one metadata item (M-1) kept deliberately. Anything that did not trace to a source was removed from scope regardless of merit. **30 issues → 23**, and **4 of the 5 breaking changes are gone**. See [Out of scope](https://github.com/AllenNeuralDynamics/aind-motion-energy/blob/main/docs/standards-compliance.md#out-of-scope).
23 issues across three repos, in seven phases. Within a phase, issues are independent and can run in parallel.
### Phase 0 — Immediate ✅ complete
- [x] #1 — X-1 · land the plan
- [x] capsule bug-fix rescue (trace slicing in `render_motion_energy_video`) — [ab1606f](https://github.com/AllenNeuralDynamics/aind-motion-energy-capsule/commit/ab1606f)
- [x] #2 — X-2 · branch strategy and commit conventions
- [x] #3 — X-3 · security sweep
### Phase 1 — Foundation
Library items merged to `dev` 2026-09-10.
- [x] #4 — L-1 · adopt ruff — #17
- [x] #5 — L-2 · packaging metadata and versioning — #18
- [x] #6 — L-3 · `.github/` scaffolding — #19
- [x] AllenNeuralDynamics/aind-motion-energy-capsule#4 — C-4 · capsule lint config and CI — capsule#8
- [x] AllenNeuralDynamics/aind-motion-energy-batch#8 — BA-8 · batch lint config and CI — batch#9 (red `ruff` check fixed by BA-5, below)
### Phase 2 — Library CI
- [x] #7 — L-4 · lint + test workflow, milestone linking — #22
### Phase 3 — Quality ✅ complete
- [x] #8 — L-5 · numpydoc docstrings and type hints — #23
- [x] #14 — L-11 · README overhaul + support badge — #24
- [x] AllenNeuralDynamics/aind-motion-energy-capsule#1 — C-1 · README and parameter contract — capsule#9
- [x] AllenNeuralDynamics/aind-motion-energy-capsule#6 — C-6 · move example notebook to `examples/` — capsule#10
- [x] AllenNeuralDynamics/aind-motion-energy-batch#1 — BA-1 · README and repo hygiene — batch#10
- [x] AllenNeuralDynamics/aind-motion-energy-batch#5 — BA-5 · docstrings, typing, ruff — batch#11
- [x] AllenNeuralDynamics/aind-motion-energy-batch#7 — BA-7 · Dockerfile — batch#12 (`# hash:placeholder` deliberately deferred to a manual CO Environment UI build+sync)
### Phase 4 — Long poles ✅ complete
`dev` promoted to `main` 2026-09-11 — #28. Before merging: `main` and `dev` builds verified to produce bit-identical output arrays and pixel-identical figures on the same input video.
- [x] #10 — L-7 · tests for `cli.py` and `save_summary_plots`; 100% coverage gate — #25
- [x] ~~#13 — L-10 · MkDocs, Read the Docs, `examples/` — #26~~ **reverted in #30** — RTD project was never imported; docs hosting deferred to SciComp's infra. `examples/` directory move kept. See #29 (closed).
- [x] #15 — L-12 · pass `mypy --strict` — #27
### Phase 5 — Release and pin (serial) ✅ complete
- [x] #12 — L-9 · release workflow and first tagged release ⚠️ breaking (B-2) — manual release, not the plan's automation; see #12
- [x] AllenNeuralDynamics/aind-motion-energy-capsule#2 — C-2 · Dockerfile release pin and dependency log ⚠️ breaking (B-2) — repinned to `@v0.2.0`, `pip_list.txt` added to `code/run`; environment rebuilt, pin verified live 2026-09-11
### Phase 6 — Metadata (last, by design)
- [ ] #20 — M-1 · emit `processing.json` across the pipeline (all three repos)
- [ ] AllenNeuralDynamics/aind-motion-energy-batch#2 — BA-2 · externalize hardcoded config; pin `ME_CAPSULE_VERSION` — *retained on reproducibility grounds and because M-1's provenance record is only meaningful against a pinned capsule version; the only remaining item without a direct source citation*
---
### Removed from scope
**Kept open as ordinary backlog** — off this checklist, not part of the compliance effort:
- #9 — L-6 · replace `print()` with `logging` — page marks structured logging *TBD*
- AllenNeuralDynamics/aind-motion-energy-batch#3 — BA-3 · retries and incremental manifest — real robustness gap, no standards backing
- AllenNeuralDynamics/aind-motion-energy-batch#4 — BA-4 · session resolution correctness — real bug, no standards backing
- AllenNeuralDynamics/aind-motion-energy-capsule#5 — C-5 · app-panel parameter surface — product decision
- AllenNeuralDynamics/aind-motion-energy-capsule#7 — C-7 · committed dataset pin — CO configuration decision
**Closed:**
- #11 — L-8 · typed metadata model — not required (`dict[str, Any]` passes `mypy --strict`); folded into #20
- AllenNeuralDynamics/aind-motion-energy-capsule#3 — C-3 · `processing.json` — superseded by #20
- AllenNeuralDynamics/aind-motion-energy-batch#6 — BA-6 · make the launcher testable — the 100% coverage gate applies to the library only
**Not re-added** (correctly stripped in `9c64c0e` and capsule `e39ff91`): `CODEOWNERS`, PR templates, capsule `CODE_OF_CONDUCT.md`, capsule issue templates, capsule `metadata/metadata.yml`. None appears in the template that governs its repo.
---
**Justified deviations from the standards page** (recorded in full in `docs/standards-compliance.md`):
- Repos keep the `aind-` prefix instead of `-` — renaming breaks the capsule Dockerfile git pin, console-script name, import path, and CO wiring.
- pytest instead of `unittest` — already the library's convention and matches current AIND CI (`uv run pytest tests/`).
- Capsules are not uv projects; their CI uses `pip install ruff` rather than `uv run …` — a capsule is executed by Code Ocean, never installed.
- Capsule branching differs from the `dev`/`main` PR flow — the Code Ocean web IDE pushes directly to a capsule's attached branch and cannot open PRs, so that branch cannot be protected. See X-2.
- The 100% coverage gate applies to the library only — `aind-capsule-template` ships no `tests/` directory, and the page's capsule guidance is "thin wrappers".
コントリビューションガイド
評価
この issue はまだ評価されていません。