Sub-scope 10 (mongo) advanced/** - manifest and negative-space probes
revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5
generatedAt=2026-08-30T00:27:31+00:00

=== OWNED FILES ===
cf0b58082713dff7ed4b8d4dac613359dd01343d main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedCapabilityFlags.java 84
76a78f17b37f3e6d9531e6cc8bbac469ab913324 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedCapabilityGuard.java 81
57558b21d7ef2650d4c51123ff141e85f320181e main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedEntryPoint.java 33
4eb1bfbafd243fd96995da10292d5b19dbdd1b32 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedPolicy.java 24
1042d08eb388d4542cee4fa153d36d665992d942 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedPromotionEvidence.java 61
98a57ef8c8d096b892482a5f6794a63adebac956 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedPromotionGate.java 47
fbaf4fa730bad951431e9371fb2bb1ffd492c997 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfiguration.java 43
ecd0d65bc26811770219b40d6249fba0fdfd9b80 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedSettings.java 49
879181c1a388cd35c232c096093e762428e659e4 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoBridgeCheckpointPolicy.java 35
50563d099ba0e60c5767e6eb7ecbdcb4ff928c9c main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoBridgeOutboxPolicy.java 46
f7e563641d1ece707e73b3cd36de604034e4bfe3 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoChangeMessagingBridge.java 87
6e01fc6246368f95435ede76804d1908ee2b93f1 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoChangeToIntegrationEventMapper.java 24
d02e9b227e4e67e21323624e3cd53136d3f55805 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoIntegrationEventEnvelope.java 37
f092848cf4e5617d84d368cdb10bf9109d1132f5 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoIntegrationEventPublisher.java 25
da8c3a9c30a8acacf2440f0a8696da76f57be165 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoPublishResult.java 51
ac63404c901a2ad79140aaed876d8049cf6ae451 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/csfle/MongoCsfleClientFactory.java 54
16d32b92c40b0d9966eb83a2db9d85840058eb4c main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/csfle/MongoCsfleFieldPolicy.java 57
6ffcec5b844f64611b0b9d9ea4edd8ec7c2d376a main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/csfle/MongoCsfleMode.java 32
32d83861cdb0c511ac9b944a274c2694a1c16fc2 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/csfle/MongoCsfleProfile.java 60
47de1e2bf771a2a5d3e496fcfb9fc708fbb9f8ca main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/csfle/MongoDataKeyResolver.java 28
51ccb6a71690787ec834dd9e31efc6967e047dbb main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoEncryptedFieldDescriptor.java 62
f2f055643c8f03eaaebda115ad46da3e54604408 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoEncryptionMetadataOwnership.java 47
0d68cd3d1808ba6f7e1d97b659b29170a3652dea main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoQueryShape.java 32
fd6af5d50e9e25d7b488bc8b35a3c5fdee2512d1 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoQueryShapeSupport.java 32
d68b7d6dadbc389f088649739fd0c3e6ddfa8aca main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoQueryableEncryptionCollectionManager.java 72
c4eba71a5cac8dcf3d243a34d67fc025c1ca9ab2 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoQueryableEncryptionProfile.java 75
436fc3081a1d3a31964904617c62fe82b5634cdc main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoQueryableEncryptionQueryType.java 19
f48ecabd05430ccd7ff147038d3a99d65754b780 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/gridfs/MongoGridFsCompatibilityReader.java 45
9a64c88c5d4041bfb0fc822867ce2845add2901f main/java/dev/caskeleton/adapter/outbound/mongo/advanced/gridfs/MongoGridFsMigrationCheckpoint.java 106
6ab3e4e59f6ae0553ef65439be2f358ef837dbb6 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/gridfs/MongoGridFsMigrationJob.java 86
58dec8cf9ff53b6b5f643a0d17521e4222901e57 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/gridfs/MongoGridFsObjectReference.java 33
3f201c0830d8743d022c7048f295baacffad1e7a main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchIndexDescriptor.java 38
3b4f825030dab1985e0faefa05e2f25b74395e8a main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchIndexState.java 32
d8c87417264c8d6288ab1788dcd71d94ac5940aa main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchOperations.java 28
f371ff53b7127138ef03d5faf0a795dd703292fa main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchQuery.java 57
fa4737ae0f1a0647f0e1c861ec23cba7ad4694e2 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchReadinessGate.java 37
77525497a042f7d2354721a2a7590c77ebf05c25 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/MongoRoutingClassification.java 29
d0a809bc54d712cd102ef27e2de3b9a4e5d861a4 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardAwareQueryValidator.java 89
40ba3eae2d898ecd7b02c99f0f960683ff1a9026 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardKeyDescriptor.java 75
d7772f9446c764421ccbed83dee671a2c59f8d3e main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardKeyPart.java 20
4367c5bdbc898bc1d6f39069ea6ed192ab847010 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardStrategy.java 23
e8b325e6fc5373e3adf7facd11064937132f7d7c main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java 94
c061609d842ff0aca9e7dc14b25e65e36e98acbd main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/ReshardApproval.java 55
6b1d5c4e1629d5fa41bc9487782518829a7868a9 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/ShardKeyAnalyzer.java 78
46cb8bf0f8ef7364ac723fc9c2df53bfcaafdbd1 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/ShardKeyReadinessReport.java 61
d322b44756a0d7066e2d03dfb496042b2f39af04 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantClientRegistry.java 141
c1abb429cd5f94ee8ceb9ac7fbe40fb0d61e4ff6 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantDatabaseResolver.java 18
395a950d8873bac0b7497562e534bee7217cfaa1 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantLifecyclePolicy.java 74
82062210a9f80c077858d5649152c3a8ecd78574 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantMigrationCheckpointStore.java 31
5e6cef68234114f4441ed526c5b9ea102d26865a main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantMigrationCoordinator.java 134
68457ed1fcccbdc1db8783973abc2a488b2c0033 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/shared/MongoTenantContext.java 52
2b2ab94c13123b2bd1e3da8db3ef0271d4fb6b07 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/shared/MongoTenantManifestValidator.java 70
11e935c18a38b1aa28704ccfe2f90022961aabb3 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/shared/MongoTenantPredicateInjector.java 67
19c752c2e3c93358932d7cfbbaedef76c482b163 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/shared/TenantScopedMongoOperations.java 39
d3964e66a3232a317d58aebb69f225a3107e8c66 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesCapability.java 24
256607703623d14df02ca42caac6fc5008c5e456 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesCapabilityValidator.java 70
edc4892d5534c6806111dd5d562b175ab5f9e3e5 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesDescriptor.java 52
e89ca8f952e66889127afdada563fda74e36f8af main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesGranularity.java 33
6649eff9590942094adedd2f114f6a9b0ec8a608 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesOperations.java 34
31a0987535a07f5320921542aa14248bf75248e2 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesSupport.java 40
abf5bd6a66042ed92869f561ff44341dd32dafe9 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoEmbedding.java 65
efde94add89c656f4c9d75e93a495e6a63c80cc8 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorIndexDescriptor.java 53
8f8a962368163508d4b9f0572c2968292b5cd8ea main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorQuery.java 62
a8677d6e3a3f97a6b1f7c12203951c98915ae149 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java 60
c4f034b9ab823dfc15f89f22ac73b381bcefcb69 main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchOperations.java 37
cce5a22c86eae1da860b17bf9c0dc1c5e4de3edc test/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedPromotionGateTest.java 97
360f67467463ad5aad2647554ada6d04a76bf9fb test/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfigurationTest.java 109
efd2c30ccd34991599ec31a3fbaf81aa63180d34 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoChangeMessagingBridgeTest.java 159
4eea828823db53ad6fc98bfeb3478054697dfb13 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/MongoEncryptionContractTest.java 158
6689b007848f5c089836ec204f864734f76739bb test/java/dev/caskeleton/adapter/outbound/mongo/advanced/gridfs/MongoGridFsMigrationJobTest.java 197
862fe567c572a8eda132849606fddfa30dd44564 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchReadinessGateTest.java 110
e504b3a379f503c173a748809557ecd05c2a2184 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardAwareQueryValidatorTest.java 81
77f7540a360d6235054b372897ffede9c3f0cd08 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/ShardKeyAnalyzerTest.java 103
b3869ce22bf9348db19ce6f61806fef4517a0d75 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/MongoTenancyContractTest.java 276
66c0f6a2991e5049f97233a41e48bb320703c3a5 test/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesCapabilityValidatorTest.java 75

production: 65
test: 10
production LOC:   3439 total

=== 8.1 reachability: the guard bean and who imports the Advanced configuration ===
$ git grep -rn 'MongoAdvancedConfiguration' -- . | grep -v 'advanced/autoconfigure/MongoAdvancedConfiguration.java'
adapter/outbound/persistence-mongo/CLAUDE.md:142:  `MongoAdvancedProperties`. `MongoAdvancedConfiguration` is imported by name, never auto-loaded:
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedSettings.java:19: * MongoAdvancedConfigurationTest} asserts the two cannot drift apart.
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfigurationTest.java:26:class MongoAdvancedConfigurationTest {
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfigurationTest.java:31:          .withUserConfiguration(MongoAdvancedConfiguration.class)
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfigurationTest.java:46:        .withUserConfiguration(MongoAdvancedConfiguration.class)
exit=0

$ grep -rn 'advanced' adapter/outbound/persistence-mongo/src/main/resources/META-INF/spring/*.imports
exit=1

$ git grep -rn 'MongoAdvancedCapabilityGuard' -- 'adapter/outbound/persistence-mongo/src/main' | grep -v '/advanced/'
exit=1

=== 8.1b the entry-point / policy classification, counted ===
$ git grep -l '@MongoAdvancedEntryPoint' -- 'adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced' | sort
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoChangeMessagingBridge.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/csfle/MongoCsfleClientFactory.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoQueryableEncryptionCollectionManager.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/gridfs/MongoGridFsMigrationJob.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantClientRegistry.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantMigrationCoordinator.java
exit=0

$ git grep -l '@MongoAdvancedPolicy' -- 'adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced' | sort
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedCapabilityFlags.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedCapabilityGuard.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedPromotionGate.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/encryption/qe/MongoEncryptionMetadataOwnership.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchReadinessGate.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardAwareQueryValidator.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/ShardKeyAnalyzer.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/shared/MongoTenantManifestValidator.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/shared/MongoTenantPredicateInjector.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesCapabilityValidator.java
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoEmbedding.java
exit=0

$ git grep -c 'public final class\|public class' -- 'adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced' | wc -l
19
exit=0

$ git grep -n 'MongoAdvancedRules' -- 'adapter/outbound/persistence-mongo/src'
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedEntryPoint.java:22: * the first call against a cluster that has no such feature. {@code MongoAdvancedRules} enforces
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:12:import dev.caskeleton.adapter.outbound.mongo.testkit.arch.MongoAdvancedRules;
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:28:class MongoAdvancedRulesTest {
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:38:    assertThatCode(() -> MongoAdvancedRules.everyAdvancedTypeIsClassified().check(production))
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:45:    assertThatCode(() -> MongoAdvancedRules.everyEntryPointConsultsTheGuard().check(production))
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:56:                MongoAdvancedRules.everyAdvancedTypeIsClassified(
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:57:                        MongoAdvancedRulesTest.class.getPackageName() + "..")
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:68:    assertThatThrownBy(() -> MongoAdvancedRules.everyEntryPointConsultsTheGuard().check(fixtures))
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java:79:    assertThatThrownBy(() -> MongoAdvancedRules.everyEntryPointConsultsTheGuard().check(fixtures))
adapter/outbound/persistence-mongo/src/testkit/java/dev/caskeleton/adapter/outbound/mongo/testkit/arch/MongoAdvancedRules.java:29:public final class MongoAdvancedRules {
adapter/outbound/persistence-mongo/src/testkit/java/dev/caskeleton/adapter/outbound/mongo/testkit/arch/MongoAdvancedRules.java:33:  private MongoAdvancedRules() {}
exit=0

=== 8.2 the sharding admin gateway: high-risk operations through the 5-arg execute ===
$ grep -n 'adminGateway.execute' adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java
64:    adminGateway.execute(MongoAdminOperation.SHARD_COLLECTION, collection, operator, reason, apply);
75:    adminGateway.execute(MongoAdminOperation.REFINE_SHARD_KEY, collection, operator, reason, apply);
86:    adminGateway.execute(
92:    adminGateway.execute(MongoAdminOperation.BALANCER_CONTROL, scope, operator, reason, apply);
exit=0

$ grep -n 'SHARD_COLLECTION\|REFINE_SHARD_KEY\|RESHARD_COLLECTION\|BALANCER_CONTROL' adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/security/admin/MongoAdminOperation.java
37:  SHARD_COLLECTION(true),
40:  REFINE_SHARD_KEY(true),
43:  RESHARD_COLLECTION(true),
46:  BALANCER_CONTROL(false),
exit=0

$ grep -n 'public <T> T execute(' -A 14 adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/security/admin/MongoAdminGateway.java | head -40
57:  public <T> T execute(
58-      MongoAdminOperation operation,
59-      String target,
60-      String operator,
61-      String reason,
62-      Supplier<T> body) {
63-    return execute(
64-        MongoAdminCommand.routine(
65-            operation, target, operator, reason, clock.instant().plus(COMMAND_VALIDITY)),
66-        null,
67-        body);
68-  }
69-
70-  /**
71-   * Runs one administrative command under the audit state machine.
--
83:  public <T> T execute(MongoAdminCommand command, MongoAdminApproval approval, Supplier<T> body) {
84-    Objects.requireNonNull(command, "command");
85-    Objects.requireNonNull(body, "body");
86-    Instant now = clock.instant();
87-    authorization.require(command.operation());
88-    if (command.expiredAt(now)) {
89-      throw MongoOperationRejectedException.of(
90-          "admin.command",
91-          "this admin command expired before it ran; a stale command may describe a cluster that no"
92-              + " longer looks like the one it was written for");
93-    }
94-    if (command.operation().highRisk()) {
95-      if (approval == null) {
96-        throw MongoOperationRejectedException.of(
97-            "admin.approval",
exit=0

=== 8.2b duplicated shard-key/index compatibility logic ===
$ grep -n 'supportsUniqueIndexOn' -A 10 adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/ShardKeyDescriptor.java
67:  public boolean supportsUniqueIndexOn(List<String> indexFields) {
68-    Objects.requireNonNull(indexFields, "indexFields");
69-    List<String> shardFields = fields();
70-    if (indexFields.size() < shardFields.size()) {
71-      return false;
72-    }
73-    return indexFields.subList(0, shardFields.size()).equals(shardFields);
74-  }
75-}
exit=0

$ grep -n 'supportingIndexFields' -A 8 adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java
42:      List<String> supportingIndexFields,
43-      String operator,
44-      String reason,
45-      Supplier<Void> apply) {
46-    Objects.requireNonNull(collection, "collection");
47-    Objects.requireNonNull(shardKey, "shardKey");
48-    Objects.requireNonNull(readiness, "readiness");
49-    if (!readiness.approved()) {
50-      throw MongoOperationRejectedException.of(
--
54:    if (!supportingIndexFields
55:        .subList(0, Math.min(shardKey.fields().size(), supportingIndexFields.size()))
56-        .equals(shardKey.fields())) {
57-      throw MongoOperationRejectedException.of(
58-          "sharding.shard-collection",
59-          "sharding '"
60-              + collection
61-              + "' needs a supporting index prefixed by the shard key "
62-              + shardKey.fields());
63-    }
exit=0

=== 8.3 two promotion-evidence vocabularies ===
$ grep -n 'REQUIRED =' -A 3 adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/MongoAdvancedPromotionEvidence.java
18:  public static final Set<String> REQUIRED =
19-      Set.of("stable-platform", "actual-topology", "security", "migration", "failure", "runbook");
20-
21-  public MongoAdvancedPromotionEvidence {
exit=0

$ grep -n 'requiredEvidence' -A 5 adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java
56:  public static Set<String> requiredEvidence() {
57-    return Objects.requireNonNull(
58-        Set.of("index-readiness", "recall", "latency", "memory", "actual-topology"));
59-  }
60-}
exit=0

$ git grep -n 'MongoVectorSearchBenchmarkGate\|requiredEvidence()' -- 'adapter/outbound/persistence-mongo/src'
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java:15:public record MongoVectorSearchBenchmarkGate(
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java:19:  public static MongoVectorSearchBenchmarkGate standard() {
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java:20:    return new MongoVectorSearchBenchmarkGate(0.9, 200, 4L * 1024 * 1024 * 1024);
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java:23:  public MongoVectorSearchBenchmarkGate {
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchBenchmarkGate.java:56:  public static Set<String> requiredEvidence() {
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchReadinessGateTest.java:10:import dev.caskeleton.adapter.outbound.mongo.advanced.vector.MongoVectorSearchBenchmarkGate;
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchReadinessGateTest.java:104:    MongoVectorSearchBenchmarkGate benchmark = MongoVectorSearchBenchmarkGate.standard();
adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchReadinessGateTest.java:108:    assertThat(MongoVectorSearchBenchmarkGate.requiredEvidence()).contains("recall");
exit=0

=== 8.3b scaffold interfaces: implementations and disclaimers ===
--- MongoSearchOperations
  implementations: 
  says Scaffold:   adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchOperations.java:1
--- MongoTimeSeriesOperations
  implementations: 
  says Scaffold:   adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesOperations.java:1
--- MongoVectorSearchOperations
  implementations: 
  says Scaffold:   adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchOperations.java:1
--- TenantScopedMongoOperations
  implementations: 
  says Scaffold:   none
--- MongoTenantDatabaseResolver
  implementations: 
  says Scaffold:   none
--- MongoDataKeyResolver
  implementations: 
  says Scaffold:   none
--- MongoIntegrationEventPublisher
  implementations: 
  says Scaffold:   none
--- MongoChangeToIntegrationEventMapper
  implementations: 
  says Scaffold:   none

=== 8.4 documentation drift: what the module docs claim about Advanced ===
$ grep -rn 'Advanced' adapter/outbound/persistence-mongo/README.md | head -25
87:| `advanced/**` | opt-in Advanced/Experimental capability (sharding, time series, CSFLE, QE, search, vector, tenancy, bridge, GridFS) |
97:  무의존, Stable은 Advanced에 의존 금지, production은 testkit에 의존 금지, imperative↛reactive,
exit=0

$ grep -rn 'advanced' adapter/outbound/persistence-mongo/build.gradle | head
3:// and docs/mongodb/repository-adaptation.md (how the design's 19 stable + 12 advanced library
7:// `modules/mongodb` and `modules/mongodb-advanced`. This repository's fail-closed module registry
exit=0


=== 8.1c the 19th concrete class: which one carries neither annotation ===
$ git grep -l 'public final class\|public class' -- 'adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced' | sort > /tmp/all19.txt; git grep -l '@MongoAdvancedEntryPoint\|@MongoAdvancedPolicy' -- 'adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced' | sort > /tmp/ann18.txt; comm -23 /tmp/all19.txt /tmp/ann18.txt
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/autoconfigure/MongoAdvancedConfiguration.java
exit=0

$ grep -n 'ADVANCED_PACKAGE\|everyAdvancedTypeIsClassified' -A 20 adapter/outbound/persistence-mongo/src/testkit/java/dev/caskeleton/adapter/outbound/mongo/testkit/arch/MongoAdvancedRules.java | head -50
23: * <p>Two rules, because one alone is escapable. {@link #everyAdvancedTypeIsClassified()} makes a
24- * new concrete class declare which half it is in, so "we only gate the executable ones" cannot
25- * quietly become "we gate the ones somebody remembered". {@link #everyEntryPointConsultsTheGuard()}
26- * then checks that a declared entry point takes a {@link MongoAdvancedCapabilityGuard} and calls
27- * it, which is the part that actually refuses.
28- */
29-public final class MongoAdvancedRules {
30-
31:  private static final String ADVANCED_PACKAGE = "dev.caskeleton.adapter.outbound.mongo.advanced..";
32-
33-  private MongoAdvancedRules() {}
34-
35-  /** Every concrete Advanced class states whether it executes or only decides. */
36:  public static ArchRule everyAdvancedTypeIsClassified() {
37:    return everyAdvancedTypeIsClassified(ADVANCED_PACKAGE);
38-  }
39-
40-  /** The same rule over a stated package, so a fixture can prove it fails. */
41:  public static ArchRule everyAdvancedTypeIsClassified(String... packageIdentifiers) {
42-    return ArchRuleDefinition.classes()
43-        .that()
44-        .resideInAnyPackage(packageIdentifiers)
45-        .and(concreteClass())
46-        .should()
47-        .beAnnotatedWith(MongoAdvancedEntryPoint.class)
48-        .orShould()
49-        .beAnnotatedWith(MongoAdvancedPolicy.class)
50-        .as(
51-            "every concrete Advanced type is annotated @MongoAdvancedEntryPoint or"
52-                + " @MongoAdvancedPolicy")
53-        .because(
54-            "an unclassified class is one nobody decided about, and the capability invariant is"
55-                + " only as strong as the weakest unclassified entry point");
56-  }
57-
58-  /** A declared entry point takes the guard and asks it before it exists. */
59-  public static ArchRule everyEntryPointConsultsTheGuard() {
60-    return ArchRuleDefinition.classes()
61-        .that()
exit=0

=== 8.2c does any test drive MongoShardingAdminGateway? ===
$ git grep -n 'MongoShardingAdminGateway' -- 'adapter/outbound/persistence-mongo/src'
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java:22:public final class MongoShardingAdminGateway {
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java:26:  public MongoShardingAdminGateway(
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/sharding/admin/MongoShardingAdminGateway.java:30:    Objects.requireNonNull(guard, "guard").require(MongoShardingAdminGateway.class);
exit=0

=== 8.3c the bridge is a second writer of the change stream checkpoint store ===
$ git grep -n 'checkpoints.save' -- 'adapter/outbound/persistence-mongo/src/main'
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoChangeMessagingBridge.java:60:      return checkpoints.save(checkpoint);
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/bridge/MongoChangeMessagingBridge.java:84:        ? checkpoints.save(checkpoint)
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/tenancy/database/MongoTenantMigrationCoordinator.java:74:    checkpoints.save(
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/changestream/projector/MongoChangeStreamRunner.java:75:                    ? checkpoints.save(checkpoint).thenReturn(result)
exit=0

=== 8.3d TenantScopedMongoOperations is the one scaffold interface with no disclaimer ===
$ git grep -n 'Scaffold' -- 'adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced'
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/search/MongoSearchOperations.java:13: * <p><strong>Scaffold.</strong> This repository ships no implementation of {@code
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/timeseries/MongoTimeSeriesOperations.java:14: * <p><strong>Scaffold.</strong> This repository ships no implementation of {@code
adapter/outbound/persistence-mongo/src/main/java/dev/caskeleton/adapter/outbound/mongo/advanced/vector/MongoVectorSearchOperations.java:14: * <p><strong>Scaffold.</strong> This repository ships no implementation of {@code
exit=0

$ git grep -rn 'implements TenantScopedMongoOperations\|implements MongoSearchOperations\|implements MongoTimeSeriesOperations\|implements MongoVectorSearchOperations' -- 'adapter/outbound/persistence-mongo/src'
exit=1


=== 8.1d why the rule passes despite MongoAdvancedConfiguration carrying neither annotation ===
$ grep -n 'concreteClass' -A 20 adapter/outbound/persistence-mongo/src/testkit/java/dev/caskeleton/adapter/outbound/mongo/testkit/arch/MongoAdvancedRules.java | tail -30
58-  /** A declared entry point takes the guard and asks it before it exists. */
59-  public static ArchRule everyEntryPointConsultsTheGuard() {
60-    return ArchRuleDefinition.classes()
61-        .that()
62-        .areAnnotatedWith(MongoAdvancedEntryPoint.class)
63-        .should(consultTheGuardInEveryConstructor())
64-        .because(
65-            "a capability that is checked at the first call has already been wired into a running"
--
69:  private static com.tngtech.archunit.base.DescribedPredicate<JavaClass> concreteClass() {
70-    return new com.tngtech.archunit.base.DescribedPredicate<>("are concrete classes") {
71-      @Override
72-      public boolean test(JavaClass candidate) {
73-        // A @Configuration class is the package's composition root: it builds entry points through
74-        // the guard rather than being one, and gating it would gate the thing that supplies the
75-        // guard.
76-        return !candidate.isInterface()
77-            && !candidate.isEnum()
78-            && !candidate.isRecord()
79-            && !candidate.isAnnotation()
80-            && !candidate.isAnonymousClass()
81-            && !candidate.isAnnotatedWith("org.springframework.context.annotation.Configuration")
82-            // A private nested helper cannot be constructed from outside its enclosing type, so the
83-            // enclosing type's classification already covers everything it can do.
84-            && !candidate
85-                .getModifiers()
86-                .contains(com.tngtech.archunit.core.domain.JavaModifier.PRIVATE)
87-            && !candidate
88-                .getModifiers()
89-                .contains(com.tngtech.archunit.core.domain.JavaModifier.ABSTRACT);
exit=0

$ sed -n '28,50p' adapter/outbound/persistence-mongo/src/test/java/dev/caskeleton/adapter/outbound/mongo/architecture/MongoAdvancedRulesTest.java
class MongoAdvancedRulesTest {

  private final JavaClasses production =
      new ClassFileImporter()
          .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
          .importPackages("dev.caskeleton.adapter.outbound.mongo.advanced");

  @Test
  @DisplayName("every concrete Advanced type declares whether it executes")
  void everyAdvancedTypeIsClassified() {
    assertThatCode(() -> MongoAdvancedRules.everyAdvancedTypeIsClassified().check(production))
        .doesNotThrowAnyException();
  }

  @Test
  @DisplayName("every declared entry point consults the capability guard")
  void everyEntryPointConsultsTheGuard() {
    assertThatCode(() -> MongoAdvancedRules.everyEntryPointConsultsTheGuard().check(production))
        .doesNotThrowAnyException();
  }

  @Test
  @DisplayName("an unclassified Advanced class fails the classification rule")
exit=0


=== PROBE (execution): every sharding operation with complete evidence ===
One temporary probe class was added, run, and removed:
  src/test/.../advanced/sharding/Ss10ShardingProbe.java  (@Tag mongodb-contract, hermetic)
Inputs: SHARDING capability enabled; MongoAdminAuthorization.approved(all four operations,
        'release-engineer') - i.e. a named approver AND a completed dry run; an approved
        ShardKeyReadinessReport; a complete ReshardApproval (approved readiness, dry run
        completed, named approver, written forward strategy); a supporting index prefixed
        by the shard key; a non-expired command clock.

PROBE shardCollection  -> REFUSED MongoOperationRejectedException: admin operation
        SHARD_COLLECTION destroys data or rewrites a collection; it runs under an approval
        bound to this exact command or not at all
PROBE refineShardKey   -> REFUSED (same, REFINE_SHARD_KEY)
PROBE reshardCollection-> REFUSED (same, RESHARD_COLLECTION)
PROBE controlBalancer  -> APPLIED
PROBE bodies actually executed = 1 of 4

Reading: MongoShardingAdminGateway routes its three high-risk operations through
MongoAdminGateway's 5-argument execute convenience, which builds MongoAdminCommand.routine
and passes approval = null. MongoAdminGateway.execute(command, approval, body) refuses any
highRisk() operation when approval == null. The gateway builds a complete ReshardApproval
of its own and hands none of it to the plane that decides.
$ git status --short | wc -l
0
exit=0

