Skip to content

feat(lineage): declare batch.station_observation_coverage - #23

Merged
citarf merged 1 commit into
mainfrom
citarf/issue-21-station-observation-coverage
Aug 9, 2026
Merged

feat(lineage): declare batch.station_observation_coverage#23
citarf merged 1 commit into
mainfrom
citarf/issue-21-station-observation-coverage

Conversation

@citarf

@citarf citarf commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Résumé

  • Ajoute batch.station_observation_coverage à lineage/jobs.yaml, entre batch.gold_ref_station_parametre et batch.station_ref_gold (ordre confirmé par docs/runbooks/station-reference.md côté chom-poc-data).
  • Entrées/sorties dérivées du code réel mergé de infoclimat-labs/chom-poc-data@25b8487a (scripts/station_observation_coverage.py, fonctions build_station_observation_coverage / evidence()), aucun dataset ni ownership inventé :
    • inputs : iceberg://diffusion/gold_ref.station_parametre, iceberg://diffusion/dim_ref.station, iceberg://diffusion/dim_ref.station_alias
    • outputs : iceberg://diffusion/gold_ref.station_observation_residual
  • Étend tools/tests/test_station_reference_governance.py (expected_station_jobs) pour que la disparition de cette déclaration soit détectée par les tests existants (test_station_medallion_openlineage_jobs_define_exact_physical_edges, test_lineage_forward_loads_all_station_jobs_with_declared_datasets).
  • gold_ref.station_observation_residual est un artefact reconstructible (résiduel de classification) : pas de contrat ODCS requis par GOVERNANCE.md — hors scope ici.

Closes #21. Dépend de/prérequis pour infoclimat-labs/chom-poc-data#82, infoclimat-labs/chom-poc-data#83, infoclimat-labs/chom-poc-data#127.

CI — bloqueur résolu, CI exacte verte

Le défaut d'infra documenté précédemment (ModuleNotFoundError: No module named 'tools' dans le job Tests outillage Python) a été corrigé par #24 (fix(ci): run tools tests from repository root, mergée sur main en 2bd2da16042a2fe4505cda4ab22d7ddfc831e5b7).

Cette branche a été rebasée proprement sur origin/main post-#24 (rebase mécanique, sans conflit) : nouveau SHA 10dec10d03852ba0505bd3b0e32bb3b7a52aaf85. Le diff reste strictement limité à lineage/jobs.yaml et tools/tests/test_station_reference_governance.py (aucun changement fonctionnel additionnel).

Les 3 checks CI exacts sont verts sur ce SHA (run 31287580901) :

  • Lint des contrats ODCS
  • Tests outillage Python
  • Cohérence du registre RGPD

En local, sur le même SHA :

tools/tests/test_station_reference_governance.py::test_station_medallion_openlineage_jobs_define_exact_physical_edges PASSED
tools/tests/test_station_reference_governance.py::test_station_contract_storage_and_lineage_jobs_match_declared_graph PASSED
tools/tests/test_station_reference_governance.py::test_lineage_forward_loads_all_station_jobs_with_declared_datasets PASSED
tools/tests/test_station_reference_governance.py::test_station_medallion_contracts_expose_provenance_and_aliases PASSED
tools/tests/test_station_reference_governance.py::test_station_reference_manifest_is_a_versioned_export_of_odcs_contracts PASSED
tools/tests/test_station_reference_governance.py::test_station_67128_governance_is_immutable_canonical_and_not_proximity_based PASSED
tools/tests/test_station_reference_governance.py::test_silver_quality_policy_is_lintable_and_requires_executable_evidence PASSED
tools/tests/test_station_reference_governance.py::test_gold_station_contract_exposes_canonical_aliases_and_corrected_lineage PASSED
tools/tests/test_station_reference_governance.py::test_gold_station_alias_is_governed_as_an_internal_non_served_crosswalk PASSED
================================== 121 passed in 2.05s ==================================

git diff --check origin/main...HEAD : propre (aucun conflit ni espace en fin de ligne). mergeStateStatus : CLEAN.

Revue requise

Critère d'acceptation #21 : relecture par un provider différent de celui qui a implémenté ce changement, avant fusion.

Aucune action de production

Ce ticket ne déclenche aucun déploiement ni mutation de données ; il ne fait que compléter le contrat lineage déclaratif, prérequis du lot chom-poc-data #82/#83/#127.

Le refresh chom-poc-data #82/#83/#127 émet ce job entre
batch.gold_ref_station_parametre et batch.station_ref_gold (couverture
exhaustive des station_uid observés) mais il restait absent de
lineage/jobs.yaml, bloquant le déploiement en préproduction fail-closed.

