Capture Live (c) active · schema v2 foundation landed
Capture now, make sense later.
m2c kickoff 15-05-2026 ✅ — tasks 1–4 closed. Schema-refactor foundation landed end-to-end as a single coordinated change. Migration 010 (010_schema_v2_multimodal.sql) applied: new events.media (photos + audio siblings, FK to raw_inputs ON DELETE CASCADE) + new events.location_pings (parallel stream, not FK) + capture_mode discriminator added to raw_inputs (text NOT NULL DEFAULT 'live' CHECK (...IN ('live', 'test'))) + existing 78 photo paths backfilled into media + content_photo dropped from raw_inputs + review RPC reshaped (photo_path via media LEFT JOIN; capture_mode projected). Bundled in one migration because Postgres refuses to drop a column referenced by an active function. Capture App (capture-app/public/app.js) writes the new shape — raw_inputs insert with pre-generated row UUIDs (so we can FK the sibling media rows without a return round-trip) + follow-up bulk insert into events.media. Review frontend types + 6 components renamed (content_photo → photo_path); local preview against the live Supabase corpus verified all six surfaces render clean (84 rows, 78 photos, 0 console errors). Production deploys (Capture App + review-frontend) pending Freek's explicit authorization — auto-mode classifier blocks deploys without explicit OK. Three new decisions.md 15-05-2026 entries (capture_mode CHECK; FK cascade on media; single coordinated change). Full m2c kickoff history in project-management/projectlog.md 15-05-2026 entry.
Active milestone
Capture Live (c) — Multi-Modal Capture (active since 15-05-2026; schema v2 foundation landed)
What's next
- AI Enrichment (prototype) — scoped 12-05-2026, replaces former "Automated Loop"
Previous milestone
Capture Live (b) — Review Frontend Phase 1 (complete 14-05-2026)
Tracks · Owner
Capture Freek
Milestone timeline
Ten named moments where something demonstrably works. Numbered for ordering, not for ranking — they can be reordered, inserted, or deferred without renaming anything else.
Recent updates
What landed in the past few sessions. Pulled live from STATUS.md.
docs/future-layers/, the rest of docs/, and project-management/ + STATUS.md + CLAUDE.md (skipping historical-record files). Found 11 drift points across 8 files; HIGH + MEDIUM scope (9 files) swept: docs/file-registry.md (registry layer ordering), docs/glossary.md (canonical-entity + canonical-resolution entries reworded around the deliberate-confirmation gate), docs/future-layers/canonical-resolution-brief.md (§1 + §6 intro + §6.1 clarifying that auto-confirm is Emergent-layer proposal acceleration), docs/future-layers/domain-model-brief.md (§3 ARCHIVED disclaimer strengthened in-place), project-management/adr-002-architecture-commitments-may-2026.md (L30 postscript: L2 → L3 Structural Event object), docs/vision/north-star-interpretation.md (confirmation-gate explicit at Moves 2+3), docs/vision/digital-cell-vision.md (platform/app note + AI Processing track reworded for user-as-confirmation-gate), docs/candidate-principles/insight-as-deliberate-authoring.md (L13–14 layer labels), docs/future-layers/canonical-schema-brief.md (§1 Structural-layer-store note). LOW-severity edits deferred (membrane-abstraction, moment-as-experiential-atom — cosmetic). Verification grep passes: zero Plumbing → Structural → Emergent outside chat-archive; zero stale L2 Structural / L3 Emergent outside chat-archive + archived cowork-briefs. Full per-file edit summary in projectlog.md 17-05-2026 (even later); audit checklist appended to decisions.md 17-05-2026 entry.cowork-brief-2026-05-16-platform-canonical-butler.md processed end-to-end (four items). Item 1 — platform/app distinction landed in docs/vision/north-star.md new §1.1 (substrate vs. operationalization) and docs/vision/working-vision-phase-1.md §11 (Phase-1 operationalization framing). Item 2 — butler interaction model landed as a new candidate principle in docs/principles.md ("Remoir as exo-skeleton for the mind; butler as interaction model") + new §5.6 in north-star.md + hypergrowth-incentive flagged in project-management/maybelater.md. Item 3 — five canonical-layer functions named in north-star.md new §3.2; anti-hoarding-via-pruning added as new §6.6 to docs/future-layers/canonical-concepts-brief.md; canonical-at-Structural rule added as new §1.4; community-narratives function flagged in maybelater.md; FP2 cross-reference added in docs/first-principles.md. Item 4 — three-register data architecture + four-layer reordering (Plumbing → Emergent → Structural → Deliberate; Emergent before Structural per deliberate-confirmation gate): two new candidate principles in principles.md (three-register; Emergent-precedes-Structural-deliberate-confirmation gate); two existing 13-05-2026 candidate principles reworded (rows 84+85); substantive revision of north-star.md §5.5; substantive revision of docs/object-model.md §1 (table reshape + new ordering + new gate paragraph + L2/L3 label sweep across §2 + §4 + §7.1); cross-reference note added to docs/candidate-principles/data-layers-matrix.md clarifying orthogonality with the paused C6+C7+U5 cluster. Chat-archive entries merged to chat-archive/2026-05.md first (twelve ### Topic blocks under new ## 2026-05-17 day heading, stamped 00:48); both source files moved to archive/cowork-briefs/2026-05/ and archive/chat-archive-entries/2026-05/. Decision entry logged in decisions.md 17-05-2026 (marked public). Phase 1 / Capture Live (c) framing unchanged — forward-shaping doc work, not a workstream pivot. m2c task 12 + 19–22 still the remaining empirical / end-of-milestone work. Website deploy pending Freek's OK.events.media + events.location_pings sibling tables; capture_mode column on raw_inputs (CHECK-constrained TEXT, 'live' default); 78 photo paths backfilled into media; content_photo dropped; review RPC reshaped. Capture App + review-frontend updated to new shape; both production deploys executed by Freek mid-session. Three decision entries logged on the schema (capture_mode = CHECK; FK ON DELETE CASCADE on media; single coordinated change vs additive-with-transition). Permissions hygiene: docs/claude-permissions.md register seeded with 3-monthly review cadence; user-level Family-era entries pruned (7 stale rules removed). Cowork brief (New instructions/) retracted by Freek before processing.@cf/openai/whisper-large-v3-turbo). Native stack fit (already on Cloudflare for capture-app + review-frontend deploys); ~$0.031/hour beyond the free tier; 10k Neurons/day = ~214 free audio-minutes/day covers prototype volume; self-hosted Whisper documented as the migration path. Sensitive captures will bypass this provider per ADR-003 §2.1. ADR-003 §2.4 closed.MediaRecorder with MIME-priority fallback; pulsing recording indicator + timer; audio tiles in the queue with native <audio controls> + duration + remove × + "upload pending — m2c task 8" badge. Mid-recording mode switches finalise rather than orphan the recording. Live at https://app.remoir.app/ (deploy 43808b8b). Real-device iOS Safari mic-grant validation pending Freek.transcribe.remoir.app. New transcribe-worker/ directory: TypeScript Cloudflare Worker, Workers AI binding to @cf/openai/whisper-large-v3-turbo per the task 5 decision. POST /transcribe with multipart/form-data (audio field), origin allow-list (app.remoir.app + localhost:3100) + optional X-Capture-Token shared secret, returns {text, language, duration_seconds} JSON. Migration 011 applied: new remoir-raw-audio Supabase Storage bucket (20 MB cap; MIME allow-list audio/webm + audio/mp4 + audio/aac + audio/mpeg + audio/ogg) parallel to remoir-raw-photos. End-to-end smoke test passed: macOS say → 16kHz mono WAV → curl POST → 200 OK in 2.27s with a clean transcript. Lesson logged in lessonsClaude.md 15-05-2026 — Workers AI Whisper requires audio as a base64-encoded string, not a number array (first deploy hit AiError 5006; redeploy with base64 worked first time).Six development tracks
Tracks are permanent parallel workstreams. They apply across the whole platform and never finish — they mature over time. A single milestone typically advances two or three tracks at once.
Capture
Making input as frictionless as possible. WhatsApp, email, Apple Shortcuts, free-form text, voice. The moment of capture is the highest-friction point and the most important to solve. If capture feels like work, nothing else matters.
Knowledge Graph
The structured collection layer. Objects, links, templates, Capacities (for Remoir Events), Supabase schemas (for Remoir Family). Where user value is created through organisation and retrieval.
Data Pipeline
The backend plumbing. Webhooks, automation (Make, n8n, custom), OCR, geocoding, storage, error handling. What moves data from capture to knowledge graph reliably.
Raw Data
Storing all inputs in their original unprocessed form with full metadata from day one. The foundation for AI parsing and the user's personal data asset. User-owned and controlled from the first line of code. Non-negotiable.
AI Enrichment
Parsing, tagging, linking, summarising using AI. Reduces manual effort. Eventually replaces structured input entirely with free-form natural language. Trained on the Raw Data track. m3 (AI Enrichment prototype, scoped 12-05-2026) lands first on this track — a lightweight Claude-API prototype over raw inputs that generates the empirical signal needed to scope m6 (AI Parsing, production-grade).
Sovereignty
User ownership and control of all data and metadata. Group governance. Selective sharing with commercial parties on user terms. Long-term vision — informs architecture decisions now without being built now. Includes the federated ownership layer (see vision/future-layers.md).