#1143

docs(adr): accept seven implemented proposals

Openiamgpwants to merge intofrom

Goal and scope

Make ADR statuses match what Phlo actually does. Mark 7 Proposed ADRs Accepted where their decision section is implemented on main. Non-goal: no change to the 6 ADRs that are only partly built.

Change map and risk

Docs only: status lines in 7 ADRs and the matching rows in decisions/index.md. Where the implementation differs from the ADR text in naming only, the ADR text is corrected to match the code (last column).

ADREvidence on mainDeviation from ADR text
0022 Ingestion validation hardeningstrict_validation=True in phlo_dlt/decorator.py; add_phlo_timestamp removed; test_strict_validation.pyText corrected: raises RuntimeError, not dagster.Failure
0033 Hook-based capability pluginsHookBus (src/phlo/hooks/bus.py), phlo.plugins.hooks entry point, emitters in dlt/pandera/dbt, subscribers in openmetadata/alerting—
0037 Advanced reconciliation checksKeyParityCheck, MultiAggregateConsistencyCheck, ChecksumReconciliationCheck in phlo_pandera/reconciliation.pyText corrected: module is phlo_pandera, not phlo_quality
0039 dbt project under workflowsDbtSettings.dbt_project_dir default workflows/transforms/dbt; scaffold layout—
0040 Centralised logging layersetup_logging, LogRouterHandler in src/phlo/logging.pyText corrected: router lives in phlo.logging, not phlo.logging.router
0044 CLI command ownership by packagephlo dev in phlo_dagster/cli_dev.py; workflow scaffold in phlo_dlt; core cli/_services removed—
0045 Package-owned settingsSettings classes in each package; core src/phlo/config/{alerting,catalog,database,…}.py removed—

Still Proposed and why: 0036 (API and metrics exist, but no Observatory maintenance view, which decision item 5 requires), 0021 (backend only, no UI), 0023 (saved queries exist, no bookmarks), 0028 (no asset Logs tab), 0035 (17 of 39 packages lack integration tests), 0043 (phase 3 reversed by 0045; phases 4–5 partial), 0046 (phases 3–4 missing).

Verification

  • python3 scripts/check_adr_index.py → "ADR index records and statuses match."

  • Evidence comes from a source audit of each ADR's decision section; I spot-checked 0022, 0040 and 0045 by hand.

  • Not applicable: documentation status change.

Recovery and maintainer decisions

Accepting an ADR records a maintainer decision. Please confirm each row, or ask for any to be reverted to Proposed.

Activity

304
coldtea-pr-lens[bot]9h ago

NOTE

The title starts with docs(adr):, so PR Lens left this pull request undrawn. Comment @pr-lens draw to draw it

github.comment.notice: false in .github/pr-lens.yml turns this note off

phlo-agent[bot]8h ago

Docs-only status change; scripts/check_adr_index.py and the index rows are consistent. I checked the cited evidence at 4bfcd7db980b. Two accuracy gaps remain before these records should be marked Accepted.

1. ADR 0036 is marked Accepted while decision item 5 is not implemented — 0036 L5-L7, decision item 5.

phlo_api/api/maintenance.py does provide /api/maintenance/status and /metrics, but the Observatory UI does not consume them: routeTree.gen.ts has no maintenance route, the components tree has no maintenance view, and the only maintenance call in the Observatory data layer is api/v1/maintenance-windows in lib/data/api/pipelines.ts (scheduled windows, not Iceberg maintenance status, duration, or counters). The ADR explicitly requires last run status, duration, and key counters "in the Observatory UI", so 0036 is still partly built. Either keep it Proposed or add the UI (or amend the decision) before accepting.

2. Accepted ADRs still name modules/exceptions that no longer exist — 0037 status, 0037 decision, 0037 implementation; 0040 status, 0040 implementation; 0022 status, 0022 decision.

  • 0037 points at phlo_quality.reconciliation; the package is phlo_pandera (source).
  • 0040 points at phlo.logging.router; LogRouterHandler is defined in src/phlo/logging.py, so that submodule does not exist.
  • 0022 says strict validation raises dagster.Failure; the decorator raises RuntimeError (source).

Because the index says accepted ADRs freeze the contracts code must follow, flipping status without correcting these leaves authoritative records that misdirect readers and, for 0037/0040, name imports that fail. Update the paths and exception text in this PR (or keep those ADRs Proposed).

Checked as implemented: 0033 hook bus/entry points and openmetadata/alerting subscribers, 0039 default and writable workflow mount, 0044 CLI moves, 0045 package settings and removal of core config modules, plus 0022's strict_validation=True default and add_phlo_timestamp removal. CI: pr / required was still queued at review time; the completed checks were success or skipped. For 0036, is the API intended to satisfy decision item 5, or should it stay Proposed until the UI ships?

admin changed the title from docs(adr): accept eight implemented proposals to docs(adr): accept seven implemented proposals8h ago