root 9dd944226d fix(schema): tighten tenant boundaries on pages/refs
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.
2026-05-31 02:21:47 +10:00
2026-05-31 01:22:10 +10:00
2026-05-31 01:22:10 +10:00
2026-05-31 01:22:10 +10:00
2026-05-31 01:22:10 +10:00
2026-05-31 01:22:10 +10:00

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 runtime
  • void-workers — Python ingest workers (separate repo, later plan)

Quick start (dev)

  1. Provision void2-db LXC (see deploy/README.md)
  2. Install Postgres + pgvector on void2-db
  3. npm install
  4. cp .env.example .env and edit
  5. npm run migrate
  6. npm start
  7. curl -H "Authorization: Bearer $OWNER_TOKEN" http://localhost:3000/health
Description
No description provided
Readme 2.6 MiB
Languages
JavaScript 87.5%
CSS 6.4%
Python 5.2%
Shell 0.7%
HTML 0.2%