Repository navigation
Out-of-core materialization and streaming reads #136
Copy link
Copy link
Closed as duplicate
Labels
area:queryPrimary work area: query.Primary work area: query.priority:laterDeferred or speculative work.Deferred or speculative work.status:blockedBlocked by an explicit dependency or external condition.Blocked by an explicit dependency or external condition.type:featureNew capability or product behavior.New capability or product behavior.
Milestone
Description
Migrated from Method backlog
GitHub Issues are now the live work tracker. Repository docs remain Method evidence.
| Field | Value |
|---|---|
| Source backlog | docs/method/backlog/PERF_out-of-core-materialization.md |
| Archived source | docs/archive/backlog/github-issue-migration-2026-06-01/docs/method/backlog/PERF_out-of-core-materialization.md |
| Original lane | backlog-root |
| Original id | PERF_out-of-core-materialization |
| Original legend | PERF |
| Original feature | materialization-query-index |
| Original blocks | PERF_stream-read-migration |
Original backlog card
Out-of-core materialization and streaming reads
Problem
git-warp currently treats whole-state materialization as an in-memory
operation.
That is acceptable for small and medium graphs, but it is not a safe long-term
assumption for the substrate:
- the full visible graph may not fit in process memory
- app authors may keep trying to preload whole graph state if the substrate does
not provide stronger alternatives - debugger and provenance tooling may need broad reads without forcing one
monolithic in-memoryWarpState
The current implementation does have:
- Git-backed checkpoints for materialized snapshots
- an optional seek cache backed by
@git-stunts/git-cas
But that is not the same thing as a general out-of-core read architecture.
Why this matters
This is both a substrate and product concern.
- For builders and agents, we should not encourage read patterns that assume the
entire graph fits in memory. - For
WarpCore, whole-state inspection should remain honest about cost and
should eventually support broader-than-memory workloads better than it does
today. - For
warp-ttd, replay, slicing, provenance, and playback may need bounded or
streamed access to state and history without reconstructing one giant object
graph first.
Goal
Design a real out-of-core read story for git-warp so the substrate can:
- avoid assuming whole visible state fits in memory
- expose streamed or bounded read surfaces where appropriate
- distinguish clearly between:
- in-memory materialized snapshots
- Git-backed checkpoints
- optional CAS-backed seek caches
- keep the
WarpAppread story simple while makingWarpCoremore honest and
scalable
Questions to answer
- Which current APIs assume a full in-memory
WarpState? - Which inspection or query surfaces could become streamed, paged, or
index-backed first? - What should "whole-state inspection" mean once graphs outgrow memory?
- How should checkpoints, seek-cache snapshots, and live replay cooperate?
- Which use cases belong to:
WarpAppWarpCorewarp-ttd
- What can be done incrementally without destabilizing
v15?
Likely directions
- streamed node/edge/property enumeration from checkpoint or index-backed state
- more explicit bounded-read helpers in
WarpCore - index-backed inspection that does not require hydrating one full adjacency
universe first - clearer documentation that current
materialize*()returns an in-memory
snapshot, while checkpoints and seek caches are separate persistence layers
Not this item
This item does not assume that:
- every materialized snapshot already streams from Git CAS
- app-facing reads should call
materialize()directly - the right answer is to hide materialization entirely
It exists because the current implementation and current documentation should
stay honest about what is and is not solved.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:queryPrimary work area: query.Primary work area: query.priority:laterDeferred or speculative work.Deferred or speculative work.status:blockedBlocked by an explicit dependency or external condition.Blocked by an explicit dependency or external condition.type:featureNew capability or product behavior.New capability or product behavior.
Activity
flyingrobots commentedon Oct 1, 2026
Delegated closure-candidate scrutiny decision: Superseded by #824's retained-state streaming architecture: bounded selection/pages, root commitments, checkpoint/resume/comparison/BTR/export/diagnostics, migration and bounded-memory proof. Retain this card as historical rationale for distinguishing snapshots, checkpoints, caches, and actual out-of-core behavior. The architecture remains unfinished; this is duplicate tracking consolidation, not completed out-of-core execution.