Skip to content

v4.3.0 — the hardening wave

Latest

Choose a tag to compare

@patrickdeanfox patrickdeanfox released this 17 Jul 16:34
· 8 commits to main since this release
919db7d

The audit-driven production-hardening wave (#12#21), in one release. Full narrative with every design decision: CHANGELOG 4.3.0.

Safety (the audit's HIGH/MED/LOW findings, all closed)

  • SQL blast-radius classifier rewritten — burden of proof inverted, fails closed, checks at save time; CTE-led deletes, WHERE 1=1, MERGE/ALTER/GRANT all caught
  • Duplicate-proof creates (ambiguous network failures verify-and-adopt, never blind-resend) and expected_updated_at optimistic concurrency on every update path
  • html_file jail sealed (dotfiles + the credential file, symlinks included); credential file written 0600
  • Value-shape redaction (connection-string passwords, JWTs, PEM keys — in any value or name) applied to query/profile output; untrusted-content envelope on portal-authored data
  • Binding re-verifies on a TTL + config reload; admin paths confirm-gated with self-lockout protection; rollback scope stated honestly

Token & performance defaults (each with an opt-out)

  • execute_query ≤1,000 rows · get_resource summary/fields (~2,750 → ~150 tok) · list byte-cap with auto-projection · compact JSON · 5s read cache (writes clear it) · server-side pagination on first pages (live-probed) · parallel snapshot fan-out

The autonomous-loop toolkit

  • cleanup_scratch + the TMP · naming scope · score_portal with a VC-committed regression baseline · /portal-improve — snapshot → score → fix → adversary-verify → sweep → baseline only on proven non-regression

DX & docs

  • ESLint in CI · generated tool reference (npm run gen:docs, 40 tools, can't drift) · quickstart/concepts/FAQ tiers · broadened link checking · server.ts split begun (typed DI seam, behavior-frozen)

343 tests (was 276) · 40 tools · every PR CI-gated on Node 18/20/22.

🤖 Generated with Claude Code