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
Part of Stage 1 — behavior-preserving construction (see the Stage-1 tracking issue). Stage 0: #439. Plan documents live in the shared workspace: cellpy-workspace/architecture-plan/ (the architecture-plan repo; formerly architecture-plan/) (alongside the cellpy and cellpy-core repos). Everything in Stage 1 lands on master with the full suite green; nothing flips user-visible behavior.
Goal
Dissolve the three contract-level index conventions while still on pandas
(behavior-preserving — the keys are all also kept as columns today):
A1: loaders stop promoting data_point to index; defensive restore/check sites in
cellreader become asserts, then go.
A2: summary no longer indexed by cycle_index (cycle_index_as_index defaults
off, deprecated via warn_once); consumers read the column.
A3: journal pages keyed by a filename/cell-id column; .loc[cell_id, …] →
mask/join.
Seed the Phase-D lint (grep-ban on .index/set_index/iloc outside boundary
modules) in warn-only mode with the §2.14 allowlist.
Why
Polars has no index; every index-dependent construct must operate on columns before the
Stage-2 flip. Doing it early and separately (report: "the index is redundant state")
keeps the flip PR small and bisectable. Benchmarks (#436) guard against accidental
regressions from the join rewrites.
Links
architecture-plan/cellpy2-polars-port-execution-plan.md (Phase A, Phase D)
Goal
Dissolve the three contract-level index conventions while still on pandas
(behavior-preserving — the keys are all also kept as columns today):
data_pointto index; defensive restore/check sites incellreader become asserts, then go.
summaryno longer indexed bycycle_index(cycle_index_as_indexdefaultsoff, deprecated via warn_once); consumers read the column.
pageskeyed by a filename/cell-id column;.loc[cell_id, …]→mask/join.
.index/set_index/ilocoutside boundarymodules) in warn-only mode with the §2.14 allowlist.
Why
Polars has no index; every index-dependent construct must operate on columns before the
Stage-2 flip. Doing it early and separately (report: "the index is redundant state")
keeps the flip PR small and bisectable. Benchmarks (#436) guard against accidental
regressions from the join rewrites.
Links
architecture-plan/cellpy2-polars-port-execution-plan.md(Phase A, Phase D)architecture-plan/pandas-to-polars-index-usage-report.md(§1 contract conventions, §2.14 allowlist)Acceptance