Skip to content

Close phase 0 and plan phase 1 - #3

Merged
rohan-hotdata merged 4 commits into
mainfrom
phase-1-plan
Oct 5, 2026
Merged

rohan-hotdata merged 4 commits into
mainfrom
phase-1-plan

Conversation

@rohan-hotdata

Copy link
Copy Markdown
Collaborator

This PR closes phase 0 in the roadmap and replaces plan.md with the phase 1 plan. It changes docs under docs/internal/ only. No code or public docs change.

What changed

  • roadmap.md: phase 0 is closed on 2026-10-05 with PR Phase 0: documents, verification command, and measurements #2, and phase 1 is open. A note records how phase 0 changed later phases. The local target is a three-container stack. Fused retrieval needs plain vector indexes and an embedder from the caller. The integration tests can run against the local stack in CI. The phase 2 row now says so.
  • plan.md: phase 1, the storage contract offline. It has ten tasks, seven acceptance criteria, and its stop conditions.

For review

The plan takes four defaults on questions that the brief leaves open. Please confirm or change them before the phase 1 issue opens:

  • MemoryStore takes an embedder. search with query text and no embedder raises.
  • The store takes a clock, so the tests need no real time.
  • The filter is a frozen dataclass, so an unknown key cannot be written.
  • The package uses a src/ layout. It is built but not yet published to PyPI.

Verification

  • make verify passes.
  • A grep for the known private names finds nothing.

The roadmap records PR #2 and the three ways phase 0 changed later
phases. plan.md now holds phase 1, the storage contract offline: ten
tasks, seven acceptance criteria, and four defaults the brief left
open (an embedder and a clock given to MemoryStore, a dataclass filter,
and a src layout that is built but not yet published).
Comment thread docs/internal/plan.md
5. `MemoryStore`: revisions and supersession, exact deduplication on normalized content,
whole-label namespace matching, `forget_after` hiding, cosine distance through the
embedder, and a buffered `writer` that returns the ids it flushed (section 3.3).
6. The conformance suite: one test for each answered guarantee in `docs/guarantees.md`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Name the driver-specific rows in docs/guarantees.md that task 6 defers to phase 2. (not blocking)

The row "Two processes write to the same table" is answered, measured (M3), and concerns the storage contract. The 409 retry with backoff exists only in HotdataStore. A test against MemoryStore cannot observe the 409 retry. AC4 requires a passing test for that row, so the first stop condition fires with certainty. The same applies to the sweeper half of the forget_after row. A one-line list of deferred rows here keeps AC4 satisfiable without a stop.

claude[bot]
claude Bot previously approved these changes Oct 5, 2026
MemoryStore can match the engine's cosine distance but not its BM25
scoring, so phase 2 decides between an exact vector-only comparison
and a looser one for fused search.
@rohan-hotdata
rohan-hotdata requested a review from a team as a code owner October 5, 2026 16:06
@rohan-hotdata
rohan-hotdata requested review from shefeek-jinnah and removed request for a team October 5, 2026 16:06
Adds the fifth decision, Store as a Protocol with shared plain
functions, so plan.md matches the issue.
claude[bot]
claude Bot previously approved these changes Oct 5, 2026
@rohan-hotdata
rohan-hotdata merged commit da549d0 into main Oct 5, 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