feat: add messaging R2 polling producer

This commit is contained in:
donghyeon-ka
2026-07-31 23:48:43 +09:00
parent b3add0162d
commit e5af291269
93 changed files with 19617 additions and 139 deletions
@@ -0,0 +1,55 @@
schemaVersion: 1
releaseProfiles:
- releaseProfileId: messaging-first-r2-polling-producer-release.v1
compatibilityProfileId: messaging-first-r2-polling-producer.v1
selectedCardIds:
- messaging-outbox-publish.v1
- kafka-spring-acknowledged-idempotent.v1
- postgresql-polling-outbox.v2
- postgresql-per-record-jit-claim.v1
- json-schema-envelope.v1
- external-topic-validated.v1
- kafka-sasl-ssl-scram-sha-512.v1
- kafka-compression-none.v1
- per-key-normal-path-sequence-detectable.v1
- same-postgresql-transaction-resource.v1
- authenticated-internal-web-disposition.v1
requiredCardMaturity: release-eligible
expectedProfileHash: ""
expectedCatalogHash: ""
expectedSchemaHash: ""
expectedSettingsHash: ""
requiredEvidenceTasks:
- verifyMessagingContracts
- verifyMessagingJsonSchemaV1
- verifyMessagingPollingOutboxR2
- verifyMessagingKafkaProducerR2
- verifyMessagingSecurityR2
- verifyMessagingReleaseProfile
- verifyMessagingTargetBindingPreflight
- verifyMessagingTargetBinding
- verifyMessagingDeploymentCutover
- verifyMessagingCleanupTargetBinding
- verifyMessagingFinalR2Profile
requiredScenarios:
- messaging.release.contracts-schema.v1
- messaging.release.polling-outbox.v2
- messaging.release.kafka-producer.v1
- messaging.release.security-topology.v1
- messaging.release.shutdown-rotation.v1
runbookIds:
- runbook.messaging-producer-unavailable-or-unauthorized.v1
- runbook.messaging-outbox-backlog-and-stale-lease.v1
- runbook.messaging-delivery-indeterminate-and-duplicate-burst.v1
- runbook.messaging-schema-poison-or-record-too-large.v1
- runbook.messaging-terminal-delivery-disposition.v1
- runbook.messaging-topic-policy-or-partition-change.v1
- runbook.messaging-shutdown-deploy-and-secret-rotation.v1
- runbook.messaging-legacy-to-v2-relay-authority-cutover.v1
evidencePolicy:
rejectMissing: true
rejectSkipped: true
rejectStale: true
rejectWrongSource: true
rejectMismatchedProfile: true
maximumAgeSeconds: 86400