Entrées/sorties dérivées du code réel de infoclimat-labs/chom-poc-data
@25b8487a (scripts/station_observation_coverage.py:
build_station_observation_coverage, fonction evidence()) :
- inputs: iceberg://diffusion/gold_ref.station_parametre,
  dim_ref.station, dim_ref.station_alias
- outputs: iceberg://diffusion/gold_ref.station_observation_residual

Étend tools/tests/test_station_reference_governance.py
(expected_station_jobs) pour que la disparition de cette déclaration
soit détectée.

Refs #21, infoclimat-labs/chom-poc-data#82, infoclimat-labs/chom-poc-data#83,
infoclimat-labs/chom-poc-data#127
@citarf
citarf force-pushed the citarf/issue-21-station-observation-coverage branch from 4d96de0 to 10dec10 Compare August 9, 2026 01:06
@citarf

citarf commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator Author

Rebase de finalisation post-#24 (merge 2bd2da1, correctif CI outillage Python).

  • Rebase mécanique sans conflit sur origin/main : nouveau SHA 10dec10d03852ba0505bd3b0e32bb3b7a52aaf85
  • Diff inchangé, strictement limité à lineage/jobs.yaml et tools/tests/test_station_reference_governance.py
  • git diff --check propre ; mergeStateStatus = CLEAN
  • 3 checks CI exacts verts sur ce SHA : Lint des contrats ODCS, Tests outillage Python, Cohérence du registre RGPD (run 31287580901)
  • Suite complète locale : 121 passed, dont les 9 tests de test_station_reference_governance.py
  • Aucun changement fonctionnel additionnel, aucun déploiement.

@citarf

citarf commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator Author

Revue indépendante cross-provider — verdict MERGE

SHA revu : 10dec10d03852ba0505bd3b0e32bb3b7a52aaf85 contre base exacte 2bd2da16042a2fe4505cda4ab22d7ddfc831e5b7. Reviewer : Codex gpt-5.6-sol ; implémentation : Claude Sonnet 5.

Findings classés

  • Bloquant : aucun.
  • Majeur : aucun.
  • Mineur / non bloquant : aucun.

Preuves

  • Scope exact : 2 fichiers seulement, lineage/jobs.yaml et tools/tests/test_station_reference_governance.py, 24 ajouts, aucune suppression.
  • Contrat dérivé indépendamment de infoclimat-labs/chom-poc-data@25b8487a : build_station_observation_coverage() charge gold_ref.station_parametre, dim_ref.station et dim_ref.station_alias; RESIDUAL_IDENT et evidence() confirment la sortie gold_ref.station_observation_residual et les quatre URI iceberg://diffusion/....
  • Namespace/ownership cohérents : deploy/gold_ref_refresh.sh émet batch.station_observation_coverage avec LINEAGE_NAMESPACE=batch://chom-poc-data, entre batch.gold_ref_station_parametre et batch.station_ref_gold, comme les autres jobs station.
  • Aucun dataset inventé : chaque edge déclaré correspond aux tables effectivement chargées/publiées et aux snapshot IDs émis par le producteur; le registre de classifications versionné reste une preuve métier, pas un dataset OpenLineage inventé. Le résiduel est un artefact dérivé reconstructible, donc l’absence de nouveau contrat ODCS est cohérente avec GOVERNANCE.md.
  • Test de non-disparition : l’ajout à expected_station_jobs() est consommé par les tests d’arêtes physiques exactes et de chargement du forwarder; retirer ou altérer le job fait échouer ces contrôles.
  • Validation YAML locale : version, liste des 238 jobs, champs obligatoires, structure stricte des datasets et unicité exercée par les tests.
  • Validations locales : 9/9 tests station ciblés, 121/121 tests outillage, registre RGPD cohérent, lint ODCS complet vert, git diff --check propre. Arbre de travail inchangé.
  • CI exacte sur le SHA revu : Lint des contrats ODCS, Tests outillage Python, Cohérence du registre RGPD — tous SUCCESS dans le run 31287580901. PR MERGEABLE, état CLEAN.

Les critères de l’issue #21 sont satisfaits. Aucun déploiement ni mutation de production n’a été effectué.

Verdict : MERGE.

Note GitHub : l’événement formel APPROVE est techniquement refusé (Review Can not approve your own pull request) car l’identité GitHub authentifiée est aussi l’auteur de la PR; cette revue cross-provider reste publiée durablement ici.

@citarf
citarf merged commit 0fba869 into main Aug 9, 2026
3 checks passed
@citarf
citarf deleted the citarf/issue-21-station-observation-coverage branch August 9, 2026 01:12
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.

Déclarer batch.station_observation_coverage dans le contrat lineage

1 participant