Sub-scope 01 (mongo) negative-space probes: opt-in reachability, conditional siblings, duplicate mechanisms revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5 executedAt=2026-08-29T23:03:26+00:00 cwd=/shared/codebase/clean-architecture-backend-template/src observation boundary: tracked sources at this revision; reflection, generated registration and consumers outside this repository are not covered. === 8.1 leaf root/autoconfigure public types consumed outside the owning leaf === MongoRootAutoConfiguration app-bootstrap/src/test/java/dev/caskeleton/bootstrap/activation/ShippedRuntimeFacadePresenceTest.java MongoPersistenceConfig MongoPersistenceSettings MongoOptInAutoConfigurationImportFilter MongoPlatformAutoConfiguration MongoPlatformSettings MongoProfileProperties MongoStartupValidator MongoTopologyProbe MongoPlatformHealthIndicator app-bootstrap/src/main/java/dev/caskeleton/bootstrap/mongo/MongoPlatformHealthConfig.java app-bootstrap/src/main/java/dev/caskeleton/bootstrap/mongo/MongoPlatformHealthContributor.java app-bootstrap/src/test/java/dev/caskeleton/bootstrap/mongo/MongoPlatformHealthContributorTest.java MongoClientGenerationRegistry MongoClientGeneration MongoDriverObservabilityAutoConfiguration === 8.1b auto-configuration registration resources === $ cat adapter/outbound/persistence-mongo/src/main/resources/META-INF/spring.factories org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\ dev.caskeleton.adapter.outbound.mongo.MongoOptInAutoConfigurationImportFilter exit=0 $ cat adapter/outbound/persistence-mongo/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports dev.caskeleton.adapter.outbound.mongo.MongoRootAutoConfiguration exit=0 === 8.2 conditional siblings: every production site that reads the module master switch === $ git grep -n 'ca-skeleton.persistence-mongo' -- 'adapter/outbound/persistence-mongo/src/main' adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoOptInAutoConfigurationImportFilter.java:17: * candidate set until {@code ca-skeleton.persistence-mongo.enabled=true}. adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoOptInAutoConfigurationImportFilter.java:22: private static final String ENABLE_PROPERTY = "ca-skeleton.persistence-mongo.enabled"; adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoPersistenceConfig.java:12: * only when {@code ca-skeleton.persistence-mongo.enabled=true}. adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoPersistenceConfig.java:22: prefix = "ca-skeleton.persistence-mongo", adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoPersistenceSettings.java:7: * ca-skeleton.persistence-mongo.*}. adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoPersistenceSettings.java:21:@ConfigurationProperties(prefix = "ca-skeleton.persistence-mongo") adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/MongoRootAutoConfiguration.java:28: prefix = "ca-skeleton.persistence-mongo", adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedCapabilityFlags.java:26: public static final String PROPERTY_PREFIX = "ca-skeleton.persistence-mongo.advanced"; adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfiguration.java:24: prefix = "ca-skeleton.persistence-mongo", adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedSettings.java:15: * ca-skeleton.persistence-mongo.advanced.sharding.enabled=true} and change nothing at all. adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedSettings.java:29: public static final String PREFIX = "ca-skeleton.persistence-mongo"; adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoDriverObservabilityAutoConfiguration.java:29: prefix = "ca-skeleton.persistence-mongo", adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformAutoConfiguration.java:44: prefix = "ca-skeleton.persistence-mongo", adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformSettings.java:12: *
Bound under {@code ca-skeleton.persistence-mongo.platform} rather than the design's {@code
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformSettings.java:26:@ConfigurationProperties("ca-skeleton.persistence-mongo.platform")
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/mapping/MongoMappingConfiguration.java:29: prefix = "ca-skeleton.persistence-mongo",
exit=0
=== 8.2b production construction sites of MongoStartupValidator ===
$ git grep -n 'new MongoStartupValidator' -- 'adapter/outbound/persistence-mongo/src/main' 'app-bootstrap/src/main'
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformAutoConfiguration.java:354: new MongoStartupValidator(
exit=0
$ git grep -n 'new MongoStartupValidator' -- 'adapter/outbound/persistence-mongo/src/test'
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoStartupValidatorTest.java:143: return new MongoStartupValidator(
exit=0
=== 8.2c changeStreams: the record component, its only writer, and its only reader ===
$ grep -n 'changeStreams' adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoPlatformSettings.java
22: * assuming it. Both it and {@code changeStreams} used to be literal {@code true}s passed into
30: boolean changeStreams,
55: changeStreams = false;
exit=0
$ grep -n 'changeStreams\|changeStreamsEnabled' adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/autoconfigure/MongoStartupValidator.java
34: private final boolean changeStreamsEnabled;
44: boolean changeStreamsEnabled,
51: this.changeStreamsEnabled = changeStreamsEnabled;
104: if (changeStreamsEnabled && !capabilities.isStable(MongoCapability.CHANGE_STREAM)) {
exit=0
=== 8.3 active-profile: required by the composition root, bound by nothing in the leaf ===
$ git grep -n 'active-profile' -- app-bootstrap/src/main
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/activation/CapabilityDependencyValidator.java:105: MasterSwitch.PERSISTENCE_MONGO.property().replace(".enabled", ".active-profile"),
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/activation/CapabilityDependencyValidator.java:111: + "ca-skeleton.persistence-mongo.active-profile.");
app-bootstrap/src/main/resources/application.yml:370: active-profile: ${APP_PERSISTENCE_MONGO_ACTIVE_PROFILE:}
exit=0
$ git grep -n 'active-profile' -- 'adapter/outbound/persistence-mongo'
exit=1
$ sed -n '100,113p' app-bootstrap/src/main/java/dev/caskeleton/bootstrap/activation/CapabilityDependencyValidator.java
+ "=true.");
}
if (mongo
&& environment
.getProperty(
MasterSwitch.PERSISTENCE_MONGO.property().replace(".enabled", ".active-profile"),
"")
.isBlank()) {
violations.add(
MasterSwitch.PERSISTENCE_MONGO.property()
+ "=true needs exactly one profile; set "
+ "ca-skeleton.persistence-mongo.active-profile.");
}
if (graphQl) {
exit=0
$ grep -n 'CapabilityDependencyValidator.violations' app-bootstrap/src/main/java/dev/caskeleton/bootstrap/activation/CapabilityDependencyStartupCheck.java
26: List