Commit 05a23f5
committed
spec: fold PG domain research into why-upgrade spec (v0.2.0)
Deepens the specification with findings from a dedicated PostgreSQL
release-note research pass, several of which change the design rather
than merely add detail.
The justification, sharpened: upstream's migration sections chain a single
back-pointer per release, and that chain is provably lossy. A user upgrading
17.4 -> 17.11 who follows the official docs correctly lands on 17.6 and 17.11
and silently misses 17.5 entirely, including its self-referential-FK
corruption item and its BRIN bloom data-loss item.
Design changes:
- A single fixed_in interval is insufficient. Four semantics now modeled:
transient, residual (depends on what the cluster EVER ran, not on `from`),
creation-time (a cluster made on 18.1 stays broken on 18.6 until catalog
surgery, invisible to interval logic), and peer-version (the standard
standbys-first rollout is itself the trigger window).
- Never invent introduced_in. Backpatch-through says where the fix went, not
where the bug started; guessing yields confidently-wrong suppression, the
same failure class as a false NOT_EXPOSED.
- Managed services get feature probing rather than version arithmetic, since
vendors both backport onto frozen minors and lag community.
- Detection SQL is curated and regression-tested, never generated at runtime:
a hand-rolled partition-FK check produced four false positives during
research where upstream's shipped query was correct.
- Per-database blindness (pg_proc/pg_constraint/pg_extension) designed in.
Ingest hardening: parse from git rather than the rendered HTML, which drops
the cross-branch fan-out; take the assigned CVE from the closing attribution
paragraph rather than first-match; treat commits as first-class, including
the Security: trailer as a commit->CVE join key absent from the notes.
Also: the phantom 18.5 (stamped, never released) is already propagating
through upstream security metadata and third-party tooling, so wrap-number
and shipped-number are distinct fields; observability changes get their own
output bucket; extension ALTER EXTENSION UPDATE detection; and a full
licensing, attribution and trademark posture.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CX9ZzGyfwfiY1BKmeqP5ic1 parent e5cae6a commit 05a23f5
4 files changed
Lines changed: 624 additions & 46 deletions
0 commit comments