Active focus

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_photophoto_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)

0/0 tasks · 0%

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.

m1
Manual Loop
Complete
m2a
Capture Live (a) — Photos only
Complete
m2b
Capture Live (b) — Review Frontend Phase 1
Complete
m2c
Capture Live (c) — Multi-Modal Capture
Active
Capture
m3
AI Enrichment (prototype)
Future
AI Enrichment · Raw Data
m4
WhatsApp Pipeline
Retired
Capture · Data Pipeline
m5
Website Live
Deferred
Knowledge Graph
m6
AI Parsing
Future
AI Enrichment · Raw Data
m7
Organisation Layer
Future
Knowledge Graph
m8
Multi-User
Future
Knowledge Graph · Data Pipeline
m9
Platform Convergence
Future
All tracks
m10
Sovereignty
Future
Sovereignty

Recent updates

What landed in the past few sessions. Pulled live from STATUS.md.

17-05-2026, even later
Object-model drift audit + cleanup. Triggered by Freek's concern that other docs might still carry pre-17-05 layer ordering or framings that conflict with the new butler / canonical-at-Structural / Emergent-precedes-Structural truths. Three Explore agents scanned 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.
17-05-2026
Cowork brief 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.
15-05-2026
m2c kickoff — schema v2 foundation landed (tasks 1–4). Migration 010 applied: new 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.
15-05-2026, later
m2c task 5 closed — voice memo transcription provider = Cloudflare Workers AI (@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.
15-05-2026, later²
m2c task 6 closed (code + deploy) — Voice mode added to the Capture App as the 4th type. 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.
15-05-2026, later³
m2c task 7 closed — Transcription Worker live at 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).