You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(20.2): record live validation and close the state item
317 live integration tests pass against HEAD in 2m30s. CI matrix extended to
Python 3.14 and green. Closes the malformed-JSON open item, noting the sweep
found the problem wider than the original note assumed (108 uncovered tools,
not 7 mislabelling modules) and that Codex surfaced two further defects in
the fix itself.
Phase: 20.1 of 36 — COMPLETE and MERGED to main (PR #2, merge commit 98dee90)
32
-
Plan: 6 of 6 complete
33
-
Status: next is Phase 20.2 (run /gsd-plan-phase 20.2)
34
-
Last activity: 2026-07-26 — Phase 20.1 merged; all four CI gates green
31
+
Phase: 20.2 of 36 — COMPLETE, awaiting merge (PR #3)
32
+
Plan: 1 of 1 complete
33
+
Status: PR #3 green on Python 3.12/3.13/3.14; both Codex findings fixed; next is Phase 21
34
+
Last activity: 2026-07-26 — Phase 20.2 executed and verified; 317 live tests green
35
+
36
+
Phase 20.1 is COMPLETE and MERGED to main (PR #2, merge commit 98dee90).
35
37
36
38
Progress: [████░░░░░░] 44%
37
39
@@ -94,7 +96,7 @@ Open defect (found 2026-07-26, deferred to its own phase):
94
96
behind an env-var key like Manitoba 511. Alberta AHS, parks, forest-area and
95
97
Saskatchewan/Manitoba Hub services were probed at the same time and are healthy.
96
98
97
-
-**Malformed-JSON masking is broader than the spot Codex flagged.** → **now Phase 20.2.**
99
+
-~~**Malformed-JSON masking is broader than the spot Codex flagged.**~~ → **CLOSED by Phase 20.2** (PR #3). The sweep found the problem was wider than this note assumed: 108 of 271 tools had no catch-all at all, not just 7 modules with a mislabelling `ValueError` arm. Codex then found two further defects in the fix itself — `upstream_guard` was never a true catch-all (a `KeyError` still escaped), and `pydantic.ValidationError` also subclasses `ValueError`, so upstream schema drift was blamed on the caller. Both fixed. Original note kept below for the record:
98
100
`upstream_guard` is fixed, which covers drug_database and nutrient_file (they use
99
101
their own clients). But `shared/http.py:api_get` returns `response.json()` with no
100
102
decode guard, and ~40 `except ValueError -> INVALID_INPUT` arms across statcan,
0 commit comments