Repository navigation
lab(drf-w4): hand flushed row images to the real CycleWriter (W4-W7) - #1767
Conversation
Feature handoff: RowImage::into_slot / into_slots turn flush output into owned SweepSlots (row bytes moved, one cast per distinct row, stream positions continued across cycles). RowImage::row is now Vec<u8> so the move into the payload is not a second copy. Tests drive lance-graph-supervisor's cycle_writer over a reconciliation- first fake WAL: W4 the source changes after flush and the landed image is the snapshot, durability waits for the WAL; W2 through the writer (raw per-patch casts lose a facet to the freeze's whole-payload last-wins); W6 lost ack -> ResubmitFrozen with the same casts -> Reconciled, while regenerating from the changed source -> HashConflict/Escalate; backpressure returns casts; W7 an empty cycle never calls the WAL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44794a4567
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
This connects the
drf-focus-probewriteback to the productionCycleWriterinlance-graph-supervisorand pins W4, W6 and W7 from.claude/plans/d-dr64-focus-cache-falsifiers-v1.md§4.Change
handoff, which addsRowImage::into_slotandinto_slots. They turnflushoutput into ownedSweepSlotcasts: one cast per distinct row, with the row bytes moved rather than copied. Stream positions continue across cycles, because the writer's recovery watermark depends on that.RowImage::rowis nowVec<u8>(it was[u8; 512]), so moving it into the cast's payload is not a second copy.lance-graph-supervisor(featurecycle-driver),lance-graph-planner,lance-graph-contractandtokio.Tests (
tests/integration/handoff.rs): the realcycle_writerruns over a fake WAL that reconciles before appending.flushwhile the WAL is still holding the commit. Nothing is durable until the WAL releases it, and what lands is the flushed snapshot.flushoutput and nothing else.ResubmitFrozen), and the casts it hands back are byte-identical to the frozen batch. Re-submitting them is reconciled with a single append. Regenerating the cycle from the changed source instead is refused (HashConflict, thenEscalate). A full queue hands the casts back unchanged.NoChangewithout calling the WAL. The next dirty cycle publishes exactly one version.Gates: 22 tests pass with
--features handoff, 17 without, and 22 onx86-64-v3; clippy-D warningsis clean with and without the feature. No CI job runs this lab crate, so these gates are local runs only.Disable runs (each turns tests red)
into_slotsnot advancing the stream position: W4 fails.Not covered
Board:
.claude/board/entries/2026-10-25-drf-w4-handoff.md.Generated by Claude Code