Skip to content

docs(plan): record the package-rename decision, its evidence and the user-facing docs - #277

Merged
astubbs merged 9 commits into
masterfrom
refactor/package-rename
Aug 12, 2026
Merged

astubbs merged 9 commits into
masterfrom
refactor/package-rename

Conversation

@astubbs

@astubbs astubbs commented Aug 10, 2026 •

Copy link
Copy Markdown
Owner

Description

depends on #280

The merge-order condition this PR carried has since been met. Its README documents the new
namespace, so it could not reach master until the packages had actually moved. That needed
#280 (the tooling) and then the rename executed with it — both have
landed
: the tooling merged, and the rename went in on master as #294. Master
now ships bz.stub.parallelconsumer.*, this branch has been merged with it, and the ordering
warning that used to sit here no longer applies.

Records the decision to rename the Java packages in 0.6.0.0, and writes the user-facing docs for
it. Performs no rename itself
— the code change landed separately, driven by the script.

Java packages were io.confluent.parallelconsumer.* while the Maven coordinates had already moved
to bz.stub.parallelconsumer, so the published artifact and every import disagreed. Decided: they
get aligned in 0.6.0.0
— and they now are.

It has to happen before v6 ships. Nothing has ever been published under the fork's
bz.stub.parallelconsumer groupId — no tags, nothing on Central — so no downstream code imports our
packages yet and the change costs users nothing today. After v6 it asks everyone who adopted the
fork to migrate a second time. There is no third moment.

What's here

  • docs/plans/2026-08-11-001-refactor-package-rename-plan.md — the full task inventory,
    risk-ordered by how quietly each item fails rather than by effort, with file:line references
    and re-measurement commands rather than bare counts. It now carries dated corrections where
    execution falsified it: §8's pre-drafted sed one-liner was BSD/macOS-only and was superseded
    rather than pasted (the shipped README uses the GNU form), §9's pre-decision constraint has
    expired, and R5's IntelliJ bullet was resolved by deleting the files rather than editing them.
    The corrections are additive and dated rather than rewrites, because a dated plan document is a
    record — the rule the plan states for itself in R5.
  • docs/inflight/branch-package-rename.md — the decision, the traps, and the settled facts, for
    any branch or session that needs to inherit them.
  • The v6 entry in docs/inflight/release-0600-blockers.md, recording that this must land before
    the release.
  • README, rewritten for the new namespace. A new === From 0.5 to 0.6 upgrading section giving
    both steps — the groupId, then a find-and-replace across imports with a worked example — and an
    intro that separates what genuinely is drop-in from what changes.
  • Deletes two rotted IDE run configurations (below).

The docs were written ahead of the code, and the code has since caught up

These README changes were written while the source still said io.confluent.parallelconsumer.*,
deliberately, because 0.6.0.0 is unreleased and this is what it would ship. The coupling was
recorded in both the inflight note and the release blocker, so that a rename slipping out of v6
would have taken this README with it. That risk is now discharged: the rename landed on master in
#294, and the README describes what the code actually does.

Two claims the previous state got wrong and this corrects: the intro said "your imports and your
code are unaffected"
, and the upgrade steps said "no import or source edit is needed". Both were
written while the rename was still an open question, and both would have shipped as false.

The three findings that matter

No wire-format exposure. Offset metadata is magic-byte plus bitset/run-length plus base64; no
class name reaches the wire. A rename cannot break offset compatibility, and a consumer group still
upgrades in place. This was the main risk and it is closed.

A clean grep -rn "io\.confluent" is not evidence of completeness. Three files encode the
package as an escaped regex (io\.confluent\.parallelconsumer\.), invisible both to a
find-and-replace and to that verification sweep. Worst case is bin/ci-mutation-test.sh: stale, it
matches nothing, prints PIT: no core main-source classes changed - nothing to mutate, skipping
and exits 0 — the mutation gate reports green forever while scoring zero mutants. An ArchUnit
rule that pins a fully-qualified class name as a string goes vacuous the same way, without
failing.

The real work is not the sed. bin/check-copyright-headers.sh decides provenance by exact
path match against the fork-point listing, so moving the package directories makes every
upstream-derived file look fork-original and its retained Confluent header an error — 197
violations, measured by performing the rename in a throwaway clone rather than predicting it.
Redesigning that provenance model is the engineering; 121 files then needing a
Modifications Copyright line is bookkeeping on top.

Also here: two deleted IDE run configurations

All_examples.xml pointed at io.confluent.parall**a**lconsumer — misspelled, two lines above a
correctly spelled reference in the same file, broken for as long as it existed.
_Tag__transactions__.xml pinned a test class by fully-qualified name in an XML attribute. Both are
rename traps: the compiler cannot check either, and a find-and-replace on the correct spelling skips
the misspelled one silently while reporting itself complete.

Checklist

  • Docs updated - this PR is the documentation
  • Tests added/updated - N/A: documentation plus two deleted IDE configs; no product behaviour
    changes. The measurements it records were obtained by performing the rename in a throwaway
    clone and running the real gates against the result.
  • Title & body reflect the final content of this PR
  • Self-hosted runner / security implications considered - N/A: no workflow, runner or CI logic
    is changed here. The plan documents CI scripts a future rename must update, and changes none
    of them.

