Repository navigation
Conversation
The DLQ (confluentinc#310, mirrored as #149) is the fork's most-demanded missing feature, and until now its prior art lived scattered across two repos' issue trackers, five branches and a 2022 draft PR. This commit gathers it into a dated prior-art report in docs/plans/, so the requirements brainstorm that follows on this branch starts from evidence rather than memory. What the research established: exactly one implementation lineage exists - confluentinc#291 (terminal/retry exceptions, closed unmerged) and its DLQ extension confluentinc#366 = fork PR #8 (still open, branch features/retry-dlq). Only PCRetriableException ever reached master; there is no terminal failure state today and the README documents retry-forever. The report records the three draft-stage defects in #8's diff for whoever revives it, the demand ledger across both repos, and the adjacent decisions already queued to be settled with this work (retry-delay precedence, the inert maxFailureHistory option, the poisoned-transaction abort). Decision, overriding the "close or finish" instruction inherited from docs/inflight/pr-blockers-and-collisions.md: #8 stays open deliberately, referenced as the design artifact, to be consumed as the implementation PR once requirements settle. The inflight note and the upstream manifest's sweep-2023-retry-lifecycle entry are updated in this same commit to carry that decision. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AExKimYw9fKs2n389RmLE6
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
#313 now exists as the binder PR; the manifest's sweep-2023-retry-lifecycle entry and the prior-art report's status line name it, per the same-commit lifecycle rule (as close as the PR-then-number ordering allows). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AExKimYw9fKs2n389RmLE6
✅ Duplicate Code ReportTwo 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
No new clones introduced by this PR. ✅ jscpd (language-agnostic)
No new clones introduced by this PR. Powered by astubbs/duplicate-code-cross-check |
🧪🔒 Quarantine Lane Report
🔴 expected while the owner PR is open · 🟡🎲 flapper, pass proves nothing · 🚨 a deterministic quarantined test passing means its fix landed: delete its |
✅ SpotBugs ReportNo bugs found (new bugs only — baseline from base branch excluded). |
…the PR flag Two review corrections: - known-defects-cleared was never 'implemented' - it is being implemented, across many PRs, with done_when as the only finish line. New stage 'in-progress' says exactly that, so a multi-PR programme no longer has to borrow a single-artifact label. - stage_delivery was defined but set on only three entries, which made it read as commentary. It now has one rule and one source of truth: set whenever the stage's artifact rides an open PR, mirroring that PR's own GitHub state - draft or pending-merge. Applied everywhere the rule reaches: the Streams, Connect, web GUI, health-surface, proxy and docs-site-design artifacts are all open and marked ready (pending-merge); the DLQ requirements ride a draft (#313). Entries whose artifact landed on master, or spans many PRs, carry none - deliberately. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…f the GitHub flag The previous commit defined stage_delivery as mirroring the carrying PR's GitHub draft state. That was wrong twice over: the flag has not been used consistently here, so mirroring it records noise - and if it were consistent, the field would violate 'never write down what a command can answer'. The field earns its place precisely because it records what no command knows: whether the author believes the artifact is ready to land. Reassigned on that judgment: the proxy sidecar (#293) and the docs-site design (#316) are pending-merge; Streams (#271), Connect (#269), the web GUI (#268, blocked on #267), the health surface (#226) and the DLQ requirements (#313) are drafts still being worked. The note records the direction of travel: PRs the data calls drafts ought to become actual GitHub drafts over time, so the flag regains meaning. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…st move its entry The stages block says the PR advancing a track updates its entry's stage in the same change. Until now nothing caught a miss, which is the exact failure mode docs/agent-harness.md warns about: a rule that is merely available rots the field it protects. Three layers, mirroring the issue-ref gate's shape: - roadmap-stage-gate.js (+ 10 unit tests, run first in CI): reads the BASE branch's roadmap, finds entries whose pull_request names this PR, and requires the PR to touch docs/data/roadmap.yaml or opt out with 'roadmap-stage: N/A - <reason>' in its body. Base, not head, deliberately - master is the authority on which entries claim a PR. Dependency-free narrow parse, pinned by a test against the real file so a roadmap rewrite fails the test rather than silently blinding the gate. - A merge-checklist line, so the rule also arrives in every merge-prep prompt via the existing injection hook - covering entries the gate cannot reach (tracking issue only, no pull_request). - pull_request fields added to the three carrying entries that lacked one (health-check-surface -> #226, dead-letter-queue -> #313, docs-site -> #316), so the gate reaches all seven carriers. actionlint was not runnable locally (not in mise); the workflow YAML parses, and CI's own lint covers the rest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Process note: this PR is the carrier of the roadmap entry |
Both earn a note on evidence rather than on a branch existing, and both are one unreferenced commit away from being lost. Shared collections across the poll/control boundary. Master still has PCMetrics.registeredMeters as a plain ArrayList, appended per partition inside a rebalance callback and walked-then-cleared in close(); RemovedPartitionState still shares a mutable static TreeSet across every instance in the JVM. Filed as a stall, not a lost metric: the ConcurrentModificationException propagates into doClose's finally and skips the state = CLOSED transition on the next line, so the consumer never departs and the group waits out its session timeout. fix/concurrent-collection-sweep fixes six such sites with a reproduction and a regression test and has no PR - and it touches the files #57 declares it owns, so the sequencing is an open call. The Class 2 chaos RED. test-chaos-phase2.md still says "widen it if it ever flakes"; it flaked, and a seed replay on an uncontended box (154.5s to 121.3s, zero violations) shows the RED was runner contention between Performance and Chaos Pain Suite, not a product stall. Tagged misdirection because that is precisely what it cost: a signature that reads as the exact Class 2 occurrence the hunt wants. The owning note gets a one-line pointer rather than a second copy of the finding. Not written, and why: #315, #313 and #303 are open PRs whose diffs carry their own context; docs/router-ownership-pass, docs/mirror-2023-admin-sweep, docs/plan-package-rename-dry-run and docs/v6-release-ideas-old have all merged or been superseded on master; and docs/297-review-route-and-timing-evidence is superseded by better material already there. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019infZnCpPvX8c6QWFC1uLC
Serves #149 (mirror of confluentinc#310).
Description
Binder PR for the dead-letter-queue requirements brainstorm - the most-demanded missing feature. It anchors, in order of arrival:
docs/plans/2026-08-18-001-investigate-dlq-prior-art-report.md- the demand ledger across both repos, the single 2022 implementation lineage (feature: #242 Explicit terminal and retry exceptions for cleaner logging and poison pills confluentinc/parallel-consumer#291 → Dead letter queue (DLQ) as option for retry expiration confluentinc/parallel-consumer#366 = START: DLQ draft #8) and its three draft-stage defects, what master does today when a record fails, and the adjacent decisions queued to be settled with this work.Deliberate decision carried by this PR: #8 ("START: DLQ draft", 2022) stays open as the design artifact and is intended to be consumed as the implementation PR once requirements settle - superseding the "close or finish" note in
docs/inflight/pr-blockers-and-collisions.md, which this PR updates. The upstream manifest'ssweep-2023-retry-lifecycleentry now records the brainstorm as the fork's live work on this front.No production code changes.
Checklist
docs/features/entry belongs to the implementation PR (START: DLQ draft #8's revival)