refactor(ara): rename FirstRunPipeline → AraFirstRunPipeline (PR #1139 review)

Aligns the composition with its entry point (the `ara_first_run` lambda +
`AraFirstRunTriggerBody`): clearer what the file does.

- orchestration/first_run_pipeline.py → ara_first_run_pipeline.py
- FirstRunPipeline → AraFirstRunPipeline; FirstRunCommand → AraFirstRunCommand
- test files renamed to match

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-06-01 15:00:33 +00:00 committed by Jun-te Kim
parent d89983d44f
commit 1ea71a3acb
5 changed files with 16 additions and 16 deletions

View file

@ -14,7 +14,7 @@ from domain.property_baseline.rebaseliner import StubRebaseliner
from infrastructure.postgres.config import PostgresConfig
from infrastructure.postgres.engine import make_engine
from orchestration.property_baseline_orchestrator import PropertyBaselineOrchestrator
from orchestration.first_run_pipeline import FirstRunPipeline
from orchestration.ara_first_run_pipeline import AraFirstRunPipeline
from orchestration.ingestion_orchestrator import (
EpcFetcher,
IngestionOrchestrator,
@ -42,7 +42,7 @@ def _get_engine() -> Engine:
class _RunsFirstRun(Protocol):
"""The slice of FirstRunPipeline the handler delegates to."""
"""The slice of AraFirstRunPipeline the handler delegates to."""
def run(self, command: AraFirstRunTriggerBody) -> None: ...
@ -63,7 +63,7 @@ def build_first_run_pipeline(
epc_fetcher: EpcFetcher,
geospatial_repo: GeospatialRepository,
solar_fetcher: SolarFetcher,
) -> FirstRunPipeline:
) -> AraFirstRunPipeline:
"""Compose the real three-stage pipeline on a Unit-of-Work factory.
Each stage opens its own unit(s) and commits per batch (ADR-0012); the
@ -71,7 +71,7 @@ def build_first_run_pipeline(
their config is not settled see ``_source_clients_from_env``. Modelling is
stubbed (#1136); its Scenario / Materials ports are seams.
"""
return FirstRunPipeline(
return AraFirstRunPipeline(
ingestion=IngestionOrchestrator(
unit_of_work=unit_of_work,
epc_fetcher=epc_fetcher,

View file

@ -3,7 +3,7 @@ from __future__ import annotations
from typing import Protocol
class FirstRunCommand(Protocol):
class AraFirstRunCommand(Protocol):
"""The slice of the trigger the pipeline threads downstream.
Only the business fields UPRNs and Scenario definitions are read from
@ -41,7 +41,7 @@ class ModellingStage(Protocol):
def run(self, property_ids: list[int], scenario_ids: list[int]) -> None: ...
class FirstRunPipeline:
class AraFirstRunPipeline:
"""Composes the First Run stages end-to-end: Ingestion -> Baseline ->
Modelling.
@ -64,7 +64,7 @@ class FirstRunPipeline:
self._baseline = baseline
self._modelling = modelling
def run(self, command: FirstRunCommand) -> None:
def run(self, command: AraFirstRunCommand) -> None:
self._ingestion.run(command.property_ids)
self._baseline.run(command.property_ids)
self._modelling.run(command.property_ids, command.scenario_ids)

View file

@ -7,16 +7,16 @@ from applications.ara_first_run.ara_first_run_trigger_body import (
AraFirstRunTriggerBody,
)
from applications.ara_first_run.handler import dispatch_first_run
from orchestration.first_run_pipeline import FirstRunCommand
from orchestration.ara_first_run_pipeline import AraFirstRunCommand
class _SpyPipeline:
"""Records the command it is asked to run, instead of composing stages."""
def __init__(self) -> None:
self.received: Optional[FirstRunCommand] = None
self.received: Optional[AraFirstRunCommand] = None
def run(self, command: FirstRunCommand) -> None:
def run(self, command: AraFirstRunCommand) -> None:
self.received = command

View file

@ -2,12 +2,12 @@ from __future__ import annotations
from dataclasses import dataclass
from orchestration.first_run_pipeline import FirstRunCommand, FirstRunPipeline
from orchestration.ara_first_run_pipeline import AraFirstRunCommand, AraFirstRunPipeline
@dataclass
class _FakeCommand:
"""A stand-in for AraFirstRunTriggerBody — structurally a FirstRunCommand."""
"""A stand-in for AraFirstRunTriggerBody — structurally a AraFirstRunCommand."""
portfolio_id: int
property_ids: list[int]
@ -41,10 +41,10 @@ class _SpyModelling:
def test_run_sequences_the_three_stages_threading_only_property_ids() -> None:
# Arrange
log: list[tuple[object, ...]] = []
command: FirstRunCommand = _FakeCommand(
command: AraFirstRunCommand = _FakeCommand(
portfolio_id=1, property_ids=[10, 11], scenario_ids=[7]
)
pipeline = FirstRunPipeline(
pipeline = AraFirstRunPipeline(
ingestion=_SpyIngestion(log),
baseline=_SpyBaseline(log),
modelling=_SpyModelling(log),

View file

@ -26,7 +26,7 @@ from infrastructure.postgres.property_baseline_performance_table import (
from infrastructure.postgres.epc_property_table import EpcPropertyModel
from infrastructure.postgres.property_table import PropertyRow
from orchestration.property_baseline_orchestrator import PropertyBaselineOrchestrator
from orchestration.first_run_pipeline import FirstRunPipeline
from orchestration.ara_first_run_pipeline import AraFirstRunPipeline
from orchestration.ingestion_orchestrator import IngestionOrchestrator
from orchestration.modelling_orchestrator import ModellingOrchestrator
from repositories.property_baseline.property_baseline_postgres_repository import (
@ -103,7 +103,7 @@ def test_first_run_baselines_through_repos_and_is_idempotent_on_rerun(
def unit_of_work() -> PostgresUnitOfWork:
return PostgresUnitOfWork(lambda: Session(db_engine))
pipeline = FirstRunPipeline(
pipeline = AraFirstRunPipeline(
ingestion=IngestionOrchestrator(
unit_of_work=unit_of_work,
epc_fetcher=_FetcherReturning(_lodged_epc()),