Skip to content

Ecosystem sweep: fix oversized-row server DoS, enforce readonly role, sync all docs/marketing to v0.4.5#81

Merged
zvndev merged 3 commits into
mainfrom
chore/ecosystem-sweep-2026-06
Jun 10, 2026
Merged

Ecosystem sweep: fix oversized-row server DoS, enforce readonly role, sync all docs/marketing to v0.4.5#81
zvndev merged 3 commits into
mainfrom
chore/ecosystem-sweep-2026-06

Conversation

@zvndev

@zvndev zvndev commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Full 8-lane ecosystem sweep (stale docs, live engine testing, marketing accuracy, agent DX, TS adapter, benchmarks, deployment hygiene, GTM). Audit agents found and live-verified two serious server defects plus ~50 doc/marketing accuracy issues; this PR fixes all of them.

Engine fixes (live-verified before AND after)

  • CRITICAL — remote DoS: a single insert/update with a >4070-byte value panicked heap.rs and (with panic=abort) killed the entire server. Now a graceful row too large error; size-checked before WAL append so replay can't be poisoned. New tests incl. crates/query/tests/oversized_rows.rs.
  • HIGH — authorization bypass: readonly users could insert/update/delete/drop tables. Roles now enforced at server dispatch via the parsed AST; unknown roles fail closed; shared-password/open/embedded modes unaffected.
  • NULLs over the wire were {} (broke TS typed decoding + remote REPL); now bareword null, rendered NULL.
  • Window aggregates without order returned running values; now whole-partition per standard semantics.

Docs/marketing (highlights of ~50 fixes)

  • Live site showed v0.2.0 banners and Rust 1.80+ (actual: v0.4.5 / 1.93) — synced, plus transactions/auth/when-not-to-use sections
  • Cargo.toml homepage 404'd (zvndev → zvn-dev) — propagated to all 6 crates.io pages
  • README claimed a CI-enforced bench gate that is manual-only — honestly reworded
  • fly.toml example deployed an unreachable server (missing POWDB_BIND=0.0.0.0)
  • SECURITY.md: both auth modes + explicit ≤0.4.5 readonly caveat; RELEASES.md: six crates + ghcr; CONTRIBUTING: real required checks
  • TS client: documented multi-user-server incompatibility (0.3.5 has no user option)
  • AGENTS.md: 6 stale claims fixed + 2 new gotchas from small-model testing (haiku 9/10 → 10/10 after the reserved-alias gotcha line)
  • New: docs/gtm-strategy.md, docs/benchmarks/2026-06-09-local-apple-silicon.md (fresh local run: PowDB wins all 15 workloads, 1.3–11.7x; CI baseline untouched)

Test plan

  • cargo test --workspace — 41 suites green
  • cargo clippy --workspace --all-targets -- -D warnings clean, cargo fmt --check clean
  • E2E on rebuilt release binaries: oversized insert → clean error, server survives; readonly → reads OK, all write shapes denied; NULL renders correctly remote
  • TS client: 193/193 unit tests + live integration (incl. published 0.3.5 package)

🤖 Generated with Claude Code

zvndev and others added 3 commits June 9, 2026 15:02
…fix NULL wire format and unordered window frames

- storage: reject rows over MAX_ROW_DATA_SIZE (4070B) with a graceful
  RowTooLarge error instead of panicking; with panic=abort one oversized
  insert previously killed the whole server. Size check runs before WAL
  append so a rejected update can't poison replay.
- server: enforce roles at dispatch — readonly principals get
  'permission denied' on DML/DDL/transaction control; unknown roles fail
  closed; shared-password/open/embedded modes unaffected.
- server: serialize NULL as bareword 'null' on the wire (was '{}'),
  matching the TS client's documented sentinel; remote REPL renders NULL.
- query: window aggregates with no 'order' clause now use the whole
  partition as the frame instead of a running frame.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- site: v0.2.0 banners -> v0.4.5, MSRV 1.80 -> 1.93, all 14 benchmark
  workloads shown, transactions + multi-user auth + 'when not to use'
  sections added, repo links -> ZVN-DEV/powdb
- Cargo.toml: homepage was a 404 (zvndev -> zvn-dev.github.io)
- README: bench gate honestly described as local/on-demand (not a CI
  merge gate), auth+backup crates in tree, full env-var table
- AGENTS.md: 8 crates, multi-user auth, shipped features list fixed,
  small-model-tested gotchas added (aggregate-keyword aliases 9/10 ->
  10/10 haiku success; line-oriented REPL)
- SECURITY/RELEASES/CONTRIBUTING: two auth modes + readonly caveat,
  six-crate publish order + ghcr image, real required CI checks
- deploy examples: fly.toml POWDB_BIND=0.0.0.0 (was unreachable),
  docker-compose pointer fixed, railway backup bullet
- clients/ts: multi-user-server incompatibility documented, demo fixes
- archives: SMOKE-AUDIT -> docs/audits/, TS sprint plan -> plans/,
  historical banners on pre-implementation design docs
- new: docs/gtm-strategy.md, docs/benchmarks/2026-06-09 local snapshot

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Week 1: merge sweep PR, TS client username auth (0.4.0), v0.4.6 release
with mandatory pre-publish smoke (incl. both attack repros), ghcr flip,
hygiene backlog. Sprint: truthful EXPLAIN, non-unique B+tree range scans,
unique constraints (incl. upsert-requires-unique breaking change), $N
parameter binding at token level, multi-line REPL, 10-table agent-DX
falsification eval. Also: SECURITY.md readonly note reworded — enforcement
is implemented on this branch, not 'landing later'.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zvndev zvndev merged commit 85d2951 into main Jun 10, 2026
7 checks passed
@zvndev zvndev deleted the chore/ecosystem-sweep-2026-06 branch June 10, 2026 00:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant