Skip to content

[Epic] Fable 5 architecture closeout — remaining decompositions and behavior consolidations #207

@suraj-ranganath

Description

@suraj-ranganath

🤖 This epic replaces and supersedes #197 and #205. It tracks the remaining Fable 5 architecture closeout work that was intentionally not included in PR #204 because it either changes observable behavior, spans broad ownership boundaries, or decomposes large modules.

Summary

Complete the remaining Fable 5 architecture and behavior-consolidation findings in bounded, reviewable phase PRs. The goal is not cosmetic churn. Each phase must remove real duplicated contracts, correct behavior drift where EEGLAB parity or EEGPrep session semantics require it, and preserve EEGPrep as a standalone Python application that remains familiar and pleasant for EEG researchers.

Branching

Scope

In scope:

Out of scope:

Phases

Parallelization And Merge Order

  1. Merge [Fable 5 Architecture Closeout] Phase 1 — shared contracts, boundary events, and history mutation #208 first. It defines the shared low-level contracts other phases should consume.
  2. After [Fable 5 Architecture Closeout] Phase 1 — shared contracts, boundary events, and history mutation #208, [Fable 5 Architecture Closeout] Phase 2 — rejection, ICA, and clean_rawdata helper convergence #209, [Fable 5 Architecture Closeout] Phase 3 — STUDY, time-frequency, and statistics behavior consolidation #210, [Fable 5 Architecture Closeout] Phase 4 — CLI and extension architecture consolidation #211, and [Fable 5 Architecture Closeout] Phase 5 — BIDS, Qt, and FIR ownership decomposition #212 can run in parallel if agents coordinate imports and helper names.
  3. Merge [Fable 5 Architecture Closeout] Phase 2 — rejection, ICA, and clean_rawdata helper convergence #209 and [Fable 5 Architecture Closeout] Phase 3 — STUDY, time-frequency, and statistics behavior consolidation #210 before [Fable 5 Architecture Closeout] Phase 6 — statistics and ICLabel decomposition closeout #213, because [Fable 5 Architecture Closeout] Phase 6 — statistics and ICLabel decomposition closeout #213 does final audit/closeout and the statistics split should follow the behavior-consolidation decisions.
  4. Merge [Fable 5 Architecture Closeout] Phase 6 — statistics and ICLabel decomposition closeout #213 last and run the epic-level integration/review pass before opening the final epic PR.

Recommended order: #208 -> (#209 + #210 + #211 + #212) -> #213 -> final epic PR.

Epic-Level Acceptance Criteria

Closeout Evidence

All phase PRs have merged into feature/fable5-architecture-closeout: #214, #215, #217, #218, #216, and #219. Local epic-branch verification passed ruff check, ruff format --check, ty check, ./pre-commit.py --changed-from origin/develop, focused architecture integration tests, and EEGPREP_SKIP_MATLAB=1 uv run --no-sync pytest -m "not slow".

Metadata

Metadata

Labels

P1High priorityepicMulti-phase implementation epic

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions