test(outbox): skip OutboxPublisherIT without Docker to fix chronic red CI (#332, #20) #21

Merged
hibryda merged 4 commits from fix/ci-it-disabled-without-docker-332 into main 2026-05-31 18:57:48 +02:00
Owner

Header

Project: im2be-platform-libs · Module: outbox-publisher (test) · Issue: #20 (chronic red CI) · Type: test/ci

TL;DR

RED→GREEN@Testcontainers(disabledWithoutDocker = true) on OutboxPublisherIT so the IT skips (visibly, not errors) when the runner job-container has no Docker, while still running wherever Docker is present. This makes mvn install succeed on the runner → first green CI on this repo, without losing local IT coverage.

Summary

One-line test-annotation change. The PR job runs inside the java17/maven-node-ci container with no Docker socket, so the Testcontainers IT (postgres:15-alpine + @EmbeddedKafka) errored → mvn install red on every PR (#15/#16/#18/#19 all merged green-locally / red-CI). The Testcontainers JUnit ExecutionCondition evaluates disabledWithoutDocker before the @Container starts, so the class is cleanly skipped (no error) when Docker is absent. Verified locally (Docker present): OutboxPublisherIT 4/4 run (not skipped), full module green, 0 warnings.

Findings / Changes

# File Change
1 outbox-publisher/.../OutboxPublisherIT.java @Testcontainers@Testcontainers(disabledWithoutDocker = true) + a comment citing #20.

Verdict

READY — fixes the chronic red CI (option C of #20). This PR's own mvn install on the runner should report success (IT skipped, no Docker). Option A (mount the runner's Docker socket for real CI IT coverage) remains operator-owned in #20.

Risk indicators

  • Test-only change; no production code, no API, no migration, no dependency change.
  • Coverage: the IT still runs in the local dev loop and on any Docker-enabled runner — only the false-red on a Docker-less runner is removed.

im2be-platform-libs • test/ci • #332#20 • files=1 • build=SUCCESS warnings=0 IT=4/4-run-locally • 2026-05-31

## Header **Project:** im2be-platform-libs · **Module:** outbox-publisher (test) · **Issue:** #20 (chronic red CI) · **Type:** test/ci ## TL;DR `RED→GREEN` — `@Testcontainers(disabledWithoutDocker = true)` on `OutboxPublisherIT` so the IT **skips** (visibly, not errors) when the runner job-container has no Docker, while still **running** wherever Docker is present. This makes `mvn install` succeed on the runner → first green CI on this repo, without losing local IT coverage. ## Summary One-line test-annotation change. The PR job runs inside the `java17`/`maven-node-ci` container with no Docker socket, so the Testcontainers IT (postgres:15-alpine + `@EmbeddedKafka`) errored → `mvn install` red on every PR (#15/#16/#18/#19 all merged green-locally / red-CI). The Testcontainers JUnit `ExecutionCondition` evaluates `disabledWithoutDocker` **before** the `@Container` starts, so the class is cleanly skipped (no error) when Docker is absent. Verified locally (Docker present): `OutboxPublisherIT` 4/4 **run** (not skipped), full module green, 0 warnings. ## Findings / Changes | # | File | Change | |---|------|--------| | 1 | `outbox-publisher/.../OutboxPublisherIT.java` | `@Testcontainers` → `@Testcontainers(disabledWithoutDocker = true)` + a comment citing #20. | ## Verdict `READY` — fixes the chronic red CI (option C of #20). This PR's own `mvn install` on the runner should report **success** (IT skipped, no Docker). Option A (mount the runner's Docker socket for real CI IT coverage) remains operator-owned in #20. ## Risk indicators - Test-only change; no production code, no API, no migration, no dependency change. - Coverage: the IT still runs in the local dev loop and on any Docker-enabled runner — only the false-red on a Docker-less runner is removed. ## Footer im2be-platform-libs • test/ci • #332 • #20 • files=1 • build=SUCCESS warnings=0 IT=4/4-run-locally • 2026-05-31
test(outbox): skip OutboxPublisherIT without Docker to fix chronic red CI (#332)
Some checks failed
im2be-platform-libs CI / mvn install (pull_request) Failing after 1m16s
im2be-platform-libs CI / mvn verify (main only) (pull_request) Has been skipped
400fe68439
The `mvn install` PR job runs inside the Forgejo runner's job-container, which
has no Docker daemon, so this Testcontainers IT (postgres:15-alpine +
@EmbeddedKafka) errored and turned im2be-platform-libs CI red on every PR
(#15/#16/#18/#19 all merged green-locally / red-CI). Environmental, not a code
failure.

`@Testcontainers(disabledWithoutDocker = true)` makes JUnit SKIP the class
(visible, via the Testcontainers ExecutionCondition — evaluated before the
@Container starts, so no error) when no Docker daemon is reachable, and RUN it
wherever Docker IS present (local dev loop; a Docker-enabled runner once
issue #20 option A lands). Coverage preserved; the skip is explicit, never a
silent red.

Tracked: Forgejo affinity-intelligence-rework/im2be-platform-libs#20 (option C
here; option A = mount the runner's Docker socket, operator-owned).

Verification:
- mvn -pl outbox-publisher -am clean install (Docker present) -> BUILD SUCCESS;
  OutboxPublisherIT 4/4 run (not skipped), 103 unit + 4 IT, 0 warnings.

Superseded by round 2.

Show previous round

hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)

Round 1 — head 400fe684392b, base main, trigger opened

TL;DR: CONDITIONAL_APPROVE — kept 1 info-only finding from B (verified), A had 0 findings; no correctness or security concerns.

Summary

Arbitration — Round 1

Recalled Memora context: No prior run history for this PR (first arbitration). No submodule-specific patterns found.

Reconciliation: Reviewer A found 0 issues. Reviewer B raised 1 info-level finding about a // comment block interrupting the class-level annotation stack (lines 56–62). Per Rule 2, I verified the unique-to-B finding by reading the source file at HEAD.

Verification result: Confirmed. Lines 55–63 of OutboxPublisherIT.java read:

@ActiveProfiles("it")          // line 55
// disabledWithoutDocker: …    // lines 56–62  ← 7-line comment block
@Testcontainers(disabledWithoutDocker = true)  // line 63

The comment sits between two class-level annotations, exactly as B described. B's suggested fix (move prose into the existing class Javadoc as a <p> paragraph) is sound and matches the file's existing Javadoc style (which ends at line 50 just before @SpringBootTest).

Outcome: Kept 1 info finding from B, dropped 0. No correctness, security, or behavioural concerns. Memora run summary persisted (id 457).

Blast Radius

The diff touches a single test file in the outbox-publisher module only. The annotation change affects test-class lifecycle in Docker-less environments but has no runtime impact on production code or other modules.

BLAST_SCORE: 1/10

CI status (head 400fe684392b)

Overall: ✗ failure

2 checks: 2 pending

Check State Link
im2be-platform-libs CI / mvn install (pull_request) pending details
im2be-platform-libs CI / mvn verify (main only) (pull_request) pending details

Findings (1)

[INFO] 7-line // comment block between class-level annotations breaks annotation-stack convention

outbox-publisher/src/test/java/com/aim2be/platform/outbox/OutboxPublisherIT.java:56

Lines 56–62 insert a multi-line // comment between @ActiveProfiles("it") (line 55) and @Testcontainers(disabledWithoutDocker = true) (line 63). Java's style convention expects class-level annotations to be adjacent; explanatory prose belongs in the Javadoc. The rationale is substantive and already references a tracking issue, making it a natural fit for the class Javadoc that currently ends at line 50.

Suggested move — add to the existing /** … */ block before @SpringBootTest:

 * <p>Annotated with {@link Testcontainers#disabledWithoutDocker() disabledWithoutDocker = true}
 * so the class is skipped  not failed  when no Docker daemon is reachable (e.g. the Forgejo
 * Actions job-container). This prevents chronic CI red while preserving coverage wherever
 * Docker IS present (see affinity-intelligence-rework/im2be-platform-libs#20).

Then drop lines 56–62, leaving the annotation stack uninterrupted. No behavioural effect.

Verdict

CONDITIONAL_APPROVE


hib-pr-reviewer • round 1 • 1 finding (1i) • 2026-05-31T16:39:02.928Z → 2026-05-31T16:40:15.358Z • posted-as: pr-reviewer-bot • model: auto

<!-- hib-pr-reviewer collapsed --> > _Superseded by round 2._ <details> <summary>Show previous round</summary> <!-- hib-pr-reviewer round:1 --> ## hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs) **Round 1** — head `400fe684392b`, base `main`, trigger `opened` **TL;DR:** CONDITIONAL_APPROVE — kept 1 info-only finding from B (verified), A had 0 findings; no correctness or security concerns. ### Summary ## Arbitration — Round 1 **Recalled Memora context**: No prior run history for this PR (first arbitration). No submodule-specific patterns found. **Reconciliation**: Reviewer A found 0 issues. Reviewer B raised 1 `info`-level finding about a `//` comment block interrupting the class-level annotation stack (lines 56–62). Per Rule 2, I verified the unique-to-B finding by reading the source file at HEAD. **Verification result**: Confirmed. Lines 55–63 of `OutboxPublisherIT.java` read: ``` @ActiveProfiles("it") // line 55 // disabledWithoutDocker: … // lines 56–62 ← 7-line comment block @Testcontainers(disabledWithoutDocker = true) // line 63 ``` The comment sits between two class-level annotations, exactly as B described. B's suggested fix (move prose into the existing class Javadoc as a `<p>` paragraph) is sound and matches the file's existing Javadoc style (which ends at line 50 just before `@SpringBootTest`). **Outcome**: Kept 1 `info` finding from B, dropped 0. No correctness, security, or behavioural concerns. Memora run summary persisted (id 457). ### Blast Radius The diff touches a single test file in the `outbox-publisher` module only. The annotation change affects test-class lifecycle in Docker-less environments but has no runtime impact on production code or other modules. **BLAST_SCORE: 1/10** ### CI status (head `400fe684392b`) **Overall: ✗ failure** 2 checks: 2 pending | Check | State | Link | |---|---|---| | im2be-platform-libs CI / mvn install (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/109/jobs/0) | | im2be-platform-libs CI / mvn verify (main only) (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/109/jobs/1) | ### Related PRs - affinity-intelligence-rework/im2be-platform-libs#20 - affinity-intelligence-rework/im2be-platform-libs#332 ### Findings (1) #### **[INFO]** 7-line `//` comment block between class-level annotations breaks annotation-stack convention _outbox-publisher/src/test/java/com/aim2be/platform/outbox/OutboxPublisherIT.java:56_ Lines 56–62 insert a multi-line `//` comment between `@ActiveProfiles("it")` (line 55) and `@Testcontainers(disabledWithoutDocker = true)` (line 63). Java's style convention expects class-level annotations to be adjacent; explanatory prose belongs in the Javadoc. The rationale is substantive and already references a tracking issue, making it a natural fit for the class Javadoc that currently ends at line 50. Suggested move — add to the existing `/** … */` block before `@SpringBootTest`: ```java * <p>Annotated with {@link Testcontainers#disabledWithoutDocker() disabledWithoutDocker = true} * so the class is skipped — not failed — when no Docker daemon is reachable (e.g. the Forgejo * Actions job-container). This prevents chronic CI red while preserving coverage wherever * Docker IS present (see affinity-intelligence-rework/im2be-platform-libs#20). ``` Then drop lines 56–62, leaving the annotation stack uninterrupted. No behavioural effect. ### Verdict **CONDITIONAL_APPROVE** --- <sub>hib-pr-reviewer • round 1 • 1 finding (1i) • 2026-05-31T16:39:02.928Z → 2026-05-31T16:40:15.358Z • posted-as: pr-reviewer-bot • model: auto</sub> </details>
test(outbox): move disabledWithoutDocker rationale to class Javadoc (#332)
Some checks failed
im2be-platform-libs CI / mvn install (pull_request) Failing after 1m13s
im2be-platform-libs CI / mvn verify (main only) (pull_request) Has been skipped
d67d0e7821
R1 verdict CONDITIONAL_APPROVE findings (kept=1):

(1) INFO OutboxPublisherIT.java:56 — a 7-line // comment block sat between the
class-level annotations (@ActiveProfiles and @Testcontainers), breaking the
annotation-stack adjacency convention. Moved the disabledWithoutDocker rationale
into the existing class Javadoc and dropped the inline block, leaving the
annotation stack uninterrupted. No behavioural change.

Verification:
- mvn -pl outbox-publisher -am test-compile -> BUILD SUCCESS, 0 warnings.

Superseded by round 3.

Show previous round

hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)

Round 2 — head d67d0e7821ca, base main, trigger synchronize

TL;DR: NO_NEW_FINDINGS — No new findings this round.

Summary

[quorum-converged] A=0 = B=0. Round 2 — no new findings; prior round-1 finding resolved.

The round-1 open finding ("7-line // comment block between class-level annotations breaks annotation-stack convention") is fixed: the rationale that previously lived as inline // comments between the annotation stack has been promoted to a proper Javadoc <p> paragraph (lines 51–58), and grep for bare ^// lines confirms no such block exists anywhere in the file at HEAD.

The functional change is correct: @Testcontainers(disabledWithoutDocker = true) (line 65) instructs the JUnit 5 Testcontainers extension to call assumeTrue(DockerClientFactory.instance().isDockerAvailable()) in its beforeAll callback, which aborts the class with a skip (not a failure) before the Spring context is ever loaded—so @EmbeddedKafka and the @Container-annotated Postgres field are never touched in environments without a Docker socket. The Javadoc paragraph accurately describes this behaviour and cross-references #20.

CI status (head d67d0e7821ca)

Overall: ✗ failure

2 checks: 2 pending

Check State Link
im2be-platform-libs CI / mvn install (pull_request) pending details
im2be-platform-libs CI / mvn verify (main only) (pull_request) pending details

Findings

No new findings this round.

Quorum converged on empty findings (A + B both returned 0).

Verdict

NO_NEW_FINDINGS


hib-pr-reviewer • round 2 • 0 findings • 2026-05-31T16:42:01.138Z → 2026-05-31T16:43:50.585Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]

<!-- hib-pr-reviewer collapsed --> > _Superseded by round 3._ <details> <summary>Show previous round</summary> <!-- hib-pr-reviewer round:2 --> ## hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs) **Round 2** — head `d67d0e7821ca`, base `main`, trigger `synchronize` **TL;DR:** NO_NEW_FINDINGS — No new findings this round. ### Summary [quorum-converged] A=0 = B=0. **Round 2 — no new findings; prior round-1 finding resolved.** The round-1 open finding ("7-line `//` comment block between class-level annotations breaks annotation-stack convention") is **fixed**: the rationale that previously lived as inline `//` comments between the annotation stack has been promoted to a proper Javadoc `<p>` paragraph (lines 51–58), and `grep` for bare `^//` lines confirms no such block exists anywhere in the file at HEAD. The functional change is correct: `@Testcontainers(disabledWithoutDocker = true)` (line 65) instructs the JUnit 5 Testcontainers extension to call `assumeTrue(DockerClientFactory.instance().isDockerAvailable())` in its `beforeAll` callback, which aborts the class with a skip (not a failure) before the Spring context is ever loaded—so `@EmbeddedKafka` and the `@Container`-annotated Postgres field are never touched in environments without a Docker socket. The Javadoc paragraph accurately describes this behaviour and cross-references #20. ### CI status (head `d67d0e7821ca`) **Overall: ✗ failure** 2 checks: 2 pending | Check | State | Link | |---|---|---| | im2be-platform-libs CI / mvn install (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/110/jobs/0) | | im2be-platform-libs CI / mvn verify (main only) (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/110/jobs/1) | ### Findings **No new findings this round.** _Quorum converged on empty findings (A + B both returned 0)._ ### Verdict **NO_NEW_FINDINGS** --- <sub>hib-pr-reviewer • round 2 • 0 findings • 2026-05-31T16:42:01.138Z → 2026-05-31T16:43:50.585Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]</sub> </details>
test: guard all reactor Testcontainers ITs with disabledWithoutDocker (#332, #20)
Some checks failed
im2be-platform-libs CI / mvn install (pull_request) Failing after 1m15s
im2be-platform-libs CI / mvn verify (main only) (pull_request) Has been skipped
3da2545c77
The outbox-only guard wasn't enough: CI runs the FULL reactor (`mvn install` at
root), so the first unguarded Testcontainers IT after outbox-publisher still
errored on the Docker-less runner → red. Apply `disabledWithoutDocker = true`
to every remaining @Testcontainers IT so the whole reactor skips them cleanly
when no Docker daemon is reachable:

- apicurio-client/ApicurioIT
- processed-kafka-events/DedupGuardIT
- redis-outbox-backend: RedisOutboxBackendIT, RedisOutboxLockIT,
  RedisOutboxDurabilityIT, RedisOutboxCrashRecoveryIT,
  RedisOutboxFailureLifecycleIT, RedisOutboxAutoConfigurationIT,
  RedisOutboxExpiryDecisionIT, RedisOutboxOomFailClosedIT

Verification — full-reactor repro in the exact CI image
(maven-node-ci:3.9-temurin17), NO Docker socket, ~/.m2 mounted for forgejo-air
deps:
- mvn -B install -DskipTests=false -> BUILD SUCCESS, all 8 modules SUCCESS
- 44 Testcontainers IT methods SKIPPED (not errored); all unit tests pass
- error-event-publisher resolves proto-observability:1.0.0 from forgejo-air

This is the complete fix for Forgejo #20 option C. Option A (mount the runner's
Docker socket so the ITs actually RUN in CI) remains operator-owned.

Superseded by round 4.

Show previous round

hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)

Round 3 — head 3da2545c77d4, base main, trigger synchronize

TL;DR: NO_NEW_FINDINGS — No new findings this round.

Summary

[quorum-converged] A=0 = B=0. Round 3 sync has fully resolved the open round-1 finding. The // comment block that previously interrupted the annotation stack at OutboxPublisherIT.java:56 is gone: the rationale has been promoted into the class-level Javadoc (/** … */, lines 51–58) and the annotation stack at lines 60–74 is now cleanly contiguous (@SpringBootTest@ActiveProfiles@Testcontainers@EmbeddedKafka) with no interstitial prose. The uniform replacement of @Testcontainers@Testcontainers(disabledWithoutDocker = true) across all 11 IT classes is correct, consistent, and low-risk.

CI status (head 3da2545c77d4)

Overall: ✗ failure

2 checks: 2 pending

Check State Link
im2be-platform-libs CI / mvn install (pull_request) pending details
im2be-platform-libs CI / mvn verify (main only) (pull_request) pending details

Findings

No new findings this round.

Quorum converged on empty findings (A + B both returned 0).

Verdict

NO_NEW_FINDINGS


hib-pr-reviewer • round 3 • 0 findings • 2026-05-31T16:49:55.662Z → 2026-05-31T16:51:15.656Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]

<!-- hib-pr-reviewer collapsed --> > _Superseded by round 4._ <details> <summary>Show previous round</summary> <!-- hib-pr-reviewer round:3 --> ## hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs) **Round 3** — head `3da2545c77d4`, base `main`, trigger `synchronize` **TL;DR:** NO_NEW_FINDINGS — No new findings this round. ### Summary [quorum-converged] A=0 = B=0. Round 3 sync has fully resolved the open round-1 finding. The `//` comment block that previously interrupted the annotation stack at `OutboxPublisherIT.java:56` is gone: the rationale has been promoted into the class-level Javadoc (`/** … */`, lines 51–58) and the annotation stack at lines 60–74 is now cleanly contiguous (`@SpringBootTest` → `@ActiveProfiles` → `@Testcontainers` → `@EmbeddedKafka`) with no interstitial prose. The uniform replacement of `@Testcontainers` → `@Testcontainers(disabledWithoutDocker = true)` across all 11 IT classes is correct, consistent, and low-risk. ### CI status (head `3da2545c77d4`) **Overall: ✗ failure** 2 checks: 2 pending | Check | State | Link | |---|---|---| | im2be-platform-libs CI / mvn install (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/111/jobs/0) | | im2be-platform-libs CI / mvn verify (main only) (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/111/jobs/1) | ### Findings **No new findings this round.** _Quorum converged on empty findings (A + B both returned 0)._ ### Verdict **NO_NEW_FINDINGS** --- <sub>hib-pr-reviewer • round 3 • 0 findings • 2026-05-31T16:49:55.662Z → 2026-05-31T16:51:15.656Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]</sub> </details>
build: declare forgejo-air as a resolution repository so CI resolves proto-observability (#332, #20)
All checks were successful
im2be-platform-libs CI / mvn install (pull_request) Successful in 1m37s
im2be-platform-libs CI / mvn verify (main only) (pull_request) Has been skipped
cee0311349
With the Testcontainers ITs guarded, the full-reactor `mvn install` proceeded to
error-event-publisher, which depends on com.aim2be:proto-observability:1.0.0 —
published ONLY to the forgejo-air Forgejo package registry, not Maven Central.
The parent pom declared forgejo-air only in <distributionManagement> (deploy),
not <repositories> (resolution), so a clean/ephemeral build (the Forgejo Actions
runner has no ~/.m2/settings.xml priming forgejo-air) could not find it → CI red
at ~1m15s after the ITs.

Add a <repositories> entry for forgejo-air. Anonymous READ is allowed (verified
HTTP 200 on the proto-observability jar), so NO credentials are needed for
resolution; the <server id="forgejo-air"> token stays deploy-only.

Verification — BARE container (no ~/.m2 mount, faithful to the Docker-less,
settings-less runner) in the exact CI image:
- mvn -B install -DskipTests=false -> BUILD SUCCESS, all 8 modules
- proto-observability-1.0.0.{pom,jar} downloaded anonymously from forgejo-air
- 44 Testcontainers IT methods SKIPPED; all unit tests pass

Completes the green-CI fix for #20 (option C). This is the last wall — CI should
now report success.

hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)

Round 4 — head cee031134963, base main, trigger synchronize

TL;DR: NO_NEW_FINDINGS — No new findings this round.

Summary

[quorum-converged] A=0 = B=0. Round 4 — Prior finding resolved, no new actionable issues.

The round-1 carry-over finding (7-line // comment block between class-level annotations in OutboxPublisherIT.java) is resolved: the explanation was folded into the Javadoc /** … */ block (lines 51–58), and the annotation stack at lines 60–74 is now clean with no interstitial prose.

The two substantive changes are both correct:

  1. @Testcontainers(disabledWithoutDocker = true) — applied consistently to all 11 IT classes. This is the right Testcontainers 1.18+ API for SKIP-not-FAIL when no Docker socket is reachable.

  2. <repositories> block in pom.xml<snapshots><enabled>true</enabled></snapshots> is intentional and consistent: a matching <snapshotRepository> already exists in <distributionManagement> (lines 133–137), so snapshots are both published to and resolved from the same Forgejo registry. No credential leakage risk — the comment correctly notes anonymous READ is permitted and the write token lives only in settings.xml.

CI status (head cee031134963)

Overall: pending

2 checks: 2 pending

Check State Link
im2be-platform-libs CI / mvn verify (main only) (pull_request) pending details
im2be-platform-libs CI / mvn install (pull_request) pending details

Findings

No new findings this round.

Quorum converged on empty findings (A + B both returned 0).

Verdict

NO_NEW_FINDINGS


hib-pr-reviewer • round 4 • 0 findings • 2026-05-31T16:55:16.564Z → 2026-05-31T16:56:26.941Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]

<!-- hib-pr-reviewer round:4 --> ## hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs) **Round 4** — head `cee031134963`, base `main`, trigger `synchronize` **TL;DR:** NO_NEW_FINDINGS — No new findings this round. ### Summary [quorum-converged] A=0 = B=0. **Round 4 — Prior finding resolved, no new actionable issues.** The round-1 carry-over finding (7-line `//` comment block between class-level annotations in `OutboxPublisherIT.java`) is **resolved**: the explanation was folded into the Javadoc `/** … */` block (lines 51–58), and the annotation stack at lines 60–74 is now clean with no interstitial prose. The two substantive changes are both correct: 1. **`@Testcontainers(disabledWithoutDocker = true)`** — applied consistently to all 11 IT classes. This is the right Testcontainers 1.18+ API for SKIP-not-FAIL when no Docker socket is reachable. 2. **`<repositories>` block in `pom.xml`** — `<snapshots><enabled>true</enabled></snapshots>` is intentional and consistent: a matching `<snapshotRepository>` already exists in `<distributionManagement>` (lines 133–137), so snapshots are both published to and resolved from the same Forgejo registry. No credential leakage risk — the comment correctly notes anonymous READ is permitted and the write token lives only in `settings.xml`. ### CI status (head `cee031134963`) **Overall: ⏳ pending** 2 checks: 2 pending | Check | State | Link | |---|---|---| | im2be-platform-libs CI / mvn verify (main only) (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/112/jobs/1) | | im2be-platform-libs CI / mvn install (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/112/jobs/0) | ### Findings **No new findings this round.** _Quorum converged on empty findings (A + B both returned 0)._ ### Verdict **NO_NEW_FINDINGS** --- <sub>hib-pr-reviewer • round 4 • 0 findings • 2026-05-31T16:55:16.564Z → 2026-05-31T16:56:26.941Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]</sub>
hibryda deleted branch fix/ci-it-disabled-without-docker-332 2026-05-31 18:57:48 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
affinity-intelligence-rework/im2be-platform-libs!21
No description provided.