Skip to main content

ARC Brain — decisions log

Choices where the master spec said "choose", plus deviations from the letter of the spec to fit ARC.

DateDecisionChoiceWhy
2026-07-29Primary storeNew Prisma models (Note, Folder, Link, …), not ClaudeContextSpec N1–N4; ClaudeContext is append-only keyed memory
2026-07-29ClaudeContextKeep permanently as LLM memoryUser: still useful as pure LLM memory; no absorb/delete migration. Spec §18.3 out of scope
2026-07-29HTTP base/api/v1/brain via registerVersionedRouteMatch existing ARC API versioning (/api/brain legacy alias also registered)
2026-07-29Module layoutserver/src/modules/brain/* + thin routes/brain*.routes.ts + mcp/brain.tools.tsSpec module boundary without rewriting all of ARC
2026-07-29Table naming@@map("snake_case")Existing ARC Prisma convention
2026-07-29Soft deleteBrain models onlyDo not retrofit rest of ARC
2026-07-29Vault rootserver/data/vault in dev; /data/vault in Docker; override via BrainSettings.vaultPath / envSpec default + local-friendly path
2026-07-30MCP brain tools (core set)brain_capture, brain_write, brain_read, brain_search, brain_append, brain_resolve, brain_backlinks, brain_daily, folder list/create/moveEnough for agent-first capture; remaining §16 tools in later phase
2026-07-30Core brain_* always onrequiresPermissionToggle: false for capture/read/search/append/resolve/backlinks/daily/folder_listMake Brain the default knowledge path without Tool Permissions toggles
2026-07-30Settings LLM promptsRecommended + new Brain block + narrowed Context scratchSteer Claude to Brain for knowledge; context_* for agent prefs only
2026-07-30In-app coach promptSystemPromptBuilder prefers brain_* for knowledgeSame policy as MCP copy-paste prompts
2026-07-30Vault sync depschokidar + p-queue (p-queue reserved for queue polish)Spec Phase 3; disable via ARC_BRAIN_FILE_SYNC=0
2026-07-30Note compositionHost notes compose via ![[…]] embeds + arc-* fences; brain_include / brain_splitNotion/Obsidian multi-content: databases/graphs are notes (or views) that can be included or split out
2026-07-30Vault rename safetyDeferred unlink (2s) + folder hash rename-pair + reattach by frontmatter idObsidian folder/file rename must not destroy note ids
2026-07-30Editor deliveryCM6 + / slash commands + [[ autocomplete + rich previewPreview renders embeds, mermaid, YouTube/iframe/gif, callouts
2026-07-30ExcalidrawExcalidraw editor UI on canvas page (autosave + JSON escape hatch)Scene JSON on Canvas.data
2026-07-30Public note pagesPer-note isPublished + publicSlug; /brain/p/:slug renders page onlyLinked notes / private embeds sealed on public view
2026-07-30Entity linking UXAPI about links + MCP brain_entity_types/brain_notes_about/brain_publish + UI search/slash for all typesMake Person→People (and every type) easy from API/MCP/UI
2026-07-29TimezoneEurope/Amsterdam at edges; UTC in DBSpec + existing ARC patterns
2026-07-30Task due datesTask.dueDate / priority / completedAt shippedWas deferred; now on model + API/MCP
2026-07-30Vault gitgitEnabled + remote + auto-commit after vault writesOptional; off by default
2026-07-30EmbeddingsLocal hash embeddings + hybrid RRF; docker image pgvector/pgvector:pg15External embedding APIs optional later
2026-07-30Live editorSplit Live mode (CM6 + rich preview side-by-side)Full TipTap WYSIWYG not required for vault value
2026-07-30Interactive viewsArcViewWidget runs /brain/views/run with filter + row linksReplaces static fence dump in preview
2026-07-29Vector / pgvectorFloat[] embeddings + optional pgvector imageApp-level cosine when extension absent
2026-07-29SocialInteraction nameMap to existing Interaction modelARC schema name differs from spec
2026-07-29Indexer transportIn-process async queue with backoff (not pg-boss yet)Non-blocking; failed index must never fail domain writes. May move to pg-boss later — log if changed
2026-07-29Day ownershipIndex via Day.week.userIdDay has no direct userId