astubbs and others added 2 commits August 11, 2026 09:32
Whether to rename io.confluent.parallelconsumer.* to bz.stub.parallelconsumer.*
is an open decision that expires when 0.6.0.0 ships: nothing is published under
the fork's groupId yet, so today the rename costs downstream users nothing, and
the moment v6 is on Central it costs every adopter a second migration. There is
no third moment, so the decision is gated on the release rather than parked in
the backlog.

This commit records the decision and the evidence behind it. It does not perform
the rename, and nothing in the tree is renamed by it.

What the investigation established, so nobody redoes it:

- No wire-format exposure. Offset metadata is a magic byte plus a bitset or
  run-length payload plus base64, and OffsetEncoding dispatches on the byte, so
  no class name reaches the wire. There is no Serializable, no serialVersionUID
  and no reflective class lookup in main source. Metric names, MDC keys and
  thread names are hand-written literals, not package-derived. This was the main
  risk and it is closed.

- The work is the copyright-provenance model, not the sed.
  bin/check-copyright-headers.sh resolves provenance by exact path match against
  the fork-point listing, so moving the package directories makes every
  upstream-derived file look fork-original and its retained Confluent header an
  error. Measured by performing the rename in a throwaway clone rather than
  predicting it: 197 violations, against a clean baseline today.

- Three mechanisms fail green rather than red. Two escaped-regex occurrences in
  bin/ci-mutation-test.sh (plus one in bin/lib/quarantine-common.sh) are
  invisible both to a find-and-replace and to the habitual verification sweep,
  and a stale one makes the mutation lane exit 0 while scoring zero mutants. An
  ArchUnit rule and six @AnalyzeClasses declarations pin package strings and pass
  vacuously when stale. The plan therefore makes two verification conditions
  non-negotiable: grep with a pattern that can see the escaped form, and assert
  the mutation lane scores mutants rather than accepting the tick.

Apache 2.0 permits the rename outright (section 4) and grants no trademark
rights (section 6), so moving off io.confluent reduces exposure. The trap is
reading that as licence to drop attribution: the code stays a derivative work,
so the Confluent headers and NOTICE stay regardless, and section 4(c) adds a
modifications line to every file the rename touches.

README changes, which are true today and independent of the decision: the
Upgrading section gained a "From 0.5 to 0.6" subsection documenting the Maven
groupId change that 0.6.0.0 already makes, filling a real gap (it previously
covered only 0.4 to 0.5), and the drop-in claim near the top now says precisely
what is unchanged and names the single edit a user makes. Both are written in
the template and regenerated into README.adoc. The README deliberately says
nothing about the package rename, because it is not decided and the README is a
published artefact.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fpk9yEDEhPnbad2WKvZUmP
Checked-in IDE run configurations are a maintenance surface with no
consumers - they only work in one IDE, they are invisible to CI, and nothing
tells you when they rot. This one had already rotted: it pointed at
`io.confluent.parallalconsumer.examples.core.*`, misspelled, two lines above
a correctly spelled reference in the same file. It has presumably been broken
for as long as it has existed and nobody noticed, which is the argument
against the whole category.

It is also a trap for the package rename: a find-and-replace on the correct
spelling skips the misspelled line silently, leaving a dead reference behind
while the sweep reports itself complete.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fpk9yEDEhPnbad2WKvZUmP
@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

@claude

claude Bot commented Aug 10, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 2m 42s —— View job


Claude finished reviewing this PR

  • Gather context (diff vs origin/master, all 6 changed files, AGENTS.md, CHANGELOG.adoc)
  • Verify the plan document's factual claims against the actual repo state
  • Review README.adoc / README_TEMPLATE.adoc sync and prose
  • Post review feedback

Summary

