Each of these notes carried a PROPOSED vetting marker from the 2026-09-07/08
sweep. The owner accepted each proposal as stated; this applies them, and every
claim was re-checked against the tree at this HEAD before the edit, not against
the marker's own reading. Each surviving note's marker now records what was
applied and what was verified.
bug-shared-collections-across-the-poll-boundary.md - closed. Both named defects
are fixed on master: PCMetrics.registeredMeters is a final LinkedHashSet with
every add, walk and remove under @synchronized("metersLock") and close() walking
it through the never-throwing removeQuietly (758744b, #120 /
#57), and RemovedPartitionState.READ_ONLY_EMPTY_SET is
Collections.emptySortedSet() (6aae299, #267). The file is kept rather
than removed because static-infer-findings.md and
core-139-public-api-thread-safety-contract.md both cite it; its "Live on master"
headline is corrected and the branch section reduced to what is still true of
fix/concurrent-collection-sweep, which still exists on origin with no PR.
bug-torn-read-family.md - shrunk to the racing-double unification, the next hunt
iteration and the out-of-family pointers. All three candidates are fixed and
verified in the tree, so their dossiers were a FIXED narrative; they are
replaced by a summary plus a history pointer, with candidate 1's
bootstrapPhase-versus-dirty disjointness argument kept because it is the safety
argument for the encoder's single-sample read and is recorded nowhere else.
bug-177-commit-response-timeout-unreproduced.md and
bug-857-mirror-attributions-unconfirmed.md - each shrunk to its #175
half. #177 was closed as completed on 2026-09-01, one second after
#399 merged, with no comment naming either candidate mechanism - the
outcome both notes existed to prevent. That is recorded once, in the
attributions note, which owns the attribution question; the other
cross-references it. Candidate 3 is closed: #29 and #57 have
merged and PCMetrics.removeQuietly now swallows everything meterRegistry.remove
throws. The filename keeps #177 so citations of it survive.
bug-stale-sweep-iterator-evicts-fresh-replacement.md - shrunk to the
remove-by-key defect, which is live: removeStaleWorkContainersFromShard still
removes by key, so a fresh container the controller put at that offset is what
leaves. The mechanism sentence is re-anchored on removeWorkAtOffset, and the
#373 counter/stall block is removed - #336 (3e668a4) closed it
and the note's own last paragraph already contradicted its middle.
bug-857-transactional-revoke-wait.md - re-premised on #466. The unbounded
spin is gone: in transactional mode the revoke callback posts to the control
thread and waits bounded by commitLockAcquisitionTimeout
(commitOnRevokeViaTheControlThread). What survives is whether that bound is
right against confluentinc#803's complaint that it burns max.poll.interval.ms,
which #408 holds along with its RebalanceEoSDeadlockTest amendment. Four
stale citations repaired: the "no open PR addresses it" claim, the dead
fix/bound-revoke-transaction-wait branch, the renamed
core-recoverable-producer-fencing.md, and the two file:line citations, replaced
with greppable anchors.
bug-retry-queue-write-lock-on-the-rebalance-path.md - the defect is intact and
stays the subject; "not started, and no design agreed" is replaced with
#431, the open fix, which RetryQueue.remove's own javadoc already names
as the tryLock() path being added.
bug-wedged-after-poisoned-transaction.md - merged into
bug-poisoned-transaction-not-aborted-while-running.md, the survivor the owner
chose, and removed. Folded in: the answered recovery question and its answer
(isTransactionOpen() is producerState.equals(BEGIN), so lazyMaybeBeginTransaction
never opens a replacement and nothing in band aborts the poisoned one), the
observed wedge, the two mitigations, and the freeze-behaviour test suggestion.
Two citations repointed at the survivor; the third, in
process-candidate-ranking.md, names the merge itself and is correct as written.
bug-857-family.md - shrunk and retyped as a register, which is what its own
closing sections describe it as; the impact stays stall. The revoke-path
deadlock's mechanism section is retired per the file's own criterion now that
#29 has merged; the "reproducer cannot settle anything" section is
replaced with what the rewritten RebalanceEoSDeadlockTest and its purpose-built
sibling Rebalance857CommitSyncDeadlockProbeIT establish; and the fifth item's
claim that ProgressTracker.withDiagnostic has never been wired is corrected -
MultiInstanceRebalanceTest now supplies describeFleet.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W511R2TZFAqEiqgS5yogTv
Description
The 2026-08-20 mirror triage produced one note per issue, and most of them end in something only
the maintainer can answer.
process-candidate-ranking.mdlisted none of them, on the implicitreasoning that a decision is not a work item. That is backwards - a decision costs one reply and
unblocks a note whose engineering is already done or already unnecessary, so it outranks every
candidate that still needs building.
docs/inflight/process-candidate-ranking.mdgains a ranked Decisions waiting on the maintainersection above the ready picks, ordered by how little input each needs rather than by what it unblocks:
#161 (the reply is written - post it) through
#178 (argue a bound for how long an old-epoch delivery may run before it
counts as a key-ordering violation). Each line names the note that owns the verification and the
draft answer; none of it is re-derived. The section also says which of the thirteen triaged issues
are not decisions and why, so the next reader does not re-triage
#139, #175, or the three whose fixes are already
written.
One item in there carries a deadline the others do not: #163's note corrects
open question 6 of the DLQ prior-art report on #313, which assumes
deserialization failures can ride along with the DLQ work. On the mechanism they cannot - such a
record never becomes a
WorkContainer. Settling DLQ requirements before that is answered settles themon a false premise.
docs/inflight/pr-mirror-fixes-and-what-they-close.mdwas reporting finished work asoutstanding. It flagged two edits needed before merge - #201 carrying no
closing reference, and #203 carrying the bare
Closes #169form theconvention forbids. Both were fixed on the PRs after the note was written, and GitHub resolves the
links on all three issues. Shrunk to the one item still live: #204
deliberately does not close #177, which is right, and that issue still
carries no comment saying so.
docs/inflight/release-0.6.0.0.mdgets a pointer, not a copy. Six mirrors labelled0.6.0.0have no engineering left in them and they split three ways - merge, decide, comment. Naming the split
there and the ordering in the ranking register gives each one owner, which is what stops the two
drifting. The same split was added to #197's body.
Gates run locally, all green:
bin/check-inflight-tags.sh,bin/check-issue-refs.sh,bin/check-file-refs.sh,bin/check-copyright-headers.sh,bin/check-branch-self-reference.sh.Checklist
docs/features/- N/A - no user-facing feature; these are in-flight tracking notesce-simplifyandce-code-reviewlocally - N/A - docs only, soce-simplifyhas no code to work on