diff --git a/reports/technical_risk_register.md b/reports/technical_risk_register.md index fdfeac1..d9edb0d 100644 --- a/reports/technical_risk_register.md +++ b/reports/technical_risk_register.md @@ -436,7 +436,20 @@ See also C-03 (the sibling enrich→validate test-coverage gap), C-22 (no post-d That change was deliberately **not** landed on `development` (2026-06-26), for three reasons: (a) sourcing from a **moving git branch** makes builds **non-reproducible** (the branch advances under us); (b) it is a **major-version switch** (2.x→3.x) whose breaking changes were never exercised against the just-merged sprint code; (c) it would require a **full re-lock** resolving 3.x + its transitive tree, rippling through `poetry.lock`. The maintainer's standing constraint: **the platform must run smoothly on `development` across all repos before taking the major dependency bump.** Until then the bump is premature. -No silent corruption and no current breakage (development is green on 2.3.0) → **Tier 3** (coordination / release-sequencing / reproducibility). The deferred work is preserved (backup branch) and becomes a trivial, reproducible one-line pin once 3.0.0 ships and the cross-repo gate clears. Cross-refs C-40 (the underlying pipeline-core inheritance coupling that makes major bumps high-blast-radius), C-07 (the transitive-via-pipeline-core dependency surface), C-09 (publish-workflow version handling). +No silent corruption and no current breakage (development is green on 2.3.0) → **Tier 3** (coordination / release-sequencing / reproducibility). + +**GATE RE-ASSESSED 2026-07-31 — the second condition now has substantial evidence behind it; the first does not, and the difference matters.** + +This entry's trigger holds the bump on **two** conditions. Their status has diverged: + +**Condition 2 — "the platform is confirmed running smoothly on `development` across all consumer repos."** The strongest available evidence arrived on **2026-07-27**: run-0 delivered the first FAO global-land forecast end to end, every hop on `development` — views-models config (`region: land_gaul`, `data_format: feature_frame`) → pipeline-core's frame-native fetch and Track A publish → this repo's contract delivery (108 shards + sidecar + manifest, 64,742 cells, 28,356,996 rows, 5.6 GB peak, no OOM) → views-faoapi ingest. Confirmed serving live on **2026-07-31** (`scripts/smoke.py`, ALL PASS at v1.3.11; `IDN` present on both surfaces, a cell outside the old Africa-only region, so global serving is proven). + +**Scoped honestly:** that exercises the **FAO delivery chain** across five repos on `development`. It is *not* evidence about consumers outside that chain (views-reporting's report path, views-baseline, other model families). Whether "across all consumer repos" means the delivery chain or literally every consumer is a maintainer judgement this entry cannot make. What has changed is that the condition moved from *unevidenced* to *substantially evidenced for the path that matters most*. + +**Condition 1 — "views-pipeline-core 3.0.0 is published to PyPI."** Still **unmet**, and it is not blocked on engineering. Verified 2026-07-31: pipeline-core's `development` already carries `version = "3.0.0"` with the heavy dependency set removed; views-evaluation's `to_metric_frame` (the one real release-train edge in their runbook #313) **exists in code**, 8 commits past its `v0.4.0` tag, needing only a version bump and a publish. The chain their runbook fixes is: views-frames ✅ → **views-evaluation 0.5.0** → **views-pipeline-core 3.0.0** → views-reporting 0.3.0 → models/postprocessing envs — and it states plainly that it *"executes only on Simon's platform-wide signal."* + +**Net:** this entry is no longer waiting on two open questions. It is waiting on **one release signal**, with all the underlying code already written. That does **not** authorise the bump — the signal is the maintainer's alone, and the scoping caveat above is a real reason it might still be withheld. It is recorded so the next reader sees a gate that has *moved*, rather than assuming both conditions are still closed. **C-62 records what continuing to wait costs** (3.4 GB of unused dependencies, 2.7 GB of it CUDA libraries for an absent package). + The deferred work is preserved (backup branch) and becomes a trivial, reproducible one-line pin once 3.0.0 ships and the cross-repo gate clears. Cross-refs C-40 (the underlying pipeline-core inheritance coupling that makes major bumps high-blast-radius), C-07 (the transitive-via-pipeline-core dependency surface), C-09 (publish-workflow version handling). ---