Skip to content

docs(ideation) astubbs#227: throttling and self-tuning ideation to plan, strategy bet, ledgers and learnings - #308

Merged
astubbs merged 17 commits into
masterfrom
feats/ideate-distributed-throttling
Aug 18, 2026
Merged

astubbs merged 17 commits into
masterfrom
feats/ideate-distributed-throttling

Conversation

@astubbs

@astubbs astubbs commented Aug 17, 2026 •

Copy link
Copy Markdown
Owner

Serves #228 and #227.

Description

Ideation, strategy, and ledger work for distributed throttling and its convergence with
self-tuning concurrency. Docs only - no product code changes.

Ideation doc (docs/ideation/2026-08-17-distributed-throttling-ideation.html): eight
ranked, code-verified directions for distributed rate limiting
(#228, mirror of confluentinc#24), grounded in the
production report confluentinc#766 and a fresh-context verification pass
(8/8 code spot-checks held). Includes the rejection table (what was cut and why), the
strategy-menu framing (curated limit-source strategies composing by min-of-ceilings), the 2020
library shortlist re-checked (bucket4j alive, ratelimitj dormant, resilience4j still punting),
and idea 8: one adaptive controller replacing both concurrency and rate configuration
(#227, mirror of confluentinc#21).

Strategy (STRATEGY.md): the self-tuning bet enters the doc - target problem gains the
static-configuration crux (deploy-time guesses for runtime-dependent quantities, wrong in both
directions), approach gains the ground-truth argument (the engine measures and decides what
configuration used to guess), a new Self-tuning track (priority raised 2026-08-18), and the
achieved-fan-out metric reworked to discovered-concurrency-vs-sustainable-ceiling.

Inflight ledger (docs/inflight/): notes -
next-distributed-throttling.md (gating decisions for any throttle build),
next-auto-scaling.md (the settled dimension-2 design: local +1/0/-1 delta votes, no global
number, dynamic variance-derived cooldowns, post-rebalance cooldown doubling as the
acknowledgement loop; positioning safekeeping; earmarks including the
#255 Kafka Streams pairing), and
the extraction-sweep handoff note this PR briefly carried - since executed and merged as
#312, so the note is retired again here as satisfied work.
next-candidates.md gains the priority-raised auto-scaling entry.

Idea-bank recovery (docs/refactoring.md): the three flow-control branches missing from
the abandoned-branch catalogue are now recorded - features/dynamic-concurrency-control
@6f85eac41 (Netflix concurrency-limits wired as the worker pool),
feature/auto-tuning-pressure @f4aa09788 (hand-rolled self-tuning; the DynamicLoadFactor
no-step-down gap is its fossil), and features/rate-limiting @e9f49d321 (bucket4j POC that
policed instead of deferring). Complements #305's manifest back-fill:
that PR owns the upstream-map layer, this one owns the editorial idea-bank layer; they touch
different sections of docs/refactoring.md.

Same-defect search (docs-shape: knowledge stranded off master): the flow-control branches
found here are now catalogued; the remaining class instances are inventoried, not fixed - the
extraction-sweep handoff note in this PR is the plan for them, starting from
#305's 196-branch audit. Verdict recording per branch is that sweep's
definition of done.

Requirements plan (docs/plans/2026-08-18-001-feat-self-scaling-concurrency-plan.md): the ce-brainstorm output for the self-scaling controller (dimension 1 of #227) - session-settled decisions with provenance, admission-target control model, rip-out criteria as testable guardrails, and the corrected #155 status (original stall already fixed; residual mis-firing warning remains). CONCEPTS.md gains the admission-target term.

Chaos-sighting ledger (docs/inflight/bug-857-family.md): the fifth and sixth
confluentinc#857-family sightings - two same-signature NO_PROGRESS fleet-stall
kills of ChaosChurnStormIT four hours apart (one of them this PR's own first-wave chaos failure),
replay seeds captured before log expiry, plus the truncated-console-log misattribution trap and its
recovery route. The untracked ReactorBatchTest awaitility flake seen on this PR's CI is logged in
docs/inflight/test-untracked-ci-flakes.md. (Fifth-sighting task executed here per handoff, folded
into this PR at the owner's direction.)

Compounded learnings (docs/solutions/workflow-issues/): two session learnings captured as durable docs - silent-cwd-reset-runs-git-in-the-wrong-checkout.md (third occurrence of the class; pin every history-changing git command with git -C) and gh-run-view-log-truncation.md (the console-log truncation trap behind the misattributed chaos handoff, with the three retrieval routes ranked by completeness).

Checklist

  • Docs updated
  • User-facing feature documentation data added under docs/features/ - N/A - ideation/strategy/ledger docs only, no product feature shipped
  • Tests added/updated - N/A - no code changed; bin/check-issue-refs.sh green on every commit
  • Title & body reflect the final content of this PR

🤖 Generated with Claude Code

https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx

astubbs and others added 10 commits August 17, 2026 23:23
Ideation document for the distributed rate limiting ask (#228,
mirror of confluentinc#24), grounded in the linked production report
confluentinc#766 (400K RPS in, 50K RPS downstream, 113 nodes on 100
partitions) and in a code-verified map of the dispatch seam, retry
deferral, backpressure, and packaging conventions.

46 raw ideas from five parallel framing passes were deduped, verified by
a fresh-context basis check (8/8 code spot-checks held), and cut to
seven survivors spanning five axes:

  1. Partition-share budget - distributed limiting with zero new
     dependencies (the consumer group itself as division substrate)
  2. Dispatch-seam throttle via availableAt deferral - shape, don't
     police; reuses the RetryQueue calendar for wakeups
  3. Little's Law controller - an RPS target becomes the in-flight
     target PC already enforces at dispatch AND poller
  4. The throttling constitution - liveness beats the limit; epoch
     fencing; two verified corrections to #228's own
     architecture argument (ShardKey reach, batch cost timing)
  5. Socket-and-plug packaging - SPI in core, bucket4j/Redis backends
     as opt-in artifacts per the -vertx/-reactor/-mutiny precedent
  6. Adaptive AIMD on rate - no configured number, no coordination
  7. Decorrelated jitter for the deterministic retry path -
     independently shippable

The rejection table records the roads not taken with reasons, notably:
assignor-userData lease allocation (feasible, deferred on adoption
friction), offset-metadata stigmergy (contends with a near-capacity
payload), and broker-side KIP-124 quotas (bytes-in is not requests-out).

Also re-checks the 2020 library shortlist from confluentinc#24:
bucket4j alive and grown (with a per-permit round-trip caveat),
ratelimitj dormant, resilience4j#350 still unresolved - evidence the
gap is real. Autopsy of the abandoned features/rate-limiting branch
(e9f49d3) included; it policed instead of deferring and never used
the distributed dependency it declared.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
The ideation doc names seven directions but no chosen one; this entry
records the two gating decisions (enforcement fork, who owns the number)
and the independently shippable jitter item, so a future session restarts
from the artifact instead of re-deriving it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
…nk branch recovery

Extends the throttling ideation with idea 8: one adaptive controller
(#227 / confluentinc#21, TCP-congestion-theory concurrency) fed by
latency gradient, failures, and a structured rate-limit exception the
user function throws to teach the engine per-service ceilings at runtime.
Capacity limits are discoverable; contractual quotas are not - explicit
ceilings and adaptive discovery compose by min(), not compete.

Also: idea 5 gains the curated strategy-menu framing (each strategy a
distinct situation, min-composition, enforcement not user-selectable);
docs/refactoring.md idea bank gains the three missing flow-control
branches (dynamic-concurrency-control @6f85eac41, auto-tuning-pressure
@f4aa09788, rate-limiting @e9f49d321) plus upstream draft PR
confluentinc#22; the inflight entry now records the standalone-vs-
self-scaling gating decision.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
Too low silently wastes headroom, too high floods the downstream
(confluentinc#766) - completes the case for adaptive control in idea 8.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
Split from next-distributed-throttling.md: the two efforts will reach
mergeable PRs at different times and carry distinct prototype trails.
Records the two staged dimensions - per-instance adaptive concurrency
first (no coordination substrate, design-to-optimal downstream feedback),
instance-count recommendation later (metric + PC-owned cool-down +
rebalance as acknowledgement, capped at partition count, HPA/KEDA as the
consumer). Ranked into next-candidates.md; idea 8 card cross-references.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
… scaling

Records the conflicting-recommendation problem (instances only see their
own performance) with candidate resolutions ranked simplest-first: local
delta-votes / headroom gauges that HPA aggregates natively, the assignor
userData leader channel if a single number is ever needed, median-never-
max if raw totals are aggregated anyway. Earmarks the partition-cap
interaction with per-topic functions (#254) and share groups
(KIP-932), and flags the STRATEGY.md positioning follow-up.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
…al number

Each instance votes +1/0/-1 from its own state; infrastructure sums (or
HPA averages a headroom gauge). Post-rebalance cooldown per instance
doubles as the acknowledgement loop: act -> rebalance -> cool down ->
fresh votes. Assignor-leader coordination demoted to likely-unnecessary.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
Records what had only lived in conversation: plateau-cause-agnostic
control (the reason runtime discovery beats configuration), the vote
clamp rationale (bounded steps converge AIMD-style), dynamic cooldowns
as the rule with fixed values only as fallback floor, the resolved
relationship to rate limiting (ceilings as inputs, no substrate; shared
SPI, independent shipping), the depersonalised engine-layer positioning
argument for the strategy run, and the branch plan.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
Target problem gains the static-configuration crux (deploy-time guesses
for runtime-dependent quantities, wrong in both directions). Approach
gains the second half of the bet: the client is where ground truth
lives, so the engine measures and decides what configuration used to
guess - vs black-box lag-based autoscalers. New Self-tuning track
(priority raised 2026-08-18) with the client-side-vantage moat argument.
The achieved-fan-out-vs-configured-max metric becomes discovered
concurrency vs sustainable ceiling, configured-max kept as interim
proxy. One-liner unchanged. Also earmarks the #255 pairing:
auto-scaling under a Kafka Streams topology.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
…ches

Self-contained brief for a future session: one PR extracting stranded
planning docs from unmerged branches onto master, sequenced on
#305's audit, with provenance headers, three-shape triage, and a
per-branch verdict as the definition of done.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions

Copy link
Copy Markdown

✅ Duplicate Code Report

Two engines run in parallel for cross-validation. Each has its own thresholds tuned to its baseline - the real safety net is the per-engine "max increase vs base" check.

✅ PMD CPD

PR Base Change
Clones 24 24 ➖ 0
Duplicated lines 721 721 ➖ 0
Duplication 1.94% 1.94% ➖ 0
Rule Limit Status
Max duplication 5% ✅ Pass (1.94%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

PR Base Change
Clones 66 66 ➖ 0
Duplicated lines 933 933 ➖ 0
Duplication 2.54% 2.54% ➖ 0
Rule Limit Status
Max duplication 5% ✅ Pass (2.54%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

📌 Duplicate code detection tool report

The tool analyzed your source code and found the following degree of similarity between the files:

✅ No new or increased file similarities introduced by this PR.

Full similarity report
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 53.51 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 38.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 35.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 35.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 33.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 33.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 33.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 32.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 61.97 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 55.67 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 40.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 38.25
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 33.44
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 31.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.42
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 61.97 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 51.77 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 37.84
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 33.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 32.46
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 30.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 35.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 32.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 53.51 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 51.67 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 42.94
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 33.24
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 31.95
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 30.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 32.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 55.67 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 51.77 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 46.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 34.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.11
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 31.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.13
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 30.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 46.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 38.25
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 37.84
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 39.94
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 31.07
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 34.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.44
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 32.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 32.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java 31.07
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java 39.94
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 32.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 33.11
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 32.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 39.51
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 59.33 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 51.67 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 50.43 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 48.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 39.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 38.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 32.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 32.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 39.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 31.25
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 30.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleTestEnv.java 32.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 30.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.42
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 30.13
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java 32.86
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.14
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java 34.67
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java 32.47
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java 38.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 34.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 50.35 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 36.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 35.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 35.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 33.24
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 31.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 59.33 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 50.35 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 47.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 46.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 45.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 45.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 42.94
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 35.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 31.25
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 48.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 45.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 36.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 35.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 50.43 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 47.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 45.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 32.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 31.95
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 31.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 30.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 63.08 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 46.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 36.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 36.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 32.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 30.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 63.08 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 35.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 31.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 32.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 38.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 32.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 35.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 35.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 38.53
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java 34.68
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 57.01 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 43.51
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 35.49
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 39.54
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 38.98
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 35.49
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceTest.java 36.17
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 36.17
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 53.93 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 43.51
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 38.98
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 31.36
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 31.05
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 57.01 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 53.93 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 39.54
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 35.26
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 49.09
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 35.14
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 49.09
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 37.92
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosConductorRestartRefusalIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosConductorRestartRefusalIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstanceLifecycleIT.java 30.4
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 47.74
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java 47.74
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 35.14
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 37.92
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstance.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstance.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstanceLifecycleIT.java 33.96
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstanceLifecycleIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstanceLifecycleIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstance.java 33.96
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosConductorRestartRefusalIT.java 30.4
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/KafkaTestUtils.java 32.95
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 30.28
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 49.61
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 47.62
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java 51.73 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 50.43 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 44.54
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java 30.28
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java 43.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java 43.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java 33.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java 33.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java 49.61
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 33.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java 47.62
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 33.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 90.0 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 89.32 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 89.32 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleTestEnv.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleTestEnv.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 32.08
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java 31.05
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 30.14
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 31.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserter.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserter.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserterTest.java 34.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserterTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserterTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserter.java 34.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java 38.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 32.47
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/KafkaTestUtils.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/KafkaTestUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 32.95
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java 34.68
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java 38.88
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java 38.88
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/CommitHistorySubject.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/CommitHistorySubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java 36.14
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/CommitHistorySubject.java 36.14
parallel-consumer-mutiny/src/main/java/bz/stub/parallelconsumer/mutiny/MutinyProcessor.java

📄 parallel-consumer-mutiny/src/main/java/bz/stub/parallelconsumer/mutiny/MutinyProcessor.java

File Similarity (%)
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java 51.65 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java 78.79 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.43 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 48.59
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyPCTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyPCTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorPCTest.java 71.0 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorTest.java 33.05
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyUnitTestBase.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyUnitTestBase.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorUnitTestBase.java 31.86
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 90.8 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 90.11 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 89.32 ⚠️
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java

📄 parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java

File Similarity (%)
parallel-consumer-mutiny/src/main/java/bz/stub/parallelconsumer/mutiny/MutinyProcessor.java 51.65 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 78.79 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 51.73 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 49.83
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorPCTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorPCTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyPCTest.java 71.0 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyTest.java 33.05
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorUnitTestBase.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorUnitTestBase.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyUnitTestBase.java 31.86
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 90.8 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 90.11 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 89.32 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 40.93
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 40.72
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 40.18
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 35.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 33.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 30.06
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 40.18
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 40.17
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 33.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 31.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 30.91
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 42.84
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 40.93
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 39.51
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 42.84
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 40.17
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 35.89
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

📄 parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 35.26
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 31.36
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java

📄 parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 90.8 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 90.8 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 90.0 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java

📄 parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java 49.83
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 48.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 44.54

@github-actions

Copy link
Copy Markdown

✅ SpotBugs Report

No bugs found (new bugs only — baseline from base branch excluded).

@github-actions

github-actions Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
ProducerManagerTest.producedRecordsCantBeInTransactionWithoutItsOffsetDirect 🟡🎲 passed (flapper) #262 proves nothing - passes most runs by nature
OffsetEncodingBackPressureTest.backPressureShouldPreventTooManyMessagesBeingQueuedForProcessing 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature

🔴 expected while the owner PR is open · 🟡🎲 flapper, pass proves nothing · 🚨 a deterministic quarantined test passing means its fix landed: delete its @Quarantined annotation + docs/quarantined-tests.md entry (a merge-blocking review thread has been opened). Lane: non-gating; rules: see the Quarantine Audit check.

astubbs and others added 3 commits August 18, 2026 11:46
…ension 1)

Requirements-only unified plan from the ce-brainstorm session: the
adaptive controller governs the admission target under min-composed
ceilings, core engine first, opt-in with an optional seed. Records the
seven session-settled decisions with provenance, the rip-out criteria as
testable guardrails, the DynamicLoadFactor coexistence requirement, and
the corrected #155 status (stall fixed upstream; residual
mis-firing warning). CONCEPTS.md gains the admission-target term.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
Merging master brought #312 (the idea-extraction sweep this
branch's handoff note commissioned - executed by another session) and
#305 (the branch audit). Reconciliations git cannot do: the
sweep handoff note retires as satisfied work; the orphans note's
observability guess for feature/auto-tuning-pressure is corrected to
the #227 flow-control family (settled by reading its commits);
the idea-bank group gains its manifest cross-ref (sweep-2023-long-tail)
per #305's convention.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
@astubbs

astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner Author

@claude review this

@claude

claude Bot commented Aug 18, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 4m 21s —— View job


Review

  • Gather context (PR body, diff vs merge-base dc2204c, changed files)
  • Read changed files in full (ideation HTML, both inflight notes, the requirements plan, STRATEGY/CONCEPTS/refactoring diffs)
  • Spot-check code claims in the ideation doc against the actual source
  • Check cross-references and issue-ref formatting
  • Post final review feedback

This is a docs-only PR (1050+/4-, 9 files, no product code) and the diff matches the PR header exactly against merge-base dc2204c — I confirmed via git diff dc2204c...HEAD --stat.

Verified findings — the "code-verified" claims hold up

I spot-checked the ideation doc's (docs/ideation/2026-08-17-distributed-throttling-ideation.html) verifier-confirmed claims directly against parallel-consumer-core/src/main/java, since a wrong technical claim baked into an ideation doc becomes load-bearing for whatever implementation follows it:

  • numberOfAssignedPartitions getter in AbstractParallelEoSStreamProcessor, maintained across onPartitionsAssigned/Revoked/Lost — matches.
  • isDelayPassed() / retryDueAt in WorkContainer — the deferral predicate is generic, only the setter (updateFailureHistory) is failure-coupled — matches.
  • DynamicLoadFactor genuinely has no step-down method (maybeStepUp/doStep/isNotCoolingDown/isWarmUpPeriodOver/isMaxReached only) — matches.
  • ProcessingShard.getWorkIfAvailable's two-gate chain (couldBeTakenAsWork + isAvailableToTakeAsWork) — matches.
  • The maxConcurrency javadoc quote in ParallelConsumerOptions, ShardKey.of overloads, isBlockingProgress in PartitionState, the RateLimiter name collision (internal/RateLimiter.java), retryDelayProvider as the only Function-typed option, DefaultMaxMetadataSize/partitionsAssignmentEpochs, and the core-dependency-footprint.yaml quote — all matched verbatim.

I couldn't verify the cited abandoned-branch SHAs (features/dynamic-concurrency-control @6f85eac41, feature/auto-tuning-pressure @f4aa09788, features/rate-limiting @e9f49d321) — this checkout is shallow and those branches aren't fetched, and I don't have network access in this review to fetch them. That's a limitation of this review, not a finding against the PR.

One real finding

CONCEPTS.md's new "Admission target" entry cites a config field name, against the doc's own governing rule. AGENTS.md's routing table states CONCEPTS.md entries "stand alone - no file paths, class names or current config values" — precisely so entries don't rot when the referenced surface changes. The new entry (CONCEPTS.md:35-39) writes: Today it is derived statically from `maxConcurrency` — a direct reference to the ParallelConsumerOptions.maxConcurrency field, in backticked code form, which is exactly the pattern the rule exists to keep out (verified maxConcurrency is a real field: parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java). No other entry in the file does this — the rest describe concepts in prose without naming the current option/class. Minor, easy to fix by rephrasing without the backticked field name (e.g. "derived statically from the user's configured concurrency limit").

Notes, not defects

  • docs/data/roadmap.yaml:100 paraphrases STRATEGY.md's key-metrics list as including "achieved fan-out" — STRATEGY.md renamed that metric to "Discovered concurrency vs sustainable ceiling" in this PR, but kept "achieved fan-out vs configured max" as the parenthetical interim reading, so the roadmap sentence is still technically accurate. Worth a glance next time that file is touched, not a blocker here.
  • Issue-reference formatting is clean throughout the diff — grepped every changed file for bare #NNN patterns and found none; all references are astubbs#NNN / confluentinc#NNN qualified. I could not run bin/check-issue-refs.sh myself (execution requires approval this review session doesn't have — this is a --allowedTools limitation of the review action, not a PR problem), but the manual grep is consistent with a green run.
  • Cross-references all resolve: next-auto-scaling.md ↔ next-distributed-throttling.md are consistently split and linked both ways; docs/refactoring.md's new "Flow control / self-tuning" entry correctly ties to manifest sweep-2023-long-tail in upstream-map.yaml, which already carries the same fork/upstream issue numbers; next-branch-audit-orphans.md's resolution of feature/auto-tuning-pressure is coherent with the new refactoring.md entry.
  • The docs/plans/2026-08-18-001-feat-self-scaling-concurrency-plan.md requirements plan reads as an unusually disciplined artifact — every key decision cites what it was chosen over and why, scope boundaries are explicit, and it correctly scopes out dimension 2 / async engines / the rate-limit exception API as separate deliverables rather than smuggling them in.
  • No stray scaffolding, no changelog entry added (correctly deferred to release time per this repo's rule), no copyright-header concerns (new .html/.md files, consistent with the other ideation docs already in docs/ideation/).

Summary

Substantively solid ideation/strategy work — the technical claims underpinning the eight ranked directions check out against the current source, and the docs are well cross-linked. One small CONCEPTS.md rule violation to fix (backticked config-field reference); everything else is clean.

@astubbs astubbs left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

…entry

Review finding on #308: CONCEPTS.md entries
stand alone - no file paths, class names or config values - so the
glossary does not rot when the surface changes. Rephrased in prose.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
@astubbs

astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner Author

Review response - all points addressed:

Thanks for the check on the code claims - that was the part worth the scrutiny.

…s - the NO_PROGRESS arm, twice in one night

Two ProgressProbe fleet-stall kills of ChaosChurnStormIT four hours
apart on unrelated docs-only branches (#310 and #308),
seeds 3086917415748208232 and 8603691233664838594 captured before log
expiry, each with its passing revoke-under-work control arm. Records
the truncated-console-log trap that misattributed the first of them to
the passing cooperative test (the circulated seed 4087023100803854645
is the control arm - do not replay it expecting a failure) and the
run-logs-archive retrieval route that recovers what --job log cuts off.
Also logs the untracked ReactorBatchTest.simpleBatchTest awaitility
flake seen on #308's CI at d930ca9.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
@astubbs

astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner Author

Added in 54fad3e: fifth and sixth confluentinc#857-family sightings in the bug-857 ledger (the NO_PROGRESS fleet-stall arm, ChaosChurnStormIT, seeds 3086917415748208232 and 8603691233664838594 - the second was this PR's own first-wave chaos failure, since green on re-run), plus the ReactorBatchTest flake row. Note for anyone holding the earlier handoff: its cited seed 4087023100803854645 was the PASSING cooperative control arm - the truncated job log misattributed the failure; the ledger entry records the trap and the archive retrieval route.

@astubbs

astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner Author

@claude review this - focus on commit 54fad3e, the bug-857 ledger addition (fifth/sixth sightings + flake row); the rest of the PR was reviewed earlier.

@claude

claude Bot commented Aug 18, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 3m 9s —— View job


Review — commit 54fad3ec8 only (bug-857 ledger additions), per @astubbs's scoped request

  • Read the commit diff (docs/inflight/bug-857-family.md, docs/inflight/test-untracked-ci-flakes.md)
  • Verify the cited CI runs/jobs against the actual logs (seeds, NO_PROGRESS signature, control-arm results)
  • Check internal consistency (seed cross-references, the "fourth sighting" report-artifact pointer, the truncated-log correction)
  • Check issue-reference formatting and docs/inflight/AGENTS.md shape rules
  • Post final review

Verified against the actual CI logs

I downloaded both chaos-suite job logs and grepped them directly rather than trusting the ledger's transcription:

  • Fifth sighting (job 95579861648, run 32093367999): NO_PROGRESS: fleet consumed count stuck at 98150/100000 for 30s (bound 30s) — matches verbatim. Seed 3086917415748208232 on ChaosChurnStormIT — matches. Control-arm seeds 4087023100803854645 (cooperative) and 334227014609238766 (eager) both show probe violations=[] in the log — confirmed passing, confirming the entry's claim that the circulated seed 4087023100803854645 is the passing control arm, not a failure.
  • Sixth sighting (run 32078875110, actual job 95537689689): NO_PROGRESS: fleet consumed count stuck at 95382/100000 for 30s (bound 30s), settled consumed=95667 — matches verbatim. Seed 8603691233664838594 — matches. Control-arm seeds 6926127865194591503 / 5980280513720170608 both probe violations=[] — confirmed.
  • astubbs#119 as the mirror of confluentinc#857 is correct per docs/issue-references.md:88, and every reference in the diff is repo-qualified.

One real finding — a wrong job ID in the sixth-sighting citation

docs/inflight/bug-857-family.md:171 links "job 95584026682's run" to https://github.com/.../runs/32078875110, but job 95584026682 is not part of that run and is not the failing job. I fetched it directly: it's a different, fully green job (BUILD SUCCESS, all three chaos tests probe violations=[]) that started 2026-08-18T03:15:48Z — checkout timing lines up exactly with commit bb5799d (pushed 03:15:17Z), not d963750 (pushed 23:03:25Z, the actual sixth-sighting head). In other words, 95584026682 is the ID of the green re-run mentioned two sentences later in the same paragraph ("re-ran green on the same branch at head bb5799df0 five hours later"), not the failing run being cited. The real failing job is 95537689689 — the one actually served by the hyperlink's target URL.

Net effect: the prose job number is wrong, but the link itself still resolves to the correct run, and every other fact in that paragraph (seed, signature, control arms, "re-ran green... five hours later") is independently verified correct — this reads as a copy/paste slip between two job IDs gathered in the same investigation, not a fabricated or misattributed failure. Given AGENTS.md's "cite by anchor, never by line number" discipline exists precisely so citations stay checkable, worth a one-line fix: swap 95584026682 → 95537689689 in the link text.

Fix this →

Not independently verified

  • The ReactorBatchTest.simpleBatchTest(ProcessingOrder)[3] flake row (test-untracked-ci-flakes.md) references a Reactor-module CI job at head d930ca98d that I did not fetch (out of scope for the chaos-suite logs I pulled, and not central to the ledger claim) — no reason to doubt it, just unverified.
  • The "attempt at head d96375053" phrasing checks out: that commit exists (docs(inflight): handoff for the idea-extraction sweep across all branches) and its push timestamp (23:03:25Z) matches the sixth sighting's stated failure time (23:04Z) to the minute.

Summary

The scientific content of this addition is solid — every seed, control arm, and violation message I could check against the raw CI logs matches exactly, including the correction of the earlier truncated-log misattribution. One citation slip: the sixth sighting's job number in the link text (95584026682) is actually the ID of the passing re-run job discussed later in the same paragraph, not the failing job the link is about — a one-line fix, not a factual problem with the sighting itself.

…n with git -C

Third recorded occurrence of the class (2026-08-06 checkout/rebase,
2026-08-10 merges on local master, 2026-08-18 merge on the rename
branch); the middle one lived only in session memory, which is likely
why it recurred. Records the merge-shaped tell (conflicts in files your
branch never touched) alongside AGENTS.md's checkout-shaped one, and the
discipline that held: git -C on every history-changing command.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
… endpoints for diagnosis

Promotes the general retrieval mechanism out of the bug-857 ledger's
bug-scoped notes: three routes ranked by completeness (report artifact,
run-logs archive zip + attempts endpoint, console log as convenience
only), the completeness check before any diagnosis, and the incident
where 1654 of 5948 lines misattributed a chaos failure to a passing
test in a circulated handoff.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
@astubbs astubbs changed the title docs(ideation) astubbs#227: throttling and self-tuning ideation, strategy bet, idea-bank recovery docs(ideation) astubbs#227: throttling and self-tuning ideation to plan, strategy bet, ledgers and learnings Aug 18, 2026
@astubbs
astubbs merged commit 438b09d into master Aug 18, 2026
36 of 37 checks passed
@astubbs
astubbs deleted the feats/ideate-distributed-throttling branch August 18, 2026 04:02
astubbs added a commit that referenced this pull request Aug 19, 2026
…ttering drafts

The first cut of the ladder let three kinds of overstatement through, all named in review:

- 'implemented' now means the implementation intended to ship. A draft that will be replaced is at
  most a poc, and a draft that is not even the surviving direction does not advance the stage at
  all - so virtual-threads (#51 carries the upstream draft, not the fork's) drops to idea,
  and the health-check surface (#226, a working draft not yet accepted as the shipping
  surface) is a poc.
- 'limited-poc' joins the ladder below poc: a slice runs but the central claim is not proven
  end-to-end. The Streams and Connect previews move there - 'poc' alone read as 'we proved we can
  do it', which neither spike claims. Java-and-Kafka drops to idea: compiling at 17 is
  exploration; the Java 11 + Kafka 4 work has not started.
- 'planned' now means an implementation plan - the how. The self-tuning plan from #308
  decides the what, so it is requirements-drafted.

One promotion the review surfaced: the docs site has a drafted design on #316 (explicitly
design only - no site is built there), so it moves from idea to planned.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 19, 2026
…t just the file

Review findings (#314, automated review round 2), both accepted:

- The 'touches the roadmap' check was weaker than the gate's own promise: a carrier PR editing
  only some OTHER entry passed, so the claiming entry's stage could stay stale while the title
  said 'a carrying PR must move its entry'. The gate now snapshots the claiming entry's stage
  block (stage / stage_delivery / stage_detail, with folded continuations) at base and head and
  requires them to differ; touching the file elsewhere no longer counts. An entry removed or
  renamed at head counts as moved - the PR answers for it either way.
- The carrier match accepted any '#N' suffix, so a copy-pasted confluentinc#N with a coinciding
  number would have claimed this fork's PR. Only the fork's own qualified form, astubbs#N, now
  claims.

The merge of master directly before this commit resolves the review's round-1 finding: the branch
asserted STRATEGY.md carries the self-tuning bet while its own tree predated #308's merge
by six minutes; the merge brings the Self-tuning section in, making the roadmap's claim true in
this tree.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 19, 2026
… gate, and the self-tuning promotion (#314)

The roadmap now carries the 2026-08-14..17 ideation wave, says how real every entry is, and
enforces that it stays true.

Six new entries at next-0x - the horizon the 1.0 exit criterion inspects: the language-proxy
sidecar (#242), the polyglot proof demo, the performance comparison matrix, distributed
throttling (#228), self-tuning concurrency (#227, promoted from the backlog to
follow STRATEGY.md's self-tuning bet), and the batch-composition settlement (#145,
confluentinc#266) that must precede confluentinc#915. Three backlog entries record what was
considered and deliberately not scheduled: the proxy HTTP/REST-compat gateway, the Dapr component,
and the actor/IPC revival. The running-instance-visibility entry is renamed web-gui - the name
everything else uses.

Every entry now carries stage and stage_detail - an eight-value ladder (idea, ideated,
requirements-drafted, planned, limited-poc, poc, in-progress, implemented) ordered by the most
advanced artifact that exists, with definitions deliberately hard to flatter: implemented requires
proven use, and a brand-new system nobody has run in anger is a poc however large. An optional
stage_delivery records the readiness judgment (draft vs pending-merge) for entries carried by an
open PR. The schema makes stage/stage_detail entry_required, so no entry can claim a horizon
without saying how real the work behind it is - built for the v6 release announcement to draw
from directly.

The ladder's ownership rule - the PR advancing a track moves its entry's stage in the same change
- gets its own gate: roadmap-stage-gate.js compares the claiming entry's stage block between base
and head (editing another entry does not count), accepts only the fork's qualified astubbs#N
carrier form, and offers a reasoned roadmap-stage: N/A opt-out. Seventeen unit tests run before
the gate in CI, one pinned against the real roadmap file. A merge-checklist line covers entries
the gate cannot reach.

Also corrects the module-records note that pointed at git history the #273 squash made
unreachable - the drafted Connect feature record now rides its module-landing PR (#269) -
and merges master so the tree actually contains the STRATEGY.md self-tuning section the roadmap
cites (a review catch: the branch was cut six minutes before #308 merged).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 19, 2026
…ectory a way to say so

The ledger of live flakes is the note agents collide with, not the one they look
up - and it has now been proved twice. A red test on a branch containing no Java
at all was diagnosed from scratch on #308 and again on
#320, both times while the ledger already held the
sighting. The second time it was the same assertion in a different module, which
is information the ledger would have handed over for free.

So a note may now carry, on the line after its heading:

    <!-- inflight-priority: high - one line saying why, in the imperative -->

and .claude/hooks/inject-recorded-knowledge.sh lifts it into a "Read these
first" block at session start, above the flat list of everything else. THE
REASON IS THE PAYLOAD: "live flakes; read this before diagnosing any red test"
tells an agent WHEN the note applies, which a filename cannot. A path in a
comma-separated list of forty is discoverable; it is not noticeable.

Two rules in docs/inflight/AGENTS.md, which owns this:

  * THE TEST IS COLLISION, NOT IMPORTANCE. Every note here matters or it would
    be deleted. What earns the marker is that an agent working on something
    unrelated will otherwise waste the work, repeat it, or draw a wrong
    conclusion.
  * IF EVERYTHING IS HIGH, NOTHING IS. The block has to stay short enough to be
    read rather than skimmed, so a handful of notes and not a category - and
    adding one is the moment to ask whether another has stopped earning it.

Two self-test cases, and the second is the one that matters: that a marked
note's REASON is shown, not just its path. Both assert against the real corpus
rather than this file's wording, so they track the convention rather than
today's text.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 19, 2026
…te-ups they earned

Records only - no mechanism here. Each of these was met while doing the work in
the preceding commits, and each is something the next person would otherwise
rediscover.

SIGHTINGS

  * simpleBatchTest failed in Mutiny after failing in Reactor on
    #308 - same alias, same 30-second timeout, same
    shared BatchTestMethods lambda in core, BOTH on branches whose diffs contain
    no Java at all. Two sightings in different modules say the wrapper is not
    the variable. The assertion is off by one in the informative direction,
    `Expected size: 3 but was: 4`: the records arrived, in one batch too many,
    so it is a batch-BOUNDARY question rather than a lost-work one. Recorded
    with the two readings that need separating - a loaded runner spreading work
    out so the batcher closes early, or the batcher splitting under a timing the
    library should tolerate - because assuming either is how a real defect gets
    written off as a flake. Not quarantined: quarantine is master-state and
    needs a diagnosis, and there is not one yet.
  * The clones the widened scan exposed. Pre-existing - base and head both
    report 27 CPD / 70 jscpd - and never triaged, because nothing outside four
    directories was ever scanned. Deliberately not listed here: that is a
    command's answer. What is recorded is that nobody has read them, and the
    trap that the example modules are near-copies ON PURPOSE, so triage means
    deciding per clone and saying which.
  * A dispatched review ran 5m47s, concluded SUCCESS and posted nothing, while
    claude-review stayed green on an older comment. Already-known, but this
    sighting narrows it: two comment-route reviews on the SAME PR that morning
    posted normally, so it is the route, not the diff or the reviewer.
  * The scanner follow-up marked landed, with the warning that it is not the one
    that mattered. Widening fixes SCOPE; the failure the write-up describes is
    CAPABILITY, and follow-up (b) - assert a contract's canonical phrasing
    appears in one file and nowhere else - is still open and is what would have
    caught #287.

WRITE-UPS

  * What a clone detector cannot see once scope is fixed: code embedded in
    another language's file. CPD parses per language, jscpd keys format off the
    extension, so JavaScript in a YAML string is never compared with JavaScript
    in a shell heredoc - and no directory list changes that. It also records the
    ratio trap: widening found MORE clones at a LOWER percentage, which killed
    an absolute threshold silently.
  * A forward-pointer on the 2026-08-12 write-up, whose findings are
    deliberately NOT rewritten - a dated record says what was known that day, and
    a "See also" is a cross-reference rather than a changed claim.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 19, 2026
…te-ups they earned

Records only - no mechanism here. Each of these was met while doing the work in
the preceding commits, and each is something the next person would otherwise
rediscover.

SIGHTINGS

  * simpleBatchTest failed in Mutiny after failing in Reactor on
    #308 - same alias, same 30-second timeout, same
    shared BatchTestMethods lambda in core, BOTH on branches whose diffs contain
    no Java at all. Two sightings in different modules say the wrapper is not
    the variable. The assertion is off by one in the informative direction,
    `Expected size: 3 but was: 4`: the records arrived, in one batch too many,
    so it is a batch-BOUNDARY question rather than a lost-work one. Recorded
    with the two readings that need separating - a loaded runner spreading work
    out so the batcher closes early, or the batcher splitting under a timing the
    library should tolerate - because assuming either is how a real defect gets
    written off as a flake. Not quarantined: quarantine is master-state and
    needs a diagnosis, and there is not one yet.
  * The clones the widened scan exposed. Pre-existing - base and head both
    report 27 CPD / 70 jscpd - and never triaged, because nothing outside four
    directories was ever scanned. Deliberately not listed here: that is a
    command's answer. What is recorded is that nobody has read them, and the
    trap that the example modules are near-copies ON PURPOSE, so triage means
    deciding per clone and saying which.
  * A dispatched review ran 5m47s, concluded SUCCESS and posted nothing, while
    claude-review stayed green on an older comment. Already-known, but this
    sighting narrows it: two comment-route reviews on the SAME PR that morning
    posted normally, so it is the route, not the diff or the reviewer.
  * The scanner follow-up marked landed, with the warning that it is not the one
    that mattered. Widening fixes SCOPE; the failure the write-up describes is
    CAPABILITY, and follow-up (b) - assert a contract's canonical phrasing
    appears in one file and nowhere else - is still open and is what would have
    caught #287.

WRITE-UPS

  * What a clone detector cannot see once scope is fixed: code embedded in
    another language's file. CPD parses per language, jscpd keys format off the
    extension, so JavaScript in a YAML string is never compared with JavaScript
    in a shell heredoc - and no directory list changes that. It also records the
    ratio trap: widening found MORE clones at a LOWER percentage, which killed
    an absolute threshold silently.
  * A forward-pointer on the 2026-08-12 write-up, whose findings are
    deliberately NOT rewritten - a dated record says what was known that day, and
    a "See also" is a cross-reference rather than a changed claim.

Co-Authored-By: Claude Opus 5 (1M context) <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