9dd944226de5b5c08e8dc5b741b69fc72b6e0761
Three security-review findings on migration 002: - pages.space_id and refs.space_id changed to NOT NULL + ON DELETE CASCADE (was nullable + SET NULL, which allowed orphan rows surviving space deletion). - pages.parent_id wrapped in composite FK (parent_id, space_id) -> pages(id, space_id) to prevent cross-space parent linkage (same pattern as tasks.project_id in 001). - idx_refs_external promoted to UNIQUE on (space_id, source_kind, external_id); upsertByExternal now requires space_id and dedups per-space, not globally. Added 3 regression tests covering composite FK rejection, CASCADE-on-space-delete, and per-space dedup independence.
Void 2.0
Homelab orchestrator + canonical knowledge store. Cradle-themed.
Successor to Void 1.x (CT 301). Spec at
/project/docs/superpowers/specs/2026-05-31-void-v2-design.md.
Layout
void-server(this repo) — Node API, MCP, UI, cron, agent runtimevoid-workers— Python ingest workers (separate repo, later plan)
Quick start (dev)
- Provision
void2-dbLXC (seedeploy/README.md) - Install Postgres + pgvector on
void2-db npm installcp .env.example .envand editnpm run migratenpm startcurl -H "Authorization: Bearer $OWNER_TOKEN" http://localhost:3000/health
Description
Languages
JavaScript
87.5%
CSS
6.4%
Python
5.2%
Shell
0.7%
HTML
0.2%