Current score → target
Unit/integration/e2e tests: 5/5 coverage but a proven resilience blind spot → closed.
Defect class prevented
Message-retry misconfiguration: poison messages retrying forever, messages never reaching the failure transport (DLQ), silent message loss.
Evidence
Proposed fix
One deterministic PHPUnit Integration test:
public function testPoisonMessageReachesFailureTransportWithinRetryBudget(): void
{
$this->bus->dispatch(new AlwaysFailingTestMessage());
$this->processTransport('async', maxIterations: 10);
self::assertSame(0, $this->transportMessageCount('async'), 'message must not loop forever');
self::assertSame(1, $this->transportMessageCount('failed'), 'message must land in DLQ');
self::assertLessThanOrEqual(3, $this->handlerSpy->attempts, 'retry budget respected');
}
Runs in the existing Integration suite (already blocking on every PR) — no new workflow.
Effort
M
Acceptance criteria
Cross-references: #274, #284, #316.
Filed by an automated CI/CD verification-coverage audit (OpenSSF Scorecard baseline: aggregate 6.0/10, local mode — SAST 0, Fuzzing 0, Token-Permissions 0, Pinned-Dependencies 5, Vulnerabilities 4). Audit method: inventory → gap analysis → git-history evidence mining → 3-iteration adversarial critique loop.
Generated by Claude Code
Current score → target
Unit/integration/e2e tests: 5/5 coverage but a proven resilience blind spot → closed.
Defect class prevented
Message-retry misconfiguration: poison messages retrying forever, messages never reaching the failure transport (DLQ), silent message loss.
Evidence
12f6d60:InfiniteRetryStrategy::isRetryable()returnedtrueunconditionally → poison messages retried forever with no DLQ routing. The fix shipped without a regression test — nothing prevents recurrence.Proposed fix
One deterministic PHPUnit Integration test:
Runs in the existing Integration suite (already blocking on every PR) — no new workflow.
Effort
M
Acceptance criteria
12f6d60(restoring the infinite-retry strategy) makes the test failCross-references: #274, #284, #316.
Filed by an automated CI/CD verification-coverage audit (OpenSSF Scorecard baseline: aggregate 6.0/10, local mode — SAST 0, Fuzzing 0, Token-Permissions 0, Pinned-Dependencies 5, Vulnerabilities 4). Audit method: inventory → gap analysis → git-history evidence mining → 3-iteration adversarial critique loop.
Generated by Claude Code