Log
Density-honest timeline
May2026
30-05
Built the enrichment Worker (enrich-worker/, claude-sonnet-4-6): POST /enrich reads a transcript + confirmed entities via lib/store and writes shallow L2 candidates (tags/topics/entities/Moment/narrative), each a candidate (FP2), derived_from the transcript. Fast path wired (confirmed entities passed to the model); slow path deferred. Idempotent per transcript via a new lib/store hasEnrichmentFor. Typechecks + bundles; NOT deployed (remote container has no Cloudflare auth/secrets and egress 403s api.cloudflare.com). Added scripts/spike-b-verify.sh. Registered "loop" as the data-flow-segment vocabulary in stratification (dropped the "leg" coinage); fixed a stale STATUS clause that read enrichment as A1-PH3. Multi-device coordination: .gitattributes merge=union on the append logs (verified clean concurrent-merge), active-work.md session ledger, CLAUDE.md §Multi-device workflow + ledger session-start/wrap hooks.
30-05
Reconciled the milestone descriptions to the working-vision loop commitment and locked the M9 spike's L2 scope to the minimal-dynamic cut: enrichment produces shallow per-capture emergent structure (transcript + candidate entities/tags); review renders it + confirm (L2→L3, L1 act) / free-text correct (L1 act); excluded cross-corpus clustering, knowledge-graph display, entity merge/disambiguation UI, L4 Insight (all A1-PH3). Added enrichment convergence as exit-gate Claim 5 (Freek's call), propagating four→five across WV/milestones/STATUS/okrs. Boundary rationale: transcript-only de-risks nothing; the spike's claim is to de-risk two-speed convergence, which needs confirmable structure — the thin/engine seam is cross-capture intelligence + rich UI, not entities.
30-05
Processed the two 29-05 New-instructions briefs (handoff-L1-L2-L3-L4-dynamic, session-brief-l1-l4-spike). They flagged transcript-in-L1 as a contract violation. Reconciled toward the briefs (Freek's call): L1 becomes raw-only — transcript and all derived artifacts (tags/entity-links/narrative) live in L2; L4 annotation acts land as raw L1. This realigns the implementation with the already-ratified object model (ADR-004: L1 = "no semantic meaning yet"; enrichments are a separate linked layer) — ADR-008 had drifted by placing the transcript in L1. Authored ADR-011 (accepted) superseding ADR-008's layer placement (mechanism preserved) and amending ADR-009/010. Keep the existing l2_emergent table (evolve it, add kind=transcript) rather than the briefs' parallel flat pass_type table (Freek's call; FP5 — don't redesign before strain). Build in two loops: Loop 1 = capture→L1→L2→review (free-text annotate, no promotion); Loop 2 = adds L3 structural candidates + the L2→L3 confirm gate. The review-frontend already built (confirm/promote) becomes Loop 2; re-scoped to Loop 1 first. Code refactor (transcribe→L2, enrich read L2, store, schema migration, review re-scope) follows this docs-first landing.
30-05
Locked the M9 Capture→Enrich→Review spike's L2 scope (the minimal-dynamic cut) and added enrichment convergence as a fifth exit-gate claim. Enrichment produces shallow per-capture emergent structure (transcript + candidate entities/tags); the review surface renders it and offers confirm (L2→L3 gate, L1 act) + free-text correct (L1 act). Excluded as A1-PH3: cross-corpus clustering, knowledge-graph display, entity merge/disambiguation UI, L4 Insight authoring. Convergence (fast-path resolution to confirmed entities; 100% confirmed-entity persistence under slow-path refinement; corrections-per-capture trend down) becomes working-vision Claim 5, scored at M14. Propagated four→five across WV, milestones, STATUS, okrs (+ KR2.4); ADR-007/010 tightened; friction-log 5th-claim question re-tagged as a possible sixth.
30-05
ADR-004 Object-model layer ratification
30-05
ADR-006 Capture surface: Apple-native capture + async ingest
30-05
ADR-007 Review surface: lightweight Cloudflare Pages confirm/correct surface
30-05
ADR-008 Transcription pipeline: Cloudflare Worker + Workers AI Whisper
30-05
ADR-009 Data storage: Supabase behind a portable storage contract
30-05
ADR-010 Enrichment: Cloudflare Worker calling Claude (Sonnet), two-speed
30-05
ADR-011 L1 is raw-only; all derived artifacts live in L2; two-loop enrichment staging
29-05
Processed cowork-brief-2026-05-29-founded-input-gate + merged its chat-archive entry. Landed the founded-input gate as a sharpening of the Reference type in docs/object-model.md §3.4 (Founding constraint): L1 Substrate is capture-only; external reference enters L1 only when bound to a moment of actual engagement (a Capture or deliberate annotation); unanchored bulk reference stays in external storage outside the cell. Decision logged; materialization-cost discipline parked cross-arc in maybelater. Contract/doc-only — no code or schema (A1-PH2 already creates only audio rows, reserves the reference slot).
29-05
Built + deployed Phase 1 (ingest) and Phase 2 (transcription) of the M9 Capture→Enrich→Review vertical-slice spike, and verified the leg end-to-end with a real Action-button voice memo. New: cell schema (0001 substrate + 0002 grants/exposure), lib/store portable contract, ingest-worker (ingest.remoir.app), transcribe-worker rebuilt (transcribe.remoir.app). A real Dutch memo flowed Shortcut → ingest (L1 capture, exactly-once via client_id) → Whisper → linked L1 transcript (nl @ 0.998, no Icelandic misfire). ADR-008 flipped to accepted. ADR-006 Active; ADR-009 partially validated (L1 immutability + portable contract + exactly-once); ADR-007/010 still proposed. Three deploy-time bugs found + fixed. Next: Phase 3 enrichment.
29-05
Session-start inbox sweep cleared both pending files in New instructions/. (1) Merged chat-archive-entry-2026-05-27-cms-build.md into chat-archive/2026-05.md under a new ## 2026-05-27 day section (source ~HH:MM stamps preserved as retroactive timestamps); archived to archive/chat-archive-entries/2026-05/. (2) Processed cms-brief-2026-05-27-e99f: its full-file replacement was unsafe (stale base cdccf2fe predating the 29-05 documentation-voice sweep — would have reverted M6 work). Salvaged the real change surgically: refined the §Surface butler heuristic wording ("responsive, but not suggestive; keenly anticipative, but never anticipatory") and renamed it "The traditional English butler is the interaction model" (fixed the brief's "tradition" typo), syncing the restatement at fp6-system-serves.md:58. Decision logged in decisions.md. Brief archived to archive/cms-briefs/2026-05/. Inbox now empty.
29-05
M8 started. spec-stack-eval.md Draft→Approved with execution-time open questions resolved (one ADR per component; deferrals inline in decisions.md; partial closure acceptable; adopt Nygard proposed→accepted/rejected/superseded ADR lifecycle, recorded in the file-registry adr rule). Component set expanded 4→5 (added enrichment, the Worker-calling-Claude piece from the 29-05 reorder). Authored the four remaining component ADRs as proposed via the calibration-then-clone rhythm: ADR-007 review-surface (calibration, shape approved by Freek), then ADR-008 transcription, ADR-009 storage, ADR-010 enrichment cloned to the same shape. All four flip to accepted as the M9 vertical-slice spike validates each. Also fixed the M6 Lens display (carried [ ] task → [~] so the Lens reads it as done-for-status).
29-05
M4 closed on Freek's call. Last open item was the dependency-claim re-verification after M1's retroactive reopening. Re-verification finding: M1's reopening leaves "feed"/"trails" intact; the 29-05 vertical-slice reorder is what made "M8 gates M9–M12" inaccurate (M9 spike now informs the outstanding M8 ADRs). Updated the working-vision dependency sentence to the M8↔M9 interleave wording. No stability gate (phase-scoped doc) and no manual-review gate; other done-when met.
projectlog
decision
ADR
lesson
friction
Decisions
30-05-2026
Processed the two 29-05 New-instructions briefs (handoff-L1-L2-L3-L4-dynamic, session-brief-l1-l4-spike). They flagged transcript-in-L1 as a contract violation. Reconciled toward the briefs (Freek's call): L1 becomes raw-only — transcript and all derived artifacts (tags/entity-links/narrative) live in L2; L4 annotation acts land as raw L1. This realigns the implementation with the already-ratified object model (ADR-004: L1 = "no semantic meaning yet"; enrichments are a separate linked layer) — ADR-008 had drifted by placing the transcript in L1. Authored ADR-011 (accepted) superseding ADR-008's layer placement (mechanism preserved) and amending ADR-009/010. Keep the existing l2_emergent table (evolve it, add kind=transcript) rather than the briefs' parallel flat pass_type table (Freek's call; FP5 — don't redesign before strain). Build in two loops: Loop 1 = capture→L1→L2→review (free-text annotate, no promotion); Loop 2 = adds L3 structural candidates + the L2→L3 confirm gate. The review-frontend already built (confirm/promote) becomes Loop 2; re-scoped to Loop 1 first. Code refactor (transcribe→L2, enrich read L2, store, schema migration, review re-scope) follows this docs-first landing.
architecture
30-05-2026
Locked the M9 Capture→Enrich→Review spike's L2 scope (the minimal-dynamic cut) and added enrichment convergence as a fifth exit-gate claim. Enrichment produces shallow per-capture emergent structure (transcript + candidate entities/tags); the review surface renders it and offers confirm (L2→L3 gate, L1 act) + free-text correct (L1 act). Excluded as A1-PH3: cross-corpus clustering, knowledge-graph display, entity merge/disambiguation UI, L4 Insight authoring. Convergence (fast-path resolution to confirmed entities; 100% confirmed-entity persistence under slow-path refinement; corrections-per-capture trend down) becomes working-vision Claim 5, scored at M14. Propagated four→five across WV, milestones, STATUS, okrs (+ KR2.4); ADR-007/010 tightened; friction-log 5th-claim question re-tagged as a possible sixth.
scope
29-05-2026
Processed cowork-brief-2026-05-29-founded-input-gate. L1 Substrate holds only inputs tethered to a moment of actual engagement; external reference enters L1 exclusively when bound to a Capture or deliberate annotation. Unanchored bulk reference (downloaded archives, history dumps, corpora) stays in external storage, owned by the user but outside the cell's processing. Lands as a sharpening of the Reference type in docs/object-model.md §3.4 (Founding constraint). Contract clarification only — no code/schema this phase (A1-PH2 creates only audio rows, reserves the reference slot). Materialization-cost discipline parked cross-arc in maybelater.
architecture
29-05-2026
Processed cms-brief-2026-05-27-e99f. The brief's full-file replacement was unsafe (stale base cdccf2fe, predating the 29-05 documentation-voice sweep — applying it would have reverted M6 voice work and reintroduced "household"/"Remoir as exo-skeleton"). Salvaged the brief's real intent surgically onto the current file: (1) wording refinement to the §Surface butler heuristic — "responsive, never anticipatory" → "responsive, but not suggestive; keenly anticipative, but never anticipatory", which maps onto FP6's internal-anticipation + external-restraint pairing; (2) renamed the heuristic "The butler is the interaction model" → "The traditional English butler is the interaction model" (fixed the brief's "tradition" typo). Synced the exact-name restatement at fp6-system-serves.md:58 per the named-entity rename gate. Status/Derived/Created unchanged (settled, FP6, 22-05-2026).
process
29-05-2026
M8 started. spec-stack-eval.md moved Draft→Approved with the execution-time open questions resolved: one ADR per component; deferral entries inline in decisions.md; partial closure acceptable (every component has some explicit entry); adopt Nygard's ADR status lifecycle (proposed→accepted/rejected/superseded). Component set expanded from 4 to 5 to include enrichment (the Worker-calling-Claude component from the 29-05 vertical-slice reorder). Remaining ADRs (008 transcription, 009 storage, 010 enrichment) authored as proposed, flipped to accepted as the M9 spike validates each. ADR-007 (review surface) authored as the calibration proposed-ADR; clone the shape to the other three. Lifecycle recorded as a project-wide convention in the file-registry adr rule.
process
29-05-2026
M7 closed on Freek's explicit call. Done-when met: docs/theory/README.md carries rules + front-matter spec + lifecycle; finite-infinite-games.md is the first entry validating the form; create→review→retire lifecycle documented. The entry grounds Carse's finite/infinite distinction onto the object model and was stress-tested against wider literature (Bottéro, perdurantism, Hacking's looping effect, akitu) to avoid solipsism. Two open M7 tasks dispositioned: glossary-completeness check → nothing to add (entry uses external-thinker vocabulary, not Remoir terms); theory-derived-heuristics extension → candidates surfaced but formal promotion deferred to a deliberate heuristic-introduction pass (own gate). One new within-model open question added to object-model-open-questions.md (Person as an interactive kind).
process
29-05-2026
M4 (Working Vision) closed on Freek's call. Last open item — the dependency-claim re-verification "after M1 retroactive reopening" — resolved. Finding: M1's reopening leaves the claim intact ("feed"/"trails" are soft dependencies), but the 29-05 vertical-slice reorder made "M8 gates M9–M12" inaccurate (the M9 spike now informs the outstanding M8 ADRs). working-vision dependency sentence updated to the M8↔M9 interleave wording. No stability gate (phase-scoped doc, retired at transition); no separate manual-review gate. Other done-when criteria already met.
process
29-05-2026
M2 (Object Model) closed on Freek's call after his manual content review of object-model.md + ADR-004. Done-when scored: four layers + Scope/Stage/Character axes documented with worked examples; ratified by ADR-004; §Store and §Enrich heuristics reference layers; stability gate intact (no layer assignment re-litigated in the last 7 days — same-session edits changed wording/ordering/structure but reassigned no layer). M5 Derived-mirror and M6 glossary-mirror confirmations resolved on close. ADR-004 Insight-L4 single-vs-multi-type question carried as parked, not a blocker.
process
29-05-2026
Adopted Option B for object-model.md §12 "Related points" — a standing list of deferred/open design questions that conflicted with the settled-truth discipline (rule 7). Moved the questions into a new sibling file docs/object-model-open-questions.md, mirroring the established north-star ↔ vision-watchlist relationship; §12 is now a one-line pointer. Items carry scope (within-model / cross-arc) + a reopening trigger. Four cross-arc items flagged as candidates for /for-future/ (kept in the file for traceability, not yet briefed — Freek's call). Wired into phase-swap-protocol.md §Object-model open-questions recheck.
process
29-05-2026
M6 (Glossary) closed on Freek's call. Done-when met: docs/glossary.md carries every load-bearing Remoir term including the stratification-vocabulary section; object-model layer/object terms confirmed present with the Object Layer entry now pointing at ADR-004 as layer-model source-of-truth per ADR-004 §Impact (the M2 mirror). Two flagged borderline metaphors kept intentionally. The inherited "household" wording in a for-future brief is deferred to brief-processing, not an M6 blocker. Forward-looking M7/M8 vocabulary-completeness checks moved to those milestones.
process
29-05-2026
Roadmap reorder (not a foundational rescope). The platform's load-bearing bet is the enrichment + emergent-objects dynamic, not the act of capture — so M9–M12 execution is reordered into one thin end-to-end vertical slice that de-risks that dynamic before building capture infrastructure. Capture mechanism changes from a built capture-app PWA to Apple-native capture (Voice Memos / action button) + async ingest — ratified in ADR-006 (the M8 capture-surface component ADR). Enrichment dynamic under test is two-speed (quick first-pass + slow infrequent refinement), sequenced fast-path-first. Scoping locked: enrichment runs as a Worker calling Claude; model Sonnet-class (claude-sonnet-4-6), good-not-top. Governance: vertical-slice spike inside A1-PH2, no foundational-doc rewrite; the working vision already commits to the full capture→store→enrich→review→re-enrich loop on one media type. The spike's findings inform the remaining M8 ADRs.
scope
29-05-2026
Adopted a register-mapped grammar-of-agency standard for how docs describe Remoir's behaviour, authored as docs/process/documentation-voice.md (registered in file-registry). Each register has exactly one canonical actor: behavioral → "the system"; sovereignty/holder → "the platform"; structural → "the cell"; boundary → "the membrane"; sub-component → "the enrichment layer"/"the AI"; cultural metaphor → "the butler" (flagged passages only). User-side: "the user" canonical, "the mind" only in the FP6 couplet, "Freek" only in PM/process docs. "household" reserved for FP1's future multi-cell ownership-granularity sense + the metaphor object; never a system synonym. Triggered by Freek noticing drift ("the system serves" vs "the household receives"). Cleanup pass applied 6 conformance edits to settled docs; 3 usages kept as correct; 2 borderline metaphor usages flagged not changed.
process
28-05-2026
FP→ADR audit (per ADR-discipline brief Item 4) confirmed two gaps: no ADR currently records FP1's substrate-architecture sovereignty commitments (Tier 3 readiness checklist lives only as a heuristic), and no ADR records FP2's per-field provenance + non-destructive correction schema commitments. Two ADR-authoring tasks scheduled — one each. Authoring belongs to a dedicated session per the brief's discipline; this entry is the scheduling record, not the ADR.
process
28-05-2026
Scoping decision for the A1-PH2 (Foundation) infrastructure rebuild. Three things settled: (1) the rebuild strips PH1's multi-modal capture surface to audio-only (voice memo → transcription → text → enrichment → review); (2) the storage schema is forward-designed to hold the other capture types via a source_type discriminator and optional enrichment-context slots, all empty in PH2; (3) the storage contract is built as a portable abstraction over Supabase. Lightweight free-text annotation only this phase (structured annotation → A1-PH3). Proposed rebuild stack recorded provisionally in techstack.md (not ratified — M8's job). Four open questions raised and explicitly NOT decided: phase-cadence rule softening, Arc-1 phase count growth, a proposed-but-held Tranche level, Svelte-vs-React for the review/lens frontend (→ M8 ADR).
architecture
27-05-2026
Foundational-doc refactor. Phase-current instance data (active-phase card, A1 phase decomposition, A1-PH2 slug-alias and retired-slug tables) moves from /paradigm/stratification.md to docs/milestones.md. milestones.md gains per-milestone outcome / why-it-matters / done-when / deliverables / status entries for M1..M14, sourced from PM literature (Pichler GO Roadmap, Patton release slices, McGreal/Jocham EBM, Cagan/Torres outcomes-over-output). Resolves the "M1 not yet ready to re-close" question by giving M1 falsifiable done-when criteria. Honors rule 8 structurally: instance data now lives in a phase-current doc that rebuilds at swap, not in /paradigm/ (persistent across swaps).
foundational
27-05-2026
Added /paradigm/staging/ as a partition-organised pre-phase thinking tier, distinct from /for-future/ briefs (deliberate vs incidental). Naming organised by partition not phase number to respect rule 9; provisional discipline ensures M14 author re-authors fresh per rule 8. Replicable for future arcs along whatever decomposition axis each arc adopts.
process
26-05-2026
Processed the process-discipline-canonical-text brief. Chose a fourth housing option beyond the brief's three: fold anti-patterns table + load-bearing rationale into paradigm/stratification.md §Phase transition discipline. No new heuristic row in docs/heuristics.md — process discipline lives in CLAUDE.md + paradigm/, not in the product-heuristics registry.
process
26-05-2026
Two for-future brief processings (non-destructive correction; Tracks taxonomy) and one new §Capture heuristic. Architectural choices: two separate heuristics over combined for non-destructive correction; fold inline over re-create-file for Tracks.
heuristics
26-05-2026
A1-PH2-M3 (North Star) authored. Five architectural decisions ratified: NS/FP/WV boundary; defer interpretation doc; split metric definition (NS) from tracked metric (PM); fold Arc 1 falsifiability into NS; vision-watchlist as sibling doc. Phase-swap protocol gains a Vision foreclosure recheck section.
vision
26-05-2026
Vision page's Arcs section now uses a single colored-block explorer for A1-A6 (replacing duplicate banner + collapsible-list); heuristics default to category headers only (Capture / Store / Enrich / Surface / Cross-cutting / Governance), expanding on click.
lens
ADRs
Code
Title
Status
ADR-004
Object-model layer ratification
active
ADR-006
Capture surface: Apple-native capture + async ingest
active
ADR-007
Review surface: lightweight Cloudflare Pages confirm/correct surface
proposed
ADR-008
Transcription pipeline: Cloudflare Worker + Workers AI Whisper
superseded by adr-011 (30-05-2026) — *layer placement only*
ADR-009
Data storage: Supabase behind a portable storage contract
proposed
ADR-010
Enrichment: Cloudflare Worker calling Claude (Sonnet), two-speed
proposed
ADR-011
L1 is raw-only; all derived artifacts live in L2; two-loop enrichment staging
accepted (30-05-2026)
Lessons
Claude · durable
0 entries
No entries yet.
Frederic · product
10 entries
29-05Founded input is the substrate's value test
29-05Deployment surfaces what design can't
29-05Test theory claims against outside literature before expanding
27-05Grammar docs accrete instance data silently
Friction
No open friction entries.