This is a documentation-only PR (no .java files touched) that records a go/no-go decision for renaming io.confluent.parallelconsumer.* → bz.stub.parallelconsumer.*, and it is unusually rigorous about its evidence. I independently re-verified roughly 15 of the file:line citations in docs/plans/2026-08-11-001-refactor-package-rename-plan.md against the current tree rather than trusting the prose — every one checked out exactly:

  • bin/check-copyright-headers.sh:86,137 — path-equality lookup against git ls-tree $FORK_POINT, confirmed.
  • bin/ci-mutation-test.sh:85,104,66,70,151 — escaped vs. unescaped io\.confluent regexes, confirmed at those exact lines.
  • bin/lib/quarantine-common.sh:13 — QUARANTINE_ANNOTATION_ERE, confirmed.
  • TestConventionRules.java:46,139 and the 6 @AnalyzeClasses(packages = "io.confluent.parallelconsumer…") sites — confirmed.
  • QuarantineRegistryScriptTest.java:91 (fullyQualifiedAnnotationIsDetected) — confirmed.
  • parallel-consumer-core/pom.xml:133-141,153 (truth-generator <class> list / entryPointClassPackage) — confirmed.
  • RENAMED_FROM_UPSTREAM/EXTRACTED_FROM_UPSTREAM start at lines 53/67 (cited as "54-59"/"68") — confirmed.
  • The "233 java files contain io.confluent" baseline — reproduced independently with grep -rln 'io\.confluent' --include='*.java' . | wc -l → 233, exact match.
  • The .idea/runConfigurations/All_examples.xml misspelling (parall**a**lconsumer two lines above the correct spelling) — confirmed in the diff, and the other two example run configs (All_example_core.xml, All_example_vertx.xml) remain, so nothing is orphaned by the deletion.
  • The CHANGELOG.adoc === Improvements entry that would go false on a "go" (line 31, "Java package names... are unchanged, so imports are unaffected") — confirmed present, and the AGENTS.md "release-time generation" claim it leans on (AGENTS.md:294-301) — confirmed.
  • README.adoc and src/docs/README_TEMPLATE.adoc — the new === From 0.5 to 0.6 section is byte-identical between the two, so README.adoc was correctly regenerated rather than hand-diverged from the template (per this repo's "never hand-edit README.adoc" convention).

I wasn't able to execute bin/check-copyright-headers.sh itself in this sandbox (the tool approval for that specific script invocation was denied/unavailable), so the "0 violations today / 197 after a naive rename / 121 files needing a modifications line" figures are cited but not independently re-run by me — everything else about that script (the exact lines that cause the failure mode) checks out, so I have no reason to doubt them, but flagging that this one figure is trust-not-verify on my end.

Findings

Nothing rises to a blocking or correctness issue — this is a very well fact-checked set of docs. Two minor, non-blocking notes:

  1. Doc date is one day ahead of "today." docs/plans/2026-08-11-001-refactor-package-rename-plan.md and its own **Written:** 2026-08-11 are dated 2026-08-11, while the PR appears to be opened 2026-08-10. Almost certainly just a timezone artifact of when the doc was authored — worth a glance, not worth blocking on.
  2. Title vs. content framing. The PR title says "decide the package rename before 0.6.0.0 ships," but the documents themselves consistently describe the decision as still open (docs/inflight/branch-package-rename.md:3: "Open decision, and it expires when 0.6.0.0 ships") with a recommendation of "Go" (§10 of the plan) rather than a ratified decision. That's clearly intentional and well-disclosed inside the docs, but a reader skimming only the PR title could think the decision has already been made here. Might be worth a one-word tweak (e.g., "record the go/no-go decision…") if that distinction matters to you — purely a framing nit, not a defect.

No code, tests, or CI behavior changes are in scope for this PR, so no test suite run was needed to validate it.

@github-actions

github-actions Bot commented Aug 10, 2026 •

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 28 28 ➖ 0
Duplicated lines 850 850 ➖ 0
Duplication 2.46% 2.46% ➖ 0
Rule Limit Status
Max duplication 5% ✅ Pass (2.46%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

PR Base Change
Clones 75 75 ➖ 0
Duplicated lines 1060 1060 ➖ 0
Duplication 3.11% 3.10% 🫤 +0.01%
Rule Limit Status
Max duplication 5% ✅ Pass (3.11%)
Max increase vs base +0.1% ✅ Pass (+0.01%)

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Aug 10, 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.81 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 39.21
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 36.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 35.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 34.16
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 33.77
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 33.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 33.49
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.2 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 54.91 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 40.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 37.18
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 32.8
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 31.53
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.2 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 50.92 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 36.9
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 32.55
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 31.76
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 30.31
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 36.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 32.62
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.81 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 52.35 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 43.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 33.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 33.13
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 30.71
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.29
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 54.91 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 50.92 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 45.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 34.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 31.19
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 45.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 37.18
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 36.9
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 32.7
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 35.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 32.48
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.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 33.23
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 32.8
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java 32.48
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 31.76
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 35.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 33.23
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/internal/BrokerPollSystem.java 33.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 32.96
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 33.29
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.57
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.84 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 52.35 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 51.39 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 47.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 39.62
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 39.21
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 36.19
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 32.62
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 32.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 32.2
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.62
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 31.36
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 30.71
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.21
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.29
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.67
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 35.39
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java 33.31
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 39.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 35.39
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.83 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 36.19
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 35.98
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 35.98
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 34.16
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 33.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 32.41
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.84 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 50.83 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 48.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 45.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 45.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 45.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 43.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 35.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 31.36
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 47.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 45.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 36.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 36.08
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 51.39 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 48.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 45.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.77
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 33.13
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 32.41
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 30.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 30.38
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 62.06 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 36.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.98
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 32.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 30.38
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 62.06 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 36.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.98
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 32.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 30.38
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 30.22
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 39.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 30.22
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 36.73
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 36.73
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 39.69
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/BrokerIntegrationTest.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/state/LatestResetTailNudgeIT.java 30.41
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/DrainingMemberRebalanceIT.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/BrokerPollSystemDrainTest.java 31.11
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.16
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 55.42 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 47.0
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 38.67
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 44.17
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 41.14
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 38.67
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.35
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.35
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 60.71 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 47.0
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 41.14
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 30.71
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/TransactionAndCommitModeTest.java 60.71 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 55.42 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 44.17
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 39.08
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 48.7
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 35.54
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 48.7
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.0
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 49.03
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 49.03
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 35.54
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 38.0
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/state/LatestResetTailNudgeIT.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/BrokerIntegrationTest.java 30.41
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.66
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.8
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 48.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTest.java 32.39
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java 32.31
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 52.02 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 50.75 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 44.83
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java 30.66
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/MockConsumerEarlyCloseTest.java 70.15 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTest.java 56.45 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java 49.42
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 32.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerEarlyCloseTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java 70.15 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTest.java 54.86 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java 52.85 ⚠️
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/MockConsumerEarlyCloseTest.java 52.85 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java 49.42
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTest.java 46.72
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java 56.45 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerEarlyCloseTest.java 54.86 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java 46.72
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 32.39
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 34.75
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 34.75
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.8
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 33.36
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 48.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 33.36
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.22 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 89.55 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 89.55 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/BrokerPollSystemDrainTest.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/DrainingMemberRebalanceIT.java 31.11
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.21
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 30.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 30.67
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.19
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 39.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 33.31
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.16
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 39.23
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 39.23
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.44
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.44
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 52.2 ⚠️
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 79.03 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.75 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 49.09
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.14 ⚠️
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 32.55
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 32.31
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 91.02 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 90.35 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 89.55 ⚠️
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 52.2 ⚠️
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 79.03 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 52.02 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 50.3 ⚠️
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.14 ⚠️
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 32.55
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 32.31
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 91.02 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 90.35 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 89.55 ⚠️
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 41.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 40.45
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 39.9
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 35.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 32.55
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 39.9
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 39.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 32.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 31.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 30.31
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 41.66
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 39.57
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 41.66
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 39.37
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 35.46
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 39.08
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 91.02 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 91.02 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 90.22 ⚠️
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 50.3 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 49.09
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 44.83

@github-actions

Copy link
Copy Markdown

✅ SpotBugs Report

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

Second of the checked-in run configurations to go, for the same reason as
All_examples.xml: they work in one IDE, CI never executes them, and nothing
reports when they rot.

This one pinned `io.confluent.parallelconsumer.internal.ProducerManagerTest`
by fully-qualified name in an XML attribute, so it was also a silent target
for the package rename - a config file the compiler cannot check, holding a
class name that a Java-scoped sweep would never visit.

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

claude Bot commented Aug 10, 2026 •

Copy link
Copy Markdown

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


Claude finished reviewing this PR

  • Gather context (diff vs origin/master, changed files)
  • Run /code-review skill per repo custom instructions
  • Post findings

Summary

This is a documentation-only PR (no source/behavior changes). I fact-checked essentially every concrete claim in the new 377-line plan doc against the actual repository — file paths, line numbers (bin/check-copyright-headers.sh, bin/ci-mutation-test.sh, TestConventionRules.java, pom.xml, workflow files, junit-platform.properties, etc.) — and found the document to be unusually rigorous and accurate.

Two issues survived verification and were posted as inline PR review comments:

  1. docs/plans/2026-08-11-001-refactor-package-rename-plan.md:323 — the pre-drafted user-facing migration command uses BSD/macOS-only sed -i '' syntax, which silently mis-executes on GNU/Linux sed (rewrites files with an empty script instead of migrating imports).
  2. docs/plans/2026-08-11-001-refactor-package-rename-plan.md:240 — the R5 task item references .idea/runConfigurations/_Tag__transactions__.xml and All_examples.xml, but this same PR's later commits (ca1bbed5, 76384aca) delete both files, making those file:line references dead. Also, _Tag__transactions__.xml was a working config (pointing at ProducerManagerTest, which still carries @Tag("transactions")), unlike the misspelled All_examples.xml the PR body singles out as "rotted" — its deletion isn't mentioned in the PR description.

No blocking correctness issues in the docs otherwise; both findings are worth a quick fix before merge but neither undermines the go/no-go decision itself.

Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md
Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md Outdated
@astubbs astubbs changed the title docs(plan): decide the Java package rename before 0.6.0.0 ships docs(plan): record the package-rename go/no-go and its evidence Aug 10, 2026
…ecided

The README asserted twice that imports are unaffected - "your imports and
your code are unaffected" in the intro, and "no import or source edit is
needed" in the upgrade steps. Both stop being true the moment the rename
lands in 0.6.0.0, and both were the most load-bearing user-facing claims in
the document.

Worse, the previous pass strengthened them. Written while the rename was
still an open question, it made the drop-in promise more emphatic than the
text it replaced, immediately before the decision that invalidates it.

The intro now separates what actually is drop-in - behaviour, a
source-compatible API, and an unchanged offset format, so a consumer group
upgrades in place - from the two identifiers that change, which is the
honest split. The Upgrading section gives both steps: the groupId, then a
find-and-replace across imports, with a worked example.

This makes the docs deliberately ahead of the code. The inflight note and
the release blocker both now record that coupling: if the rename slips out
of v6, this README has to be reverted in the same breath rather than left
telling users to import a namespace that does not exist.

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

claude Bot commented Aug 10, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 2m 14s —— View job


Claude finished reviewing this PR

  • Gather context (diff vs origin/master, new commits since last review, CLAUDE.md)
  • Check whether the two previously-flagged issues (BSD sed syntax, stale IDE-config references) are still present after this synchronize
  • Review the new fd0b9292 README commit
  • Post findings

Summary

This synchronize added one new commit, fd0b9292 ("docs(readme): describe the new package namespace, now the rename is decided"), on top of the state already reviewed twice. It's a substantive re-framing, not a typo fix: it flips docs/inflight/branch-package-rename.md and docs/inflight/release-0600-blockers.md from "open decision" language to "Decided: it goes ahead in 0.6.0.0", and rewrites README.adoc/README_TEMPLATE.adoc to document the (not-yet-implemented) Java package rename as an upcoming upgrade step, with a worked find-and-replace example.

Both previously-flagged issues are still present, unchanged, at the same lines — this commit didn't touch them:

  • docs/plans/2026-08-11-001-refactor-package-rename-plan.md:323 — the pre-drafted migration command still uses BSD/macOS-only sed -i '' syntax, which breaks silently on GNU/Linux.
  • docs/plans/2026-08-11-001-refactor-package-rename-plan.md:240-243 — the R5 checklist item still references .idea/runConfigurations/_Tag__transactions__.xml and All_examples.xml, both of which this same PR's earlier commits (ca1bbed5, 76384aca) already delete.

New finding from fd0b9292, posted inline: docs/plans/2026-08-11-001-refactor-package-rename-plan.md:349-365 (§9, "What the README may say before the decision is taken") is now stale and contradicts the rest of this PR. It still frames the decision as pending and describes the README's old wording ("Java packages are unchanged... Maven coordinate is the single edit"), but fd0b9292 already: (a) declared the decision "Decided" in the two inflight docs edited in the same commit, and (b) rewrote the README to say the opposite of what §9 quotes — that Java package names do change. Three docs in one PR now disagree on whether this is decided, and one quotes README text that no longer exists.

The fd0b9292 README prose itself reads well and is internally consistent with the new "Decided" framing — no new issues found there beyond the plan-doc §9 mismatch.

No blocking correctness issues beyond what's flagged; this remains a well-evidenced, mostly self-consistent set of docs, and the one new issue is a natural consequence of a genuine framing change made partway through the PR rather than a fresh factual error.

Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md
… fix

Two measured findings the plan predated.

Commit shape: the move goes in its own commit. Squashing does not merely
lose a rename, it invents four, pairing the five per-module ArchUnit test
files into a cross-module cycle that a bare R-count reads as healthy. No
threshold can separate them - they score R071-R073 against their own true
former selves, the same band as against their siblings - and -B was
byte-identical to omitting it while --find-copies-harder made it worse.

The stronger reason is independent of the measurement: git's rename
detection cannot be configured from the repository. There is no
.gitattributes mechanism for it, so any "set this flag" answer holds on one
clone and silently does not on CI or a contributor's machine. The default
has to be correct.

The merge hazard is separate and worse, and the plan did not have it at
all. Commit shape is irrelevant to merges, which resolve over the tree
delta. What matters is whether the other branch has been renamed: merging
renamed master into one that has not exits 0 with no conflicts and puts one
module's edit into another module's file. Nothing catches it - not
merge.directoryRenames, not renameLimit, not a committed .gitattributes.
Running the script on every branch first is the only defence there is, so
the plan now says so in those terms rather than as advice.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fpk9yEDEhPnbad2WKvZUmP
@astubbs astubbs changed the title docs(plan): record the package-rename go/no-go and its evidence docs(plan): record the package-rename decision, its evidence and the user-facing docs Aug 10, 2026
@claude

claude Bot commented Aug 10, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 5m 40s —— View job


Claude finished reviewing this PR

  • Gather context (diff vs origin/master, new commit f3f02f9d since the last review pass)
  • Run /code-review skill per repo custom instructions (--comment mode)
  • Post findings as inline PR comments

Summary

This synchronize adds one new commit, f3f02f9d ("docs(plan): record the commit shape, and the merge hazard it does not fix"), which appends two new measured findings to the plan doc: that the rename must land as its own commit (squashing invents phantom renames across the five per-module ArchUnit test files, scoring in the same "healthy" band as genuine cross-module moves), and that merging an un-renamed branch against a renamed master exits 0 with no conflicts while silently splicing one module's edit into another module's file — with no .gitattributes or merge.directoryRenames setting that catches it.

I ran the /code-review skill in --comment mode as instructed and it posted 5 findings as inline PR comments:

  1. docs/plans/...-plan.md:3 — the plan's own Status field still frames the rename as an open decision, contradicting the "Decided" language already added elsewhere in this same PR (docs/inflight/release-0600-blockers.md:9, branch-package-rename.md:3). This is the same inconsistency flagged in the prior review pass at §9 — it's broader than just §9, the plan's top-level status line itself hasn't been reconciled.
  2. docs/plans/...-plan.md:299 — R5's IntelliJ run-config checklist item still references _Tag__transactions__.xml and All_examples.xml, both already deleted by this PR's own earlier commits. (Same finding as the prior review pass, still unresolved.)
  3. docs/plans/...-plan.md:382 — the pre-drafted migration command still uses BSD/macOS-only sed -i '', which breaks silently on GNU/Linux. (Same finding as the prior review pass, still unresolved.)
  4. README.adoc:61 — the README already states the rename as decided, which contradicts the plan's own §8 ("ready to paste when the rename lands, not before") and §9 ("nothing that presents the rename as decided or done") — new framing of a previously-flagged inconsistency, now pointed at the README side rather than just the plan's §9.
  5. docs/plans/...-plan.md:140 (new) — section numbering skips 4.4: headings go 4.1, 4.2, 4.3, 4.5, 4.6 with no 4.4, suggesting a subsection was cut without renumbering.

Net: the new commit itself (f3f02f9d) is sound and well-evidenced — no issues found in its content. The recurring theme across this and prior review passes is that the "Decided" reframing introduced by fd0b9292 was never fully threaded through the plan doc's own status line and §8/§9, so the plan and the shipped README/inflight docs still disagree about whether the decision is settled. Nothing here blocks the go/no-go decision itself; these are internal-consistency fixes within the docs.

Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md Outdated
Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md Outdated
Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md
Comment thread README.adoc Outdated
Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md Outdated
astubbs and others added 2 commits August 11, 2026 14:07
The merge of master was clean and wrong. git resolves renames and
restructures without a conflict, so four citations on this branch kept
pointing at files, line numbers and a sentence that no longer exist, and
nothing in CI reads a prose citation. All four were silent.

- `docs/TODO_INDEX.md` -> `docs/todo-index.md`. #270 lowercased the
  three shouting docs. This one is not cosmetic: it sits in the R5 sweep
  inventory as an actionable checklist item, so a future session executing
  the rename would have been sent to a path that does not exist, next to a
  correct instruction to regenerate it.

- `pom.xml:723-724,750` -> `:743-744,770`. The surefire excludes and the
  failsafe include moved 20 lines when #259 added the
  central-publishing pluginManagement block. §6's claim - that the
  unit/integration split keys on the `integrationTest*` path segment and so
  survives the package move - was still true, but pointed at the compiler
  `<source>` element and an unrelated comment. Added what the lines are, so
  the next drift is detectable by reading rather than by counting.

- The `=== Improvements` changelog quote, in both §8 and the release
  blocker. #276 deleted the exact sentence both quoted ("Java package
  names ... are unchanged, so imports are unaffected") while renaming the
  project, for a reason unrelated to this branch. The underlying warning
  survives - the `== 0.6.0.0` section still asserts the groupId is the only
  required change, in its opening paragraph and in the `=== Breaking`
  bullet - so both now name those two passages instead, and §8 records that
  the third is already gone so nobody hunts for it.

- The "links to confluentinc that legitimately remain" item named
  `AGENTS.md` as one file. #272 split it into seven topic docs and
  three of them carry such links. Replaced the fixed filename list with the
  grep that produces it, since the same split will happen again.

Verified rather than assumed, because every one of these fails silently:
zero matches for the three old SCREAMING_CASE names anywhere outside .git;
all 40 repo-relative backtick path citations in the branch's three docs
resolve, the single exception being `bin/rename-packages.sh`, a deliberate
forward reference to work in flight elsewhere; all 7 relative markdown links
and all 8 adoc `link:` targets resolve; and the 24 `path:line` citations were
checked by reading the cited line and confirming it still says what the
prose claims. check-issue-refs, check-copyright-headers, todo-index --check
and check-quarantine-registry are all green, and README.adoc regenerates
byte-identical from the template, so master's branding rename merged into
the generated file correctly rather than being hand-patched.

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

claude Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 7m 39s —— View job


Claude finished reviewing this PR

  • Gather context (diff vs origin/master, new commits since the last review pass: 51dd33bf merge + 23a62f77)
  • Run /code-review skill in --comment mode per repo custom instructions
  • Post findings as inline PR comments

Summary

The new commit since the last review pass, 23a62f77 ("docs(plan): follow master's restructure through this branch's citations"), fixes up four citations in the plan doc that went stale when master's concurrent restructuring (docs/TODO_INDEX.md → docs/todo-index.md, pom.xml line shifts from #259, the AGENTS.md → seven-topic-doc split from #272, and the CHANGELOG.adoc === Improvements entry deleted by #276) merged cleanly but silently invalidated file:line references. I independently re-verified all of it against the current tree rather than trusting the commit message:

  • docs/todo-index.md exists; docs/TODO_INDEX.md does not.
  • pom.xml:743-744 (surefire <exclude>s) and pom.xml:770 (failsafe <include>) — confirmed at those exact lines.
  • Both CHANGELOG.adoc quotes the plan now cites ("...the only required change is the Maven groupId..." and "...the library API is otherwise unchanged from upstream") — confirmed present, and the old === Improvements sentence about unchanged package names is indeed gone.
  • grep -rl "confluentinc/parallel-consumer" docs/ AGENTS.md reproduces exactly the file list the plan now points to, including the three new split-out docs (docs/upstream.md, docs/issue-references.md, docs/refactoring.md).
  • The docs/ci.md / AGENTS.md Kafka-3.9.1 claims in the release-0600-blockers.md diff also check out against the current file contents.

No new defects found in 23a62f77 itself — it's an accurate, well-verified fixup.

I then ran the full /code-review skill (8 finder angles) over the PR as instructed. It independently re-verified a large set of the plan's other citations (copyright-header script, mutation-test script, quarantine scripts, ArchUnit conventions test, etc.) and confirmed them, then posted 2 inline findings, both re-surfacing (at updated line numbers) an inconsistency flagged in earlier review passes on this same PR and still unresolved:

  • docs/plans/2026-08-11-001-refactor-package-rename-plan.md:3 — the plan's own Status: line still says "decision open, nothing performed," while docs/inflight/branch-package-rename.md and docs/inflight/release-0600-blockers.md (added/edited in this same PR) both say "Decided: it goes ahead," and the README diff already ships post-decision content.
  • docs/plans/2026-08-11-001-refactor-package-rename-plan.md:420 (§9) — still describes "before the decision" README wording that no longer matches what the README diff actually shipped.

Also still present and unaddressed by 23a62f77 (flagged in prior passes, not re-posted here to avoid duplicate inline comments): the BSD-only sed -i '' syntax at line 386, and the stale .idea/runConfigurations/_Tag__transactions__.xml / All_examples.xml references at lines 299-301 (both files are deleted by this same PR's earlier commits).

Net: this remains a well-evidenced set of docs, and the recurring theme across every review pass on this PR is the same one — the "Decided" reframing introduced partway through (fd0b9292) was never fully threaded through the plan doc's own Status: line and §9. Nothing here blocks the go/no-go decision itself.

Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md Outdated
Comment thread docs/plans/2026-08-11-001-refactor-package-rename-plan.md
The rename this branch argued for has landed on master. That turns the branch
from a proposal into a record, and every conflict here is the same question:
which side describes the finished thing better.

README_TEMPLATE.adoc - this branch's prose wins, on merit rather than as a
tie-break. Master's version tells a reader that imports move; this one also
tells them the committed offset format is unchanged, so an existing consumer
group upgrades in place with no reset and no offset migration. For a Kafka
library that is the single most important migration fact, and master's wording
omits it entirely. Master's two additions are folded in rather than dropped:
the tree-wide sed with its BSD/macOS note, and the note that the shared
internal utilities landed under bz.stub.parallelconsumer.internal.utils.

Every old-spelling mention now sits inside a freeze region. This branch predates
that mechanism, so its text was unprotected: the upgrade section reuses master's
freeze-begin(upgrade-instructions), and the intro paragraph - which names the old
namespace and had no equivalent on master - gets its own freeze-begin(fork-summary).
--verify-only reports both regions and all twelve lines they hold, so the
exemptions are audited rather than assumed.

One sentence was worded to keep a tripwire alive. rename-packages.sh pins the
corrected drop-in claim by matching "Java packages *move*"; this branch's
rewording matched neither the false claim nor its correction, and the self-test
failed exactly as designed - a guard that matches nothing is a dead guard. The
intro now carries the pinned phrase without losing anything it said.

README.adoc is generated, so it was regenerated from the template rather than
hand-merged, and checked against the template rather than against maven's exit
code.

docs/inflight/branch-package-rename.md - both accounts combined into one entry,
as that file's own header instructs. The decision record from this branch, the
legacy-token finding and the asciidoc-tag warning from master, and each of the
three "do not trust the sweep" traps annotated with where it ended up: all three
were real and all three are handled on master.

docs/inflight/release-0600-blockers.md - master's documentation-data bullet kept.
This branch's rename blocker is resolved, but not empty: the 0.6.0.0 changelog
section is regenerated from the commit log at release time, and generation reads
commits, so it can silently drop the corrected claim. The bullet now states that
release-day check instead of a landed blocker.

docs/plans/2026-08-11-001-refactor-package-rename-plan.md - kept, and its status
moved from "decision open, nothing performed" to executed. Master's
bin/rename-packages.sh cites this document and it does not exist on master, so
the merge closes a dangling reference.

.idea/runConfigurations - this branch deleted All_examples.xml and
_Tag__transactions__.xml rather than renaming them, and the deletion stands. It
was a deliberate, argued change (IDE-only, never run by CI, and All_examples.xml
had carried a misspelt package for years without anyone noticing), and a merge
must not silently resurrect what a branch deliberately removed. Master's rename
of those two files is superseded, not lost - the misspelling it normalised is
already recorded in the tool's header and its self-test fixture.

Gates, all green: rename-packages.sh --verify-only 0 non-excluded matches;
test-rename-packages.sh 119 assertions, all pass; check-docs-data.sh 39 files
valid; check-copyright-headers.sh 234 files, 0 violations.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015pmm1oZoLeX9hev9Snqv5P
@github-actions

Copy link
Copy Markdown

🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
PCMetricsTest.metricsRegisterBinding 🟡🎲 passed (flapper) #265 proves nothing - passes most runs by nature
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.

…iting the record

The plan predates the rename it proposed; the rename has since landed on master
(#294), and four passages went stale rather than wrong-at-the-time. Each is
corrected in place with a dated note rather than edited silently, because a dated
plan document is a record and rewriting it makes it say something it did not say
(the rule this plan states for itself, R5).

- s8's pre-drafted sed one-liner is BSD/macOS-only: `sed -i ''` passes -i with no
  attached suffix, so GNU sed takes '' as the script and the s/.../.../g expression
  as a filename - a Linux reader who pasted it would get no substitution at all.
  The draft was superseded before it was ever pasted; what shipped in
  README_TEMPLATE.adoc already uses the GNU form with an explicit BSD note. The
  broken block is kept as the record and marked do-not-paste.
- s9 was titled for a decision that has since been taken, and its two bullets
  describe a README that no longer exists. Marked superseded, with a correction
  naming what the README says now and why the constraint was lifted rather than
  violated.
- R5's IntelliJ bullet still told a future session to edit two run configurations
  this same PR deletes. Recorded as resolved by deletion, keeping the reason they
  were rename traps.
- Section numbering skipped 4.4. Nothing was cut - 4.5 and 4.6 were mis-numbered
  when they were added - so they are renumbered 4.4 and 4.5, and the header's
  cross-reference follows.

Gates run locally: bin/rename-packages.sh --verify-only (0 non-excluded matches),
bin/test-rename-packages.sh (119 assertions), bin/check-docs-data.sh,
bin/check-copyright-headers.sh, bin/todo-index.sh --check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015pmm1oZoLeX9hev9Snqv5P
@astubbs
astubbs merged commit c2671c4 into master Aug 12, 2026
77 of 79 checks passed
@astubbs
astubbs deleted the refactor/package-rename branch August 12, 2026 23:11
astubbs added a commit that referenced this pull request Aug 12, 2026
…remediation

#263 was squash-merged, so GitHub retargeted this PR onto master and the
content this branch already carried came back as three add/add and content
conflicts - the squash gave the same documents a second, unrelated history.
master also gained #260 and #277.

All three conflicts are the same shape: master's copy is #263's merged
state, and this branch's copy is that state plus the corrections made here
afterwards. Verified rather than assumed - master's audit is byte-identical to
#263's tip, and nothing was lost on master.

- inactive-tests-audit-2026-08-08.md: kept this branch's copy. master's is the
  earlier draft; this one carries the "Corrected 2026-08-08" pass (the nine
  restated claims, the §4 rewrite, the disposition of all ten deleted stubs).
- refactoring.md: kept this branch's copy. Taking "both sides" would have been
  wrong here - master still lists the three `@Timeout(60000L)` annotations as
  work, which this branch deliberately moved to "Not listed as work" because
  #206 owns them, recording that `@Timeout(60)` would have been wrong
  (two of those tests wait 45s and 50s internally). master also still says the
  OOM diagnostics are unsalvaged; they are salvaged.
- inflight/branch-stale-and-diagnostic.md: same - master's copy predates the OOM
  salvage this branch records as done.

Verified on Temurin 17 after the merge, not deferred to CI: full reactor
test-compile clean, core unit suite 338 tests 0 failures under -Pci (up 10, from
#260's new KafkaTestUtils and ParallelEoSStreamProcessor tests), and all
four repo gates pass.

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

Brings in #264 (now merged), which was this PR's declared dependency, plus
#277, #260 and #263.

One conflict, in docs/todo-index.md - a generated file. Master's bin/todo-index.sh
changed the header format (the marker count moved out of the prose) while this
branch still carried the old shape, so both sides had edited the same generated
line. Resolved by regenerating from the merged tree rather than picking a side:
84 markers, and `bin/todo-index.sh --check` reports it current.

Master did not touch BlockedThreadAsserter or junit-platform.properties in these
four commits, so this PR's two central changes had no semantic collision to
resolve. Verified after merging: junit-platform.properties still deleted, core's
pom still carries the surefire/failsafe configurationParameters, and the asserter
rewrite plus its negative-control test are intact.

Local verification: core 354 tests and vertx 18, 0 failures, 0 errors.
bin/check-quarantine-registry.sh and bin/check-copyright-headers.sh both clean.
astubbs added a commit that referenced this pull request Aug 14, 2026
…298)

Two merged PRs, #264 and #277, carry no LGTM in any form - no
review, no comment. The requirement is that the owner reviews everything that
goes in, and the gap was not a lapse of intent but of visibility: "have I read
this one myself yet?" is a thing to carry across a dozen open PRs, and carrying
it does not work.

So it becomes a check with its own name. `bin/check-human-lgtm.sh` asserts one
thing: the owner has left a REVIEW whose body contains "lgtm", any case,
anywhere in the body. The reviews endpoint is the rule rather than an
implementation detail - "lgtm" typed into the ordinary comment box is not the
deliberate act being asked for - and the endpoint gives that distinction for
free.

The matching rule was settled by looking rather than by taste. All 50 owner
LGTMs this repo has received, across 38 PRs from #63 to #292, are
COMMENTED reviews; 49 are lower-case `lgtm` and one, on #84, is `Lgtm`.
Four carry a trailing clause, one of them ending in a question mark. A
case-sensitive or whole-word rule would have gone red on real history, so both
of those real spellings are pinned as cases.

NOT HEAD-SENSITIVE, deliberately: an LGTM on any commit counts for the whole PR,
permanently, because the owner only stamps a PR once it is near merge. That is
why review STATE is not consulted at all - the master ruleset sets
dismiss_stale_reviews_on_push, so reading state would silently un-stamp a PR the
owner had already stamped.

A SEPARATE JOB, NOT A SECOND STEP IN claude-review, and that is the substance of
this change rather than a packaging choice. Two checks say WHICH half is missing
straight from the checks list - "claude-review" red means no automated review,
"review: human LGTM" red means the owner has not read it yet - and one combined
check is red either way, which is exactly the question the human half exists to
answer. It also leaves claude-review byte-identical to master: no rename, so no
transitional duplicate job and no ordered ruleset swap, and a required check
matched by name cannot be left pointing at nothing. Making the new context
required is additive, once it has merged and is reporting.

NO BOT EXEMPTION, unlike the automated half. A Dependabot PR does not need an
AUTOMATED review, but it is still a change going in. Having no guard also means
there is no job to skip - and a skipped job satisfies a required check, so a
guard keyed on github.event.sender would have let a human PR synchronized by a
bot go green having asserted nothing.

The checker is 15 lines. An earlier revision was 593, with 855 lines of
self-test, parsing code fences, blockquotes, negation forms, glued repeats, CRLF
and typographic apostrophes - defences against an attacker who is also the only
person the check protects. Filtering the reviews with jq on .user.login before
any text is read removed both the attack and the unguessable per-run marker
token it needed, since a stranger's body can no longer be attributed to the
owner.

Verified against real data, not only fixtures: #206 reads LGTM-present,
#298 and #299 read absent. The self-test carries a negative
control proving the check can fail at all.
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