Releases
v0.2.0
Compare
Sorry, something went wrong.
No results found
Changelog
ebf0696 build: local gate that builds HEAD (not the working tree)
839f3bd chore(R-2): golangci-lint clean — remove dead code, add lint config
7007d01 ci(R-2/R-3): gate on gofmt/-race/golangci-lint/govulncheck; Windows + SBOM
7e91ad2 docs(B1): make the reject-any-semicolon security choice explicit
733e390 docs(B2): configuration.md + README suppression section
ee72f45 docs(B7-0): factual fixes in the two exemplars
62c913e docs(B7-0): findings-catalogue template + two exemplars + drift guard
8322940 docs(B7-1): complete the findings catalogue — 55 pages + drift guards
0b2a238 docs(R-1): README audit — exit codes, Windows archive, claims re-verified
54c3221 docs(R-5/R-6): version-support statement + community files
4c7d89c docs(changelog): cut 0.2.0 — fingerprint upgrade note + self-disclosed fixes
15474ab feat(A15): WAL archiving / PITR findings (archiving_failing/stalled/disabled)
09aad81 feat(A15-0): recovery-state probe + primary/standby + managed-provider gating
a599aff feat(A16): checksum failures + corruption-detection findings
2b8bc8a feat(A17): failover readiness — sync_rep_degraded, time lag, disconnect, conflicts
1952840 feat(A18): stale_statistics + never_analyzed — the cause behind query_slowdown
31413fe feat(A19): is autovacuum keeping up? (5 findings)
5352c08 feat(B1): advisor caveat layer — confidence, stale-stats refusal, write-amp, size
dad56f2 feat(B1): evidential index advisor — deterministic candidates, hypopg-validated
159ca9e feat(B2): per-object suppression for aggregate findings
9b11ea2 feat(B2-0): stable, human-writable Object identity on every finding
411ca27 feat(B2-1): .pgbot.toml discovery, parsing, validation, credential refusal
99a6870 feat(B2-2): apply suppression — visible, exit-code-safe, criticals never hidden
3a93cc7 feat(B2-3): suppressions rot — expiry notice + dead-rule detection
2f5ac2f feat(B2-4): config ergonomics — check, explain, init
9124b52 feat(B3): --all-databases — inspect the whole cluster, cluster findings once
e3eeff4 feat(B4): pgbot diff — compare two baseline snapshots, honestly
39401e7 feat(B5-1/B5-2): --fail-on + SARIF/JUnit report formats
3edebbc feat(B5-3): GitHub Action — pgbot health check → Security tab
d075d77 feat(B6): --format=prometheus — node_exporter textfile output
163bbe6 feat(B7-2): JSON Schema generated from the model, drift-guarded in CI
12ea591 feat(B7-3): wire the catalogue — offline explain-finding + report references
4044f41 feat(B8): four MCP tools — explain_plan, compare_to_baseline, schema_of, explain_finding
582450e feat(P1-A1): vacuum_horizon_blocked — name why dead tuples aren't reclaimed
0b1c06e feat(P1-A10): partition rollup + partition_seq_scan_heavy
d02a5de feat(P1-A11): pg_stat_progress_* — in-flight operation truth
5a3f58e feat(P1-A12): low_hot_update_ratio
6ebd16c feat(P1-A13): connection breakdown in connection_saturation
4953d12 feat(P1-A14): WAL directory size (pg_ls_waldir), paired into slot finding
adbf086 feat(P1-A2): multixact wraparound (mxid_wraparound)
5008bc1 feat(P1-A3): prepared_xact_abandoned
e0b3e57 feat(P1-A4): pg_stat_statements saturation (pgss_entries_evicted)
c0ec34a feat(P1-A5): io_timing_off — flag track_io_timing disabled
5fa2064 feat(P1-A6): redundant_indexes — prefix-contained / duplicate indexes
e17a10b feat(P1-A7): fk_unindexed — foreign keys with no supporting index
6934d05 feat(P1-A8): sequence_exhaustion
661a4a0 feat(P1-A9): config sanity findings + ServerInfo.Provider
acd5584 feat(R-4): exit-code precision — usage errors get their own code
c9b8c38 feat: Claude Code plugin — pgbot MCP + skill + /pg-* commands
178ed6e feat: skill installer + pgbot.dev/skill one-liner
1bcefe4 fix(A6): redundant_indexes — covering index must also be non-partial/expression
522f46d fix(P0-1): per-database baseline fingerprint (was cluster-wide)
67378c8 fix(P0-2): ScrubQueryText emits the redaction marker (was deleting it)
783fe58 fix(P0-3): SIGINT/SIGTERM cancels the run instead of killing it mid-flight
73fd2fe fix(P0-4): installer verifies the cosign signature it advertises
d4079a3 fix(P0-5): multi-arch container image + real CA roots
0b2ff87 fix(R-2): patch all govulncheck findings — pgx SQL-injection CVE + toolchain
18dd3a2 fix(ci): TCP readiness check to avoid postgres initdb-phase race
1cc5746 fix(ci): static-check excludes its own EXPLAIN-ANALYZE guard file
fc60faf fix: commit the computeFindings(c, f) call-site updates (B2-3)
db7c8d6 fix: scrub pg_stat_statements text — pgss stores utility statements verbatim
084539a harden: correct the "pgss text is normalized/safe" invariant + name the leak class
c0c136b style: gofmt -w the tree
312af62 test(B1): prove READ ONLY blocks a ;-injected write in the advisor
249efa6 test(B7): executable guard runs every verify query against real Postgres
You can’t perform that action at this time.