Repository navigation
emrg: the abstain window's lower bound is this cycle's own run, not the previous cycle's #2338
Description
Origin: rant 2026-10-16T22:24:41.422997+08:00
Part: 2/2
The abstain window's lower bound is the previous cycle's start, so a cycle abstains on any head pushed from the previous cycle's start onward — that is, "any head pushed while this cycle runs", not "the head this cycle pushed". The host ruled the widening away (2026-10-16T22:18:15, this host's session):
You have not made this clear and I have not understood it. I think the requirement "nor one pushed by the cycle immediately before it" should not exist. That the cycle that pushed it cannot vote is already enough.
(translated from the Chinese original)
Part 1/2 (#2334 → PR #2335, merged as 32fa3eef) gave the window its far bound. This part narrows the near bound to this cycle's own start and deletes the machinery that existed only to widen it and to disclose the widening.
What changes
Window.startbecomescycle_start(cycle)— this cycle's own run start. The span is[own_start, following_start), andWindow.covers(the one predicate the three carriers share) is unchanged.- Deleted from
scripts/review-queue.py:previous_cycle,with_dispatches,Window.previous,Window.inferred,Window.inferred_clause,Window.dispatch_unread,Window.boundary_unmeasured,Window.corpus_shortfall, and the dispatch/session corpus that fed them (sessions_root,resolve_session_dirs,dispatch_ids,dispatched_ids,corpus_read_failure,_dispatch_lines). Their whole purpose was to find the previous cycle or to correct a boundary the records could not supply; a boundary that is this cycle's own id needs no corpus. - Deleted from
scripts/check-vote-count.pyandscripts/cast-vote.py: thepushed < window.startrefusal and itsboundary_unmeasuredguard. A push before this cycle's start is simply not this cycle's work, so the vote counts; there is no longer an unmeasured boundary below the start. - Deleted from
scripts/review-queue.py::next_action: the secondabstainbranch, the row for a push below a window whose far end was never measured. --prev-cycleand--sessions-dir(and$EMRG_SESSIONS_DIR) lose their meaning and are removed;--cycles-logstays, because the far bound still reads the record corpus.emrg/server/evolution_prompt.mdR3 loses the clause "nor one pushed by the cycle immediately before it".
Effect
A head pushed by the immediately-previous cycle becomes votable, which is what the host asked for: the vote is no longer blocked by "you were running when it was pushed", only by "you pushed it". Measured on this host, the case that motivated the ruling: cyc20261016-181619's span narrows from [2026-10-16 17:23:22, ...) to its own run, so PR #2326's head — pushed by cyc20261016-183420 — is no longer the earlier cycle's own work.
Not in this issue
The far bound's own disclosure gap (an unreadable record corpus leaves end=None silently, indistinguishable from "nothing followed this cycle") is left as it is: that reading is the safe direction (an open far bound delays a vote, never credits one), and closing it is a separate change.
Activity
argszero commentedon Oct 16, 2026
Handled by #2339
pm25coder commentedon Oct 17, 2026
Reading this row's
ORIGIN-UNRESOLVEDfrom the machine that wrote it: the handle2026-10-16T22:24:41.422997+08:00is not in this host's ledger (~/.emrg/rants.jsonl), and retention cannot explain that —submit_rant cleanupdrops the oldest rows, while this ledger's newest record is2026-09-30T14:26:19.933784+08:00, already older than the handle before the instant it names. Nothing here ranked above it and was pruned, and nothing here had received it by the ledger's last write.So the rant was submitted on another machine, where the timestamp resolves against that machine's own ledger. An
Origin:line is host-local by construction — the ledger is private to a host while the issue tracker is shared — so this row is neither a defect in #2339 nor evidence that a rant is missing: it is a chain only the submitting machine can walk. Recorded so a later cycle does not re-open the question.emrg: the deleted half of the abstain clause stops being stated as th…
emrg: only a head the voting cycle itself pushed is abstained on (#2339)