Skip to content

refactor: move shared accessor ownership to Components#335

Merged
ocots merged 5 commits into
mainfrom
refactor/shared-accessor-ownership
Jun 21, 2026
Merged

refactor: move shared accessor ownership to Components#335
ocots merged 5 commits into
mainfrom
refactor/shared-accessor-ownership

Conversation

@ocots

@ocots ocots commented Jun 21, 2026

Copy link
Copy Markdown
Member

Summary

  • Déclare 7 génériques partagées (state, control, variable, objective, costate, times, time_grid) dans un nouveau fichier src/Components/accessors_api.jlComponents en est maintenant le propriétaire et l'exporteur unique.
  • Requalifie les définitions de méthodes dans Models, Solutions, Init et Display : function Models.state(function Components.state(, etc.
  • Retire ces noms des exports de Models et Solutions (évite toute ambiguïté à l'import).
  • Met à jour les deux fichiers de test de sérialisation qui référençaient directement Solutions.costate/Solutions.time_grid.
  • API top-level inchangée : CTModels.state, CTModels.costate, etc. restent valides via using .Components dans CTModels.jl.
  • Suite verte : 3817/3817 tests.

Contexte

Suite du plan model_solution_separation_plan.md (éclatement OCP → sous-modules). La décision « les génériques partagées sont possédées par Components » était actée mais n'avait été appliquée qu'au bas niveau (name/dimension/value). Ce PR l'étend aux accesseurs de haut niveau, éliminant les préfixes trompeurs Models.objective(sol) ou Solutions.costate(sol) côté appelant.

Suivi hors-périmètre

  • CTFlows.jl (repo séparé) : ~9 lignes fonctionnelles à requalifier vers le top-level CTModels.state/CTModels.costate/CTModels.objective — à séquencer après merge.
  • Unification times/time_grid en un seul nom — décision séparée.

Test plan

  • Pkg.test() → 3817/3817 passed
  • Grep de contrôle : zéro Models.(state|control|variable|objective|times) ni Solutions.(costate|time_grid) dans src/ (hors docstrings)
  • Vérifier CTFlows.jl après merge (suivi)

🤖 Generated with Claude Code

ocots and others added 5 commits June 21, 2026 17:33
Add accessors_api.jl with bare declarations for state, control, variable,
objective, costate, times, time_grid. Components now owns and exports these
generics; Models/Solutions/Init attach their own methods.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mponents

Prefix the 5 model-side method definitions with Components. (function state ->
function Components.state, etc.). Remove state/control/variable/times/objective
from Models exports — they are now owned and exported by Components.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hared) to Components

Requalify Models.state/control/variable/objective/times(sol) and the bare
costate/time_grid declarations to Components.*. Remove costate and time_grid
from Solutions exports — owned by Components. Sub-accessors (*_dimension,
*_name, *_components) remain in Models.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Method definitions in Init/state,control,variable.jl and call sites in
Init/validation.jl updated from Models.* to Components.*. Display/solution.jl
updated for objective and variable calls. Sub-accessors (*_dimension etc.)
left unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
test_export_import.jl and test_multi_grids.jl updated: Solutions.costate ->
Components.costate, Solutions.time_grid -> Components.time_grid, Models.state/
control/variable/objective -> Components.*. Import of Components added to
test_multi_grids.jl. Sub-accessors (state_dimension etc.) restored to Models.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ocots ocots merged commit b4ca722 into main Jun 21, 2026
6 checks passed
@ocots ocots deleted the refactor/shared-accessor-ownership branch June 21, 2026 15:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant