Skip to content

feat(memory): save project facts without an approval queue - #72

Merged
ScriptedAlchemy merged 3 commits into
t3/remove-loom-featuresfrom
t3/holographic-memory-auto-create
Nov 6, 2026
Merged

ScriptedAlchemy merged 3 commits into
t3/remove-loom-featuresfrom
t3/holographic-memory-auto-create

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Why

Project memories should save automatically without asking the user to review or approve suggestions. Replace the approval lifecycle with saved memories while keeping provenance and the existing TraceDecay-derived holographic ranking.

What changed

  • Enable automatic learning by default and save cited facts immediately. Skip only exact duplicates; similar or conflicting facts save separately without replacing anything.
  • Replace proposed/confirmed states with saved | forgotten, migrate existing facts in migration 92, and remove confirmation APIs and controls.
  • Update web, desktop's shared web UI, mobile, MCP tools, agent instructions, and user guidance together.

Scope

  • Preserve fact contents, revisions, trust, citations, history, receipts, and search indexing during migration.
  • Keep optional editing, explicit supersession, forgetting, and helpful/unhelpful feedback.
  • Leave the MAP-C encoder and decay scoring unchanged. This does not add automatic deletion or prompt injection.

Tradeoffs

Lexical similarity is not proof that two memories mean the same thing, so it cannot discard a distinct fact. The direct API migration deliberately drops compatibility with older clients.

Blast Radius

Each updated Electron installation migrates its own local database on startup. Update all linked installations and clients together; mixed versions may fail memory operations. Automatic learning adds a text-generation call per eligible run unless disabled, and previously omitted default-false settings become enabled.

Prior implementation verification

  • vp run check:changed passed on the rebased commit, including 420 tests, affected-package typechecks, lint, formatting, dependency checks, and React compiler checks.
  • Focused post-rebase migration, settings, and instruction-budget tests passed, 48 tests. Independent review passed after regression tests proved negated, swapped-negation, and enabled/disabled facts are not discarded.
  • Real web saving and search were exercised. UI captures remain unavailable because the browser snapshot tool timed out. Native mobile verification was blocked by repeated Expo module-scanner build failures. The MCP eval request constructed successfully, but paid model evals remain unrun because credentials were unavailable.

Implemented with GPT-6.1 Sol in the Codex harness and Claude Opus 5.5 in the Claude Code harness.

Dependency and merge order

This PR depends on #71 (t3/remove-loom-features) and is based on that branch so its review diff shows the memory changes. Merge #71 first, then retarget this PR to main and merge it. Migration 91 removes the Loom indexes; migration 92 updates saved project memories. Both migrations are included in this branch to preserve a contiguous upgrade sequence.

Follow-up audit

Automatic duplicate detection now compares normalized content against all current saved facts in bounded pages. It no longer depends on the three displayed similarity hints or the forty lexical neighbors, and it covers content without lexical tokens, including CJK text. The regression checks more than one page of competing facts, normalized whitespace/case, and a CJK duplicate.

The upgrade also recognizes this PR's earlier saved-memory schema recorded at migration 91. After checking that exact known history and schema, it applies the Loom index cleanup and moves the existing saved-memory receipt to 92 in one transaction. The regression verifies retained facts, history, command receipts, search results, and receipt timestamps, along with rollback on a failed receipt update and an unchanged second startup.

Current audit verification

  • Both new regressions were confirmed failing before their fixes and passing afterward: duplicate automatic saves and startup from the originally published migration-91 memory schema.
  • The scoped changed-file gate passed 380 behavioral tests across 17 files, plus 19 React compiler assertions covering 14 changed files. Formatting, lint, both Knip passes, GraphQL validation, and the native project-memory build passed.
  • All 36 affected packages have passing typecheck coverage with the same package filters and vp run --no-cache --parallel --concurrency-limit 1. The cached task wrapper is blocked locally by a seccomp_unotify process-tracing restriction. Final type-only row and tuple annotations received fresh file formatting/lint and typechecks, including the server on the final source tree.
  • Two browser files remain unrun locally because Chromium's headless executable is unavailable: FileCodeRelationships.browser.test.tsx and ProjectMemoryPanel.browser.test.tsx. Their browser behavior is not claimed as locally verified.

Audit and fixes: GPT-6 Astra Pro in ChatGPT.

Migrate existing facts to a saved-or-forgotten lifecycle and update clients and agents together. Keep provenance, explicit supersession, feedback and TraceDecay-derived ranking.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: dde3af9

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy
ScriptedAlchemy changed the base branch from main to t3/remove-loom-features November 6, 2026 09:18
@ScriptedAlchemy
ScriptedAlchemy merged commit 0e401a6 into t3/remove-loom-features Nov 6, 2026
3 checks passed
ScriptedAlchemy added a commit that referenced this pull request Nov 6, 2026
Removes Loom from web, desktop, mobile, server, contracts, and docs. Migration 91
drops the six indexes that only Loom read, and the shell's pending-secret lookup
now names its status index so that drop does not change its plan.

Also lands #72, which saves project facts without an approval queue. Migration 92
rewrites stored facts to the saved and forgotten states.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant