ConvergenceReport.slices_skipped (src/convergence.rs:41) is public API, hardcoded to 0 at both construction sites (src/history.rs:606, :645), and there is now nothing left in the roadmap that would ever set it.
It was added in T3 as the reporting surface for dirty-bit slice skipping. That feature was #4, which is closed as unworkable — measurement put the ceiling at ~6% against a projected 5-50×, and the design had three independent soundness blockers. #32, the follow-up that reattributed the cost to ingestion, is also closed: the re-convergence turns out to be necessary work rather than waste, because appending one event genuinely moves the involved competitors ~1.2σ across their whole history. That is what Through Time means.
So the field now has no route to ever being non-zero.
This is the same defect class as #19, which is where this crate's current arc started: a public surface that looks implemented, reports a plausible value, and is inert. A caller reading slices_skipped: 0 reasonably concludes "no slices were skipped this run" rather than "this feature does not exist".
Options
Remove it. A breaking change, but ConvergenceReport is a returned struct rather than one callers construct, so the only breakage is code that reads the field — which can only be reading a constant zero. There are already two breaking changes queued for the next minor, so it would ride along at no extra cost.
Document it as reserved. Keep the field, say plainly that it is always zero and why, so nobody trusts it. Costs nothing and breaks nothing, but leaves a lie-shaped hole in the API for someone to find.
I lean to (1). The field's only value was as a hook for a feature that has now been measured twice and abandoned twice; keeping it preserves the shape of a plan that no longer exists.
Acceptance
Either the field is gone and ConvergenceReport has no always-constant members, or its doc comment states that it is always zero and points at #4 and #32 for why.
If removed, CHANGELOG.md records the break — via the commit subject, since the changelog is generated by git-cliff.
`ConvergenceReport.slices_skipped` (`src/convergence.rs:41`) is public API, hardcoded to `0` at both construction sites (`src/history.rs:606`, `:645`), and there is now nothing left in the roadmap that would ever set it.
It was added in T3 as the reporting surface for dirty-bit slice skipping. That feature was #4, which is **closed as unworkable** — measurement put the ceiling at ~6% against a projected 5-50×, and the design had three independent soundness blockers. #32, the follow-up that reattributed the cost to ingestion, is **also closed**: the re-convergence turns out to be necessary work rather than waste, because appending one event genuinely moves the involved competitors ~1.2σ across their whole history. That is what Through Time means.
So the field now has no route to ever being non-zero.
This is the same defect class as #19, which is where this crate's current arc started: a public surface that looks implemented, reports a plausible value, and is inert. A caller reading `slices_skipped: 0` reasonably concludes "no slices were skipped this run" rather than "this feature does not exist".
## Options
1. **Remove it.** A breaking change, but `ConvergenceReport` is a returned struct rather than one callers construct, so the only breakage is code that reads the field — which can only be reading a constant zero. There are already two breaking changes queued for the next minor, so it would ride along at no extra cost.
2. **Document it as reserved.** Keep the field, say plainly that it is always zero and why, so nobody trusts it. Costs nothing and breaks nothing, but leaves a lie-shaped hole in the API for someone to find.
I lean to (1). The field's only value was as a hook for a feature that has now been measured twice and abandoned twice; keeping it preserves the shape of a plan that no longer exists.
## Acceptance
- Either the field is gone and `ConvergenceReport` has no always-constant members, or its doc comment states that it is always zero and points at #4 and #32 for why.
- If removed, `CHANGELOG.md` records the break — via the commit subject, since the changelog is generated by git-cliff.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
ConvergenceReport.slices_skipped(src/convergence.rs:41) is public API, hardcoded to0at both construction sites (src/history.rs:606,:645), and there is now nothing left in the roadmap that would ever set it.It was added in T3 as the reporting surface for dirty-bit slice skipping. That feature was #4, which is closed as unworkable — measurement put the ceiling at ~6% against a projected 5-50×, and the design had three independent soundness blockers. #32, the follow-up that reattributed the cost to ingestion, is also closed: the re-convergence turns out to be necessary work rather than waste, because appending one event genuinely moves the involved competitors ~1.2σ across their whole history. That is what Through Time means.
So the field now has no route to ever being non-zero.
This is the same defect class as #19, which is where this crate's current arc started: a public surface that looks implemented, reports a plausible value, and is inert. A caller reading
slices_skipped: 0reasonably concludes "no slices were skipped this run" rather than "this feature does not exist".Options
ConvergenceReportis a returned struct rather than one callers construct, so the only breakage is code that reads the field — which can only be reading a constant zero. There are already two breaking changes queued for the next minor, so it would ride along at no extra cost.I lean to (1). The field's only value was as a hook for a feature that has now been measured twice and abandoned twice; keeping it preserves the shape of a plan that no longer exists.
Acceptance
ConvergenceReporthas no always-constant members, or its doc comment states that it is always zero and points at #4 and #32 for why.CHANGELOG.mdrecords the break — via the commit subject, since the changelog is generated by git-cliff.