Skip to content

feat(storage): add research project store#48

Merged
hubab1 merged 1 commit into
mainfrom
32c-research-project-store
Jul 26, 2026
Merged

feat(storage): add research project store#48
hubab1 merged 1 commit into
mainfrom
32c-research-project-store

Conversation

@hubab1

@hubab1 hubab1 commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • add an actor-isolated research-project store returning immutable Sendable snapshots
  • implement project create/list/update/delete and keyword membership list/add/remove
  • enforce UTF-8 bounds, strict storefronts, deterministic paging, 100-project and 500-keyword caps
  • use incarnation-aware optimistic revisions so stale handles cannot mutate recreated rows
  • preserve shared query, ranking, metric, and difficulty evidence when memberships or projects are deleted
  • expose only a read-only research-store protocol to MCP

Current-main integration

The store commit was reconstructed after the V5 schema merged. Production MCP continues to use the shared provider pipeline and web-first ranking factory; the new injectable runtime seam preserves those dependencies while adding only the read-only research store.

Validation

  • focused store, dependency, MCP service, and MCP protocol suites passed
  • full project suite: 487 tests passed
  • concurrent adds, idempotency, stale revisions, reopen behavior, and shared-data preservation are covered
  • Swift 6.2 complete strict-concurrency build passed
  • Xcode project validation and git diff --check passed

Scope

This PR adds lifecycle/storage services only. It exposes no research UI or MCP mutation tool.

Contributes to #3.

@hubab1
hubab1 force-pushed the 32c-research-project-store branch from 6af69e1 to 824f76a Compare July 26, 2026 09:17
@hubab1
hubab1 changed the base branch from 32b-research-project-schema to main July 26, 2026 09:17
@hubab1
hubab1 marked this pull request as ready for review July 26, 2026 09:21
@hubab1
hubab1 merged commit a8dc6f7 into main Jul 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant