Sub-scope 12 negative-space probes: lane claims, release-gate membership, reachability revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5 executedAt=2026-08-29T14:41:21+00:00 cwd=/shared/codebase/clean-architecture-backend-template/src observation boundary: tracked build/registry/workflow/doc files at this revision. === A. release registry gate names and tasks === $ python3 -c "import json;d=json.load(open(\"config/jpa/release-registry.json\"));print(len(d[\"gates\"]));[print(g[\"name\"],g[\"task\"],g[\"blocking\"]) for g in d[\"gates\"]]" 6 postgresql-contract :adapter:outbound:persistence-jpa:jpaPlatformContractTest True completion-unknown-no-retry :adapter:outbound:persistence-jpa:jpaPlatformFailureTest True osiv-disabled :app-bootstrap:test True flyway-validate :adapter:outbound:persistence-jpa:jpaPlatformMigrationTest True runtime-role-no-ddl :adapter:outbound:persistence-jpa:jpaPlatformSecurityTest True collection-fetch-pagination :adapter:outbound:persistence-jpa:jpaPlatformQueryPlanTest True exit=0 === B. is the pool lane a registered gate? === $ grep -n -i pool config/jpa/release-registry.json exit=1 $ grep -n -i pool ../docs/jpa/support-matrix.md exit=1 $ grep -n -i pool adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/release/JpaReleaseGate.java exit=1 === C. where the pool lane is wired === $ grep -n jpaPlatformPoolContractTest adapter/outbound/persistence-jpa/build.gradle 287:def jpaPlatformPoolContractTest = tasks.register('jpaPlatformPoolContractTest', Test) { 309: dependsOn jpaPlatformPoolContractTest exit=0 $ grep -rn jpaPlatformPoolContractTest ../.github/workflows ../.github/workflows/jpa-nightly.yml:132: :adapter:outbound:persistence-jpa:jpaPlatformPoolContractTest exit=0 $ grep -n -A10 "register..jpaPlatformReleaseGate" adapter/outbound/persistence-jpa/build.gradle 300:tasks.register('jpaPlatformReleaseGate') { 301- group = 'verification' 302- description = 'Runs every JPA platform lane required for a release (design §41).' 303- dependsOn tasks.named('test') 304- dependsOn jpaPlatformContractTest 305- dependsOn jpaPlatformMigrationTest 306- dependsOn jpaPlatformFailureTest 307- dependsOn jpaPlatformQueryPlanTest 308- dependsOn jpaPlatformSecurityTest 309- dependsOn jpaPlatformPoolContractTest 310-} exit=0 === D. what the lane files actually assert === $ grep -n "assertThat\|assertThatThrownBy\|@DisplayName" adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest/java/dev/caskeleton/adapter/outbound/persistence/platform/pool/PoolPressureContractTest.java 3:import static org.assertj.core.api.Assertions.assertThat; 27: @DisplayName("pending count and acquire latency are reported together") 31: assertThat(measurement.pending()).isEqualTo(3); 32: assertThat(measurement.acquireLatency()).isEqualTo(Duration.ofMillis(80)); 33: assertThat(measurement.total()).isEqualTo(6); 34: assertThat(measurement.saturated()).isTrue(); 38: @DisplayName("a REQUIRES_NEW depth of one needs two connections per concurrent thread") 45: assertThat(required) exit=0 $ grep -n "assertThat\|assertThatThrownBy\|@DisplayName" adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest/java/dev/caskeleton/adapter/outbound/persistence/platform/pool/HikariPoolSaturationContractTest.java 3:import static org.assertj.core.api.Assertions.assertThat; 4:import static org.assertj.core.api.Assertions.assertThatThrownBy; 51: @DisplayName("a saturated pool fails within its acquisition timeout") 61: assertThatThrownBy(pool::getConnection).isInstanceOf(SQLException.class); 64: assertThat(waited) 76: @DisplayName("releasing a connection lets the next caller through") 84: assertThat(third.isValid(1)).isTrue(); 91: @DisplayName("the measurement reports what the pool is actually doing") 103: assertThat(measurement.active()).isEqualTo(1); 104: assertThat(measurement.total()).isGreaterThanOrEqualTo(1); 105: assertThat(held.isValid(1)).isTrue(); exit=0 $ grep -n "assertThat\|assertThatThrownBy\|@DisplayName" adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest/java/dev/caskeleton/adapter/outbound/persistence/platform/pool/RequiresNewPoolPressureContractTest.java 3:import static org.assertj.core.api.Assertions.assertThat; 4:import static org.assertj.core.api.Assertions.assertThatThrownBy; 44: @DisplayName("a pool of one deadlocks the moment an inner transaction is needed") 50: assertThatThrownBy(pool::getConnection) 60: @DisplayName("a pool of two serves the same nesting") 68: assertThat(inner.isValid(1)).isTrue(); 69: assertThat(inner).isNotSameAs(outer); 79: @DisplayName("the sizing rule matches the observed requirement") 86: assertThat(required) exit=0 === E. does any lane assertion read a non-zero pending count from a real pool? === $ grep -rn "getThreadsAwaitingConnection\|pending()\|saturated()" adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest/java/dev/caskeleton/adapter/outbound/persistence/platform/pool/HikariPoolSaturationContractTest.java:100: bean.getThreadsAwaitingConnection(), adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest/java/dev/caskeleton/adapter/outbound/persistence/platform/pool/PoolPressureContractTest.java:31: assertThat(measurement.pending()).isEqualTo(3); adapter/outbound/persistence-jpa/src/jpaPlatformPerformanceTest/java/dev/caskeleton/adapter/outbound/persistence/platform/pool/PoolPressureContractTest.java:34: assertThat(measurement.saturated()).isTrue(); exit=0 === F. nightly workflow claim text === $ sed -n 122,135p ../.github/workflows/jpa-nightly.yml - name: Verify pool saturation and REQUIRES_NEW connection behaviour working-directory: src # A behaviour contract, not a measurement. This step used to switch assertions off with an # explicit property and call the result a certification, so the only threshold it ever # asserted was that thresholds were not being asserted. What # it checks now — that REQUIRES_NEW needs two connections per concurrent thread, that a # saturated pool reports its pending count, that a caller waits rather than proceeding # without a connection — is true on any runner, so there is nothing to switch off. run: >- ./gradlew :adapter:outbound:persistence-jpa:jpaPlatformPoolContractTest --no-daemon --stacktrace exit=0