Skip to content

Extract novel times explicitly - #830

Draft
frankmcsherry wants to merge 1 commit into
master-nextfrom
seed-list
Draft

Extract novel times explicitly#830
frankmcsherry wants to merge 1 commit into
master-nextfrom
seed-list

Conversation

@frankmcsherry

Copy link
Copy Markdown
Member

Each proxy key has a of times exogenously flagged as "of interest", and we directly add to that when loading novel inputs, rather than leaving them to be discovered in an independently accumulated collection of diffs. This is meant to separate concerns (explicit identification of novel times) and allow further consolidation of novel and prior input (which may cancel, but can be one list of updates rather than two).

The novel data's two roles part ways. Its time support — the thing that
seeds interesting times — rides the window as a compact
`seeds: Vec<(key_hash, T)>` channel, recorded raw from the novel batches
before anything else touches them. Its records, which were only ever
accumulants and join partners, merge into one input presentation with
the prior history, where they net against it and are advanced by the
meet like every other record.

The invariant that forced the runs apart (#824) was about seeding, not
presentation: consolidating novel against compacted history can cancel
a record and lose its interesting time. Consolidation only cancels
equal-((key, id), time) pairs, and such a time is by construction in
the seed channel. `reduce_seed_survives_cancellation` pins exactly
this: a novel retraction that exactly cancels the compaction-advanced
prior record presents an EMPTY merged input, and the seed alone
retracts the key's stale output. Coverage-wise, `round_coverage`'s
witness clause reads only times — the seed list carries the same
support the novel run did — and its closure's novel partners are the
seed-derived `reached` set, whose clause the deleted novel-buffer
clause merely duplicated.

The Sweep loses its novel ValueHistory: one fewer load+build+step per
key, `close` loses a clause, the frontier polls four sources, and the
warned (due) times merge with the novel support into one seed list —
they always played the same role. Novel records become meet-advanceable
(they could not while moonlighting as witnesses), so buffers compact
strictly better. Both backends present once per window: the vec backend
nets cancelling pairs inline at the bridge push (novel and prior share
the id space, so the pair meets adjacently), and corgi's single
consolidation now nets across the runs, which the split presentations
could not.

Interleaved runs (x3, medians), cursor mode flat within 1.5% as the
control: churn 19.7 -> 18.7ms/round (-5.1%, the netting — a round's
retraction cancels the prior round's insertion in the presentation
itself), wide -2.4%, multimoment -2.0%, propagate noise; ddir adt on
corgi -1.7%, scc flat.

Honest ledger: +31 code lines net. The invariant moves from structural
(two runs, raw one in hand) to contractual (the seeds obligation) plus
a regression test; in exchange the tactic's reasoning core shrinks and
the runtime shape improves.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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