Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 23:06
· 24 commits to main since this release

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