Skip to content

docs(mutation) #41: record the first completed sweep - 83%, 22 minutes - #123

Merged
astubbs merged 2 commits into
masterfrom
docs/mutation-baseline
Aug 5, 2026
Merged

docs(mutation) #41: record the first completed sweep - 83%, 22 minutes#123
astubbs merged 2 commits into
masterfrom
docs/mutation-baseline

Conversation

@astubbs

@astubbs astubbs commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Description

The first offsets.* mutation sweep completed - 21m55s, 83% score. The internal.* sweep it replaced never finished, in 42+ minutes on CI or 83+ locally, so this is the first mutation number this project has ever had.

This records it in the repo, because nothing else keeps it: the PIT report is a 14-day artifact, and the statistics live only in a job log - which ages out, and which a re-run silently replaces (demonstrated the hard way earlier this week, re-running a job whose logs hadn't been saved). A baseline nobody can find is not a baseline.

Tracks #41, deliberately without closing it. That issue asked whether PIT could work on the self-hosted runner; the baseline answers it - yes, in 22 minutes - but the re-widening work behind it continues, so it is reopened and carries the remaining items.

Mutation score 83% - 185 generated, 153 killed
Test strength 92%
No coverage 19
Line coverage (mutated classes) 481/597 (81%)
Tests run 1392 (7.52 per mutation)
Wall clock 21m55s, of which 311s is the instrumented coverage pass
Run mutation-full-sweep #1, against master at 58991506

Two decisions it settles

Both were left open in #111 pending exactly this measurement, so this closes them with evidence rather than argument.

The sweep is schedulable. push: branches: [master] was deliberately unwired because nothing had measured the runtime. 22 minutes on the highcpu box is affordable, so that is now a cost question with a real number.

Narrowing target-tests is not worth doing. Coverage is 311s of 1315s - about 24% - so the accuracy it would cost (mutants killed outside offsets.* reported as no-coverage) buys little. That had been carried as a live option since #111.

It also makes the marginal cost of widening PIT_DECIDABLE_PACKAGES explicit: the coverage pass is paid whatever the target, so adding state. costs only its own mutants.

What it replaces

Three places still told a future reader that the runtime was unknown. All three now agree with the measurement:

  • docs/inflight/ci-mutation-testing.md - the re-widen list ended a bullet with "Deliberately NOT wired until the runtime is known", in the same paragraph that now opens "now unblocked, at a known 22 minutes per run". It still isn't wired, so that fact stays; the stale reason is gone.
  • docs/plans/2026-08-03-002-mutation-testing-plan.md - "Do not quote a mutation score for this project until one has [completed]", correct when written and now the opposite of the truth. It points at the baseline instead.
  • .github/workflows/mutation-full-sweep.yml - the header block, which is the first thing anyone reads before dispatching, was headed UNMEASURED and opened "nothing has completed here YET". Also corrects the coverage pass from an estimated ~332s to the measured 311s, and drops the "until this merges, dispatch fails" note that ci(mutation): point PIT where survivors are real, and make the lane trustworthy #111 made obsolete.

Rider: the trailing (#N) slot belongs to the PR number

Found while citing #41 in this PR's own title. AGENTS.md said "keep the existing subject convention (... (#893))" and .gitmessage said "reference the upstream issue/PR in the subject as (#NNN)" - both of which walk you straight into a collision, because GitHub appends the PR number to that exact slot on squash-merge. A title ending (#41) merges as (#41) (#123): two bare numbers, nothing to distinguish issue from PR.

Both now say the same thing instead: the end of the subject is the PR number's, a fork issue goes at the FRONT as type(scope) #41: subject, and upstream refs stay inline and worded ((upstream #912), (#857 family)). That matches Apache Kafka (KAFKA-14561: ... (#13114)) and this repo's own pre-fork history (GH-725: ... (#727)). This PR's title is the first to follow it.

Nothing enforces titles, so this is documentation, not a gate.

Checklist

  • Docs updated - this PR is the doc
  • Tests added/updated - N/A, no code changes
  • Title & body reflect the final content of this PR
  • Self-hosted runner / security implications considered - mutation-full-sweep.yml is edited, but comments only: no trigger, runner, permission, or step change. Verified by diffing out comment lines (empty) and re-parsing the YAML.

🤖 Generated with Claude Code

The offsets.* sweep completes in 21m55s and scores 83% (185 mutants, 153
killed, 92% test strength). The internal.* sweep it replaced never finished, in
42+ minutes on CI or 83+ locally, so this is the first mutation number this
project has ever had.

Recorded in the repo because nothing else keeps it. The PIT report is a 14-day
artifact and the statistics exist only in a job log - which ages out, and which
a re-run silently replaces, as I proved earlier this week by re-running a job
whose logs I had not saved. A baseline nobody can find is not a baseline.

Two decisions the number settles rather than merely informs:

- The sweep is schedulable. `push: branches: [master]` was left unwired
  pending a runtime, and 22 minutes on the highcpu box is affordable. The note
  now says so instead of treating it as an open question.
- Narrowing target-tests is NOT worth doing. Coverage is 311s of 1315s, about
  24%, so the accuracy it costs - mutants killed outside offsets.* reported as
  no-coverage - buys little. That had been carried as a live option.

It also makes the marginal cost of widening PIT_DECIDABLE_PACKAGES explicit:
the coverage pass is paid whatever the target, so adding state. costs only its
own mutants.

Replaces the "do not quote a mutation score until a sweep completes" line,
which was correct when written and is now the opposite of the truth.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Dependency Review

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

Scanned Files

None

@claude

claude Bot commented Aug 4, 2026

Copy link
Copy Markdown

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


Claude finished the review

Todo list

Review

Doc-only change, no code/tests affected. The numbers all check out internally — I re-derived each one instead of trusting the prose:

One real issue:

Contradiction left in the "give it a trigger" bullet (docs/inflight/ci-mutation-testing.md:39-42). The bullet now opens with "now unblocked, at a known 22 minutes per run" but still ends with the original sentence "Deliberately NOT wired until the runtime is known." Those two clauses now directly contradict each other in the same paragraph — the whole point of this PR is that the runtime is now known, so the trailing sentence is stale and should be removed or reworded (e.g. "still not wired — that's the next PR" or similar) to avoid confusing a future reader.

Fix this →

Minor/non-blocking:

  • Line 39 (- **Then give it a trigger** - now unblocked...) is noticeably longer than the ~100-char soft-wrap used for every other paragraph in this file — cosmetic only, doesn't affect rendering.

Everything else — the "schedulable" and "narrowing target-tests not worth it" conclusions, and the PIT_DECIDABLE_PACKAGES marginal-cost note — is well-supported by the measured numbers in the table.

@github-actions

github-actions Bot commented Aug 4, 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 29 29 ➖ 0
Duplicated lines 874 874 ➖ 0
Duplication 2.57% 2.57% ➖ 0
Rule Limit Status
Max duplication 5% ✅ Pass (2.57%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

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

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Aug 4, 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:

🆕 New file similarities introduced

File A File B Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/AmbientProbeExtension.java parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AmbientProbeExtensionTest.java 30.1
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 30.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java 30.0

🔺 Increased similarities

File A File B Base (%) PR (%) Change
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.1 38.3 +0.2
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 48.7 48.9 +0.2
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java 36.5 36.6 +0.1
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 35.6 35.7 +0.1
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 30.3 30.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 35.3 35.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 35.3 35.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.7 31.8 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.7 31.8 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 34.0 34.0 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 34.0 34.0 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 30.0 30.1 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.1 31.1 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.1 31.1 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ProducerManagerTest.java 30.6 30.6 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 34.1 34.1 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 45.4 45.5 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 38.3 38.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 38.3 38.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 46.8 46.8 +0.0

...and 32 more

Full similarity report
parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java

📄 parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java 35.32
parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java 33.26
parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java

📄 parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java 39.5
parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java 35.32
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 54.36 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 40.38
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 37.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java 36.97
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 35.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 35.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.28
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 34.15
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 30.07
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 60.96 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 54.74 ⚠️
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 40.4
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 37.01
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 32.68
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 31.47
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 60.96 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 50.65 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 36.76
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 32.44
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 31.63
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 30.22
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 36.97
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 33.11
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 54.36 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 53.28 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 44.98
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.05
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 33.75
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.14
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.14
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java 30.74
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 30.15
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java 32.32
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java 30.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 54.74 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 50.65 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 45.53
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 33.92
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.05
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 31.14
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 45.53
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 37.01
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 36.76
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 32.6
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java 35.38
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 32.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 33.92
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java 33.09
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 32.68
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java 32.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 31.63
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java 35.38
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 33.09
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/BrokerPollSystem.java 33.48
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 33.05
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/BrokerPollSystem.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/BrokerPollSystem.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.48
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ExternalEngine.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ExternalEngine.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 39.59
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 60.58 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 53.28 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 51.0 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 48.89
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 40.38
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java 39.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 37.28
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 34.02
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 34.02
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java 33.11
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 39.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 31.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 30.74
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/PCModule.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/PCModule.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/PCModuleTestEnv.java 32.97
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java 32.32
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ProducerManagerTest.java 30.64
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 51.75 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 37.68
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 37.68
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 37.28
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 35.28
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 35.05
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 32.92
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 60.58 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 51.75 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 48.47
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 47.37
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 47.37
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 46.84
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 44.98
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 37.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java 31.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 48.89
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 46.84
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 45.47
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 38.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 38.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 30.15
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 30.07
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 51.0 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 48.47
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 45.47
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 34.15
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 33.75
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 32.92
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.8
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.8
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 63.65 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 47.37
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 38.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 37.68
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 35.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 34.02
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 31.8
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 31.14
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 63.65 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 47.37
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 38.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 37.68
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 35.39
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 34.02
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 31.8
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 31.14
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java 30.45
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java 30.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/WorkManager.java 39.62
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java 30.45
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ProcessingShard.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ProcessingShard.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ShardManager.java 36.71
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ShardManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ShardManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ProcessingShard.java 36.71
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/WorkManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/WorkManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java 39.62
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/AmbientProbeExtension.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/AmbientProbeExtension.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AmbientProbeExtensionTest.java 30.14
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/DrainingMemberRebalanceIT.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/DrainingMemberRebalanceIT.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/BrokerPollSystemDrainTest.java 31.54
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/KafkaSanityTests.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/KafkaSanityTests.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/csid/utils/LoopingResumingIteratorTest.java 34.02
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 55.42 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 46.93
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 38.68
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 44.13
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 41.11
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 38.68
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java 36.56
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 36.56
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 60.72 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 46.93
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 41.11
parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 30.02
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 60.72 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 55.42 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 44.13
parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 39.24
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 48.87
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 35.69
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 48.87
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.27
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 30.35
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 49.38
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java 49.38
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 35.69
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 30.35
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 38.27
parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java

📄 parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java 39.5
parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java 33.26
parallel-consumer-core/src/test/java/io/confluent/csid/utils/LoopingResumingIteratorTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/csid/utils/LoopingResumingIteratorTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/KafkaSanityTests.java 34.02
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java 30.01
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AmbientProbeExtensionTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AmbientProbeExtensionTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/AmbientProbeExtension.java 30.14
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/BatchTestBase.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/BatchTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 30.61
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java 45.22
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java 43.72
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CommitRejectionTestBase.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CommitRejectionTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 32.44
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerCommitTimeoutTest.java 32.42
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 52.04 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 50.73 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 44.86
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/BatchTestBase.java 30.61
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerCommitTimeoutTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerCommitTimeoutTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerEarlyCloseTest.java 70.36 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 56.9 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerSaslAuthenticationTest.java 49.45
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CommitRejectionTestBase.java 32.42
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerEarlyCloseTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerEarlyCloseTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerCommitTimeoutTest.java 70.36 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 55.42 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerSaslAuthenticationTest.java 52.82 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerSaslAuthenticationTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerSaslAuthenticationTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerEarlyCloseTest.java 52.82 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerCommitTimeoutTest.java 49.45
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 46.82
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerCommitTimeoutTest.java 56.9 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerEarlyCloseTest.java 55.42 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerSaslAuthenticationTest.java 46.82
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CommitRejectionTestBase.java 32.44
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java 34.69
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java 34.69
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 30.01
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java 45.22
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java 33.08
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java 43.72
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java 33.08
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java 90.34 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java 89.68 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java 89.68 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/BrokerPollSystemDrainTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/BrokerPollSystemDrainTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/DrainingMemberRebalanceIT.java 31.54
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ExceptionConstructorsTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ExceptionConstructorsTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/InternalRuntimeExceptionTest.java 30.08
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/InternalRuntimeExceptionTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/InternalRuntimeExceptionTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ExceptionConstructorsTest.java 30.08
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/PCModuleTestEnv.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/PCModuleTestEnv.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/PCModule.java 32.97
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ProducerManagerTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ProducerManagerTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java 30.64
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 31.14
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java 40.08
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java 40.08
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/CommitHistorySubject.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/CommitHistorySubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/LongPollingMockConsumerSubject.java 36.66
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/LongPollingMockConsumerSubject.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/LongPollingMockConsumerSubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/CommitHistorySubject.java 36.66
parallel-consumer-mutiny/src/main/java/io/confluent/parallelconsumer/mutiny/MutinyProcessor.java

📄 parallel-consumer-mutiny/src/main/java/io/confluent/parallelconsumer/mutiny/MutinyProcessor.java

File Similarity (%)
parallel-consumer-reactor/src/main/java/io/confluent/parallelconsumer/reactor/ReactorProcessor.java 52.23 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 78.97 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 50.73 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 49.07
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyPCTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyPCTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorPCTest.java 71.2 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorTest.java 32.74
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyUnitTestBase.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyUnitTestBase.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorUnitTestBase.java 32.16
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java 91.13 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java 90.46 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java 89.68 ⚠️
parallel-consumer-reactor/src/main/java/io/confluent/parallelconsumer/reactor/ReactorProcessor.java

📄 parallel-consumer-reactor/src/main/java/io/confluent/parallelconsumer/reactor/ReactorProcessor.java

File Similarity (%)
parallel-consumer-mutiny/src/main/java/io/confluent/parallelconsumer/mutiny/MutinyProcessor.java 52.23 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 78.97 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 52.04 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 50.33 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorPCTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorPCTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyPCTest.java 71.2 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyTest.java 32.74
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorUnitTestBase.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorUnitTestBase.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyUnitTestBase.java 32.16
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java 91.13 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java 90.46 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java 89.68 ⚠️
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 41.54
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 40.4
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 39.88
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 35.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 32.44
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 39.88
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 39.29
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 32.6
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 31.47
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 30.22
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 41.75
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.54
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ExternalEngine.java 39.59
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 41.75
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 39.29
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 35.43
parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

📄 parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 39.24
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 30.02
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java

📄 parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java 91.13 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java 91.13 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java 90.34 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java

📄 parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 50.33 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 49.07
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 44.86

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

✅ SpotBugs Report

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

astubbs added a commit that referenced this pull request Aug 4, 2026
The house convention is that a bare #NN means THIS fork and upstream is written
`upstream #NN`. Bare `confluentinc#859` in source was merely ambiguous before; now that the
mirror #120 exists - and fork confluentinc#859 will eventually exist and mean something
else - it is wrong.

27 refs qualified across the Java sources and docs/refactoring.md this PR
already touches: #200, #233, confluentinc#857, confluentinc#859, confluentinc#893, confluentinc#905. Comments and one assertion
message only; no logic. This is the "correct opportunistically as files are
touched" rule from #114's Phase 4, not the bulk rewrite that plan rejects.

Deliberately left alone, because a mechanical sweep gets them wrong:

- CHANGELOG.adoc - its own header states that entries below 0.6.0.0 predate the
  fork and their #NN already refer to upstream, and the 0.6.0.0 entries use
  fully qualified links. Rewriting either would be wrong.
- upstream-map.yaml - every number in it is upstream by construction, so
  prefixing all of them is noise, not clarity.
- AGENTS.md - the only hit is a commit-subject convention shown BY EXAMPLE;
  rewriting the example would silently change the documented convention.

Note what this does NOT do: renumber references to fork issue numbers. #114
rejects that, and three of its four reasons still stand - git history is
immutable, a mechanical remap cannot tell an issue from the #999/#123 test
offsets in Java source, and fork numbering will eventually collide with
upstream's range. The fourth reason, staying cherry-pickable upstream, no
longer applies.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
@astubbs astubbs changed the title docs(mutation): record the first completed sweep - 83%, 22 minutes docs(mutation): record the first completed sweep - 83%, 22 minutes (#41) Aug 5, 2026
@astubbs astubbs changed the title docs(mutation): record the first completed sweep - 83%, 22 minutes (#41) docs(mutation) #41: record the first completed sweep - 83%, 22 minutes Aug 5, 2026
@astubbs

astubbs commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

Thanks - the contradiction was real and is fixed in 8b2eea5, along with two more instances of it that the review didn't reach.

The flagged bullet (docs/inflight/ci-mutation-testing.md). The trailing sentence is gone. It still isn't wired, so that fact stays - the stale reason is what was wrong:

Still unwired - that is the next PR, and now a cost decision rather than a blocked one.

The long line. Rewrapped to the file's ~103-char width. It was 200.

Two more places said the same stale thing, both worse than the one flagged because they're read before the ledger is:

  • .github/workflows/mutation-full-sweep.yml - the header block, the first thing anyone reads before dispatching, was headed UNMEASURED and opened "nothing has completed here YET". Now records run Create codeql-analysis.yml #1's numbers inline. Comments only: no trigger, runner, permission or step change, verified by filtering comment lines out of the diff (empty) and re-parsing the YAML. Also corrects the coverage pass from an estimated ~332s to the measured 311s, and drops a "until this merges, dispatch fails" note that ci(mutation): point PIT where survivors are real, and make the lane trustworthy #111 made obsolete.
  • docs/plans/2026-08-03-002-mutation-testing-plan.md - "Do not quote a mutation score for this project until one has". The PR body claimed to replace that line, but the PR never touched the file it lives in. It now points at the baseline.

Also in scope now, both from following up on the issue tracking rather than the review: #41 is reopened with a status comment (its ask did land - the sweep runs on [self-hosted, highcpu] - but the re-widening work continues), and AGENTS.md + .gitmessage are corrected on issue-ref placement. Both taught a trailing (#NNN), which collides with the PR number GitHub appends on squash-merge: a title ending (#41) merges as (#41) (#123). Fork issues now go at the front, as this PR's title does.

On the arithmetic re-derivation - that's the useful half of this review. It's what would catch a transcription slip between the job log and the table, which is the actual failure mode here given the log ages out.

astubbs added a commit that referenced this pull request Aug 5, 2026
The first sweep completed, but three places still told a future reader the
runtime was unknown - including the mutation-full-sweep.yml header block, which
is the first thing anyone reads before dispatching, and which was headed
UNMEASURED.

- docs/inflight/ci-mutation-testing.md: one bullet opened "now unblocked, at a
  known 22 minutes per run" and closed "Deliberately NOT wired until the runtime
  is known". It still is not wired, so that fact stays; the stale reason goes.
- docs/plans/2026-08-03-002-mutation-testing-plan.md: "Do not quote a mutation
  score for this project until one has" - correct when written, now the opposite
  of the truth. Points at the baseline instead.
- .github/workflows/mutation-full-sweep.yml: comments only - no trigger, runner,
  permission or step change. Also corrects the coverage pass from an estimated
  ~332s to the measured 311s, and drops the "until this merges, dispatch fails"
  note that #111 made obsolete.

Also fixes the convention that made this PR's own title collide. AGENTS.md and
.gitmessage both taught a trailing "(#NNN)" issue ref, but GitHub appends the PR
number to exactly that slot on squash-merge, so a title ending "(#41)" merges as
"(#41) (#123)" - two bare numbers with nothing to tell them apart. Both now put
a fork issue at the front, as this commit does, matching Apache Kafka and our
own pre-fork confluentincGH-725 history. Upstream refs stay inline and worded.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Aug 5, 2026

Copy link
Copy Markdown

Claude finished @astubbs's task in 1m 59s —— View job


Review

Todo list

  • Gather context (full PR diff 58991506..HEAD, plus the follow-up fix commit 8b2eea52 in isolation)
  • Verify the contradiction fix and the two additional stale-claim fixes the author called out
  • Sweep the rest of the diff for the same failure mode
  • Post review feedback

The three fixes the author listed in the last comment all check out against the actual diff:

  • docs/inflight/ci-mutation-testing.md:39-43 — the trailing "Deliberately NOT wired until the runtime is known" is gone, replaced with "Still unwired - that is the next PR, and now a cost decision rather than a blocked one." No more contradiction with the opening clause, and the line is rewrapped to the file's ~103-char width.
  • .github/workflows/mutation-full-sweep.yml — header now reads "MEASURED, run Create codeql-analysis.yml #1 on 2026-08-05..." with the actual numbers, replacing "UNMEASURED"/"nothing has completed here YET". Confirmed comment-only: diffing out every line that doesn't start with # between 58991506 and HEAD for this file returns empty.
  • docs/plans/2026-08-03-002-mutation-testing-plan.md table row + paragraph — "Do not quote a mutation score for this project until one has" is replaced with "Measured since: ... it completes, in 21m55s, scoring 83%," pointing at the baseline doc.

One real issue, same failure mode as the one already fixed, in the same file:

docs/plans/2026-08-03-002-mutation-testing-plan.md:3-5 — the doc's opening Status line still says:

What is still parked is the measurement: no sweep has completed under the new target, so no mutation score should be quoted for this project yet.

This is the sentence right at the top of the file — the first thing a reader sees, before the Done in #111 table — and this PR never touches it (confirmed via git diff 58991506..HEAD -- docs/plans/2026-08-03-002-mutation-testing-plan.md, which only shows the table-row and paragraph hunks). It now directly contradicts the table row four lines below it ("Since measured at 22 minutes...") and the "Measured since" paragraph right after ("it completes, in 21m55s, scoring 83%"). It's the exact same species of bug flagged in the original review, just in a spot the fix commit didn't reach.

Fix this →

Also verified, no issues found:

  • Issue Run PIT mutation testing on self-hosted performance runner #41 is genuinely reopened with a status comment consistent with this PR's numbers (checked via gh issue view 41).
  • AGENTS.md and .gitmessage changes are internally consistent and don't contradict anything elsewhere in either file.
  • Arithmetic in the tables (83%, 92%, 81%, 7.52 tests/mutation, ~24% coverage share) still checks out, matching the previous review's re-derivation — nothing here re-transcribed the numbers wrong.

The first sweep completed, but three places still told a future reader the
runtime was unknown - including the mutation-full-sweep.yml header block, which
is the first thing anyone reads before dispatching, and which was headed
UNMEASURED.

- docs/inflight/ci-mutation-testing.md: one bullet opened "now unblocked, at a
  known 22 minutes per run" and closed "Deliberately NOT wired until the runtime
  is known". It still is not wired, so that fact stays; the stale reason goes.
- docs/plans/2026-08-03-002-mutation-testing-plan.md: "Do not quote a mutation
  score for this project until one has" - correct when written, now the opposite
  of the truth. Points at the baseline instead.
- .github/workflows/mutation-full-sweep.yml: comments only - no trigger, runner,
  permission or step change. Also corrects the coverage pass from an estimated
  ~332s to the measured 311s, and drops the "until this merges, dispatch fails"
  note that #111 made obsolete.

Also fixes the convention that made this PR's own title collide. AGENTS.md and
.gitmessage both taught a trailing "(#NNN)" issue ref, but GitHub appends the PR
number to exactly that slot on squash-merge, so a title ending "(#41)" merges as
"(#41) (#123)" - two bare numbers with nothing to tell them apart.

Issue refs now go at the FRONT, as this commit's subject does, matching Apache
Kafka and our own pre-fork confluentincGH-725 history. That holds for upstream refs too:
they just need the word, as in "fix(core) upstream confluentinc#909: subject", because a
bare "confluentinc#909" autolinks to FORK issue 909 rather than the upstream one meant.
Where a fork mirror exists, prefer its number (#119 mirrors upstream confluentinc#857) and
leave the upstream number to the Upstream-Issue trailer, which is what tooling
reads.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@astubbs

astubbs commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

Amended and force-pushed: the SHA cited above is now fc1d2e4 (8b2eea52 no longer exists).

One substantive change on top of it. The convention I added had a carve-out saying upstream refs could stay inline at the end of the subject - which was rationalising the existing (#857 family) commits rather than stating a rule, and it contradicted the rule in the same paragraph. Upstream refs go at the front too; they just need the word:

fix(core) upstream #909: replace stale work container on rebalance

The word is not only for humans - a bare #909 autolinks to fork issue 909, which is not the upstream issue meant. And where a fork mirror exists, its own number is better still: #119 mirrors upstream confluentinc#857, so fix(core) #119: ... links correctly and the upstream number goes in the Upstream-Issue: trailer, which is what tooling reads. .gitmessage's worked example was itself breaking the rule it documented; it now demonstrates it.

@astubbs
astubbs force-pushed the docs/mutation-baseline branch from 8b2eea5 to fc1d2e4 Compare August 5, 2026 03:11
@claude

claude Bot commented Aug 5, 2026

Copy link
Copy Markdown

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


Review

Todo list

  • Gather context (gh pr diff 123 for the full diff against current master, plus per-commit diffs 2842e695..fc1d2e46)
  • Verify the three fixes + rename claimed in the author's latest comment (SHA now fc1d2e46, 8b2eea52 no longer exists)
  • Check the new .gitmessage / AGENTS.md convention change (upstream-ref-at-front rule) for internal consistency
  • Sweep remaining diff for the same "stale claim" failure mode
  • Post final review feedback

The three fixes named in the author's second follow-up comment (contradiction removal, header rewrite, plan-doc paragraph) are all present and correct in the current HEAD (fc1d2e46), and the new fourth change (moving the upstream carve-out to the front, e.g. fix(core) upstream #909: subject) is a real improvement over the earlier version that just rationalized (#857 family)-style trailing refs.

One real issue survives, and it's the exact failure mode already flagged twice on this PR — same file, four lines above where the last review looked:

docs/plans/2026-08-03-002-mutation-testing-plan.md:3-5 — the file's opening Status: line still reads:

the plumbing and the retarget are DONE (shipped in PR #111, marked inline below). What is still parked is the measurement: no sweep has completed under the new target, so no mutation score should be quoted for this project yet.

git diff 2842e695 fc1d2e46 -- docs/plans/2026-08-03-002-mutation-testing-plan.md confirms fc1d2e4 only touched the "Full sweep off PRs" table row and the "Applied but NOT yet measured" → "Measured since" paragraph further down — it never touched lines 3-5. This Status line was flagged by name in the prior review round (as the doc's very first sentence, read before the "Done in #111" table four lines below it, and before the "Measured since" paragraph that says "it completes, in 21m55s, scoring 83%"). It's still there, unresolved, and still says the opposite of the rest of the file. The author's latest comment doesn't mention it — it moved on to describe the .gitmessage rename instead.

Fix this →

Second issue, new in this round — a residual contradiction in the same file the "Rider" section just rewrote:

AGENTS.md:312 (the "Commit trailers" section) reads:

Keep the existing subject convention for upstream references (... (#893), cherry-pick Confluent #905) - but note that on a squash-merge the merged subject is the PR title, so the trailing-(#N) rule in PR Discipline governs it: that slot is the PR number, and a fork issue goes at the front as type(scope) #41: subject.

This tells the reader to "keep" a subject convention whose own examples (... (#893) — a real historical commit: 0c1e7fd7 test: ... (#893)) put an issue number in the trailing slot, in the same sentence that says the trailing slot "is the PR number." That's the identical collision the new PR Discipline bullet two sections up (line 234) was written to eliminate, and which this PR's own body calls out as the motivating bug ("A title ending (#41) merges as (#41) (#123)"). (#893) is exactly that pattern. Line 234 gets this right — it cites GH-725: ... (#727) (issue at front, PR at end) as the good historical example instead. Line 312 looks like a leftover from the version the author's last comment describes fixing ("a carve-out saying upstream refs could stay inline at the end... which contradicted the rule in the same paragraph") — the carve-out in PR Discipline (234) was removed, but this near-identical one in Commit trailers (312) wasn't.

[Fix this →](https://claude.ai/code?q=In%20AGENTS.md%20on%20branch%20docs%2Fmutation-baseline%2C%20line%20312%20(the%20%22Commit%20trailers%22%20section%2C%20near%20%22Enable%20the%20editor%20prompt%20once%20per%20checkout%22)%20says%20%22Keep%20the%20existing%20subject%20convention%20for%20upstream%20references%20(...%20(%23893)%2C%20cherry-pick%20Confluent%20%23905)%22%20then%20immediately%20says%20the%20trailing%20(%23N)%20slot%20belongs%20to%20the%20PR%20number%20-%20contradicting%20itself%2C%20the%20same%20bug%20the%20PR%20Discipline%20bullet%20at%20line%20234%20was%20rewritten%20to%20fix.%20Reword%20it%20to%20stop%20telling%20readers%20to%20keep%20a%20trailing-(%23893)-style%20convention%2C%20consistent%20with%20line%20234%27s%20%22fix(core)%20upstream%20%23909%3A%20subject%22%20/ %20%22GH-725%3A%20...%20(%23727)%22%20examples.&repo=astubbs/parallel-consumer)

Also verified, no issues found:

  • Arithmetic in the tables (83%, 92%, 81%, 7.52 tests/mutation, ~24% coverage share) is unchanged since the earlier reviews and still checks out.
  • .gitmessage itself is fully consistent with the new front-loaded convention — no leftover trailing-(#N) examples.
  • mutation-full-sweep.yml remains comment-only (verified again against fc1d2e46).

@astubbs
astubbs merged commit bd28420 into master Aug 5, 2026
22 of 25 checks passed
@astubbs
astubbs deleted the docs/mutation-baseline branch August 5, 2026 03:18
astubbs added a commit that referenced this pull request Aug 6, 2026
…ach the gate about anchors

Two things the reference sweep surfaced in Java sources.

The quarantine script tests built their fixture registries with
"Owner: PR #999", "PR #80" and "PR #123". The last two are real fork PRs,
so the fixtures read as genuine references to anyone grepping, and #999
is close enough to the live range to be mistaken for one. They are now
#999999 and #999998 - unmistakably fake, and above the threshold where a
bare number is ambiguous. Two distinct values, because the owner-mismatch
tests compare a @Quarantined value against a registry value and need them
to differ. 27 tests pass.

The gate also flagged references that were already qualified by an html
anchor - TransactionMarkersTest has
<a href="...confluentinc/issues/329">Github issue confluentinc#329</a>, where the href names the
repo and the number in the link text is unambiguous to any reader.
stripQualified removed bare URLs but not the anchor element, so the
visible "confluentinc#329" looked bare. It now strips the whole element, with a test
confirming a bare number elsewhere on the same line is still caught.

Together these take the tree-wide backlog from 390 to 374, and the Java
share from 53 to 36.

The follow-up note now carries the finished classification of all 36
Java references - file, line, and which repo each means, resolved
against both - so that pass does not repeat this research. Also records
that @tag("confluentinc#355") is a tag-string rename rather than a prose prefix, and
that nothing selects on that tag.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
astubbs added a commit that referenced this pull request Aug 6, 2026
…r repo

Mirrors all 78 open issues from confluentinc/parallel-consumer into this
fork (#44, #117-#195, label upstream-mirror), each
carrying a code-backed diagnosis, and each backlinked from its upstream
original while that is still possible - archival kills writes, not reads,
so the backlinks were the half with a deadline. Seven are closed against
a released version.

Everything else here follows from that.

Mirroring made bare issue numbers ambiguous. The fork numbers from 1 and
confluentinc reaches confluentinc#922, so the ranges overlap completely: of the 51
numbers cited across the files this touches, 48 exist in BOTH repos
meaning different things. #29 is our rebalance fix and
confluentinc#29 is an async-sending request; #114 is a docs PR and
confluentinc#114 is a GPG key issue. So a reference now names its repo
below #1000, and a CI gate enforces it on added lines.

The gate went through three designs, and the discarded two look
plausible enough to be worth recording. Comparing against "the fork is
at #N" raced - CI read 196 while #197 already existed. Checking
whether a number resolves here fails worse: `#200` resolves, to a fork
issue about ManagedTruth, while the author meant confluentinc#200,
shared-nothing architecture. A wrong reference that resolves is worse
than a broken one, because nothing looks amiss. The rule is textual, so
it makes no API calls and cannot race.

The qualifier names the owner rather than the role - confluentinc#857,
not "upstream confluentinc#857". "Upstream" describes a relationship and is not
stable: this repo is upstream to anyone who forks it. "Fork" is out for
the same reason.

Also swept every reference in the files touched here, fixed the source
comments behind the generated TODO index rather than the index, and
stopped the quarantine fixtures borrowing real PR numbers - #80 and #123
are live fork PRs, so the fixtures read as genuine references.

The map shrinks to match: upstream-map.yaml tracks upstream PRs only,
because issues now live in the mirror, and the manifest-driven backlink
tooling is retired - it commented one issue per map entry, and the map no
longer holds issues.

Two corrections the work surfaced: the sweep was reporting our own
backlink comments as upstream activity, hiding the two real replies among
all 78; and confluentinc#548 was recorded open when it merged in 2023 and
is already in this fork.

Remaining tree-wide references are deliberately out of scope, tracked in
docs/inflight/next-qualify-remaining-refs.md with the Java set already
classified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
astubbs added a commit that referenced this pull request Aug 6, 2026
…r repo

Mirrors all 78 open issues from confluentinc/parallel-consumer into this
fork (#44, #117-#195, label upstream-mirror), each
carrying a code-backed diagnosis, and each backlinked from its upstream
original while that is still possible - archival kills writes, not reads,
so the backlinks were the half with a deadline. Seven are closed against
a released version.

Everything else here follows from that.

Mirroring made bare issue numbers ambiguous. The fork numbers from 1 and
confluentinc reaches confluentinc#922, so the ranges overlap completely: of the 51
numbers cited across the files this touches, 48 exist in BOTH repos
meaning different things. #29 is our rebalance fix and
confluentinc#29 is an async-sending request; #114 is a docs PR and
confluentinc#114 is a GPG key issue. So a reference now names its repo
below #1000, and a CI gate enforces it on added lines.

The gate went through three designs, and the discarded two look
plausible enough to be worth recording. Comparing against "the fork is
at #N" raced - CI read 196 while #197 already existed. Checking
whether a number resolves here fails worse: `#200` resolves, to a fork
issue about ManagedTruth, while the author meant confluentinc#200,
shared-nothing architecture. A wrong reference that resolves is worse
than a broken one, because nothing looks amiss. The rule is textual, so
it makes no API calls and cannot race.

The qualifier names the owner rather than the role - confluentinc#857,
not "upstream confluentinc#857". "Upstream" describes a relationship and is not
stable: this repo is upstream to anyone who forks it. "Fork" is out for
the same reason.

Also swept every reference in the files touched here, fixed the source
comments behind the generated TODO index rather than the index, and
stopped the quarantine fixtures borrowing real PR numbers - #80 and #123
are live fork PRs, so the fixtures read as genuine references.

The map shrinks to match: upstream-map.yaml tracks upstream PRs only,
because issues now live in the mirror, and the manifest-driven backlink
tooling is retired - it commented one issue per map entry, and the map no
longer holds issues.

Two corrections the work surfaced: the sweep was reporting our own
backlink comments as upstream activity, hiding the two real replies among
all 78; and confluentinc#548 was recorded open when it merged in 2023 and
is already in this fork.

Remaining tree-wide references are deliberately out of scope, tracked in
docs/inflight/next-qualify-remaining-refs.md with the Java set already
classified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
astubbs added a commit that referenced this pull request Aug 6, 2026
…r repo

Mirrors all 78 open issues from confluentinc/parallel-consumer into this
fork (#44, #117-#195, label upstream-mirror), each
carrying a code-backed diagnosis, and each backlinked from its upstream
original while that is still possible - archival kills writes, not reads,
so the backlinks were the half with a deadline. Seven are closed against
a released version.

Everything else here follows from that.

Mirroring made bare issue numbers ambiguous. The fork numbers from 1 and
confluentinc reaches confluentinc#922, so the ranges overlap completely: of the 51
numbers cited across the files this touches, 48 exist in BOTH repos
meaning different things. #29 is our rebalance fix and
confluentinc#29 is an async-sending request; #114 is a docs PR and
confluentinc#114 is a GPG key issue. So a reference now names its repo
below #1000, and a CI gate enforces it on added lines.

The gate went through three designs, and the discarded two look
plausible enough to be worth recording. Comparing against "the fork is
at #N" raced - CI read 196 while #197 already existed. Checking
whether a number resolves here fails worse: `#200` resolves, to a fork
issue about ManagedTruth, while the author meant confluentinc#200,
shared-nothing architecture. A wrong reference that resolves is worse
than a broken one, because nothing looks amiss. The rule is textual, so
it makes no API calls and cannot race.

The qualifier names the owner rather than the role - confluentinc#857,
not "upstream confluentinc#857". "Upstream" describes a relationship and is not
stable: this repo is upstream to anyone who forks it. "Fork" is out for
the same reason.

Also swept every reference in the files touched here, fixed the source
comments behind the generated TODO index rather than the index, and
stopped the quarantine fixtures borrowing real PR numbers - #80 and #123
are live fork PRs, so the fixtures read as genuine references.

The map shrinks to match: upstream-map.yaml tracks upstream PRs only,
because issues now live in the mirror, and the manifest-driven backlink
tooling is retired - it commented one issue per map entry, and the map no
longer holds issues.

Two corrections the work surfaced: the sweep was reporting our own
backlink comments as upstream activity, hiding the two real replies among
all 78; and confluentinc#548 was recorded open when it merged in 2023 and
is already in this fork.

Remaining tree-wide references are deliberately out of scope, tracked in
docs/inflight/next-qualify-remaining-refs.md with the Java set already
classified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
astubbs added a commit that referenced this pull request Aug 6, 2026
…r repo

Mirrors all 78 open issues from confluentinc/parallel-consumer into this
fork (#44, #117-#195, label upstream-mirror), each
carrying a code-backed diagnosis, and each backlinked from its upstream
original while that is still possible - archival kills writes, not reads,
so the backlinks were the half with a deadline. Seven are closed against
a released version.

Everything else here follows from that.

Mirroring made bare issue numbers ambiguous. The fork numbers from 1 and
confluentinc reaches confluentinc#922, so the ranges overlap completely: of the 51
numbers cited across the files this touches, 48 exist in BOTH repos
meaning different things. #29 is our rebalance fix and
confluentinc#29 is an async-sending request; #114 is a docs PR and
confluentinc#114 is a GPG key issue. So a reference now names its repo
below #1000, and a CI gate enforces it on added lines.

The gate went through three designs, and the discarded two look
plausible enough to be worth recording. Comparing against "the fork is
at #N" raced - CI read 196 while #197 already existed. Checking
whether a number resolves here fails worse: `#200` resolves, to a fork
issue about ManagedTruth, while the author meant confluentinc#200,
shared-nothing architecture. A wrong reference that resolves is worse
than a broken one, because nothing looks amiss. The rule is textual, so
it makes no API calls and cannot race.

The qualifier names the owner rather than the role - confluentinc#857,
not "upstream confluentinc#857". "Upstream" describes a relationship and is not
stable: this repo is upstream to anyone who forks it. "Fork" is out for
the same reason.

Also swept every reference in the files touched here, fixed the source
comments behind the generated TODO index rather than the index, and
stopped the quarantine fixtures borrowing real PR numbers - #80 and #123
are live fork PRs, so the fixtures read as genuine references.

The map shrinks to match: upstream-map.yaml tracks upstream PRs only,
because issues now live in the mirror, and the manifest-driven backlink
tooling is retired - it commented one issue per map entry, and the map no
longer holds issues.

Two corrections the work surfaced: the sweep was reporting our own
backlink comments as upstream activity, hiding the two real replies among
all 78; and confluentinc#548 was recorded open when it merged in 2023 and
is already in this fork.

Remaining tree-wide references are deliberately out of scope, tracked in
docs/inflight/next-qualify-remaining-refs.md with the Java set already
classified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
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