Skip to content

docs(ideation): actor-collection revival - six ranked, evidence-verified directions - #310

Merged
astubbs merged 5 commits into
masterfrom
docs/actor-revival-ideation
Aug 18, 2026
Merged

astubbs merged 5 commits into
masterfrom
docs/actor-revival-ideation

Conversation

@astubbs

@astubbs astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Description

Adds the ideation deliverable for reviving the 2022 micro-actor branch family (manifest entry sweep-2023-actor-ipc, registered by #305), plus the docs/inflight/next-actor-revival.md pointer that makes it discoverable from the inflight directory.

The doc (docs/ideation/2026-08-17-actor-collection-revival-ideation.html, self-contained HTML) holds six survivors from ~55 generated candidates, each with a verified basis - direct quotes spot-checked against the repo and the 2022 branch trees by an independent verification pass - confidence/complexity, downsides, and a rejection table recording what was cut and why (including one candidate killed because its cited evidence was factually backwards, and one whose headline number was a 4x diffstat misread).

Ranked survivors:

  1. One-day falsification pipeline - rename-script the 4 framework files, compile standalone, conformance-test the documented FILO invariant; converts the two standing editorial verdicts on this family from opinion into measurement
  2. Un-bundle the family - async-produce (fixes #29: Faster record producing - removes blocks on Future and processes results asynchronously confluentinc/parallel-consumer#356) is Group B "throughput-critical", not architecture
  3. Controlled experiment on the Paused consumption across multiple consumers confluentinc/parallel-consumer#857 commit path - mailbox arm vs fix(core) confluentinc#857: the revoke path declines the commit lock instead of blocking on it #29's lock arm, judged by the recorded chaos replay seeds
  4. Accession & graded register (manifest half already landed via docs(upstream): register the actor-IPC and thread-model branch families, back-fill five entries, preserve ten upstream branch tips #305)
  5. Skeleton-first strangler - land the six thread-ownership interfaces as a pure refactor; the mailbox becomes a per-seam swap
  6. Concurrency mass budget - ArchUnit ratchet on primitive counts

The inflight note states the open decision: top pick is 1; the real fork in the road is 3 vs 5.

Related: #305 (tracking registration this doc references - no merge dependency, no file overlap).

Checklist

  • Docs updated
  • User-facing feature documentation data added under docs/features/ - N/A - internal planning/ideation doc, not a product feature
  • Tests added/updated - N/A - documentation only, no code changed
  • Title & body reflect the final content of this PR

🤖 Generated with Claude Code

https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn

astubbs and others added 2 commits August 17, 2026 23:51
…ied directions

Adds the 2026-08-17 ideation deliverable for reviving the 2022 micro-actor
branch family (manifest: sweep-2023-actor-ipc), plus the inflight pointer
that makes it discoverable from docs/inflight/.

The doc holds six survivors from ~55 generated candidates, each with a
verified basis (direct quotes spot-checked against the repo and the 2022
branch trees by an independent verification pass), confidence/complexity,
downsides, and a rejection table recording what was cut and why - including
one candidate killed because its cited evidence was factually backwards, and
one whose headline number was a 4x diffstat misread.

Top pick: a one-day falsification pipeline (rename-script the 4 framework
files, compile standalone, conformance-test the documented FILO invariant)
that converts the two standing editorial verdicts on this family from
opinion into measurement before any architectural decision is made.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
…eation doc

bin/check-issue-refs.sh found 23 bare refs the previous commit missed - the
pre-commit gate run was piped through tail, which both truncated the listing
to its last two lines and swallowed the non-zero exit. All refs now carry
their repo (astubbs# / confluentinc#); gate green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QqHpNSXC39ANv9kG1ZvUzn
@chatgpt-codex-connector

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

Dependency Review

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

Scanned Files

None

@github-actions

Copy link
Copy Markdown

✅ Duplicate Code Report

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

✅ PMD CPD

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

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

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

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Aug 18, 2026 •

Copy link
Copy Markdown

📌 Duplicate code detection tool report

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@github-actions

Copy link
Copy Markdown

✅ SpotBugs Report

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

@github-actions

Copy link
Copy Markdown

🧪🔒 Quarantine Lane Report

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

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

@astubbs

astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner Author

@claude review this

@claude

claude Bot commented Aug 18, 2026 •

Copy link
Copy Markdown

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


Review

  • Gather context (PR diff, changed files)
  • Read docs/ideation/2026-08-17-actor-collection-revival-ideation.html
  • Read docs/inflight/next-actor-revival.md
  • Check docs/inflight/AGENTS.md rules and cross-reference manifest entry sweep-2023-actor-ipc
  • Verify cited issue/PR references
  • Post review feedback

This is a docs-only ideation deliverable (self-contained HTML + an inflight pointer note), so I reviewed it as a documentation/content change: structural fit with the repo's conventions, and accuracy of the claims and citations against the actual repo state.

Blocking: unqualified issue reference will fail the PR Checklist gate

docs/ideation/2026-08-17-actor-collection-revival-ideation.html, idea 5's "Basis" field:

external: strangler-fig migration; libuv/Win32 message pump; Seastar/Redis single-writer ownership for the shard-seam variant. Delivers the C1/#488 God-class decomposition as a side effect.

#488 is bare - no astubbs#/confluentinc# prefix. Per docs/issue-references.md, QUALIFY_BELOW in .github/scripts/issue-ref-gate.js is 1000, so any reference below that must name its repo; C1/#488 doesn't match the gate's "fully qualified owner/repo#N" strip pattern either (that pattern requires a word between the / and the #), so it will read as a bare ref. Since this is a newly added file, every line counts as "added," and bin/check-issue-refs.sh / the PR Checklist gate should flag this on push. Every other issue/PR reference in the doc (and in docs/inflight/next-actor-revival.md) is correctly qualified (astubbs#29, confluentinc#356, confluentinc#200, etc.) - this looks like the one miss.

Fix: resolve which repo #488 actually refers to and qualify it, e.g. C1/astubbs#488 or C1/confluentinc#488.

Fix this →

Verified accurate (spot-checked against repo state)

  • docs/inflight/next-actor-revival.md correctly uses the next- prefix per docs/inflight/AGENTS.md ("candidate work, ranked"), is one item per file, and every reference in it is repo-qualified.
  • Manifest entry sweep-2023-actor-ipc does exist on origin/master (landed via docs(upstream): register the actor-IPC and thread-model branch families, back-fill five entries, preserve ten upstream branch tips #305, commit 4591678) with the content the PR/doc describes - it's just not visible on this branch's own checkout of upstream-map.yaml since this branch predates that merge. Not a defect, just noting why a local diff of that file looks empty.
  • Idea 4's claim that poller-bus-actor is "currently missing" from docs/refactoring.md's Actor/IPC branch list checks out - docs/refactoring.md:141-151 lists lambda-actor-bus, commit-command-actor, async-process-send-results-using-actor, transactions-dont-block, scheduled-commit, actor-scheduled, remove-commit-queue, but not poller-bus-actor.
  • Rank order and one-line summaries in the inflight note match the six article.idea entries in the HTML doc.

Minor, non-blocking

  • The footer's Composed ... (evidence dossier: /tmp/compound-engineering-501/ce-ideate/a7f3c091/evidence-actor-collection.md) points at an ephemeral local path nobody else can resolve. It reads as a provenance stamp rather than something meant to be followed, so probably fine to leave as-is, but worth a second look if the intent was for a reader to actually locate that dossier.

No code changes, no tests affected - the "N/A" checklist entries are appropriate for a pure ideation/planning doc. All automated checks (duplicate-code, SpotBugs, dependency review, quarantine lane) are unrelated to this docs-only change and are green/inapplicable.

astubbs added a commit that referenced this pull request Aug 18, 2026
…nding

`next-actor-revival.md` and `2026-08-17-actor-collection-revival-ideation.html` are carried by
#310, open and mergeable off `docs/actor-revival-ideation`. They are not stranded, so this
sweep has no business copying them - the rule this branch applies everywhere else is that a doc
carried by an open PR lands when that PR does.

They were classified stranded because the open-PR snapshot this sweep triaged against was taken
before #310 existed. The verdict was right when it was made and wrong by the time the branch
was pushed, which is the hazard of triaging a moving set: the survey is a photograph, and this one
aged in under an hour.

Re-checked every other extracted file against the current open PRs. The only remaining overlaps are
#306 and #268, both deliberate: #306 is not scheduled to merge until after v6,
so its followups note and the learnings beside it would stay invisible until then. Nothing else in
this branch is duplicated, and nothing extracted here has landed on master in the meantime.
…phemeral dossier path from the footer

The review flagged C1/#488 as a bare ref. Mechanically it was not one - the
gate's lookbehind deliberately skips /#N, which is why local runs were green
- but the convention exists for human readers, and a bare #488 in this repo
is a coin flip. Also removed the footer's /tmp evidence-dossier path, which
no other reader could ever resolve.

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

astubbs commented Aug 18, 2026

Copy link
Copy Markdown
Owner Author

Response to the review:

  • Bare C1/#488 - fixed in 0cf8df2 as C1/confluentinc#488. One correction to the mechanical half of the finding, for the record: the gate would NOT have flagged this - .github/scripts/issue-ref-gate.js's ref pattern uses a lookbehind that deliberately skips #N preceded by / (so URL path segments never false-positive), which is why bin/check-issue-refs.sh and the PR Checklist gate were green on this branch throughout. Verified by running suspectRefs on the exact line: C1/#488 -> no hit, plain #488 -> hit. The convention violation for the human reader was real though - a bare 488 in this repo is a coin flip - so fixed regardless.
  • Footer's /tmp dossier path - removed in the same commit. It was a provenance stamp, but you're right that a path nobody can resolve carries no value; the composition line now stands on the session-focus description alone.

Everything else in the review needed no action (the manifest-entry timing note and the poller-bus-actor claim verification both confirm the doc's accuracy).

@astubbs astubbs left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

lgtm

@astubbs astubbs left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

lgtm

…hing else

Extends .claude/hooks/check-squash-subject.sh: a gh pr merge --squash whose
body is overridden (--body/-b/--body-file/-F) is refused unless the body
carries a line-start Co-authored-by trailer, and refused if it carries a
Claude-Session line - master squash commits hold exactly one sign-off and no
session link, and the sign-off kept being remembered by convention rather
than enforcement. An unreadable --body-file fails open because gh itself
then fails loudly. docs/merge-checklist.md now states both halves for anyone
merging by hand; harness gains eight cases including trailer-must-start-a-
line, verified red against the pre-change hook.

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 18, 2026
…es, and the batching defect the recovery found (#312)

Committed planning documents are project content even when their implementation does not exist yet.
Knowledge left on a branch is invisible to any agent that does not already know the branch exists,
and the branch can vanish: while this sweep was being assembled, docs/proxy-http-ideation was merged
into #293 and deleted, and its note did not travel with it. That note is recovered here from
the commit object alone.

Every remote branch was surveyed against master's current tree rather than merge-base diffs, which
over-report. Most doc paths that exist on a branch and not on master are carried by a branch with an
open PR and land when it does; those were left alone. What remained was triaged by reading each
note, not by bucketing it on its filename prefix - which would have been wrong in both directions.

Brought over: the 2026-08-17 ideation wave, five notes plus the three HTML deliverables they only
point at, since the notes are one-page summaries and the substance is in the HTML; one open design
proposal, recoverable producer fencing (#225); twelve docs/solutions/ learnings, whose home is
master by definition, adding the architecture-patterns, best-practices, runtime-errors and
logic-errors categories; and the chaos pain suite design plan, which master's shipped phase-1 plan
names in its own origin: frontmatter and cannot resolve, and which is the only definition of phases 2
and 3 that docs/inflight/test-chaos-phase2.md tracks as open.

Also brought over, as a deliberate exception to the rule above: six files from #306, which is
not scheduled to merge until after v6. One of them records a project-wide gap that would otherwise
stay invisible through the release it could affect - there is no japicmp or revapi equivalent, so a
source- or binary-breaking public API change rides through CI unflagged.

Left behind as spent rather than stranded: the whole v6 documentation-ideas cluster, whose output
already shipped as docs/data/roadmap.yaml, docs/data/module-maturity.yaml and the docs/features/
catalogue; the package-rename dress rehearsal, since the real rename merged as #294; and a
stale outside-collaborator grant, since the grant is gone and its branch is deleted. Left with their
branches: pr- notes, which the PR that resolves them tracks, and the ks-streams unit plans, which
document code that exists on those branches.

2026-08-14-language-proxy-interaction-model-ideation.html is deliberately not taken. Two sessions
extended it in parallel; #293 has since absorbed the HTTP half and carries none of the
polyglot half, and its copy is still growing. A master copy would fork the document a third time.
The note recording the collision is here instead, and the reconciliation belongs on that PR.

A survey is a photograph, and this one aged inside the hour. The actor-revival pair was triaged as
stranded and then removed again once #310 opened to land it. Every remaining file was
re-checked against the open PRs at push time rather than at survey time.

The batching ideation note carried an unreported defect, confirmed against master and filed as
#311, recorded as two notes because docs/inflight/ is one item per file. The arithmetic one
needs no caller error: calculateQuantityToRequest rounds up with target - modulo where filling the
tail batch needs batchSize - modulo, and the variable is named extraToFillBatch. target is always a
multiple of batchSize, so it fires whenever current is not, and in-flight settles near twice the
configured target. The second-order effect is the one worth keeping: the inflated delta makes
lastWorkRequestWasFulfilled false, which gates the adaptive load factor, so under batching the load
factor stops stepping up precisely when the pool queue is low. The second note covers an absent
bound on batchSize, where zero is silent on a default configuration, throws from
PCModule.initDynamicLoadFactor() when a message buffer size is set, and NPEs when null. Default
configurations are unaffected, batchSize defaults to 1, and there is no data-safety consequence.
Searching the class found PCModule to be the only other modulo in main code, and its ceiling
division is correct, so the arithmetic defect is a single site rather than a pattern.

Extracted docs predate the issue-reference gate, so bare numbers below #1000 were qualified against
the repo they actually mean. One document could not be: the write-up of a sweep that once rewrote a
verbatim log line into a string no program ever emitted. Its remaining bare refs are the gate
matcher's quoted inputs beside its quoted outputs, and qualifying them rewrites the demonstration
into a false one. It carries #307's block opt-out markers around those blocks, which sit
outside the quoted material so every quoted line stays byte-identical.

That document is also the one file amended rather than copied. Its own recommended remedy is an
inline code span, and applying it here reproduced the failure it records, because backticks are
literal inside a code block. It now carries that as guidance item 8, recommending the block markers
as the general answer, with a forward reference on item 2. The correction came out of this branch's
own attempt to follow the document, so deferring it would have left the next reader to repeat it.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@astubbs
astubbs merged commit 16a4edc into master Aug 18, 2026
32 of 33 checks passed
@astubbs
astubbs deleted the docs/actor-revival-ideation branch August 18, 2026 03:02
astubbs added a commit that referenced this pull request Aug 18, 2026
…s - the NO_PROGRESS arm, twice in one night

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

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fq6AcSoq6nMqbRHQxw25wx
astubbs added a commit that referenced this pull request Aug 18, 2026
…ions

Master landed #310's ranked revival of the 2022 micro-actor family the
same day this branch wrote up the interrupt-overload finding, and the two were
not pointed at each other.

Forward: this branch's design read as greenfield - "add a nudge variant" - when
a framework already exists, 537 lines in 4 files coupled to PC by one 16-line
marker interface, with six ranked directions for reviving it. Both the solution
write-up and the contract-debts note now say to read next-actor-revival.md
first, and name survivor 5 (skeleton-first strangler) as the shape a
payload-free nudge should land in rather than a rewrite.

Back: survivor 6 is a concurrency mass budget - an ArchUnit ratchet on
primitive counts, conversions graded on locks removed - and this branch has
already taken a reading it can start from. Four meanings on one bit, four
hand-clears, one of which does not clear and only warns that it cannot tell
which meaning it got. That is a mass measurement with a documented failure
behind it, which is more useful to a ratchet than a count taken cold.

Also merges master: #310 and, in the previous merge, #304,
#305, #307, #286 and #312.

Core unit suite: Tests run 372, Failures 0, Errors 0, BUILD SUCCESS.

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

Four debts #209 surfaced and did not fix, each a contract currently
enforced by a reader's attention, all in one class - ranked by how likely the
next person is to trip over them.

The first is the one that bit this branch. The control thread is signalled by
interrupting it, and that one JVM bit carries four unrelated meanings: wake up,
stop blocking on the mailbox, shut down, and "your next commit-lock acquisition
will throw". A receiver cannot tell which it got, so the class has accumulated
four hand-clears instead of a fix - one of which does not clear at all and only
warns that it cannot tell.

It recurred here in the most ordinary way available: adding a state transition
inherited a shutdown hazard from a wakeup. No test could catch it, and the
assertion written for it passed under mutation and had to be deleted. Review
then found the follow-on, which is better evidence than the defect: the clear
CANNOT be made to hold, because any worker finishing work re-arms the flag
through notifySomethingToDo, and the guard that would suppress that is not set
until later in the close. A defensive clear is a local fix to a shared channel.

Written up as a solution rather than a code comment because the transferable
part is a counting rule: when the same clear, reset or re-check appears three
or more times for one piece of state, the state is overloaded and the next
feature adds a fourth. The clears are not the bug being fixed; they are the bug
being paid for, repeatedly.

The fix is designed and deliberately not built - an interrupt carries no
meaning at all, messages carry it, coalescing answers the flooding, and the
ordering trap is clearing before draining rather than after. It is thread-model
work and belongs with the God-class decomposition, so it is earmarked as a
concrete first slice of the existing Actor / IPC message bus entry rather than
started here. Both directions are linked: #310's revival note gains the
measurement its concurrency-mass-budget survivor proposes taking, and this
gains the 537-line framework that already exists so nobody rebuilds it.

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

Four debts #209 surfaced and did not fix, each a contract currently
enforced by a reader's attention, all in one class - ranked by how likely the
next person is to trip over them.

The first is the one that bit this branch. The control thread is signalled by
interrupting it, and that one JVM bit carries four unrelated meanings: wake up,
stop blocking on the mailbox, shut down, and "your next commit-lock acquisition
will throw". A receiver cannot tell which it got, so the class has accumulated
four hand-clears instead of a fix - one of which does not clear at all and only
warns that it cannot tell.

It recurred here in the most ordinary way available: adding a state transition
inherited a shutdown hazard from a wakeup. No test could catch it, and the
assertion written for it passed under mutation and had to be deleted. Review
then found the follow-on, which is better evidence than the defect: the clear
CANNOT be made to hold, because any worker finishing work re-arms the flag
through notifySomethingToDo, and the guard that would suppress that is not set
until later in the close. A defensive clear is a local fix to a shared channel.

Written up as a solution rather than a code comment because the transferable
part is a counting rule: when the same clear, reset or re-check appears three
or more times for one piece of state, the state is overloaded and the next
feature adds a fourth. The clears are not the bug being fixed; they are the bug
being paid for, repeatedly.

The fix is designed and deliberately not built - an interrupt carries no
meaning at all, messages carry it, coalescing answers the flooding, and the
ordering trap is clearing before draining rather than after. It is thread-model
work and belongs with the God-class decomposition, so it is earmarked as a
concrete first slice of the existing Actor / IPC message bus entry rather than
started here. Both directions are linked: #310's revival note gains the
measurement its concurrency-mass-budget survivor proposes taking, and this
gains the 537-line framework that already exists so nobody rebuilds it.

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

Four debts #209 surfaced and did not fix, each a contract currently
enforced by a reader's attention, all in one class - ranked by how likely the
next person is to trip over them.

The first is the one that bit this branch. The control thread is signalled by
interrupting it, and that one JVM bit carries four unrelated meanings: wake up,
stop blocking on the mailbox, shut down, and "your next commit-lock acquisition
will throw". A receiver cannot tell which it got, so the class has accumulated
four hand-clears instead of a fix - one of which does not clear at all and only
warns that it cannot tell.

It recurred here in the most ordinary way available: adding a state transition
inherited a shutdown hazard from a wakeup. No test could catch it, and the
assertion written for it passed under mutation and had to be deleted. Review
then found the follow-on, which is better evidence than the defect: the clear
CANNOT be made to hold, because another thread can re-arm the flag through
notifySomethingToDo in the gap, and the guard that would suppress that is not
set until later in the close. Not a worker thread - addToMailbox only enqueues;
the re-armers are the rebalance listener, a close(DRAIN), and the public
requestCommitAsap and resumeIfPaused, and since notifySomethingToDo is itself
public that list is open-ended. A defensive clear is a local fix to a shared
channel.

Written up as a solution rather than a code comment because the transferable
part is a counting rule: when the same clear, reset or re-check appears three
or more times for one piece of state, the state is overloaded and the next
feature adds a fourth. The clears are not the bug being fixed; they are the bug
being paid for, repeatedly.

The fix is designed and deliberately not built - an interrupt carries no
meaning at all, messages carry it, coalescing answers the flooding, and the
ordering trap is clearing before draining rather than after. It is thread-model
work and belongs with the God-class decomposition, so it is earmarked as a
concrete first slice of the existing Actor / IPC message bus entry rather than
started here. Both directions are linked: #310's revival note gains the
measurement its concurrency-mass-budget survivor proposes taking, and this
gains the 537-line framework that already exists so nobody rebuilds it.

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

Four debts #209 surfaced and did not fix, each a contract currently
enforced by a reader's attention, all in one class - ranked by how likely the
next person is to trip over them.

The first is the one that bit this branch. The control thread is signalled by
interrupting it, and that one JVM bit carries four unrelated meanings: wake up,
stop blocking on the mailbox, shut down, and "your next commit-lock acquisition
will throw". A receiver cannot tell which it got, so the class has accumulated
four hand-clears instead of a fix - one of which does not clear at all and only
warns that it cannot tell.

It recurred here in the most ordinary way available: adding a state transition
inherited a shutdown hazard from a wakeup. No test could catch it, and the
assertion written for it passed under mutation and had to be deleted. Review
then found the follow-on, which is better evidence than the defect: the clear
CANNOT be made to hold, because another thread can re-arm the flag through
notifySomethingToDo in the gap, and the guard that would suppress that is not
set until later in the close. Not a worker thread - addToMailbox only enqueues;
nearly everything else is: every state transition calls notifySomethingToDo,
both forms of close() reach it, the rebalance listener reaches it from the
broker poll thread, and it is public. The write-up enumerated that set three
times and was wrong three times - naming worker threads, then omitting
close(DRAIN), then omitting plain close() - so it now states the rule and keeps
no list. That is the thesis as a fact about the documentation: a channel with no
owner has no enumerable set of senders. A defensive clear is a local fix to a
shared channel.

Written up as a solution rather than a code comment because the transferable
part is a counting rule: when the same clear, reset or re-check appears three
or more times for one piece of state, the state is overloaded and the next
feature adds a fourth. The clears are not the bug being fixed; they are the bug
being paid for, repeatedly.

The fix is designed and deliberately not built - an interrupt carries no
meaning at all, messages carry it, coalescing answers the flooding, and the
ordering trap is clearing before draining rather than after. It is thread-model
work and belongs with the God-class decomposition, so it is earmarked as a
concrete first slice of the existing Actor / IPC message bus entry rather than
started here. Both directions are linked: #310's revival note gains the
measurement its concurrency-mass-budget survivor proposes taking, and this
gains the 537-line framework that already exists so nobody rebuilds it.

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

Four debts #209 surfaced and did not fix, each a contract currently
enforced by a reader's attention, all in one class - ranked by how likely the
next person is to trip over them.

The first is the one that bit this branch. The control thread is signalled by
interrupting it, and that one JVM bit carries four unrelated meanings: wake up,
stop blocking on the mailbox, shut down, and "your next commit-lock acquisition
will throw". A receiver cannot tell which it got, so the class has accumulated
four hand-clears instead of a fix - one of which does not clear at all and only
warns that it cannot tell.

It recurred here in the most ordinary way available: adding a state transition
inherited a shutdown hazard from a wakeup. No test could catch it, and the
assertion written for it passed under mutation and had to be deleted. Review
then found the follow-on, which is better evidence than the defect: the clear
CANNOT be made to hold, because another thread can re-arm the flag through
notifySomethingToDo in the gap, and the guard that would suppress that is not
set until later in the close. Not a worker thread - addToMailbox only enqueues;
nearly everything else is: every state transition calls notifySomethingToDo,
both forms of close() reach it, the rebalance listener reaches it from the
broker poll thread, and it is public. The write-up enumerated that set three
times and was wrong three times - naming worker threads, then omitting
close(DRAIN), then omitting plain close() - so it now states the rule and keeps
no list. That is the thesis as a fact about the documentation: a channel with no
owner has no enumerable set of senders. A defensive clear is a local fix to a
shared channel.

Written up as a solution rather than a code comment because the transferable
part is a counting rule: when the same clear, reset or re-check appears three
or more times for one piece of state, the state is overloaded and the next
feature adds a fourth. The clears are not the bug being fixed; they are the bug
being paid for, repeatedly.

The fix is designed and deliberately not built - an interrupt carries no
meaning at all, messages carry it, coalescing answers the flooding, and the
ordering trap is clearing before draining rather than after. It is thread-model
work and belongs with the God-class decomposition, so it is earmarked as a
concrete first slice of the existing Actor / IPC message bus entry rather than
started here. Both directions are linked: #310's revival note gains the
measurement its concurrency-mass-budget survivor proposes taking, and this
gains the 537-line framework that already exists so nobody rebuilds it.

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