{"id":"bumpgrade-analytics-experiments-source-data","updatedAt":"2026-05-22","status":"time-windowed-dashboard-ready","issue":129,"parentIssue":18,"generatedFrom":"src/lib/analytics-experiments.ts","routes":["/analytics/source-data","/api/analytics/events","/api/analytics/assignments","/api/admin/analytics/experiment-decisions","/api/admin/analytics/notification-inbox-records","/api/admin/analytics/notification-dispatch-preflights","/api/admin/analytics/notification-provider-domain-readiness","/api/admin/analytics/notification-content-consent-readiness","/api/admin/analytics/notification-send-payload-readiness","/api/admin/analytics/notification-queue-producer-readiness","/api/admin/analytics/notification-queue-consumer-readiness","/api/admin/analytics/notification-provider-call-readiness","/api/admin/analytics/notification-delivery-attempt-readiness","/api/admin/analytics/notification-delivery-result-readiness","/api/admin/analytics/notification-delivery-status-webhook-readiness","/api/admin/analytics/notification-provider-polling-readiness","/api/admin/analytics/notification-receipt-payload-readiness","/api/admin/analytics/notification-delivery-receipt-readiness","/api/admin/analytics/notification-provider-status-reconciliation-readiness","/admin/analytics","/funnels/indie-launch-sandbox","/analytics/indie-launch-dashboard"],"stableIds":["analyticsEventId","analyticsEventIngestionId","analyticsEventVariantAggregateId","analyticsEventSourceAggregateId","analyticsTimeWindow","experimentAssignmentId","analyticsExperimentDecisionId","analyticsExperimentDecisionKind","analyticsReportExportId","analyticsReportExportSectionId","analyticsCohortFixtureId","analyticsCohortComparisonId","analyticsCohortReviewId","analyticsCohortReviewStatus","analyticsAlertThresholdId","analyticsAnomalyReviewId","analyticsAnomalyReviewStatus","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsNotificationReadinessStatus","analyticsNotificationInboxRecordId","analyticsNotificationInboxStatus","analyticsNotificationDispatchPreflightId","analyticsNotificationDispatchPreflightStatus","analyticsNotificationProviderDomainReadinessId","analyticsNotificationProviderDomainReadinessStatus","analyticsNotificationProviderDomainReadinessDisposition","analyticsNotificationContentConsentReadinessId","analyticsNotificationContentConsentReadinessStatus","analyticsNotificationContentConsentReadinessDisposition","analyticsNotificationSendPayloadReadinessId","analyticsNotificationSendPayloadReadinessStatus","analyticsNotificationSendPayloadReadinessDisposition","analyticsNotificationQueueProducerReadinessId","analyticsNotificationQueueProducerReadinessStatus","analyticsNotificationQueueProducerReadinessDisposition","analyticsNotificationQueueConsumerReadinessId","analyticsNotificationQueueConsumerReadinessStatus","analyticsNotificationQueueConsumerReadinessDisposition","analyticsNotificationProviderCallReadinessId","analyticsNotificationProviderCallReadinessStatus","analyticsNotificationProviderCallReadinessDisposition","analyticsNotificationDeliveryAttemptReadinessId","analyticsNotificationDeliveryAttemptReadinessStatus","analyticsNotificationDeliveryAttemptReadinessDisposition","analyticsNotificationDeliveryResultReadinessId","analyticsNotificationDeliveryResultReadinessStatus","analyticsNotificationDeliveryResultReadinessDisposition","analyticsNotificationDeliveryStatusWebhookReadinessId","analyticsNotificationDeliveryStatusWebhookReadinessStatus","analyticsNotificationDeliveryStatusWebhookReadinessDisposition","analyticsNotificationProviderPollingReadinessId","analyticsNotificationProviderPollingReadinessStatus","analyticsNotificationProviderPollingReadinessDisposition","analyticsNotificationReceiptPayloadReadinessId","analyticsNotificationReceiptPayloadReadinessStatus","notificationReceiptPayloadReadinessDisposition","analyticsNotificationDeliveryReceiptReadinessId","analyticsNotificationDeliveryReceiptReadinessStatus","notificationDeliveryReceiptReadinessDisposition","analyticsNotificationProviderStatusReconciliationReadinessId","analyticsNotificationProviderStatusReconciliationReadinessStatus","notificationProviderStatusReconciliationReadinessDisposition","utmSource","utmMedium","utmCampaign","referrerHost","analyticsFunnelConversionReportId","metricId","funnelStepMetricId","experimentId","variantId","assignmentRuleId","reportId","agentActionId"],"eventWrites":{"id":"analytics-event-capture-contract","status":"event-capture-attribution-ready","issue":125,"parentIssue":18,"apiRoute":"/api/analytics/events","tables":["analytics_events","analytics_event_ingestions"],"publicSafeFields":["analyticsEventId","eventDefinitionId","eventKind","sourceRoute","publicProperties","duplicate","status"],"serverPrivateFields":["client_correlation_hash","ip_hash","user_agent_hash","request_hash","metadata_json","raw cookies","raw contact identifiers","raw UTM payload","raw referrer URL"],"writeBoundary":"Issues #105, #121, #123, and #125 can capture seeded analytics events with idempotency, source-route validation, hashed request evidence, bot/preview suppression, browser-side funnel page-view beacons, deterministic variant evidence, normalized campaign/source public properties, and public-safe responses. Cookie assignment, contact-level reporting, arbitrary custom events, raw campaign/referrer exposure, A/B traffic routing, automated decisions, and direct agent analytics writes require future confirmed-write APIs."},"pageViewBeacon":{"id":"analytics-funnel-page-view-beacon-contract","status":"source-attributed-page-view-beacon-ready","issue":125,"parentIssue":18,"sourceRoute":"/funnels/indie-launch-sandbox","apiRoute":"/api/analytics/events","assignmentApiRoute":"/api/analytics/assignments","eventDefinitionId":"event-funnel-page-view","experimentId":"experiment-opt-in-hero-promise","storage":"sessionStorage-scoped idempotency and anonymous key only; no cookie assignment","suppressedTraffic":["known bot user agents","known crawler user agents","explicit preview/test suppression flags"],"publicSafeFields":["route","funnelId","stepId","variantId","utmSource","utmMedium","utmCampaign","utmContent","utmTerm","referrerHost","eventDefinitionId","sourceRoute","status","duplicate"],"serverPrivateFields":["anonymous session key before hashing","raw IP address","raw user agent","raw referrer","raw URL query string","raw UTM payload","cookies","contact identifiers"],"writeBoundary":"Issues #121, #123, and #125 record a seeded funnel page-view event from the public funnel preview once per browser session and step using the existing seeded analytics event API, attach deterministic seeded variant evidence when assignment succeeds, and include normalized UTM/source public properties when present. It does not create cookies, route A/B traffic, expose raw visitors, store full referrer URLs or raw query strings, assign contact identity, or make automated optimization decisions."},"assignmentWrites":{"id":"analytics-experiment-assignment-contract","status":"assignment-ready","issue":107,"parentIssue":18,"apiRoute":"/api/analytics/assignments","tables":["analytics_experiment_assignments"],"publicSafeFields":["experimentAssignmentId","experimentId","variantId","assignmentBucket","sourceRoute","duplicate","status"],"serverPrivateFields":["visitor_key_hash","assignment_hash","ip_hash","user_agent_hash","request_hash","metadata_json","raw cookies","raw contact identifiers","raw visitor keys"],"writeBoundary":"Issue #107 can assign seeded experiment variants deterministically with idempotency, source-route validation, hashed visitor evidence, and public-safe responses. Issues #121 and #123 can call this assignment path from the seeded funnel page-view beacon using session-scoped storage, but cookie creation, contact-level reporting, experiment traffic routing, winner decisions, and direct agent experiment writes require future confirmed-write APIs."},"experimentDecisionWrites":{"id":"analytics-experiment-decision-contract","status":"owner-experiment-decision-evidence-ready","issue":261,"parentIssue":18,"apiRoute":"/api/admin/analytics/experiment-decisions","auth":"owner-session","tables":["analytics_experiment_decisions"],"publicSafeFields":["analyticsExperimentDecisionId","experimentId","decisionKind","selectedVariantId","timeWindowKey","expectedAssignmentCount","expectedVariantCounts","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","trafficRoutingEnabled","automatedWinnerEnabled"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","metadata_json","raw analytics event rows","raw experiment assignment rows","raw visitor keys"],"writeBoundary":"Issue #261 can record owner-confirmed experiment decision evidence after exact confirmation, idempotency, dashboard revision checks, experiment status checks, aggregate count checks, and sample-size caveat acknowledgement. It does not route traffic, assign cookies, select automated winners, expose raw event rows, expose raw assignment rows, expose contact analytics, or make revenue claims."},"notificationInboxWrites":{"id":"analytics-notification-inbox-contract","status":"owner-analytics-notification-inbox-records-ready","issue":271,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-inbox-records","auth":"owner-session","tables":["analytics_notification_inbox_records"],"confirmationText":"Record Bumpgrade analytics notification inbox evidence","publicSafeFields":["analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","adminInboxRecordCreated"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","email body","queue payload","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #271 can record owner-confirmed analytics notification inbox evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It creates owner-visible inbox records only; it does not send email, create customer alerts, dispatch queues, expose recipients, expose email bodies, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDispatchPreflightWrites":{"id":"analytics-notification-dispatch-preflight-contract","status":"owner-analytics-notification-dispatch-preflights-ready","issue":284,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-dispatch-preflights","auth":"owner-session","tables":["analytics_notification_dispatch_preflight_records"],"confirmationText":"Record Bumpgrade analytics notification dispatch preflight evidence","publicSafeFields":["analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationDispatchPreflightDisposition","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerDispatchPreflightRecorded"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","email body","provider message id","queue payload","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #284 can record owner-confirmed analytics notification dispatch preflight evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox record checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible dispatch preflight evidence only; it does not send email, call providers, create customer alerts, dispatch queues, expose recipients, expose email bodies, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderDomainReadinessWrites":{"id":"analytics-notification-provider-domain-readiness-contract","status":"owner-analytics-notification-provider-domain-readiness-records-ready","issue":286,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-domain-readiness","auth":"owner-session","tables":["analytics_notification_provider_domain_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification provider/domain readiness evidence","publicSafeFields":["analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationProviderDomainReadinessDisposition","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerProviderDomainReadinessRecorded"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","provider secret","sender credential","private DNS credentials","notification recipient","email body","provider message id","queue payload","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #286 can record owner-reviewed analytics notification provider/domain readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider/domain readiness evidence only; it does not send email, call providers, enable provider sends, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, dispatch queues, expose recipients, expose email bodies, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationContentConsentReadinessWrites":{"id":"analytics-notification-content-consent-readiness-contract","status":"owner-analytics-notification-content-consent-readiness-records-ready","issue":288,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-content-consent-readiness","auth":"owner-session","tables":["analytics_notification_content_consent_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification content/consent readiness evidence","publicSafeFields":["analyticsNotificationContentConsentReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationContentConsentReadinessDisposition","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerContentConsentReadinessRecorded","bodyTemplateReviewed","unsubscribeLinkReviewed","rateLimitReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","email body","body template","unsubscribe URL","provider message id","queue payload","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #288 can record owner-reviewed analytics notification content/consent readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible content, unsubscribe, rate-limit, audit-correlation, and retention readiness evidence only; it does not send email, call providers, enable provider sends, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, dispatch queues, expose recipients, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationSendPayloadReadinessWrites":{"id":"analytics-notification-send-payload-readiness-contract","status":"owner-analytics-notification-send-payload-readiness-records-ready","issue":290,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-send-payload-readiness","auth":"owner-session","tables":["analytics_notification_send_payload_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification send-payload readiness evidence","publicSafeFields":["analyticsNotificationSendPayloadReadinessId","analyticsNotificationContentConsentReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationSendPayloadReadinessDisposition","expectedNotificationContentConsentReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerSendPayloadReadinessRecorded","payloadShapeReviewed","unsubscribeFooterReviewed","consentSuppressionRecheckReviewed","recipientScopeReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","queue message","queue payload","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #290 can record owner-reviewed analytics notification send-payload readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current content/consent readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible payload-shape, unsubscribe-footer, consent/suppression recheck, recipient-scope, audit-correlation, and retention readiness evidence only; it does not send email, dispatch queues, create queue messages, call providers, enable provider sends, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationQueueProducerReadinessWrites":{"id":"analytics-notification-queue-producer-readiness-contract","status":"owner-analytics-notification-queue-producer-readiness-records-ready","issue":292,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-queue-producer-readiness","auth":"owner-session","tables":["analytics_notification_queue_producer_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification queue-producer readiness evidence","publicSafeFields":["analyticsNotificationQueueProducerReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationQueueProducerReadinessDisposition","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerQueueProducerReadinessRecorded","queueBindingReviewed","producerModeReviewed","idempotencyPolicyReviewed","retryDeadLetterPolicyReviewed","consumerDependencyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #292 can record owner-reviewed analytics notification queue-producer readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible Queue binding, producer-mode, idempotency-policy, retry/dead-letter-policy, consumer-dependency, backpressure, audit-correlation, and retention readiness evidence only; it does not send email, enable Queue producers, dispatch queues, create queue messages, create queue payload bodies, call providers, enable provider sends, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationQueueConsumerReadinessWrites":{"id":"analytics-notification-queue-consumer-readiness-contract","status":"owner-analytics-notification-queue-consumer-readiness-records-ready","issue":294,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-queue-consumer-readiness","auth":"owner-session","tables":["analytics_notification_queue_consumer_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification queue-consumer readiness evidence","publicSafeFields":["analyticsNotificationQueueConsumerReadinessId","analyticsNotificationQueueProducerReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationQueueConsumerReadinessDisposition","expectedNotificationQueueProducerReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerQueueConsumerReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","queue message","queue payload","queue payload body","retry row","dead-letter row","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #294 can record owner-reviewed analytics notification queue-consumer readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current queue-producer readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible Queue binding, consumer-mode, producer-dependency, payload-read-policy, ack-policy, retry/dead-letter-policy, provider-handoff-dependency, idempotency-policy, backpressure, audit-correlation, and retention readiness evidence only; it does not send email, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, call providers, enable provider sends, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderCallReadinessWrites":{"id":"analytics-notification-provider-call-readiness-contract","status":"owner-analytics-notification-provider-call-readiness-records-ready","issue":297,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-call-readiness","auth":"owner-session","tables":["analytics_notification_provider_call_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification provider-call readiness evidence","publicSafeFields":["analyticsNotificationProviderCallReadinessId","analyticsNotificationQueueConsumerReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationProviderCallReadinessDisposition","expectedNotificationQueueConsumerReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerProviderCallReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #297 can record owner-reviewed analytics notification provider-call readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current queue-consumer readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider-call dependency readiness only; it does not send email, enable provider sends or calls, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryAttemptReadinessWrites":{"id":"analytics-notification-delivery-attempt-readiness-contract","status":"owner-analytics-notification-delivery-attempt-readiness-records-ready","issue":299,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-attempt-readiness","auth":"owner-session","tables":["analytics_notification_delivery_attempt_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification delivery-attempt readiness evidence","publicSafeFields":["analyticsNotificationDeliveryAttemptReadinessId","analyticsNotificationProviderCallReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationDeliveryAttemptReadinessDisposition","expectedNotificationProviderCallReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerDeliveryAttemptReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #299 can record owner-reviewed analytics notification delivery-attempt readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current provider-call readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-attempt dependency readiness only; it does not send email, enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryResultReadinessWrites":{"id":"analytics-notification-delivery-result-readiness-contract","status":"owner-analytics-notification-delivery-result-readiness-records-ready","issue":301,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-result-readiness","auth":"owner-session","tables":["analytics_notification_delivery_result_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification delivery-result readiness evidence","publicSafeFields":["analyticsNotificationDeliveryResultReadinessId","analyticsNotificationDeliveryAttemptReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationDeliveryResultReadinessDisposition","expectedNotificationDeliveryAttemptReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerDeliveryResultReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","delivery receipt","delivery receipt payload","status webhook","provider polling result","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #301 can record owner-reviewed analytics notification delivery-result readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-attempt readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-result dependency readiness only; it does not send email, enable provider sends or calls, attempt delivery, record delivery results, create provider responses, expose provider message IDs, create delivery receipts, process status webhooks, poll providers, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryStatusWebhookReadinessWrites":{"id":"analytics-notification-delivery-status-webhook-readiness-contract","status":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","issue":303,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-status-webhook-readiness","auth":"owner-session","tables":["analytics_notification_delivery_status_webhook_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification delivery-status-webhook readiness evidence","publicSafeFields":["analyticsNotificationDeliveryStatusWebhookReadinessId","analyticsNotificationDeliveryResultReadinessId","analyticsNotificationDeliveryAttemptReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationDeliveryStatusWebhookReadinessDisposition","expectedNotificationDeliveryResultReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerDeliveryStatusWebhookReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","delivery receipt","delivery receipt payload","status webhook","status webhook payload","provider polling result","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #303 can record owner-reviewed analytics notification delivery-status-webhook readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-result readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-status-webhook boundary readiness only; it does not send email, enable provider sends or calls, attempt delivery, record delivery results, process delivery-status webhooks, create delivery receipts, expose receipt payloads, process status webhooks, poll providers, configure providers, create provider responses, expose provider message IDs, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderPollingReadinessWrites":{"id":"analytics-notification-provider-polling-readiness-contract","status":"owner-analytics-notification-provider-polling-readiness-records-ready","issue":305,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-polling-readiness","auth":"owner-session","tables":["analytics_notification_provider_polling_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification provider-polling readiness evidence","publicSafeFields":["analyticsNotificationProviderPollingReadinessId","analyticsNotificationDeliveryStatusWebhookReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationProviderPollingReadinessDisposition","expectedNotificationDeliveryStatusWebhookReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerProviderPollingReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","delivery receipt","delivery receipt payload","status webhook","status webhook payload","provider polling result","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #305 can record owner-reviewed analytics notification provider-polling readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-status-webhook readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider-polling boundary readiness only; it does not send email, enable provider sends or calls, attempt delivery, record delivery results, process delivery-status webhooks, poll providers, create delivery receipts, expose receipt payloads, process status webhooks, configure providers, create provider responses, expose provider message IDs, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationReceiptPayloadReadinessWrites":{"id":"analytics-notification-receipt-payload-readiness-contract","status":"owner-analytics-notification-receipt-payload-readiness-records-ready","issue":307,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-receipt-payload-readiness","auth":"owner-session","tables":["analytics_notification_receipt_payload_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification receipt-payload readiness evidence","publicSafeFields":["analyticsNotificationReceiptPayloadReadinessId","analyticsNotificationProviderPollingReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationReceiptPayloadReadinessDisposition","expectedNotificationProviderPollingReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerReceiptPayloadReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","delivery receipt","delivery receipt payload","status webhook","status webhook payload","provider polling result","receipt payload","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #307 can record owner-reviewed analytics notification receipt-payload readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current provider-polling readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible receipt-payload boundary readiness only; it does not send email, enable provider sends or calls, attempt delivery, record delivery results, process delivery-status webhooks, poll providers, create delivery receipts, expose receipt payloads, process status webhooks, configure providers, create provider responses, expose provider message IDs, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryReceiptReadinessWrites":{"id":"analytics-notification-delivery-receipt-readiness-contract","status":"owner-analytics-notification-delivery-receipt-readiness-records-ready","issue":309,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-receipt-readiness","auth":"owner-session","tables":["analytics_notification_delivery_receipt_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification delivery-receipt readiness evidence","publicSafeFields":["analyticsNotificationDeliveryReceiptReadinessId","analyticsNotificationReceiptPayloadReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationDeliveryReceiptReadinessDisposition","expectedNotificationReceiptPayloadReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerDeliveryReceiptReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","delivery receipt","delivery receipt payload","status webhook","status webhook payload","provider polling result","receipt payload","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #309 can record owner-reviewed analytics notification delivery-receipt readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current receipt-payload readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-receipt boundary readiness only; it does not send email, enable provider sends or calls, attempt delivery, record delivery results, process delivery-status webhooks, poll providers, create delivery receipts, expose receipt payloads, process status webhooks, configure providers, create provider responses, expose provider message IDs, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderStatusReconciliationReadinessWrites":{"id":"analytics-notification-provider-status-reconciliation-readiness-contract","status":"owner-analytics-notification-provider-status-reconciliation-readiness-records-ready","issue":311,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-status-reconciliation-readiness","auth":"owner-session","tables":["analytics_notification_provider_status_reconciliation_readiness_records"],"confirmationText":"Record Bumpgrade analytics notification provider-status-reconciliation readiness evidence","publicSafeFields":["analyticsNotificationProviderStatusReconciliationReadinessId","analyticsNotificationDeliveryReceiptReadinessId","analyticsNotificationSendPayloadReadinessId","analyticsNotificationProviderDomainReadinessId","analyticsNotificationDispatchPreflightId","analyticsNotificationInboxRecordId","analyticsNotificationReadinessId","analyticsNotificationChannelId","analyticsTimeWindow","notificationProviderStatusReconciliationReadinessDisposition","expectedNotificationDeliveryReceiptReadinessStatus","expectedNotificationSendPayloadReadinessStatus","expectedNotificationProviderDomainReadinessStatus","expectedNotificationDispatchPreflightStatus","expectedNotificationInboxStatus","expectedReadinessStatus","expectedOwnerReviewStatus","expectedAlertThresholdCount","expectedConversionSampleSize","sampleSizeCaveatAcknowledged","ownerProviderStatusReconciliationReadinessRecorded","queueBindingReviewed","consumerModeReviewed","producerDependencyReviewed","payloadReadPolicyReviewed","ackPolicyReviewed","retryDeadLetterPolicyReviewed","providerHandoffDependencyReviewed","idempotencyPolicyReviewed","backpressurePolicyReviewed","auditCorrelationReviewed","retentionPolicyReviewed"],"serverPrivateFields":["actor_user_id","actor_email_hash","private_note_sha256","confirmation_text_sha256","notification recipient","recipient payload","personalized body","raw payload body","email body","body template","unsubscribe URL","provider response","provider message id","delivery receipt","delivery receipt payload","status webhook","status webhook payload","provider polling result","provider status reconciliation","provider status reconciliation payload","receipt payload","provider secret","sender credential","private DNS credentials","queue message","queue payload","queue payload body","raw analytics event rows","raw experiment assignment rows","metadata_json"],"writeBoundary":"Issue #311 can record owner-reviewed analytics notification provider-status reconciliation readiness evidence after exact confirmation, idempotency, dashboard revision checks, readiness status checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-receipt readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider-status reconciliation boundary readiness only; it does not send email, enable provider sends or calls, attempt delivery, record delivery results, process delivery-status webhooks, poll providers, create delivery receipts, expose receipt payloads, process status webhooks, reconcile provider statuses, configure providers, create provider responses, expose provider message IDs, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"conversionReport":{"id":"analytics-funnel-conversion-report-contract","status":"conversion-report-ready","issue":119,"parentIssue":18,"sourceDataRoute":"/analytics/source-data","tables":["analytics_events"],"publicSafeFields":["metricId","stepId","label","visitorEventId","conversionEventId","visitorCount","conversionCount","conversionRate","sampleSize","reportMode","timeWindow"],"serverPrivateFields":["raw analytics event rows","client_correlation_hash","ip_hash","user_agent_hash","request_hash","metadata_json","raw cookies","raw contact identifiers","raw visitor keys","raw Stripe identifiers"],"writeBoundary":"Issues #119 and #129 can report aggregate funnel conversion rows from captured seeded analytics events and filter them by fixed public-safe time windows. It does not expose raw rows, contact-level analytics, visitor timelines, bot filtering decisions, attribution mutation, experiment traffic routing, automated winners, or direct agent analytics writes."},"writeBoundary":"Issues #105, #107, #119, #121, #123, #125, #127, #129, #261, #263, #265, #267, #269, #271, #284, #286, #288, #290, #292, #294, #297, #299, #301, #303, #305, #307, #309, and #311 can capture seeded analytics events, assign seeded experiment variants, report aggregate funnel conversion rows, render dashboard-visible aggregate source attribution rows, filter aggregate source and conversion summaries by fixed time windows, record browser-side seeded funnel page-view beacons with deterministic variant evidence, normalized source attribution, session-scoped idempotency, source-route validation, bot/preview suppression, hashed request evidence, aggregate-only public reporting, record owner-confirmed experiment decision evidence, expose aggregate report export metadata, expose owner-reviewed cohort comparison evidence with sample-size caveats, expose owner-reviewed alert threshold/anomaly-review evidence, expose owner-reviewed notification delivery readiness evidence, record owner-confirmed notification inbox evidence, record owner-confirmed notification dispatch preflight evidence, record owner-reviewed provider/domain readiness evidence, record owner-reviewed content/consent readiness evidence, record owner-reviewed send-payload readiness evidence, record owner-reviewed queue-producer readiness evidence, record owner-reviewed queue-consumer readiness evidence, record owner-reviewed provider-call readiness evidence, record owner-reviewed delivery-attempt readiness evidence, record owner-reviewed delivery-result readiness evidence, record owner-reviewed delivery-status-webhook readiness evidence, record owner-reviewed provider-polling readiness evidence, record owner-reviewed receipt-payload readiness evidence, record owner-reviewed delivery-receipt readiness evidence, and record owner-reviewed provider-status reconciliation readiness evidence. Cookie creation, contact-level analytics, raw campaign/referrer reporting, arbitrary custom events, raw analytics exports, automated alert sends, owner email sends, queue dispatch, Queue producers, Queue consumers, queue messages, queue message consumption, queue acknowledgements, retry/dead-letter rows, queue payload body reads, queue payload bodies, recipient payloads, personalized bodies, raw payload bodies, provider sends, provider calls, delivery attempts, delivery results, delivery status webhooks, provider responses, provider message IDs, delivery receipts, receipt payloads, status webhooks, provider polling, provider status reconciliation, body templates, unsubscribe URLs, provider configuration, provider secrets, sender credentials, private DNS credentials, customer alerts, experiment traffic routing, automated winners, and revenue claims require actor identity, privacy review, idempotency, stale-state checks, audit correlation, redaction, retention limits, and sample-size caveats.","dashboards":[{"id":"analytics-dashboard-indie-launch","slug":"indie-launch-dashboard","title":"Indie launch analytics and experiments","status":"draft","issue":129,"parentIssue":18,"sourceDataRoute":"/analytics/source-data","previewRoute":"/analytics/indie-launch-dashboard","linkedFunnelRoute":"/funnels/indie-launch-sandbox","linkedOfferRoute":"/offers/indie-launch-stack","linkedAudienceRoute":"/audience/indie-launch-waitlist","linkedProductRoute":"/products/indie-launch-library","revisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","summary":"A privacy-aware analytics dashboard for source attribution, funnel conversion, checkout revenue, audience opt-ins, time-window reports, experiment assignments, alerts, and launch decisions.","events":[{"id":"event-funnel-page-view","kind":"page_view","title":"Funnel page viewed","sourceRoute":"/funnels/indie-launch-sandbox","linkedFeatureIds":["feature-funnel-builder","feature-analytics-testing"],"publicProperties":["route","funnelId","stepId","variantId","utmSource","utmMedium","utmCampaign","utmContent","utmTerm","referrerHost"],"privateDataExcluded":["IP address","user agent","cookie id","contact id","full referrer","raw URL query string","raw UTM payload"],"aggregation":"Count by route, step, variant, normalized UTM fields, and coarse referrer host after browser-side session idempotency plus server-side bot filtering."},{"id":"event-audience-opt-in-created","kind":"opt_in","title":"Opt-in created","sourceRoute":"/audience/indie-launch-waitlist","linkedFeatureIds":["feature-email-automation-crm","feature-analytics-testing"],"publicProperties":["formId","segmentId","leadMagnetId","consentVersion"],"privateDataExcluded":["Email address","name","IP address","consent timestamp","subscriber id"],"aggregation":"Count consenting opt-ins by form, segment, and lead magnet."},{"id":"event-checkout-started","kind":"checkout_start","title":"Checkout started","sourceRoute":"/api/commerce/checkout","linkedFeatureIds":["feature-checkout-offers","feature-stripe-commerce","feature-analytics-testing"],"publicProperties":["checkoutKind","productId","priceId","currency"],"privateDataExcluded":["Buyer email","Stripe Checkout Session id","payment intent id","customer id"],"aggregation":"Count checkout attempts by product, price, and checkout kind."},{"id":"event-purchase-completed","kind":"purchase","title":"Purchase completed","sourceRoute":"/api/stripe/webhook","linkedFeatureIds":["feature-checkout-offers","feature-products-access","feature-analytics-testing"],"publicProperties":["productId","priceId","amountCents","currency","livemode"],"privateDataExcluded":["Stripe event id","checkout session id","buyer email","customer id","raw webhook payload"],"aggregation":"Sum revenue and count paid checkouts from trusted webhook evidence."},{"id":"event-upsell-accepted","kind":"upsell_accept","title":"Upsell accepted","sourceRoute":"/offers/indie-launch-stack","linkedFeatureIds":["feature-checkout-offers","feature-analytics-testing"],"publicProperties":["offerId","pathId","expiresAfterMinutes"],"privateDataExcluded":["Buyer identity","payment method","raw session state"],"aggregation":"Count accepted upsells by offer path after confirmed billing evidence exists."},{"id":"event-product-access-granted","kind":"product_access_grant","title":"Product access granted","sourceRoute":"/products/indie-launch-library","linkedFeatureIds":["feature-products-access","feature-analytics-testing"],"publicProperties":["productId","accessRuleId","entitlementTemplateId"],"privateDataExcluded":["Entitlement row id","buyer id","R2 object key","signed URL"],"aggregation":"Count access grants by product and access rule after entitlement writes exist."}],"metrics":[{"id":"metric-funnel-opt-in-rate","title":"Funnel opt-in rate","format":"rate","formula":"event-audience-opt-in-created / event-funnel-page-view for the opt-in step","sourceEventIds":["event-funnel-page-view","event-audience-opt-in-created"],"caveat":"Aggregate report values now come from captured test events when available; sparse samples still require caveats."},{"id":"metric-checkout-start-rate","title":"Checkout start rate","format":"rate","formula":"event-checkout-started / sales-page event-funnel-page-view","sourceEventIds":["event-funnel-page-view","event-checkout-started"],"caveat":"Checkout starts can be reported from captured test events; production claims still require bot filtering and attribution review."},{"id":"metric-gross-revenue","title":"Gross revenue","format":"currency","formula":"sum event-purchase-completed amountCents by currency","sourceEventIds":["event-purchase-completed"],"caveat":"Refunds, disputes, fees, and taxes require later billing reports before net revenue claims."},{"id":"metric-upsell-accept-rate","title":"Upsell accept rate","format":"rate","formula":"event-upsell-accepted / eligible post-purchase offer views","sourceEventIds":["event-upsell-accepted"],"caveat":"One-click upsell charging is not live, so this metric remains a draft definition."}],"funnelStepMetrics":[{"id":"funnel-metric-waitlist-opt-in","stepId":"funnel-step-indie-launch-opt-in","label":"Warm list opt-in","visitors":1000,"conversions":180,"conversionRate":0.18,"sourceEventIds":["event-funnel-page-view","event-audience-opt-in-created"]},{"id":"funnel-metric-sales-to-checkout","stepId":"funnel-step-indie-launch-sales","label":"Sales page to checkout","visitors":620,"conversions":74,"conversionRate":0.119,"sourceEventIds":["event-funnel-page-view","event-checkout-started"]},{"id":"funnel-metric-checkout-to-purchase","stepId":"checkout-stack-indie-launch-sandbox","label":"Checkout start to purchase","visitors":74,"conversions":51,"conversionRate":0.689,"sourceEventIds":["event-checkout-started","event-purchase-completed"]}],"experiments":[{"id":"experiment-opt-in-hero-promise","title":"Opt-in hero promise test","status":"assignment_ready","linkedRoute":"/funnels/indie-launch-sandbox#warm-list-opt-in","assignmentKey":"anonymousStableVisitorKey","assignmentRule":"Hash experiment id plus a caller-provided anonymous assignment key, then map 0-49 to A and 50-99 to B.","primaryMetricId":"metric-funnel-opt-in-rate","guardrailMetricIds":["metric-checkout-start-rate"],"variants":[{"id":"variant-opt-in-outcome-first","label":"Outcome-first promise","trafficWeight":50,"hypothesis":"A concrete launch outcome will increase checklist opt-ins.","linkedBlockId":"block-opt-in-hero"},{"id":"variant-opt-in-speed-first","label":"Speed-first promise","trafficWeight":50,"hypothesis":"A faster setup promise will increase checklist opt-ins without reducing checkout starts.","linkedBlockId":"block-opt-in-hero"}],"writeBoundary":"Issue #107 can assign this seeded experiment deterministically through /api/analytics/assignments. Issues #121, #123, and #125 can capture page-view events with the assigned variant ID and normalized source attribution when available. Issue #261 can record owner-confirmed decision evidence with aggregate counts and sample-size caveats, but cookie creation, traffic routing, automated winner execution, and direct public agent experiment writes require future confirmed-write APIs."}],"writeBoundary":"Issues #105, #107, #119, #121, #123, #125, #127, #129, #261, #263, #265, #267, #269, #271, #284, #286, #288, #290, #292, #294, #297, #299, #301, #303, #305, #307, #309, and #311 can capture seeded analytics events, assign seeded experiment variants, report aggregate funnel conversion rows, render dashboard-visible aggregate source attribution rows, filter aggregate source and conversion summaries by fixed time windows, record browser-side seeded funnel page-view beacons with deterministic variant evidence, normalized source attribution, session-scoped idempotency, source-route validation, bot/preview suppression, hashed request evidence, aggregate-only public reporting, record owner-confirmed experiment decision evidence, expose aggregate report export metadata, expose owner-reviewed cohort comparison evidence with sample-size caveats, expose owner-reviewed alert threshold/anomaly-review evidence, expose owner-reviewed notification delivery readiness evidence, record owner-confirmed notification inbox evidence, record owner-confirmed notification dispatch preflight evidence, record owner-reviewed provider/domain readiness evidence, record owner-reviewed content/consent readiness evidence, record owner-reviewed send-payload readiness evidence, record owner-reviewed queue-producer readiness evidence, record owner-reviewed queue-consumer readiness evidence, record owner-reviewed provider-call readiness evidence, record owner-reviewed delivery-attempt readiness evidence, record owner-reviewed delivery-result readiness evidence, record owner-reviewed delivery-status-webhook readiness evidence, record owner-reviewed provider-polling readiness evidence, record owner-reviewed receipt-payload readiness evidence, record owner-reviewed delivery-receipt readiness evidence, and record owner-reviewed provider-status reconciliation readiness evidence. Cookie creation, contact-level analytics, raw campaign/referrer reporting, arbitrary custom events, raw analytics exports, automated alert sends, owner email sends, queue dispatch, Queue producers, Queue consumers, queue messages, queue message consumption, queue acknowledgements, retry/dead-letter rows, queue payload body reads, queue payload bodies, recipient payloads, personalized bodies, raw payload bodies, provider sends, provider calls, delivery attempts, delivery results, delivery status webhooks, provider responses, provider message IDs, delivery receipts, receipt payloads, status webhooks, provider polling, provider status reconciliation, body templates, unsubscribe URLs, provider configuration, provider secrets, sender credentials, private DNS credentials, customer alerts, experiment traffic routing, automated winners, and revenue claims require actor identity, privacy review, idempotency, stale-state checks, audit correlation, redaction, retention limits, and sample-size caveats.","validation":["/analytics/source-data returns seeded events, metrics, aggregate funnel conversion report rows, and experiment definitions.","/analytics/indie-launch-dashboard renders the analytics and experiment preview.","/analytics/source-data supports fixed all-time, 24-hour, 7-day, and 30-day aggregate windows.","/analytics/indie-launch-dashboard renders fixed-window source and conversion controls.","/analytics/indie-launch-dashboard renders aggregate source attribution rows when captured source evidence exists.","/api/analytics/events stores seeded analytics event capture evidence with idempotency.","/funnels/indie-launch-sandbox emits a session-idempotent seeded page-view beacon through /api/analytics/events with deterministic variant evidence from /api/analytics/assignments and normalized source attribution when URL/referrer evidence is present.","/api/analytics/assignments stores seeded experiment assignment evidence with idempotency.","/api/admin/analytics/experiment-decisions stores owner-confirmed experiment decision evidence with aggregate counts, sample-size caveats, idempotency, and redaction.","/api/admin/analytics/notification-inbox-records stores owner-confirmed analytics notification inbox records with readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-dispatch-preflights stores owner-confirmed analytics notification dispatch preflights with inbox-record checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-provider-domain-readiness stores owner-reviewed analytics notification provider/domain readiness records with dispatch-preflight checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-content-consent-readiness stores owner-reviewed analytics notification content/consent readiness records with provider/domain readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-send-payload-readiness stores owner-reviewed analytics notification send-payload readiness records with content/consent readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-queue-producer-readiness stores owner-reviewed analytics notification queue-producer readiness records with send-payload readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-queue-consumer-readiness stores owner-reviewed analytics notification queue-consumer readiness records with queue-producer readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-provider-call-readiness stores owner-reviewed analytics notification provider-call readiness records with queue-consumer readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-delivery-attempt-readiness stores owner-reviewed analytics notification delivery-attempt readiness records with provider-call readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-delivery-result-readiness stores owner-reviewed analytics notification delivery-result readiness records with delivery-attempt readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-delivery-status-webhook-readiness stores owner-reviewed analytics notification delivery-status-webhook readiness records with delivery-result readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-provider-polling-readiness stores owner-reviewed analytics notification provider-polling readiness records with delivery-status-webhook readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-receipt-payload-readiness stores owner-reviewed analytics notification receipt-payload readiness records with provider-polling readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-delivery-receipt-readiness stores owner-reviewed analytics notification delivery-receipt readiness records with receipt-payload readiness checks, fixed-window evidence, idempotency, and redaction.","/api/admin/analytics/notification-provider-status-reconciliation-readiness stores owner-reviewed analytics notification provider-status reconciliation readiness records with delivery-receipt readiness checks, fixed-window evidence, idempotency, and redaction.","/analytics/source-data exposes aggregate report export metadata, owner-reviewed cohort comparison evidence, owner-reviewed alert threshold/anomaly-review evidence, owner-reviewed notification delivery readiness evidence, owner-confirmed notification inbox record evidence, owner-confirmed dispatch preflight evidence, owner-reviewed provider/domain readiness evidence, owner-reviewed content/consent readiness evidence, owner-reviewed send-payload readiness evidence, owner-reviewed queue-producer readiness evidence, owner-reviewed queue-consumer readiness evidence, owner-reviewed provider-call readiness evidence, owner-reviewed delivery-attempt readiness evidence, owner-reviewed delivery-result readiness evidence, owner-reviewed delivery-status-webhook readiness evidence, owner-reviewed provider-polling readiness evidence, owner-reviewed receipt-payload readiness evidence, owner-reviewed delivery-receipt readiness evidence, and owner-reviewed provider-status reconciliation readiness evidence without raw event rows, raw assignment rows, visitor keys, contact analytics, recipient identity, recipient payloads, personalized bodies, raw payload bodies, email bodies, body templates, unsubscribe URLs, provider message IDs, provider secrets, private DNS credentials, Queue producer execution, Queue consumer execution, queue messages, queue message consumption, queue acknowledgements, retry/dead-letter rows, queue payload body reads, queue payload bodies, queue payloads, provider calls, delivery attempts, delivery results, delivery status webhooks, provider responses, delivery receipts, status webhooks, provider polling, receipt payloads, or provider status reconciliation.","/analytics/source-data reports captured test-event conversion rows without exposing raw events.","/agent-docs/source-data lists the analytics read contract for future MCP resources."]}],"caveat":"This contract proves analytics, reporting, experiment read/preview semantics, dashboard-visible aggregate source attribution, fixed-window aggregate source and conversion filters, privacy-safe seeded event capture, browser-side seeded funnel page-view beacons with deterministic variant evidence and normalized source attribution, deterministic seeded assignment, aggregate funnel conversion reporting, owner-confirmed experiment decision evidence, aggregate report export metadata, owner-reviewed cohort comparison evidence, owner-reviewed alert threshold/anomaly-review evidence, owner-reviewed notification delivery readiness evidence, owner-confirmed notification inbox record evidence, owner-confirmed dispatch preflight evidence, owner-reviewed provider/domain readiness evidence, owner-reviewed content/consent readiness evidence, owner-reviewed send-payload readiness evidence, owner-reviewed queue-producer readiness evidence, owner-reviewed queue-consumer readiness evidence, owner-reviewed provider-call readiness evidence, owner-reviewed delivery-attempt readiness evidence, owner-reviewed delivery-result readiness evidence, owner-reviewed delivery-status-webhook readiness evidence, owner-reviewed provider-polling readiness evidence, owner-reviewed receipt-payload readiness evidence, owner-reviewed delivery-receipt readiness evidence, and owner-reviewed provider-status reconciliation readiness evidence. Public source-data may expose aggregate event, source, variant, assignment, decision, notification-inbox, notification-dispatch-preflight, notification-provider-domain-readiness, notification-content-consent-readiness, notification-send-payload-readiness, notification-queue-producer-readiness, notification-queue-consumer-readiness, notification-provider-call-readiness, notification-delivery-attempt-readiness, notification-delivery-result-readiness, notification-delivery-status-webhook-readiness, notification-provider-polling-readiness, notification-receipt-payload-readiness, notification-delivery-receipt-readiness, notification-provider-status-reconciliation-readiness, report-export, cohort-comparison, threshold-review, anomaly-review, notification-readiness, and conversion-report counts by fixed window, but it does not expose raw event rows, raw assignment rows, raw visitor keys, full referrer URLs, raw query strings, raw analytics exports, assign cookies, expose contact-level analytics, send automated alerts, send owner email, call providers, attempt delivery, create delivery results, process status webhooks, poll providers, reconcile provider statuses, enable provider sends, configure providers, store provider secrets, store sender credentials, expose private DNS credentials, enable Queue producers, enable Queue consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create Queue payload bodies, create recipient payloads, create personalized bodies, store raw payload bodies, create customer alerts, route traffic, make automated decisions, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider responses, expose provider message IDs, expose delivery receipts, expose receipt payloads, expose queue payloads, or provide direct public agent write APIs.","timeWindows":{"default":"all","selected":"all","supported":[{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000}]},"eventSummary":{"status":"available","timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"aggregateCounts":[{"event_definition_id":"event-audience-opt-in-created","event_kind":"opt_in","source_route":"/audience/indie-launch-waitlist","total_events":4,"last_event_at":1779457876},{"event_definition_id":"event-funnel-page-view","event_kind":"page_view","source_route":"/funnels/indie-launch-sandbox","total_events":14,"last_event_at":1779449732}],"aggregateVariantCounts":[{"event_definition_id":"event-funnel-page-view","source_route":"/funnels/indie-launch-sandbox","variant_id":"variant-opt-in-outcome-first","total_events":7,"last_event_at":1779449657},{"event_definition_id":"event-funnel-page-view","source_route":"/funnels/indie-launch-sandbox","variant_id":"variant-opt-in-speed-first","total_events":6,"last_event_at":1779449732}],"aggregateSourceCounts":[{"event_definition_id":"event-funnel-page-view","source_route":"/funnels/indie-launch-sandbox","utm_source":"codex-live","utm_medium":"qa","utm_campaign":"issue-125-live-1779184653391","utm_content":"smoke-button","utm_term":"source-attribution","referrer_host":"newsletter.example","total_events":1,"last_event_at":1779184656},{"event_definition_id":"event-funnel-page-view","source_route":"/funnels/indie-launch-sandbox","utm_source":"codex-live-pr-128","utm_medium":"smoke","utm_campaign":"PR 128 Smoke","utm_content":"source-panel","utm_term":"aggregate-only","referrer_host":"codex.example","total_events":1,"last_event_at":1779186674},{"event_definition_id":"event-funnel-page-view","source_route":"/funnels/indie-launch-sandbox","utm_source":"codex-live-window-smoke","utm_medium":"qa","utm_campaign":"codex-live-window-smoke-20260519T115150Z","utm_content":"time-window-filter","utm_term":"production-smoke","referrer_host":"codex.example","total_events":1,"last_event_at":1779191511}],"rawRowsIncluded":false,"privateDataIncluded":false},"assignmentSummary":{"status":"available","aggregateCounts":[{"experiment_id":"experiment-opt-in-hero-promise","variant_id":"variant-opt-in-outcome-first","source_route":"/funnels/indie-launch-sandbox","total_assignments":4,"last_assigned_at":1779449657},{"experiment_id":"experiment-opt-in-hero-promise","variant_id":"variant-opt-in-speed-first","source_route":"/funnels/indie-launch-sandbox","total_assignments":8,"last_assigned_at":1779449732}],"rawRowsIncluded":false,"privateDataIncluded":false},"funnelConversionReport":{"id":"analytics-funnel-conversion-report-indie-launch","status":"available","issue":119,"parentIssue":18,"dashboardId":"analytics-dashboard-indie-launch","sourceTable":"analytics_events","timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"rows":[{"metricId":"funnel-metric-waitlist-opt-in","stepId":"funnel-step-indie-launch-opt-in","label":"Warm list opt-in","visitorEventId":"event-funnel-page-view","conversionEventId":"event-audience-opt-in-created","visitorCount":14,"conversionCount":4,"conversionRate":0.286,"sampleSize":18,"reportMode":"captured_events","fixtureVisitors":1000,"fixtureConversions":180,"lastEventAt":1779457876},{"metricId":"funnel-metric-sales-to-checkout","stepId":"funnel-step-indie-launch-sales","label":"Sales page to checkout","visitorEventId":"event-funnel-page-view","conversionEventId":"event-checkout-started","visitorCount":620,"conversionCount":74,"conversionRate":0.119,"sampleSize":694,"reportMode":"fixture_fallback","fixtureVisitors":620,"fixtureConversions":74,"lastEventAt":null},{"metricId":"funnel-metric-checkout-to-purchase","stepId":"checkout-stack-indie-launch-sandbox","label":"Checkout start to purchase","visitorEventId":"event-checkout-started","conversionEventId":"event-purchase-completed","visitorCount":74,"conversionCount":51,"conversionRate":0.689,"sampleSize":125,"reportMode":"fixture_fallback","fixtureVisitors":74,"fixtureConversions":51,"lastEventAt":null}],"rawRowsIncluded":false,"privateDataIncluded":false,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates."},"experimentDecisions":{"id":"analytics-experiment-decision-contract","status":"owner-experiment-decision-evidence-ready","issue":261,"parentIssue":18,"apiRoute":"/api/admin/analytics/experiment-decisions","ownerRoute":"/admin/analytics","source":"d1","loadError":null,"dashboard":{"id":"analytics-dashboard-indie-launch","title":"Indie launch analytics and experiments","revisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","status":"draft"},"experiment":{"id":"experiment-opt-in-hero-promise","title":"Opt-in hero promise test","status":"assignment_ready","primaryMetricId":"metric-funnel-opt-in-rate","variants":[{"id":"variant-opt-in-outcome-first","label":"Outcome-first promise","trafficWeight":50,"hypothesis":"A concrete launch outcome will increase checklist opt-ins.","linkedBlockId":"block-opt-in-hero"},{"id":"variant-opt-in-speed-first","label":"Speed-first promise","trafficWeight":50,"hypothesis":"A faster setup promise will increase checklist opt-ins without reducing checkout starts.","linkedBlockId":"block-opt-in-hero"}]},"confirmation":{"required":true,"text":"Record Bumpgrade experiment decision evidence"},"currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"experimentId":"experiment-opt-in-hero-promise","sourceRoute":"/funnels/indie-launch-sandbox","assignmentCount":12,"variantCounts":[{"variantId":"variant-opt-in-outcome-first","label":"Outcome-first promise","totalAssignments":4,"lastAssignedAt":1779449657},{"variantId":"variant-opt-in-speed-first","label":"Speed-first promise","totalAssignments":8,"lastAssignedAt":1779449732}],"primaryMetricId":"metric-funnel-opt-in-rate","conversionSampleSize":18,"conversionReportMode":"captured_events","sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","rawRowsIncluded":false,"privateDataIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"experimentId":"experiment-opt-in-hero-promise","sourceRoute":"/funnels/indie-launch-sandbox","assignmentCount":4,"variantCounts":[{"variantId":"variant-opt-in-outcome-first","label":"Outcome-first promise","totalAssignments":3,"lastAssignedAt":1779449657},{"variantId":"variant-opt-in-speed-first","label":"Speed-first promise","totalAssignments":1,"lastAssignedAt":1779449732}],"primaryMetricId":"metric-funnel-opt-in-rate","conversionSampleSize":6,"conversionReportMode":"captured_events","sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","rawRowsIncluded":false,"privateDataIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"experimentId":"experiment-opt-in-hero-promise","sourceRoute":"/funnels/indie-launch-sandbox","assignmentCount":12,"variantCounts":[{"variantId":"variant-opt-in-outcome-first","label":"Outcome-first promise","totalAssignments":4,"lastAssignedAt":1779449657},{"variantId":"variant-opt-in-speed-first","label":"Speed-first promise","totalAssignments":8,"lastAssignedAt":1779449732}],"primaryMetricId":"metric-funnel-opt-in-rate","conversionSampleSize":18,"conversionReportMode":"captured_events","sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","rawRowsIncluded":false,"privateDataIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"experimentId":"experiment-opt-in-hero-promise","sourceRoute":"/funnels/indie-launch-sandbox","assignmentCount":12,"variantCounts":[{"variantId":"variant-opt-in-outcome-first","label":"Outcome-first promise","totalAssignments":4,"lastAssignedAt":1779449657},{"variantId":"variant-opt-in-speed-first","label":"Speed-first promise","totalAssignments":8,"lastAssignedAt":1779449732}],"primaryMetricId":"metric-funnel-opt-in-rate","conversionSampleSize":18,"conversionReportMode":"captured_events","sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","rawRowsIncluded":false,"privateDataIncluded":false}],"counts":{"experimentDecisions":0,"ownerConfirmedDecisions":0,"continueObservingDecisions":0,"preferVariantDecisions":0,"pauseExperimentDecisions":0,"needsMoreDataDecisions":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"cookieAssignmentEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawEventRowsExposedRecords":0,"rawAssignmentRowsExposedRecords":0},"latestDecisions":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"cookieAssignmentEnabled":false,"revenueClaimEnabled":false},"privateFieldsExcluded":["rawAnalyticsEventRows","rawExperimentAssignmentRows","rawVisitorKeys","visitorKeyHash","assignmentHash","actorEmail","actorEmailHash","privateNote","privateNoteSha256","metadataJson"],"writeBoundary":"Issue #261 lets verified owners record redacted experiment decision evidence after exact confirmation, idempotency, dashboard revision checks, experiment status checks, aggregate assignment/count checks, selected fixed-window evidence, and sample-size caveat acknowledgement. It does not route traffic, assign cookies, decide automated winners, expose raw event rows, expose raw assignment rows, expose contact analytics, or make revenue claims."},"notificationInboxRecords":{"id":"analytics-notification-inbox-contract","status":"owner-analytics-notification-inbox-records-ready","issue":271,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-inbox-records","ownerRoute":"/admin/analytics","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification inbox evidence"},"currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"adminInboxRecordAllowed":true,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"adminInboxRecordAllowed":true,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"adminInboxRecordAllowed":true,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"adminInboxRecordAllowed":true,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false}],"counts":{"notificationInboxRecords":0,"ownerConfirmedRecords":0,"adminInboxRecordsCreated":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"emailBodyIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"emailBodyIncluded":false,"queuePayloadIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","emailBody","queuePayload","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #271 lets verified owners record redacted analytics notification inbox evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It creates an owner-visible admin inbox record only; it does not send email, create customer alerts, dispatch queues, expose notification recipients, expose email bodies, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDispatchPreflights":{"id":"analytics-notification-dispatch-preflight-contract","status":"owner-analytics-notification-dispatch-preflights-ready","issue":284,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-dispatch-preflights","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification dispatch preflight evidence"},"supportedDispatchPreflightDispositions":["blocked_pending_provider_review","draft_ready_for_owner_review","provider_contract_not_ready"],"defaultDispatchPreflightDisposition":"blocked_pending_provider_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestInboxRecord":null,"inboxRecordRequired":true,"inboxRecordCurrent":false,"supportedDispatchPreflightDispositions":["blocked_pending_provider_review","draft_ready_for_owner_review","provider_contract_not_ready"],"defaultDispatchPreflightDisposition":"blocked_pending_provider_review","dispatchPreflightChecklist":[{"id":"analytics-dispatch-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-dispatch-check-inbox-record","title":"Owner inbox record exists for the selected window","status":"blocked","evidence":"Record owner notification inbox evidence before dispatch preflight evidence."},{"id":"analytics-dispatch-check-provider","title":"Provider send path remains disabled","status":"blocked","evidence":"No owner email provider, provider message ID, queue payload, or provider-send call is created in this slice."},{"id":"analytics-dispatch-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Dispatch preflights record aggregate evidence only and do not store recipients, email bodies, or queue payloads."},{"id":"analytics-dispatch-check-owner-provider-review","title":"Owner provider review is still required","status":"external_required","evidence":"Live email dispatch needs future owner-approved provider, domain, body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestInboxRecord":null,"inboxRecordRequired":true,"inboxRecordCurrent":false,"supportedDispatchPreflightDispositions":["blocked_pending_provider_review","draft_ready_for_owner_review","provider_contract_not_ready"],"defaultDispatchPreflightDisposition":"blocked_pending_provider_review","dispatchPreflightChecklist":[{"id":"analytics-dispatch-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-dispatch-check-inbox-record","title":"Owner inbox record exists for the selected window","status":"blocked","evidence":"Record owner notification inbox evidence before dispatch preflight evidence."},{"id":"analytics-dispatch-check-provider","title":"Provider send path remains disabled","status":"blocked","evidence":"No owner email provider, provider message ID, queue payload, or provider-send call is created in this slice."},{"id":"analytics-dispatch-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Dispatch preflights record aggregate evidence only and do not store recipients, email bodies, or queue payloads."},{"id":"analytics-dispatch-check-owner-provider-review","title":"Owner provider review is still required","status":"external_required","evidence":"Live email dispatch needs future owner-approved provider, domain, body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestInboxRecord":null,"inboxRecordRequired":true,"inboxRecordCurrent":false,"supportedDispatchPreflightDispositions":["blocked_pending_provider_review","draft_ready_for_owner_review","provider_contract_not_ready"],"defaultDispatchPreflightDisposition":"blocked_pending_provider_review","dispatchPreflightChecklist":[{"id":"analytics-dispatch-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-dispatch-check-inbox-record","title":"Owner inbox record exists for the selected window","status":"blocked","evidence":"Record owner notification inbox evidence before dispatch preflight evidence."},{"id":"analytics-dispatch-check-provider","title":"Provider send path remains disabled","status":"blocked","evidence":"No owner email provider, provider message ID, queue payload, or provider-send call is created in this slice."},{"id":"analytics-dispatch-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Dispatch preflights record aggregate evidence only and do not store recipients, email bodies, or queue payloads."},{"id":"analytics-dispatch-check-owner-provider-review","title":"Owner provider review is still required","status":"external_required","evidence":"Live email dispatch needs future owner-approved provider, domain, body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestInboxRecord":null,"inboxRecordRequired":true,"inboxRecordCurrent":false,"supportedDispatchPreflightDispositions":["blocked_pending_provider_review","draft_ready_for_owner_review","provider_contract_not_ready"],"defaultDispatchPreflightDisposition":"blocked_pending_provider_review","dispatchPreflightChecklist":[{"id":"analytics-dispatch-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-dispatch-check-inbox-record","title":"Owner inbox record exists for the selected window","status":"blocked","evidence":"Record owner notification inbox evidence before dispatch preflight evidence."},{"id":"analytics-dispatch-check-provider","title":"Provider send path remains disabled","status":"blocked","evidence":"No owner email provider, provider message ID, queue payload, or provider-send call is created in this slice."},{"id":"analytics-dispatch-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Dispatch preflights record aggregate evidence only and do not store recipients, email bodies, or queue payloads."},{"id":"analytics-dispatch-check-owner-provider-review","title":"Owner provider review is still required","status":"external_required","evidence":"Live email dispatch needs future owner-approved provider, domain, body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false}],"counts":{"notificationDispatchPreflightRecords":0,"ownerConfirmedRecords":0,"ownerDispatchPreflightRecordedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","emailBody","providerMessageId","queuePayload","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #284 lets verified owners record redacted analytics notification dispatch preflight evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox record checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible dispatch preflight evidence only; it does not send email, dispatch queues, call providers, create customer alerts, expose notification recipients, expose email bodies, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderDomainReadiness":{"id":"analytics-notification-provider-domain-readiness-contract","status":"owner-analytics-notification-provider-domain-readiness-records-ready","issue":286,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-domain-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification provider/domain readiness evidence"},"supportedProviderDomainReadinessDispositions":["blocked_pending_provider_and_domain_review","provider_domain_ready_for_owner_review","provider_contract_or_dns_missing"],"defaultProviderDomainReadinessDisposition":"blocked_pending_provider_and_domain_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDispatchPreflightRecord":null,"dispatchPreflightRecordRequired":true,"dispatchPreflightRecordCurrent":false,"supportedProviderDomainReadinessDispositions":["blocked_pending_provider_and_domain_review","provider_domain_ready_for_owner_review","provider_contract_or_dns_missing"],"defaultProviderDomainReadinessDisposition":"blocked_pending_provider_and_domain_review","providerDomainReadinessChecklist":[{"id":"analytics-provider-domain-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-domain-check-dispatch-preflight","title":"Owner dispatch preflight exists for the selected window","status":"blocked","evidence":"Record owner notification dispatch preflight evidence before provider/domain readiness evidence."},{"id":"analytics-provider-domain-check-provider-disabled","title":"Provider configuration remains disabled","status":"blocked","evidence":"No owner email provider is configured, no provider secret is stored, and no provider-send call is created."},{"id":"analytics-provider-domain-check-domain-external","title":"Sender domain verification remains external","status":"external_required","evidence":"This record tracks owner readiness only; it does not store private DNS credentials or claim live domain verification."},{"id":"analytics-provider-domain-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Provider/domain readiness records store aggregate evidence only and do not store recipients, email bodies, provider message IDs, or queue payloads."},{"id":"analytics-provider-domain-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDispatchPreflightRecord":null,"dispatchPreflightRecordRequired":true,"dispatchPreflightRecordCurrent":false,"supportedProviderDomainReadinessDispositions":["blocked_pending_provider_and_domain_review","provider_domain_ready_for_owner_review","provider_contract_or_dns_missing"],"defaultProviderDomainReadinessDisposition":"blocked_pending_provider_and_domain_review","providerDomainReadinessChecklist":[{"id":"analytics-provider-domain-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-domain-check-dispatch-preflight","title":"Owner dispatch preflight exists for the selected window","status":"blocked","evidence":"Record owner notification dispatch preflight evidence before provider/domain readiness evidence."},{"id":"analytics-provider-domain-check-provider-disabled","title":"Provider configuration remains disabled","status":"blocked","evidence":"No owner email provider is configured, no provider secret is stored, and no provider-send call is created."},{"id":"analytics-provider-domain-check-domain-external","title":"Sender domain verification remains external","status":"external_required","evidence":"This record tracks owner readiness only; it does not store private DNS credentials or claim live domain verification."},{"id":"analytics-provider-domain-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Provider/domain readiness records store aggregate evidence only and do not store recipients, email bodies, provider message IDs, or queue payloads."},{"id":"analytics-provider-domain-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDispatchPreflightRecord":null,"dispatchPreflightRecordRequired":true,"dispatchPreflightRecordCurrent":false,"supportedProviderDomainReadinessDispositions":["blocked_pending_provider_and_domain_review","provider_domain_ready_for_owner_review","provider_contract_or_dns_missing"],"defaultProviderDomainReadinessDisposition":"blocked_pending_provider_and_domain_review","providerDomainReadinessChecklist":[{"id":"analytics-provider-domain-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-domain-check-dispatch-preflight","title":"Owner dispatch preflight exists for the selected window","status":"blocked","evidence":"Record owner notification dispatch preflight evidence before provider/domain readiness evidence."},{"id":"analytics-provider-domain-check-provider-disabled","title":"Provider configuration remains disabled","status":"blocked","evidence":"No owner email provider is configured, no provider secret is stored, and no provider-send call is created."},{"id":"analytics-provider-domain-check-domain-external","title":"Sender domain verification remains external","status":"external_required","evidence":"This record tracks owner readiness only; it does not store private DNS credentials or claim live domain verification."},{"id":"analytics-provider-domain-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Provider/domain readiness records store aggregate evidence only and do not store recipients, email bodies, provider message IDs, or queue payloads."},{"id":"analytics-provider-domain-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDispatchPreflightRecord":null,"dispatchPreflightRecordRequired":true,"dispatchPreflightRecordCurrent":false,"supportedProviderDomainReadinessDispositions":["blocked_pending_provider_and_domain_review","provider_domain_ready_for_owner_review","provider_contract_or_dns_missing"],"defaultProviderDomainReadinessDisposition":"blocked_pending_provider_and_domain_review","providerDomainReadinessChecklist":[{"id":"analytics-provider-domain-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-domain-check-dispatch-preflight","title":"Owner dispatch preflight exists for the selected window","status":"blocked","evidence":"Record owner notification dispatch preflight evidence before provider/domain readiness evidence."},{"id":"analytics-provider-domain-check-provider-disabled","title":"Provider configuration remains disabled","status":"blocked","evidence":"No owner email provider is configured, no provider secret is stored, and no provider-send call is created."},{"id":"analytics-provider-domain-check-domain-external","title":"Sender domain verification remains external","status":"external_required","evidence":"This record tracks owner readiness only; it does not store private DNS credentials or claim live domain verification."},{"id":"analytics-provider-domain-check-recipient-body","title":"Recipient and body data stay excluded","status":"blocked","evidence":"Provider/domain readiness records store aggregate evidence only and do not store recipients, email bodies, provider message IDs, or queue payloads."},{"id":"analytics-provider-domain-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved body, unsubscribe, audit, and rate-limit evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationProviderDomainReadinessRecords":0,"ownerConfirmedRecords":0,"ownerProviderDomainReadinessRecordedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerCalledRecords":0,"providerConfiguredRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","emailBody","providerMessageId","queuePayload","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #286 lets verified owners record redacted analytics notification provider/domain readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider/domain readiness evidence only; it does not send email, dispatch queues, call providers, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose notification recipients, expose email bodies, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationContentConsentReadiness":{"id":"analytics-notification-content-consent-readiness-contract","status":"owner-analytics-notification-content-consent-readiness-records-ready","issue":288,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-content-consent-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification content/consent readiness evidence"},"supportedContentConsentReadinessDispositions":["blocked_pending_content_consent_review","content_consent_ready_for_owner_review","body_unsubscribe_rate_limit_or_audit_missing"],"defaultContentConsentReadinessDisposition":"blocked_pending_content_consent_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderDomainReadinessRecord":null,"providerDomainReadinessRecordRequired":true,"providerDomainReadinessRecordCurrent":false,"supportedContentConsentReadinessDispositions":["blocked_pending_content_consent_review","content_consent_ready_for_owner_review","body_unsubscribe_rate_limit_or_audit_missing"],"defaultContentConsentReadinessDisposition":"blocked_pending_content_consent_review","contentConsentReadinessChecklist":[{"id":"analytics-content-consent-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-content-consent-check-provider-domain-readiness","title":"Owner provider/domain readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider/domain readiness evidence before content/consent readiness evidence."},{"id":"analytics-content-consent-check-template-boundary","title":"Body template readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks body-template readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-content-consent-check-unsubscribe-rate-limit","title":"Unsubscribe and rate-limit readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-link and rate-limit readiness metadata only; it does not send email or expose unsubscribe URLs."},{"id":"analytics-content-consent-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-content-consent-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"bodyTemplateReviewed":true,"unsubscribeLinkReviewed":true,"rateLimitReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderDomainReadinessRecord":null,"providerDomainReadinessRecordRequired":true,"providerDomainReadinessRecordCurrent":false,"supportedContentConsentReadinessDispositions":["blocked_pending_content_consent_review","content_consent_ready_for_owner_review","body_unsubscribe_rate_limit_or_audit_missing"],"defaultContentConsentReadinessDisposition":"blocked_pending_content_consent_review","contentConsentReadinessChecklist":[{"id":"analytics-content-consent-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-content-consent-check-provider-domain-readiness","title":"Owner provider/domain readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider/domain readiness evidence before content/consent readiness evidence."},{"id":"analytics-content-consent-check-template-boundary","title":"Body template readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks body-template readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-content-consent-check-unsubscribe-rate-limit","title":"Unsubscribe and rate-limit readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-link and rate-limit readiness metadata only; it does not send email or expose unsubscribe URLs."},{"id":"analytics-content-consent-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-content-consent-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"bodyTemplateReviewed":true,"unsubscribeLinkReviewed":true,"rateLimitReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderDomainReadinessRecord":null,"providerDomainReadinessRecordRequired":true,"providerDomainReadinessRecordCurrent":false,"supportedContentConsentReadinessDispositions":["blocked_pending_content_consent_review","content_consent_ready_for_owner_review","body_unsubscribe_rate_limit_or_audit_missing"],"defaultContentConsentReadinessDisposition":"blocked_pending_content_consent_review","contentConsentReadinessChecklist":[{"id":"analytics-content-consent-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-content-consent-check-provider-domain-readiness","title":"Owner provider/domain readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider/domain readiness evidence before content/consent readiness evidence."},{"id":"analytics-content-consent-check-template-boundary","title":"Body template readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks body-template readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-content-consent-check-unsubscribe-rate-limit","title":"Unsubscribe and rate-limit readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-link and rate-limit readiness metadata only; it does not send email or expose unsubscribe URLs."},{"id":"analytics-content-consent-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-content-consent-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"bodyTemplateReviewed":true,"unsubscribeLinkReviewed":true,"rateLimitReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderDomainReadinessRecord":null,"providerDomainReadinessRecordRequired":true,"providerDomainReadinessRecordCurrent":false,"supportedContentConsentReadinessDispositions":["blocked_pending_content_consent_review","content_consent_ready_for_owner_review","body_unsubscribe_rate_limit_or_audit_missing"],"defaultContentConsentReadinessDisposition":"blocked_pending_content_consent_review","contentConsentReadinessChecklist":[{"id":"analytics-content-consent-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-content-consent-check-provider-domain-readiness","title":"Owner provider/domain readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider/domain readiness evidence before content/consent readiness evidence."},{"id":"analytics-content-consent-check-template-boundary","title":"Body template readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks body-template readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-content-consent-check-unsubscribe-rate-limit","title":"Unsubscribe and rate-limit readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-link and rate-limit readiness metadata only; it does not send email or expose unsubscribe URLs."},{"id":"analytics-content-consent-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-content-consent-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"bodyTemplateReviewed":true,"unsubscribeLinkReviewed":true,"rateLimitReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationContentConsentReadinessRecords":0,"ownerConfirmedRecords":0,"ownerContentConsentReadinessRecordedRecords":0,"bodyTemplateReviewedRecords":0,"unsubscribeLinkReviewedRecords":0,"rateLimitReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerCalledRecords":0,"providerConfiguredRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"emailBodyIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","emailBody","bodyTemplate","unsubscribeUrl","providerMessageId","queuePayload","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #288 lets verified owners record redacted analytics notification content/consent readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, current provider/domain readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible content, unsubscribe, rate-limit, audit-correlation, and retention readiness evidence only; it does not send email, dispatch queues, call providers, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose notification recipients, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationSendPayloadReadiness":{"id":"analytics-notification-send-payload-readiness-contract","status":"owner-analytics-notification-send-payload-readiness-records-ready","issue":290,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-send-payload-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationContentConsentReadinessIssue":288,"notificationContentConsentReadinessStatus":"owner-analytics-notification-content-consent-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification send-payload readiness evidence"},"supportedSendPayloadReadinessDispositions":["blocked_pending_send_payload_review","send_payload_ready_for_owner_review","recipient_payload_body_queue_or_provider_boundary_missing"],"defaultSendPayloadReadinessDisposition":"blocked_pending_send_payload_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestContentConsentReadinessRecord":null,"contentConsentReadinessRecordRequired":true,"contentConsentReadinessRecordCurrent":false,"supportedSendPayloadReadinessDispositions":["blocked_pending_send_payload_review","send_payload_ready_for_owner_review","recipient_payload_body_queue_or_provider_boundary_missing"],"defaultSendPayloadReadinessDisposition":"blocked_pending_send_payload_review","sendPayloadReadinessChecklist":[{"id":"analytics-send-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-send-payload-check-content-consent-readiness","title":"Owner content/consent readiness exists for the selected window","status":"blocked","evidence":"Record owner notification content/consent readiness evidence before send-payload readiness evidence."},{"id":"analytics-send-payload-check-payload-boundary","title":"Payload shape readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks payload-shape readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-send-payload-check-unsubscribe-consent-suppression","title":"Unsubscribe footer and consent/suppression recheck readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-footer and consent/suppression recheck readiness metadata only; it does not send email, create recipient payloads, or expose unsubscribe URLs."},{"id":"analytics-send-payload-check-recipient-scope","title":"Recipient scope readiness is reviewed without recipients","status":"passed","evidence":"This record tracks recipient-scope readiness metadata only and does not expose recipient identity or create recipient payloads."},{"id":"analytics-send-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-send-payload-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"payloadShapeReviewed":true,"unsubscribeFooterReviewed":true,"consentSuppressionRecheckReviewed":true,"recipientScopeReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestContentConsentReadinessRecord":null,"contentConsentReadinessRecordRequired":true,"contentConsentReadinessRecordCurrent":false,"supportedSendPayloadReadinessDispositions":["blocked_pending_send_payload_review","send_payload_ready_for_owner_review","recipient_payload_body_queue_or_provider_boundary_missing"],"defaultSendPayloadReadinessDisposition":"blocked_pending_send_payload_review","sendPayloadReadinessChecklist":[{"id":"analytics-send-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-send-payload-check-content-consent-readiness","title":"Owner content/consent readiness exists for the selected window","status":"blocked","evidence":"Record owner notification content/consent readiness evidence before send-payload readiness evidence."},{"id":"analytics-send-payload-check-payload-boundary","title":"Payload shape readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks payload-shape readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-send-payload-check-unsubscribe-consent-suppression","title":"Unsubscribe footer and consent/suppression recheck readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-footer and consent/suppression recheck readiness metadata only; it does not send email, create recipient payloads, or expose unsubscribe URLs."},{"id":"analytics-send-payload-check-recipient-scope","title":"Recipient scope readiness is reviewed without recipients","status":"passed","evidence":"This record tracks recipient-scope readiness metadata only and does not expose recipient identity or create recipient payloads."},{"id":"analytics-send-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-send-payload-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"payloadShapeReviewed":true,"unsubscribeFooterReviewed":true,"consentSuppressionRecheckReviewed":true,"recipientScopeReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestContentConsentReadinessRecord":null,"contentConsentReadinessRecordRequired":true,"contentConsentReadinessRecordCurrent":false,"supportedSendPayloadReadinessDispositions":["blocked_pending_send_payload_review","send_payload_ready_for_owner_review","recipient_payload_body_queue_or_provider_boundary_missing"],"defaultSendPayloadReadinessDisposition":"blocked_pending_send_payload_review","sendPayloadReadinessChecklist":[{"id":"analytics-send-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-send-payload-check-content-consent-readiness","title":"Owner content/consent readiness exists for the selected window","status":"blocked","evidence":"Record owner notification content/consent readiness evidence before send-payload readiness evidence."},{"id":"analytics-send-payload-check-payload-boundary","title":"Payload shape readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks payload-shape readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-send-payload-check-unsubscribe-consent-suppression","title":"Unsubscribe footer and consent/suppression recheck readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-footer and consent/suppression recheck readiness metadata only; it does not send email, create recipient payloads, or expose unsubscribe URLs."},{"id":"analytics-send-payload-check-recipient-scope","title":"Recipient scope readiness is reviewed without recipients","status":"passed","evidence":"This record tracks recipient-scope readiness metadata only and does not expose recipient identity or create recipient payloads."},{"id":"analytics-send-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-send-payload-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"payloadShapeReviewed":true,"unsubscribeFooterReviewed":true,"consentSuppressionRecheckReviewed":true,"recipientScopeReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestContentConsentReadinessRecord":null,"contentConsentReadinessRecordRequired":true,"contentConsentReadinessRecordCurrent":false,"supportedSendPayloadReadinessDispositions":["blocked_pending_send_payload_review","send_payload_ready_for_owner_review","recipient_payload_body_queue_or_provider_boundary_missing"],"defaultSendPayloadReadinessDisposition":"blocked_pending_send_payload_review","sendPayloadReadinessChecklist":[{"id":"analytics-send-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-send-payload-check-content-consent-readiness","title":"Owner content/consent readiness exists for the selected window","status":"blocked","evidence":"Record owner notification content/consent readiness evidence before send-payload readiness evidence."},{"id":"analytics-send-payload-check-payload-boundary","title":"Payload shape readiness is reviewed without storing body copy","status":"passed","evidence":"This record tracks payload-shape readiness metadata only and does not store email body text or recipient payloads."},{"id":"analytics-send-payload-check-unsubscribe-consent-suppression","title":"Unsubscribe footer and consent/suppression recheck readiness are reviewed","status":"passed","evidence":"This record tracks unsubscribe-footer and consent/suppression recheck readiness metadata only; it does not send email, create recipient payloads, or expose unsubscribe URLs."},{"id":"analytics-send-payload-check-recipient-scope","title":"Recipient scope readiness is reviewed without recipients","status":"passed","evidence":"This record tracks recipient-scope readiness metadata only and does not expose recipient identity or create recipient payloads."},{"id":"analytics-send-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-send-payload-check-send-disabled","title":"Owner email delivery is still disabled","status":"external_required","evidence":"Live email dispatch still needs future owner-approved send payload, queue, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"payloadShapeReviewed":true,"unsubscribeFooterReviewed":true,"consentSuppressionRecheckReviewed":true,"recipientScopeReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationSendPayloadReadinessRecords":0,"ownerConfirmedRecords":0,"ownerSendPayloadReadinessRecordedRecords":0,"payloadShapeReviewedRecords":0,"unsubscribeFooterReviewedRecords":0,"consentSuppressionRecheckReviewedRecords":0,"recipientScopeReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueMessageCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerCalledRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueProducerEnabled":false,"queueMessageCreated":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","queuePayload","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #290 lets verified owners record redacted analytics notification send-payload readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, current provider/domain readiness checks, current content/consent readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible payload-shape, unsubscribe-footer, consent/suppression recheck, recipient-scope, audit-correlation, and retention readiness evidence only; it does not send email, dispatch queues, create queue messages, call providers, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose payload shapes, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationQueueProducerReadiness":{"id":"analytics-notification-queue-producer-readiness-contract","status":"owner-analytics-notification-queue-producer-readiness-records-ready","issue":292,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-queue-producer-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification queue-producer readiness evidence"},"supportedQueueProducerReadinessDispositions":["blocked_pending_queue_producer_review","queue_producer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueProducerReadinessDisposition":"blocked_pending_queue_producer_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestSendPayloadReadinessRecord":null,"sendPayloadReadinessRecordRequired":true,"sendPayloadReadinessRecordCurrent":false,"supportedQueueProducerReadinessDispositions":["blocked_pending_queue_producer_review","queue_producer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueProducerReadinessDisposition":"blocked_pending_queue_producer_review","queueProducerReadinessChecklist":[{"id":"analytics-queue-producer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-producer-check-send-payload-readiness","title":"Owner send-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification send-payload readiness evidence before queue-producer readiness evidence."},{"id":"analytics-queue-producer-check-binding-mode","title":"Queue binding and producer mode are reviewed without enabling producers","status":"passed","evidence":"This record tracks Queue binding and producer-mode readiness only; it does not enable a Cloudflare Queue producer."},{"id":"analytics-queue-producer-check-idempotency-retry","title":"Idempotency, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks idempotency, retry, dead-letter, and backpressure readiness without creating Queue messages or payload bodies."},{"id":"analytics-queue-producer-check-consumer-dependency","title":"Consumer dependency stays explicit before producer handoff","status":"passed","evidence":"The producer stays blocked until Queue consumer readiness and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-producer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-producer-check-producer-disabled","title":"Cloudflare Queue producers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue producer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"producerModeReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"consumerDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestSendPayloadReadinessRecord":null,"sendPayloadReadinessRecordRequired":true,"sendPayloadReadinessRecordCurrent":false,"supportedQueueProducerReadinessDispositions":["blocked_pending_queue_producer_review","queue_producer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueProducerReadinessDisposition":"blocked_pending_queue_producer_review","queueProducerReadinessChecklist":[{"id":"analytics-queue-producer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-producer-check-send-payload-readiness","title":"Owner send-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification send-payload readiness evidence before queue-producer readiness evidence."},{"id":"analytics-queue-producer-check-binding-mode","title":"Queue binding and producer mode are reviewed without enabling producers","status":"passed","evidence":"This record tracks Queue binding and producer-mode readiness only; it does not enable a Cloudflare Queue producer."},{"id":"analytics-queue-producer-check-idempotency-retry","title":"Idempotency, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks idempotency, retry, dead-letter, and backpressure readiness without creating Queue messages or payload bodies."},{"id":"analytics-queue-producer-check-consumer-dependency","title":"Consumer dependency stays explicit before producer handoff","status":"passed","evidence":"The producer stays blocked until Queue consumer readiness and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-producer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-producer-check-producer-disabled","title":"Cloudflare Queue producers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue producer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"producerModeReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"consumerDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestSendPayloadReadinessRecord":null,"sendPayloadReadinessRecordRequired":true,"sendPayloadReadinessRecordCurrent":false,"supportedQueueProducerReadinessDispositions":["blocked_pending_queue_producer_review","queue_producer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueProducerReadinessDisposition":"blocked_pending_queue_producer_review","queueProducerReadinessChecklist":[{"id":"analytics-queue-producer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-producer-check-send-payload-readiness","title":"Owner send-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification send-payload readiness evidence before queue-producer readiness evidence."},{"id":"analytics-queue-producer-check-binding-mode","title":"Queue binding and producer mode are reviewed without enabling producers","status":"passed","evidence":"This record tracks Queue binding and producer-mode readiness only; it does not enable a Cloudflare Queue producer."},{"id":"analytics-queue-producer-check-idempotency-retry","title":"Idempotency, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks idempotency, retry, dead-letter, and backpressure readiness without creating Queue messages or payload bodies."},{"id":"analytics-queue-producer-check-consumer-dependency","title":"Consumer dependency stays explicit before producer handoff","status":"passed","evidence":"The producer stays blocked until Queue consumer readiness and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-producer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-producer-check-producer-disabled","title":"Cloudflare Queue producers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue producer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"producerModeReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"consumerDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestSendPayloadReadinessRecord":null,"sendPayloadReadinessRecordRequired":true,"sendPayloadReadinessRecordCurrent":false,"supportedQueueProducerReadinessDispositions":["blocked_pending_queue_producer_review","queue_producer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueProducerReadinessDisposition":"blocked_pending_queue_producer_review","queueProducerReadinessChecklist":[{"id":"analytics-queue-producer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-producer-check-send-payload-readiness","title":"Owner send-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification send-payload readiness evidence before queue-producer readiness evidence."},{"id":"analytics-queue-producer-check-binding-mode","title":"Queue binding and producer mode are reviewed without enabling producers","status":"passed","evidence":"This record tracks Queue binding and producer-mode readiness only; it does not enable a Cloudflare Queue producer."},{"id":"analytics-queue-producer-check-idempotency-retry","title":"Idempotency, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks idempotency, retry, dead-letter, and backpressure readiness without creating Queue messages or payload bodies."},{"id":"analytics-queue-producer-check-consumer-dependency","title":"Consumer dependency stays explicit before producer handoff","status":"passed","evidence":"The producer stays blocked until Queue consumer readiness and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-producer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-producer-check-producer-disabled","title":"Cloudflare Queue producers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue producer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueMessageCreated":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"producerModeReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"consumerDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationQueueProducerReadinessRecords":0,"ownerConfirmedRecords":0,"ownerQueueProducerReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"producerModeReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"consumerDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueMessageCreatedRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerCalledRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueMessageCreated":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #292 lets verified owners record redacted analytics notification queue-producer readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible queue binding, producer mode, idempotency policy, retry/dead-letter policy, consumer dependency, backpressure, audit-correlation, and retention readiness evidence only; it does not enable Cloudflare Queue producers, dispatch queues, create queue messages, create queue payload bodies, call providers, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationQueueConsumerReadiness":{"id":"analytics-notification-queue-consumer-readiness-contract","status":"owner-analytics-notification-queue-consumer-readiness-records-ready","issue":294,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-queue-consumer-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification queue-consumer readiness evidence"},"supportedQueueConsumerReadinessDispositions":["blocked_pending_queue_consumer_review","queue_consumer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueConsumerReadinessDisposition":"blocked_pending_queue_consumer_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueProducerReadinessRecord":null,"queueProducerReadinessRecordRequired":true,"queueProducerReadinessRecordCurrent":false,"supportedQueueConsumerReadinessDispositions":["blocked_pending_queue_consumer_review","queue_consumer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueConsumerReadinessDisposition":"blocked_pending_queue_consumer_review","queueConsumerReadinessChecklist":[{"id":"analytics-queue-consumer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-consumer-check-queue-producer-readiness","title":"Owner queue-producer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-producer readiness evidence before queue-consumer readiness evidence."},{"id":"analytics-queue-consumer-check-binding-mode","title":"Queue binding and consumer mode are reviewed without enabling consumers","status":"passed","evidence":"This record tracks Queue binding and consumer-mode readiness only; it does not enable a Cloudflare Queue consumer."},{"id":"analytics-queue-consumer-check-payload-ack-retry","title":"Payload-read, ack, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks payload-read, ack, retry, dead-letter, idempotency, and backpressure readiness without consuming messages, acking messages, or reading queue payload bodies."},{"id":"analytics-queue-consumer-check-provider-handoff","title":"Provider handoff dependency stays explicit before sends","status":"passed","evidence":"The consumer stays blocked until provider-call and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-consumer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-consumer-check-producer-disabled","title":"Cloudflare Queue consumers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue consumer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueProducerReadinessRecord":null,"queueProducerReadinessRecordRequired":true,"queueProducerReadinessRecordCurrent":false,"supportedQueueConsumerReadinessDispositions":["blocked_pending_queue_consumer_review","queue_consumer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueConsumerReadinessDisposition":"blocked_pending_queue_consumer_review","queueConsumerReadinessChecklist":[{"id":"analytics-queue-consumer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-consumer-check-queue-producer-readiness","title":"Owner queue-producer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-producer readiness evidence before queue-consumer readiness evidence."},{"id":"analytics-queue-consumer-check-binding-mode","title":"Queue binding and consumer mode are reviewed without enabling consumers","status":"passed","evidence":"This record tracks Queue binding and consumer-mode readiness only; it does not enable a Cloudflare Queue consumer."},{"id":"analytics-queue-consumer-check-payload-ack-retry","title":"Payload-read, ack, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks payload-read, ack, retry, dead-letter, idempotency, and backpressure readiness without consuming messages, acking messages, or reading queue payload bodies."},{"id":"analytics-queue-consumer-check-provider-handoff","title":"Provider handoff dependency stays explicit before sends","status":"passed","evidence":"The consumer stays blocked until provider-call and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-consumer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-consumer-check-producer-disabled","title":"Cloudflare Queue consumers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue consumer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueProducerReadinessRecord":null,"queueProducerReadinessRecordRequired":true,"queueProducerReadinessRecordCurrent":false,"supportedQueueConsumerReadinessDispositions":["blocked_pending_queue_consumer_review","queue_consumer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueConsumerReadinessDisposition":"blocked_pending_queue_consumer_review","queueConsumerReadinessChecklist":[{"id":"analytics-queue-consumer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-consumer-check-queue-producer-readiness","title":"Owner queue-producer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-producer readiness evidence before queue-consumer readiness evidence."},{"id":"analytics-queue-consumer-check-binding-mode","title":"Queue binding and consumer mode are reviewed without enabling consumers","status":"passed","evidence":"This record tracks Queue binding and consumer-mode readiness only; it does not enable a Cloudflare Queue consumer."},{"id":"analytics-queue-consumer-check-payload-ack-retry","title":"Payload-read, ack, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks payload-read, ack, retry, dead-letter, idempotency, and backpressure readiness without consuming messages, acking messages, or reading queue payload bodies."},{"id":"analytics-queue-consumer-check-provider-handoff","title":"Provider handoff dependency stays explicit before sends","status":"passed","evidence":"The consumer stays blocked until provider-call and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-consumer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-consumer-check-producer-disabled","title":"Cloudflare Queue consumers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue consumer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueProducerReadinessRecord":null,"queueProducerReadinessRecordRequired":true,"queueProducerReadinessRecordCurrent":false,"supportedQueueConsumerReadinessDispositions":["blocked_pending_queue_consumer_review","queue_consumer_ready_for_owner_review","queue_binding_or_payload_dependency_missing"],"defaultQueueConsumerReadinessDisposition":"blocked_pending_queue_consumer_review","queueConsumerReadinessChecklist":[{"id":"analytics-queue-consumer-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-queue-consumer-check-queue-producer-readiness","title":"Owner queue-producer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-producer readiness evidence before queue-consumer readiness evidence."},{"id":"analytics-queue-consumer-check-binding-mode","title":"Queue binding and consumer mode are reviewed without enabling consumers","status":"passed","evidence":"This record tracks Queue binding and consumer-mode readiness only; it does not enable a Cloudflare Queue consumer."},{"id":"analytics-queue-consumer-check-payload-ack-retry","title":"Payload-read, ack, retry, and dead-letter readiness are reviewed","status":"passed","evidence":"This record tracks payload-read, ack, retry, dead-letter, idempotency, and backpressure readiness without consuming messages, acking messages, or reading queue payload bodies."},{"id":"analytics-queue-consumer-check-provider-handoff","title":"Provider handoff dependency stays explicit before sends","status":"passed","evidence":"The consumer stays blocked until provider-call and delivery-attempt evidence are handled in later slices."},{"id":"analytics-queue-consumer-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-queue-consumer-check-producer-disabled","title":"Cloudflare Queue consumers are still disabled","status":"external_required","evidence":"Live queue dispatch still needs future owner-approved Queue consumer execution, consumer, provider-call, and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationQueueConsumerReadinessRecords":0,"ownerConfirmedRecords":0,"ownerQueueConsumerReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerCalledRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #294 lets verified owners record redacted analytics notification queue-consumer readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current queue-producer readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible queue binding, consumer mode, producer dependency, payload-read policy, ack policy, retry/dead-letter policy, provider-handoff dependency, idempotency policy, backpressure, audit-correlation, and retention readiness evidence only; it does not enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, call providers, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderCallReadiness":{"id":"analytics-notification-provider-call-readiness-contract","status":"owner-analytics-notification-provider-call-readiness-records-ready","issue":297,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-call-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification provider-call readiness evidence"},"supportedProviderCallReadinessDispositions":["blocked_pending_provider_call_review","provider_call_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultProviderCallReadinessDisposition":"blocked_pending_provider_call_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueConsumerReadinessRecord":null,"queueConsumerReadinessRecordRequired":true,"queueConsumerReadinessRecordCurrent":false,"supportedProviderCallReadinessDispositions":["blocked_pending_provider_call_review","provider_call_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultProviderCallReadinessDisposition":"blocked_pending_provider_call_review","providerCallReadinessChecklist":[{"id":"analytics-provider-call-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-call-check-queue-consumer-readiness","title":"Owner queue-consumer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-consumer readiness evidence before provider-call readiness evidence."},{"id":"analytics-provider-call-check-provider-disabled","title":"Provider call stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-call readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-call-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-call-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider calls stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-provider-call-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-call-check-send-disabled","title":"Provider calls are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueConsumerReadinessRecord":null,"queueConsumerReadinessRecordRequired":true,"queueConsumerReadinessRecordCurrent":false,"supportedProviderCallReadinessDispositions":["blocked_pending_provider_call_review","provider_call_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultProviderCallReadinessDisposition":"blocked_pending_provider_call_review","providerCallReadinessChecklist":[{"id":"analytics-provider-call-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-call-check-queue-consumer-readiness","title":"Owner queue-consumer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-consumer readiness evidence before provider-call readiness evidence."},{"id":"analytics-provider-call-check-provider-disabled","title":"Provider call stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-call readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-call-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-call-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider calls stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-provider-call-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-call-check-send-disabled","title":"Provider calls are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueConsumerReadinessRecord":null,"queueConsumerReadinessRecordRequired":true,"queueConsumerReadinessRecordCurrent":false,"supportedProviderCallReadinessDispositions":["blocked_pending_provider_call_review","provider_call_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultProviderCallReadinessDisposition":"blocked_pending_provider_call_review","providerCallReadinessChecklist":[{"id":"analytics-provider-call-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-call-check-queue-consumer-readiness","title":"Owner queue-consumer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-consumer readiness evidence before provider-call readiness evidence."},{"id":"analytics-provider-call-check-provider-disabled","title":"Provider call stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-call readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-call-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-call-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider calls stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-provider-call-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-call-check-send-disabled","title":"Provider calls are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestQueueConsumerReadinessRecord":null,"queueConsumerReadinessRecordRequired":true,"queueConsumerReadinessRecordCurrent":false,"supportedProviderCallReadinessDispositions":["blocked_pending_provider_call_review","provider_call_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultProviderCallReadinessDisposition":"blocked_pending_provider_call_review","providerCallReadinessChecklist":[{"id":"analytics-provider-call-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-call-check-queue-consumer-readiness","title":"Owner queue-consumer readiness exists for the selected window","status":"blocked","evidence":"Record owner notification queue-consumer readiness evidence before provider-call readiness evidence."},{"id":"analytics-provider-call-check-provider-disabled","title":"Provider call stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-call readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-call-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-call-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider calls stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-provider-call-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-call-check-send-disabled","title":"Provider calls are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationProviderCallReadinessRecords":0,"ownerConfirmedRecords":0,"ownerProviderCallReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"providerCallEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerCalledRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #297 lets verified owners record redacted analytics notification provider-call readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current queue-consumer readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider-call and provider-dependency readiness evidence only; it does not enable provider sends or calls, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryAttemptReadiness":{"id":"analytics-notification-delivery-attempt-readiness-contract","status":"owner-analytics-notification-delivery-attempt-readiness-records-ready","issue":299,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-attempt-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification delivery-attempt readiness evidence"},"supportedDeliveryAttemptReadinessDispositions":["blocked_pending_delivery_attempt_review","delivery_attempt_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultDeliveryAttemptReadinessDisposition":"blocked_pending_delivery_attempt_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderCallReadinessRecord":null,"providerCallReadinessRecordRequired":true,"providerCallReadinessRecordCurrent":false,"supportedDeliveryAttemptReadinessDispositions":["blocked_pending_delivery_attempt_review","delivery_attempt_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultDeliveryAttemptReadinessDisposition":"blocked_pending_delivery_attempt_review","deliveryAttemptReadinessChecklist":[{"id":"analytics-delivery-attempt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-attempt-check-provider-call-readiness","title":"Owner provider-call readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-call readiness evidence before delivery-attempt readiness evidence."},{"id":"analytics-delivery-attempt-check-provider-disabled","title":"Delivery attempt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-attempt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-attempt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-attempt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery attempts stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-delivery-attempt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-attempt-check-send-disabled","title":"Delivery attempts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryAttemptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryAttempted":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderCallReadinessRecord":null,"providerCallReadinessRecordRequired":true,"providerCallReadinessRecordCurrent":false,"supportedDeliveryAttemptReadinessDispositions":["blocked_pending_delivery_attempt_review","delivery_attempt_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultDeliveryAttemptReadinessDisposition":"blocked_pending_delivery_attempt_review","deliveryAttemptReadinessChecklist":[{"id":"analytics-delivery-attempt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-attempt-check-provider-call-readiness","title":"Owner provider-call readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-call readiness evidence before delivery-attempt readiness evidence."},{"id":"analytics-delivery-attempt-check-provider-disabled","title":"Delivery attempt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-attempt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-attempt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-attempt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery attempts stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-delivery-attempt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-attempt-check-send-disabled","title":"Delivery attempts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryAttemptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryAttempted":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderCallReadinessRecord":null,"providerCallReadinessRecordRequired":true,"providerCallReadinessRecordCurrent":false,"supportedDeliveryAttemptReadinessDispositions":["blocked_pending_delivery_attempt_review","delivery_attempt_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultDeliveryAttemptReadinessDisposition":"blocked_pending_delivery_attempt_review","deliveryAttemptReadinessChecklist":[{"id":"analytics-delivery-attempt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-attempt-check-provider-call-readiness","title":"Owner provider-call readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-call readiness evidence before delivery-attempt readiness evidence."},{"id":"analytics-delivery-attempt-check-provider-disabled","title":"Delivery attempt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-attempt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-attempt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-attempt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery attempts stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-delivery-attempt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-attempt-check-send-disabled","title":"Delivery attempts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryAttemptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryAttempted":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderCallReadinessRecord":null,"providerCallReadinessRecordRequired":true,"providerCallReadinessRecordCurrent":false,"supportedDeliveryAttemptReadinessDispositions":["blocked_pending_delivery_attempt_review","delivery_attempt_ready_for_owner_review","provider_dependency_or_payload_handoff_missing"],"defaultDeliveryAttemptReadinessDisposition":"blocked_pending_delivery_attempt_review","deliveryAttemptReadinessChecklist":[{"id":"analytics-delivery-attempt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-attempt-check-provider-call-readiness","title":"Owner provider-call readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-call readiness evidence before delivery-attempt readiness evidence."},{"id":"analytics-delivery-attempt-check-provider-disabled","title":"Delivery attempt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-attempt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-attempt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-attempt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery attempts stay blocked until future delivery-attempt execution records can prove real sends safely."},{"id":"analytics-delivery-attempt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-attempt-check-send-disabled","title":"Delivery attempts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-attempt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryAttemptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryAttempted":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationDeliveryAttemptReadinessRecords":0,"ownerConfirmedRecords":0,"ownerDeliveryAttemptReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"deliveryAttemptEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"deliveryAttemptedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"deliveryAttemptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"deliveryAttempted":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #299 lets verified owners record redacted analytics notification delivery-attempt readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current provider-call readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-attempt and provider-dependency readiness evidence only; it does not enable provider sends or calls, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, expose provider message IDs, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryResultReadiness":{"id":"analytics-notification-delivery-result-readiness-contract","status":"owner-analytics-notification-delivery-result-readiness-records-ready","issue":301,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-result-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","notificationDeliveryAttemptReadinessIssue":299,"notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification delivery-result readiness evidence"},"supportedDeliveryResultReadinessDispositions":["blocked_pending_delivery_result_review","delivery_result_ready_for_owner_review","delivery_result_dependency_or_receipt_boundary_missing"],"defaultDeliveryResultReadinessDisposition":"blocked_pending_delivery_result_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryAttemptReadinessRecord":null,"deliveryAttemptReadinessRecordRequired":true,"deliveryAttemptReadinessRecordCurrent":false,"supportedDeliveryResultReadinessDispositions":["blocked_pending_delivery_result_review","delivery_result_ready_for_owner_review","delivery_result_dependency_or_receipt_boundary_missing"],"defaultDeliveryResultReadinessDisposition":"blocked_pending_delivery_result_review","deliveryResultReadinessChecklist":[{"id":"analytics-delivery-result-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-result-check-delivery-attempt-readiness","title":"Owner delivery-attempt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-attempt readiness evidence before delivery-result readiness evidence."},{"id":"analytics-delivery-result-check-provider-disabled","title":"Delivery result stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-result readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-result-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-result-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery results stay blocked until future delivery-result receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-result-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-result-check-send-disabled","title":"Delivery results are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-result evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryResultEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryResultRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryAttemptReadinessRecord":null,"deliveryAttemptReadinessRecordRequired":true,"deliveryAttemptReadinessRecordCurrent":false,"supportedDeliveryResultReadinessDispositions":["blocked_pending_delivery_result_review","delivery_result_ready_for_owner_review","delivery_result_dependency_or_receipt_boundary_missing"],"defaultDeliveryResultReadinessDisposition":"blocked_pending_delivery_result_review","deliveryResultReadinessChecklist":[{"id":"analytics-delivery-result-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-result-check-delivery-attempt-readiness","title":"Owner delivery-attempt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-attempt readiness evidence before delivery-result readiness evidence."},{"id":"analytics-delivery-result-check-provider-disabled","title":"Delivery result stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-result readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-result-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-result-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery results stay blocked until future delivery-result receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-result-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-result-check-send-disabled","title":"Delivery results are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-result evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryResultEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryResultRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryAttemptReadinessRecord":null,"deliveryAttemptReadinessRecordRequired":true,"deliveryAttemptReadinessRecordCurrent":false,"supportedDeliveryResultReadinessDispositions":["blocked_pending_delivery_result_review","delivery_result_ready_for_owner_review","delivery_result_dependency_or_receipt_boundary_missing"],"defaultDeliveryResultReadinessDisposition":"blocked_pending_delivery_result_review","deliveryResultReadinessChecklist":[{"id":"analytics-delivery-result-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-result-check-delivery-attempt-readiness","title":"Owner delivery-attempt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-attempt readiness evidence before delivery-result readiness evidence."},{"id":"analytics-delivery-result-check-provider-disabled","title":"Delivery result stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-result readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-result-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-result-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery results stay blocked until future delivery-result receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-result-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-result-check-send-disabled","title":"Delivery results are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-result evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryResultEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryResultRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryAttemptReadinessRecord":null,"deliveryAttemptReadinessRecordRequired":true,"deliveryAttemptReadinessRecordCurrent":false,"supportedDeliveryResultReadinessDispositions":["blocked_pending_delivery_result_review","delivery_result_ready_for_owner_review","delivery_result_dependency_or_receipt_boundary_missing"],"defaultDeliveryResultReadinessDisposition":"blocked_pending_delivery_result_review","deliveryResultReadinessChecklist":[{"id":"analytics-delivery-result-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-result-check-delivery-attempt-readiness","title":"Owner delivery-attempt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-attempt readiness evidence before delivery-result readiness evidence."},{"id":"analytics-delivery-result-check-provider-disabled","title":"Delivery result stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-result readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-result-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-result-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery results stay blocked until future delivery-result receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-result-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-result-check-send-disabled","title":"Delivery results are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-result evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryResultEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryResultRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationDeliveryResultReadinessRecords":0,"ownerConfirmedRecords":0,"ownerDeliveryResultReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"deliveryResultEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"deliveryResultRecordedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"deliveryResultEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"deliveryResultRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerResponseIncluded":false,"providerPollingEnabled":false,"deliveryReceiptCreated":false,"deliveryReceiptPayloadIncluded":false,"statusWebhookEnabled":false,"statusWebhookReceived":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","providerResponse","deliveryReceipt","deliveryReceiptPayload","statusWebhook","providerPollingResult","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #301 lets verified owners record redacted analytics notification delivery-result readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-attempt readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-result boundary readiness only; it does not enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, create or expose provider responses, expose provider message IDs, create delivery receipts, expose receipt payloads, process status webhooks, poll providers, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryStatusWebhookReadiness":{"id":"analytics-notification-delivery-status-webhook-readiness-contract","status":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","issue":303,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-status-webhook-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","notificationDeliveryAttemptReadinessIssue":299,"notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","notificationDeliveryResultReadinessIssue":301,"notificationDeliveryResultReadinessStatus":"owner-analytics-notification-delivery-result-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification delivery-status-webhook readiness evidence"},"supportedDeliveryStatusWebhookReadinessDispositions":["blocked_pending_delivery_status_webhook_review","delivery_status_webhook_ready_for_owner_review","delivery_status_webhook_dependency_or_receipt_boundary_missing"],"defaultDeliveryStatusWebhookReadinessDisposition":"blocked_pending_delivery_status_webhook_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryResultReadinessStatus":"owner-analytics-notification-delivery-result-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryResultReadinessRecord":null,"deliveryResultReadinessRecordRequired":true,"deliveryResultReadinessRecordCurrent":false,"supportedDeliveryStatusWebhookReadinessDispositions":["blocked_pending_delivery_status_webhook_review","delivery_status_webhook_ready_for_owner_review","delivery_status_webhook_dependency_or_receipt_boundary_missing"],"defaultDeliveryStatusWebhookReadinessDisposition":"blocked_pending_delivery_status_webhook_review","deliveryStatusWebhookReadinessChecklist":[{"id":"analytics-delivery-status-webhook-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-status-webhook-check-delivery-result-readiness","title":"Owner delivery-result readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-result readiness evidence before delivery-status-webhook readiness evidence."},{"id":"analytics-delivery-status-webhook-check-provider-disabled","title":"Delivery status webhook stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-status-webhook readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-status-webhook-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-status-webhook-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery status webhooks stay blocked until future delivery-status-webhook receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-status-webhook-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-status-webhook-check-send-disabled","title":"Delivery status webhooks are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-status-webhook evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryStatusWebhookEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryStatusWebhookRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryResultReadinessStatus":"owner-analytics-notification-delivery-result-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryResultReadinessRecord":null,"deliveryResultReadinessRecordRequired":true,"deliveryResultReadinessRecordCurrent":false,"supportedDeliveryStatusWebhookReadinessDispositions":["blocked_pending_delivery_status_webhook_review","delivery_status_webhook_ready_for_owner_review","delivery_status_webhook_dependency_or_receipt_boundary_missing"],"defaultDeliveryStatusWebhookReadinessDisposition":"blocked_pending_delivery_status_webhook_review","deliveryStatusWebhookReadinessChecklist":[{"id":"analytics-delivery-status-webhook-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-status-webhook-check-delivery-result-readiness","title":"Owner delivery-result readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-result readiness evidence before delivery-status-webhook readiness evidence."},{"id":"analytics-delivery-status-webhook-check-provider-disabled","title":"Delivery status webhook stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-status-webhook readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-status-webhook-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-status-webhook-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery status webhooks stay blocked until future delivery-status-webhook receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-status-webhook-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-status-webhook-check-send-disabled","title":"Delivery status webhooks are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-status-webhook evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryStatusWebhookEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryStatusWebhookRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryResultReadinessStatus":"owner-analytics-notification-delivery-result-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryResultReadinessRecord":null,"deliveryResultReadinessRecordRequired":true,"deliveryResultReadinessRecordCurrent":false,"supportedDeliveryStatusWebhookReadinessDispositions":["blocked_pending_delivery_status_webhook_review","delivery_status_webhook_ready_for_owner_review","delivery_status_webhook_dependency_or_receipt_boundary_missing"],"defaultDeliveryStatusWebhookReadinessDisposition":"blocked_pending_delivery_status_webhook_review","deliveryStatusWebhookReadinessChecklist":[{"id":"analytics-delivery-status-webhook-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-status-webhook-check-delivery-result-readiness","title":"Owner delivery-result readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-result readiness evidence before delivery-status-webhook readiness evidence."},{"id":"analytics-delivery-status-webhook-check-provider-disabled","title":"Delivery status webhook stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-status-webhook readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-status-webhook-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-status-webhook-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery status webhooks stay blocked until future delivery-status-webhook receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-status-webhook-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-status-webhook-check-send-disabled","title":"Delivery status webhooks are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-status-webhook evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryStatusWebhookEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryStatusWebhookRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryResultReadinessStatus":"owner-analytics-notification-delivery-result-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryResultReadinessRecord":null,"deliveryResultReadinessRecordRequired":true,"deliveryResultReadinessRecordCurrent":false,"supportedDeliveryStatusWebhookReadinessDispositions":["blocked_pending_delivery_status_webhook_review","delivery_status_webhook_ready_for_owner_review","delivery_status_webhook_dependency_or_receipt_boundary_missing"],"defaultDeliveryStatusWebhookReadinessDisposition":"blocked_pending_delivery_status_webhook_review","deliveryStatusWebhookReadinessChecklist":[{"id":"analytics-delivery-status-webhook-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-status-webhook-check-delivery-result-readiness","title":"Owner delivery-result readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-result readiness evidence before delivery-status-webhook readiness evidence."},{"id":"analytics-delivery-status-webhook-check-provider-disabled","title":"Delivery status webhook stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-status-webhook readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-status-webhook-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-status-webhook-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery status webhooks stay blocked until future delivery-status-webhook receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-delivery-status-webhook-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-status-webhook-check-send-disabled","title":"Delivery status webhooks are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-status-webhook evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryStatusWebhookEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryStatusWebhookRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationDeliveryStatusWebhookReadinessRecords":0,"ownerConfirmedRecords":0,"ownerDeliveryStatusWebhookReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"deliveryStatusWebhookEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"deliveryStatusWebhookRecordedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"deliveryStatusWebhookEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"deliveryStatusWebhookRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerResponseIncluded":false,"providerPollingEnabled":false,"deliveryReceiptCreated":false,"deliveryReceiptPayloadIncluded":false,"statusWebhookEnabled":false,"statusWebhookReceived":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","providerResponse","deliveryReceipt","deliveryReceiptPayload","statusWebhook","providerPollingResult","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #303 lets verified owners record redacted analytics notification delivery-status-webhook readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-result readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-status-webhook boundary readiness only; it does not enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, create or expose provider responses, expose provider message IDs, create delivery receipts, expose receipt payloads, process status webhooks, poll providers, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderPollingReadiness":{"id":"analytics-notification-provider-polling-readiness-contract","status":"owner-analytics-notification-provider-polling-readiness-records-ready","issue":305,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-polling-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","notificationDeliveryAttemptReadinessIssue":299,"notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","notificationDeliveryStatusWebhookReadinessIssue":303,"notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification provider-polling readiness evidence"},"supportedProviderPollingReadinessDispositions":["blocked_pending_provider_polling_review","provider_polling_ready_for_owner_review","provider_polling_dependency_or_receipt_boundary_missing"],"defaultProviderPollingReadinessDisposition":"blocked_pending_provider_polling_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryStatusWebhookReadinessRecord":null,"deliveryStatusWebhookReadinessRecordRequired":true,"deliveryStatusWebhookReadinessRecordCurrent":false,"supportedProviderPollingReadinessDispositions":["blocked_pending_provider_polling_review","provider_polling_ready_for_owner_review","provider_polling_dependency_or_receipt_boundary_missing"],"defaultProviderPollingReadinessDisposition":"blocked_pending_provider_polling_review","providerPollingReadinessChecklist":[{"id":"analytics-provider-polling-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-polling-check-delivery-status-webhook-readiness","title":"Owner delivery-status-webhook readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-status-webhook readiness evidence before provider-polling readiness evidence."},{"id":"analytics-provider-polling-check-provider-disabled","title":"Provider polling stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-polling readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-polling-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-polling-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider pollings stay blocked until future provider-polling receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-provider-polling-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-polling-check-send-disabled","title":"Provider pollings are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-polling evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerPollingEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerPollingRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryStatusWebhookReadinessRecord":null,"deliveryStatusWebhookReadinessRecordRequired":true,"deliveryStatusWebhookReadinessRecordCurrent":false,"supportedProviderPollingReadinessDispositions":["blocked_pending_provider_polling_review","provider_polling_ready_for_owner_review","provider_polling_dependency_or_receipt_boundary_missing"],"defaultProviderPollingReadinessDisposition":"blocked_pending_provider_polling_review","providerPollingReadinessChecklist":[{"id":"analytics-provider-polling-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-polling-check-delivery-status-webhook-readiness","title":"Owner delivery-status-webhook readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-status-webhook readiness evidence before provider-polling readiness evidence."},{"id":"analytics-provider-polling-check-provider-disabled","title":"Provider polling stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-polling readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-polling-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-polling-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider pollings stay blocked until future provider-polling receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-provider-polling-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-polling-check-send-disabled","title":"Provider pollings are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-polling evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerPollingEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerPollingRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryStatusWebhookReadinessRecord":null,"deliveryStatusWebhookReadinessRecordRequired":true,"deliveryStatusWebhookReadinessRecordCurrent":false,"supportedProviderPollingReadinessDispositions":["blocked_pending_provider_polling_review","provider_polling_ready_for_owner_review","provider_polling_dependency_or_receipt_boundary_missing"],"defaultProviderPollingReadinessDisposition":"blocked_pending_provider_polling_review","providerPollingReadinessChecklist":[{"id":"analytics-provider-polling-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-polling-check-delivery-status-webhook-readiness","title":"Owner delivery-status-webhook readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-status-webhook readiness evidence before provider-polling readiness evidence."},{"id":"analytics-provider-polling-check-provider-disabled","title":"Provider polling stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-polling readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-polling-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-polling-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider pollings stay blocked until future provider-polling receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-provider-polling-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-polling-check-send-disabled","title":"Provider pollings are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-polling evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerPollingEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerPollingRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryStatusWebhookReadinessRecord":null,"deliveryStatusWebhookReadinessRecordRequired":true,"deliveryStatusWebhookReadinessRecordCurrent":false,"supportedProviderPollingReadinessDispositions":["blocked_pending_provider_polling_review","provider_polling_ready_for_owner_review","provider_polling_dependency_or_receipt_boundary_missing"],"defaultProviderPollingReadinessDisposition":"blocked_pending_provider_polling_review","providerPollingReadinessChecklist":[{"id":"analytics-provider-polling-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-polling-check-delivery-status-webhook-readiness","title":"Owner delivery-status-webhook readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-status-webhook readiness evidence before provider-polling readiness evidence."},{"id":"analytics-provider-polling-check-provider-disabled","title":"Provider polling stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-polling readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-polling-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-polling-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider pollings stay blocked until future provider-polling receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-provider-polling-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-polling-check-send-disabled","title":"Provider pollings are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-polling evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerPollingEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerPollingRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationProviderPollingReadinessRecords":0,"ownerConfirmedRecords":0,"ownerProviderPollingReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"providerPollingEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerPollingRecordedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"providerPollingEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"providerPollingRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerResponseIncluded":false,"deliveryReceiptCreated":false,"deliveryReceiptPayloadIncluded":false,"statusWebhookEnabled":false,"statusWebhookReceived":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","providerResponse","deliveryReceipt","deliveryReceiptPayload","statusWebhook","providerPollingResult","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #305 lets verified owners record redacted analytics notification provider-polling readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-status-webhook readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider-polling boundary readiness only; it does not enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, create or expose provider responses, expose provider message IDs, create delivery receipts, expose receipt payloads, process status webhooks, poll providers, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationReceiptPayloadReadiness":{"id":"analytics-notification-receipt-payload-readiness-contract","status":"owner-analytics-notification-receipt-payload-readiness-records-ready","issue":307,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-receipt-payload-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","notificationDeliveryAttemptReadinessIssue":299,"notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","notificationDeliveryStatusWebhookReadinessIssue":303,"notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","notificationProviderPollingReadinessIssue":305,"notificationProviderPollingReadinessStatus":"owner-analytics-notification-provider-polling-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification receipt-payload readiness evidence"},"supportedReceiptPayloadReadinessDispositions":["blocked_pending_receipt_payload_review","receipt_payload_ready_for_owner_review","receipt_payload_dependency_or_payload_boundary_missing"],"defaultReceiptPayloadReadinessDisposition":"blocked_pending_receipt_payload_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderPollingReadinessStatus":"owner-analytics-notification-provider-polling-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderPollingReadinessRecord":null,"providerPollingReadinessRecordRequired":true,"providerPollingReadinessRecordCurrent":false,"supportedReceiptPayloadReadinessDispositions":["blocked_pending_receipt_payload_review","receipt_payload_ready_for_owner_review","receipt_payload_dependency_or_payload_boundary_missing"],"defaultReceiptPayloadReadinessDisposition":"blocked_pending_receipt_payload_review","receiptPayloadReadinessChecklist":[{"id":"analytics-receipt-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-receipt-payload-check-provider-polling-readiness","title":"Owner provider-polling readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-polling readiness evidence before receipt-payload readiness evidence."},{"id":"analytics-receipt-payload-check-provider-disabled","title":"Receipt payload stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks receipt-payload readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-receipt-payload-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-receipt-payload-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Receipt payloads stay blocked until future receipt-payload receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-receipt-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-receipt-payload-check-send-disabled","title":"Receipt payloads are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and receipt-payload evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"receiptPayloadEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"receiptPayloadRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderPollingReadinessStatus":"owner-analytics-notification-provider-polling-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderPollingReadinessRecord":null,"providerPollingReadinessRecordRequired":true,"providerPollingReadinessRecordCurrent":false,"supportedReceiptPayloadReadinessDispositions":["blocked_pending_receipt_payload_review","receipt_payload_ready_for_owner_review","receipt_payload_dependency_or_payload_boundary_missing"],"defaultReceiptPayloadReadinessDisposition":"blocked_pending_receipt_payload_review","receiptPayloadReadinessChecklist":[{"id":"analytics-receipt-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-receipt-payload-check-provider-polling-readiness","title":"Owner provider-polling readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-polling readiness evidence before receipt-payload readiness evidence."},{"id":"analytics-receipt-payload-check-provider-disabled","title":"Receipt payload stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks receipt-payload readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-receipt-payload-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-receipt-payload-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Receipt payloads stay blocked until future receipt-payload receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-receipt-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-receipt-payload-check-send-disabled","title":"Receipt payloads are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and receipt-payload evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"receiptPayloadEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"receiptPayloadRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderPollingReadinessStatus":"owner-analytics-notification-provider-polling-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderPollingReadinessRecord":null,"providerPollingReadinessRecordRequired":true,"providerPollingReadinessRecordCurrent":false,"supportedReceiptPayloadReadinessDispositions":["blocked_pending_receipt_payload_review","receipt_payload_ready_for_owner_review","receipt_payload_dependency_or_payload_boundary_missing"],"defaultReceiptPayloadReadinessDisposition":"blocked_pending_receipt_payload_review","receiptPayloadReadinessChecklist":[{"id":"analytics-receipt-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-receipt-payload-check-provider-polling-readiness","title":"Owner provider-polling readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-polling readiness evidence before receipt-payload readiness evidence."},{"id":"analytics-receipt-payload-check-provider-disabled","title":"Receipt payload stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks receipt-payload readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-receipt-payload-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-receipt-payload-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Receipt payloads stay blocked until future receipt-payload receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-receipt-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-receipt-payload-check-send-disabled","title":"Receipt payloads are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and receipt-payload evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"receiptPayloadEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"receiptPayloadRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationProviderPollingReadinessStatus":"owner-analytics-notification-provider-polling-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestProviderPollingReadinessRecord":null,"providerPollingReadinessRecordRequired":true,"providerPollingReadinessRecordCurrent":false,"supportedReceiptPayloadReadinessDispositions":["blocked_pending_receipt_payload_review","receipt_payload_ready_for_owner_review","receipt_payload_dependency_or_payload_boundary_missing"],"defaultReceiptPayloadReadinessDisposition":"blocked_pending_receipt_payload_review","receiptPayloadReadinessChecklist":[{"id":"analytics-receipt-payload-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-receipt-payload-check-provider-polling-readiness","title":"Owner provider-polling readiness exists for the selected window","status":"blocked","evidence":"Record owner notification provider-polling readiness evidence before receipt-payload readiness evidence."},{"id":"analytics-receipt-payload-check-provider-disabled","title":"Receipt payload stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks receipt-payload readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-receipt-payload-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-receipt-payload-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Receipt payloads stay blocked until future receipt-payload receipt and provider-status contracts can prove result ingestion safely."},{"id":"analytics-receipt-payload-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-receipt-payload-check-send-disabled","title":"Receipt payloads are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and receipt-payload evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"receiptPayloadEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"receiptPayloadRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationReceiptPayloadReadinessRecords":0,"ownerConfirmedRecords":0,"ownerReceiptPayloadReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"receiptPayloadEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"receiptPayloadRecordedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"providerPollingEnabled":false,"receiptPayloadEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"receiptPayloadRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerResponseIncluded":false,"deliveryReceiptCreated":false,"deliveryReceiptPayloadIncluded":false,"statusWebhookEnabled":false,"statusWebhookReceived":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","providerResponse","deliveryReceipt","deliveryReceiptPayload","statusWebhook","receiptPayloadResult","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #307 lets verified owners record redacted analytics notification receipt-payload readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current provider-polling readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible receipt-payload boundary readiness only; it does not enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, create or expose provider responses, expose provider message IDs, create delivery receipts, expose receipt payloads, process status webhooks, poll providers, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationDeliveryReceiptReadiness":{"id":"analytics-notification-delivery-receipt-readiness-contract","status":"owner-analytics-notification-delivery-receipt-readiness-records-ready","issue":309,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-delivery-receipt-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","notificationDeliveryAttemptReadinessIssue":299,"notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","notificationDeliveryStatusWebhookReadinessIssue":303,"notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","notificationReceiptPayloadReadinessIssue":307,"notificationReceiptPayloadReadinessStatus":"owner-analytics-notification-receipt-payload-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification delivery-receipt readiness evidence"},"supportedDeliveryReceiptReadinessDispositions":["blocked_pending_delivery_receipt_review","delivery_receipt_ready_for_owner_review","delivery_receipt_dependency_or_payload_boundary_missing"],"defaultDeliveryReceiptReadinessDisposition":"blocked_pending_delivery_receipt_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationReceiptPayloadReadinessStatus":"owner-analytics-notification-receipt-payload-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestReceiptPayloadReadinessRecord":null,"receiptPayloadReadinessRecordRequired":true,"receiptPayloadReadinessRecordCurrent":false,"supportedDeliveryReceiptReadinessDispositions":["blocked_pending_delivery_receipt_review","delivery_receipt_ready_for_owner_review","delivery_receipt_dependency_or_payload_boundary_missing"],"defaultDeliveryReceiptReadinessDisposition":"blocked_pending_delivery_receipt_review","deliveryReceiptReadinessChecklist":[{"id":"analytics-delivery-receipt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-receipt-check-receipt-payload-readiness","title":"Owner receipt-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification receipt-payload readiness evidence before delivery-receipt readiness evidence."},{"id":"analytics-delivery-receipt-check-provider-disabled","title":"Delivery receipt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-receipt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-receipt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-receipt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery receipts stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-delivery-receipt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-receipt-check-send-disabled","title":"Delivery receipts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-receipt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryReceiptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryReceiptRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationReceiptPayloadReadinessStatus":"owner-analytics-notification-receipt-payload-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestReceiptPayloadReadinessRecord":null,"receiptPayloadReadinessRecordRequired":true,"receiptPayloadReadinessRecordCurrent":false,"supportedDeliveryReceiptReadinessDispositions":["blocked_pending_delivery_receipt_review","delivery_receipt_ready_for_owner_review","delivery_receipt_dependency_or_payload_boundary_missing"],"defaultDeliveryReceiptReadinessDisposition":"blocked_pending_delivery_receipt_review","deliveryReceiptReadinessChecklist":[{"id":"analytics-delivery-receipt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-receipt-check-receipt-payload-readiness","title":"Owner receipt-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification receipt-payload readiness evidence before delivery-receipt readiness evidence."},{"id":"analytics-delivery-receipt-check-provider-disabled","title":"Delivery receipt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-receipt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-receipt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-receipt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery receipts stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-delivery-receipt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-receipt-check-send-disabled","title":"Delivery receipts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-receipt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryReceiptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryReceiptRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationReceiptPayloadReadinessStatus":"owner-analytics-notification-receipt-payload-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestReceiptPayloadReadinessRecord":null,"receiptPayloadReadinessRecordRequired":true,"receiptPayloadReadinessRecordCurrent":false,"supportedDeliveryReceiptReadinessDispositions":["blocked_pending_delivery_receipt_review","delivery_receipt_ready_for_owner_review","delivery_receipt_dependency_or_payload_boundary_missing"],"defaultDeliveryReceiptReadinessDisposition":"blocked_pending_delivery_receipt_review","deliveryReceiptReadinessChecklist":[{"id":"analytics-delivery-receipt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-receipt-check-receipt-payload-readiness","title":"Owner receipt-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification receipt-payload readiness evidence before delivery-receipt readiness evidence."},{"id":"analytics-delivery-receipt-check-provider-disabled","title":"Delivery receipt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-receipt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-receipt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-receipt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery receipts stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-delivery-receipt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-receipt-check-send-disabled","title":"Delivery receipts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-receipt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryReceiptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryReceiptRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationReceiptPayloadReadinessStatus":"owner-analytics-notification-receipt-payload-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestReceiptPayloadReadinessRecord":null,"receiptPayloadReadinessRecordRequired":true,"receiptPayloadReadinessRecordCurrent":false,"supportedDeliveryReceiptReadinessDispositions":["blocked_pending_delivery_receipt_review","delivery_receipt_ready_for_owner_review","delivery_receipt_dependency_or_payload_boundary_missing"],"defaultDeliveryReceiptReadinessDisposition":"blocked_pending_delivery_receipt_review","deliveryReceiptReadinessChecklist":[{"id":"analytics-delivery-receipt-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-delivery-receipt-check-receipt-payload-readiness","title":"Owner receipt-payload readiness exists for the selected window","status":"blocked","evidence":"Record owner notification receipt-payload readiness evidence before delivery-receipt readiness evidence."},{"id":"analytics-delivery-receipt-check-provider-disabled","title":"Delivery receipt stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks delivery-receipt readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-delivery-receipt-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-delivery-receipt-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Delivery receipts stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-delivery-receipt-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-delivery-receipt-check-send-disabled","title":"Delivery receipts are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and delivery-receipt evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"deliveryReceiptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"deliveryReceiptRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationDeliveryReceiptReadinessRecords":0,"ownerConfirmedRecords":0,"ownerDeliveryReceiptReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"deliveryReceiptEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"deliveryReceiptRecordedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"providerPollingEnabled":false,"receiptPayloadEnabled":false,"deliveryReceiptEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"deliveryReceiptRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerResponseIncluded":false,"deliveryReceiptCreated":false,"deliveryReceiptPayloadIncluded":false,"statusWebhookEnabled":false,"statusWebhookReceived":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","providerResponse","deliveryReceipt","deliveryReceiptPayload","statusWebhook","deliveryReceiptResult","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #309 lets verified owners record redacted analytics notification delivery-receipt readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current receipt-payload readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible delivery-receipt boundary readiness only; it does not enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, create or expose provider responses, expose provider message IDs, create delivery receipts, expose delivery receipts, process status webhooks, poll providers, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"notificationProviderStatusReconciliationReadiness":{"id":"analytics-notification-provider-status-reconciliation-readiness-contract","status":"owner-analytics-notification-provider-status-reconciliation-readiness-records-ready","issue":311,"parentIssue":18,"apiRoute":"/api/admin/analytics/notification-provider-status-reconciliation-readiness","ownerRoute":"/admin/analytics","sourceDataRoute":"/analytics/source-data","source":"d1","loadError":null,"readiness":{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"notificationInboxIssue":271,"notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightIssue":284,"notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessIssue":286,"notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessIssue":290,"notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationQueueProducerReadinessIssue":292,"notificationQueueProducerReadinessStatus":"owner-analytics-notification-queue-producer-readiness-records-ready","notificationQueueConsumerReadinessIssue":294,"notificationQueueConsumerReadinessStatus":"owner-analytics-notification-queue-consumer-readiness-records-ready","notificationProviderCallReadinessIssue":297,"notificationProviderCallReadinessStatus":"owner-analytics-notification-provider-call-readiness-records-ready","notificationDeliveryAttemptReadinessIssue":299,"notificationDeliveryAttemptReadinessStatus":"owner-analytics-notification-delivery-attempt-readiness-records-ready","notificationDeliveryStatusWebhookReadinessIssue":303,"notificationDeliveryStatusWebhookReadinessStatus":"owner-analytics-notification-delivery-status-webhook-readiness-records-ready","notificationDeliveryReceiptReadinessIssue":309,"notificationDeliveryReceiptReadinessStatus":"owner-analytics-notification-delivery-receipt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2},"confirmation":{"required":true,"text":"Record Bumpgrade analytics notification provider-status-reconciliation readiness evidence"},"supportedProviderStatusReconciliationReadinessDispositions":["blocked_pending_provider_status_reconciliation_review","provider_status_reconciliation_ready_for_owner_review","provider_status_reconciliation_dependency_or_payload_boundary_missing"],"defaultProviderStatusReconciliationReadinessDisposition":"blocked_pending_provider_status_reconciliation_review","currentEvidenceByWindow":[{"timeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryReceiptReadinessStatus":"owner-analytics-notification-delivery-receipt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryReceiptReadinessRecord":null,"deliveryReceiptReadinessRecordRequired":true,"deliveryReceiptReadinessRecordCurrent":false,"supportedProviderStatusReconciliationReadinessDispositions":["blocked_pending_provider_status_reconciliation_review","provider_status_reconciliation_ready_for_owner_review","provider_status_reconciliation_dependency_or_payload_boundary_missing"],"defaultProviderStatusReconciliationReadinessDisposition":"blocked_pending_provider_status_reconciliation_review","providerStatusReconciliationReadinessChecklist":[{"id":"analytics-provider-status-reconciliation-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-status-reconciliation-check-delivery-receipt-readiness","title":"Owner delivery-receipt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-receipt readiness evidence before provider-status-reconciliation readiness evidence."},{"id":"analytics-provider-status-reconciliation-check-provider-disabled","title":"Provider status reconciliation stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-status-reconciliation readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-status-reconciliation-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-status-reconciliation-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider status reconciliations stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-provider-status-reconciliation-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-status-reconciliation-check-send-disabled","title":"Provider status reconciliations are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-status-reconciliation evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerStatusReconciliationEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerStatusReconciliationRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"24h","label":"24 hours","description":"Captured seeded events from the last 24 hours.","seconds":86400},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryReceiptReadinessStatus":"owner-analytics-notification-delivery-receipt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":825,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryReceiptReadinessRecord":null,"deliveryReceiptReadinessRecordRequired":true,"deliveryReceiptReadinessRecordCurrent":false,"supportedProviderStatusReconciliationReadinessDispositions":["blocked_pending_provider_status_reconciliation_review","provider_status_reconciliation_ready_for_owner_review","provider_status_reconciliation_dependency_or_payload_boundary_missing"],"defaultProviderStatusReconciliationReadinessDisposition":"blocked_pending_provider_status_reconciliation_review","providerStatusReconciliationReadinessChecklist":[{"id":"analytics-provider-status-reconciliation-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-status-reconciliation-check-delivery-receipt-readiness","title":"Owner delivery-receipt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-receipt readiness evidence before provider-status-reconciliation readiness evidence."},{"id":"analytics-provider-status-reconciliation-check-provider-disabled","title":"Provider status reconciliation stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-status-reconciliation readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-status-reconciliation-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-status-reconciliation-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider status reconciliations stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-provider-status-reconciliation-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-status-reconciliation-check-send-disabled","title":"Provider status reconciliations are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-status-reconciliation evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerStatusReconciliationEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerStatusReconciliationRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"7d","label":"7 days","description":"Captured seeded events from the last 7 days.","seconds":604800},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryReceiptReadinessStatus":"owner-analytics-notification-delivery-receipt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryReceiptReadinessRecord":null,"deliveryReceiptReadinessRecordRequired":true,"deliveryReceiptReadinessRecordCurrent":false,"supportedProviderStatusReconciliationReadinessDispositions":["blocked_pending_provider_status_reconciliation_review","provider_status_reconciliation_ready_for_owner_review","provider_status_reconciliation_dependency_or_payload_boundary_missing"],"defaultProviderStatusReconciliationReadinessDisposition":"blocked_pending_provider_status_reconciliation_review","providerStatusReconciliationReadinessChecklist":[{"id":"analytics-provider-status-reconciliation-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-status-reconciliation-check-delivery-receipt-readiness","title":"Owner delivery-receipt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-receipt readiness evidence before provider-status-reconciliation readiness evidence."},{"id":"analytics-provider-status-reconciliation-check-provider-disabled","title":"Provider status reconciliation stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-status-reconciliation readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-status-reconciliation-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-status-reconciliation-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider status reconciliations stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-provider-status-reconciliation-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-status-reconciliation-check-send-disabled","title":"Provider status reconciliations are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-status-reconciliation evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerStatusReconciliationEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerStatusReconciliationRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},{"timeWindow":{"key":"30d","label":"30 days","description":"Captured seeded events from the last 30 days.","seconds":2592000},"dashboardId":"analytics-dashboard-indie-launch","dashboardRevisionId":"analytics-experiment-revision-indie-launch-2026-05-22-provider-status-reconciliation-readiness","readinessId":"analytics-notification-readiness-indie-launch-threshold-review","readinessStatus":"owner-reviewed-notification-readiness-ready","notificationInboxStatus":"owner-analytics-notification-inbox-records-ready","notificationDispatchPreflightStatus":"owner-analytics-notification-dispatch-preflights-ready","notificationProviderDomainReadinessStatus":"owner-analytics-notification-provider-domain-readiness-records-ready","notificationSendPayloadReadinessStatus":"owner-analytics-notification-send-payload-readiness-records-ready","notificationDeliveryReceiptReadinessStatus":"owner-analytics-notification-delivery-receipt-readiness-records-ready","channelId":"analytics-notification-channel-admin-inbox","ownerReviewStatus":"reviewed_with_caveats","alertThresholdCount":2,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates.","sampleSizeCaveatAcknowledged":true,"latestDeliveryReceiptReadinessRecord":null,"deliveryReceiptReadinessRecordRequired":true,"deliveryReceiptReadinessRecordCurrent":false,"supportedProviderStatusReconciliationReadinessDispositions":["blocked_pending_provider_status_reconciliation_review","provider_status_reconciliation_ready_for_owner_review","provider_status_reconciliation_dependency_or_payload_boundary_missing"],"defaultProviderStatusReconciliationReadinessDisposition":"blocked_pending_provider_status_reconciliation_review","providerStatusReconciliationReadinessChecklist":[{"id":"analytics-provider-status-reconciliation-check-readiness","title":"Notification readiness contract is current","status":"passed","evidence":"Issue #269 records delivery readiness without sends, recipients, or email bodies."},{"id":"analytics-provider-status-reconciliation-check-delivery-receipt-readiness","title":"Owner delivery-receipt readiness exists for the selected window","status":"blocked","evidence":"Record owner notification delivery-receipt readiness evidence before provider-status-reconciliation readiness evidence."},{"id":"analytics-provider-status-reconciliation-check-provider-disabled","title":"Provider status reconciliation stays reviewed without enabling provider sends","status":"passed","evidence":"This record tracks provider-status-reconciliation readiness only; it does not call, configure, or enable a provider."},{"id":"analytics-provider-status-reconciliation-check-redaction","title":"Payload handoff and provider response redaction are reviewed","status":"passed","evidence":"This record keeps provider payloads, responses, message IDs, bodies, secrets, sender credentials, and DNS details out of public output."},{"id":"analytics-provider-status-reconciliation-check-runtime-dependencies","title":"Provider runtime dependencies stay explicit","status":"passed","evidence":"Provider status reconciliations stay blocked until future receipt-ingestion and provider-status contracts can prove result handling safely."},{"id":"analytics-provider-status-reconciliation-check-audit-retention","title":"Audit and retention readiness are reviewed","status":"passed","evidence":"This record tracks audit-correlation and retention readiness metadata without exposing actor email, private notes, or raw analytics rows."},{"id":"analytics-provider-status-reconciliation-check-send-disabled","title":"Provider status reconciliations are still disabled","status":"external_required","evidence":"Live owner alert sending still needs future owner-approved provider execution and provider-status-reconciliation evidence."}],"ownerRecordAllowed":false,"ownerEmailSendEnabled":false,"queueDispatchEnabled":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerStatusReconciliationEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"customerAlertEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"rawRowsIncluded":false,"privateDataIncluded":false,"recipientIdentityIncluded":false,"recipientPayloadCreated":false,"personalizedBodyCreated":false,"rawPayloadBodyStored":false,"emailBodyIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queueBindingReviewed":true,"consumerModeReviewed":true,"producerDependencyReviewed":true,"payloadReadPolicyReviewed":true,"ackPolicyReviewed":true,"idempotencyPolicyReviewed":true,"retryDeadLetterPolicyReviewed":true,"providerHandoffDependencyReviewed":true,"backpressurePolicyReviewed":true,"auditCorrelationReviewed":true,"retentionPolicyReviewed":true,"providerSendEnabled":false,"providerStatusReconciliationRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false}],"counts":{"notificationProviderStatusReconciliationReadinessRecords":0,"ownerConfirmedRecords":0,"ownerProviderStatusReconciliationReadinessRecordedRecords":0,"queueBindingReviewedRecords":0,"consumerModeReviewedRecords":0,"producerDependencyReviewedRecords":0,"payloadReadPolicyReviewedRecords":0,"ackPolicyReviewedRecords":0,"idempotencyPolicyReviewedRecords":0,"retryDeadLetterPolicyReviewedRecords":0,"providerHandoffDependencyReviewedRecords":0,"backpressurePolicyReviewedRecords":0,"auditCorrelationReviewedRecords":0,"retentionPolicyReviewedRecords":0,"emailSendEnabledRecords":0,"queueDispatchEnabledRecords":0,"queueProducerEnabledRecords":0,"queueConsumerEnabledRecords":0,"providerStatusReconciliationEnabledRecords":0,"queueMessageCreatedRecords":0,"queueMessageConsumedRecords":0,"queueMessageAcknowledgedRecords":0,"retryDeadLetterRowCreatedRecords":0,"queuePayloadBodyReadRecords":0,"queuePayloadBodyCreatedRecords":0,"customerAlertEnabledRecords":0,"trafficRoutingEnabledRecords":0,"automatedWinnerEnabledRecords":0,"revenueClaimEnabledRecords":0,"rawAnalyticsRowsExposedRecords":0,"recipientIdentityIncludedRecords":0,"recipientPayloadCreatedRecords":0,"personalizedBodyCreatedRecords":0,"rawPayloadBodyStoredRecords":0,"emailBodyIncludedRecords":0,"providerMessageIdIncludedRecords":0,"queuePayloadIncludedRecords":0,"providerSendEnabledRecords":0,"providerStatusReconciliationRecordedRecords":0,"providerConfiguredRecords":0,"providerResponseCreatedRecords":0,"providerSecretIncludedRecords":0,"senderDomainConfiguredRecords":0,"senderDomainVerifiedRecords":0,"senderCredentialIncludedRecords":0,"privateDnsCredentialsIncludedRecords":0},"latestRecords":[],"redaction":{"privateDataIncluded":false,"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"actorEmailHashIncluded":false,"privateNoteIncluded":false,"notificationRecipientIncluded":false,"recipientPayloadIncluded":false,"personalizedBodyIncluded":false,"rawPayloadBodyIncluded":false,"emailBodyIncluded":false,"payloadShapeIncluded":false,"bodyTemplateIncluded":false,"unsubscribeUrlIncluded":false,"providerMessageIdIncluded":false,"queuePayloadIncluded":false,"queuePayloadBodyIncluded":false,"queueProducerEnabled":false,"queueConsumerEnabled":false,"providerCallEnabled":false,"providerPollingEnabled":false,"deliveryReceiptEnabled":false,"providerStatusReconciliationEnabled":false,"queueMessageCreated":false,"queueMessageConsumed":false,"queueMessageAcknowledged":false,"retryDeadLetterRowCreated":false,"queuePayloadBodyRead":false,"queuePayloadBodyCreated":false,"providerSendEnabled":false,"providerCalled":false,"providerStatusReconciliationRecorded":false,"providerConfigured":false,"providerResponseCreated":false,"providerResponseIncluded":false,"providerStatusReconciliationCreated":false,"providerStatusReconciliationPayloadIncluded":false,"statusWebhookEnabled":false,"statusWebhookReceived":false,"providerSecretIncluded":false,"senderDomainConfigured":false,"senderDomainVerified":false,"senderCredentialIncluded":false,"privateDnsCredentialsIncluded":false},"privateFieldsExcluded":["actorEmail","actorEmailHash","privateNote","privateNoteSha256","notificationRecipient","recipientPayload","personalizedBody","rawPayloadBody","emailBody","bodyTemplate","payloadShape","unsubscribeUrl","providerMessageId","providerResponse","providerStatusReconciliation","providerStatusReconciliationPayload","statusWebhook","providerStatusReconciliationResult","queuePayload","queuePayloadBody","providerSecret","senderCredential","senderDomainDnsRecord","privateDnsCredentials","providerConfiguration","rawAnalyticsEventRows","rawExperimentAssignmentRows","metadataJson"],"writeBoundary":"Issue #311 lets verified owners record redacted analytics notification provider-status-reconciliation readiness evidence after exact confirmation, idempotency, dashboard revision checks, notification readiness checks, notification inbox checks, notification dispatch preflight checks, provider/domain readiness checks, current send-payload readiness checks, current delivery-receipt readiness checks, fixed-window evidence checks, and sample-size caveat acknowledgement. It records owner-visible provider-status-reconciliation boundary readiness only; it does not enable provider sends or calls, attempt delivery, configure providers, store provider secrets, store sender credentials, verify sender domains, expose private DNS credentials, send email, enable Cloudflare Queue producers or consumers, dispatch queues, create queue messages, consume queue messages, acknowledge queue messages, create retry/dead-letter rows, read queue payload bodies, create queue payload bodies, create customer alerts, expose notification recipients, create recipient payloads, create personalized bodies, store raw payload bodies, expose email bodies, expose body templates, expose unsubscribe URLs, create or expose provider responses, expose provider message IDs, create provider status reconciliations, expose provider status reconciliations, process status webhooks, poll providers, expose queue payloads, route traffic, choose automated winners, expose raw analytics rows, or make revenue claims."},"reportExports":{"id":"analytics-report-export-contract","status":"aggregate-report-exports-ready","issue":263,"parentIssue":18,"sourceDataRoute":"/analytics/source-data","dashboardId":"analytics-dashboard-indie-launch","selectedTimeWindow":{"key":"all","label":"All time","description":"All captured seeded events.","seconds":null},"exports":[{"id":"analytics-report-export-indie-launch-aggregate-summary","title":"Indie launch aggregate analytics report","format":"json","mediaType":"application/json","exportMode":"aggregate_snapshot","route":"/analytics/source-data","selectedTimeWindowKey":"all","sections":[{"id":"analytics-report-section-event-aggregates","title":"Event aggregates","source":"eventSummary.aggregateCounts","rowCount":2,"stableIds":["analyticsEventId","analyticsEventIngestionId"]},{"id":"analytics-report-section-source-attribution","title":"Source attribution aggregates","source":"eventSummary.aggregateSourceCounts","rowCount":3,"stableIds":["analyticsEventSourceAggregateId","utmSource","utmMedium","utmCampaign","referrerHost"]},{"id":"analytics-report-section-variant-aggregates","title":"Variant aggregates","source":"eventSummary.aggregateVariantCounts","rowCount":2,"stableIds":["analyticsEventVariantAggregateId","variantId"]},{"id":"analytics-report-section-assignment-aggregates","title":"Assignment aggregates","source":"assignmentSummary.aggregateCounts","rowCount":2,"stableIds":["experimentAssignmentId","experimentId","variantId"]},{"id":"analytics-report-section-funnel-conversion","title":"Funnel conversion rows","source":"funnelConversionReport.rows","rowCount":3,"stableIds":["analyticsFunnelConversionReportId","metricId","funnelStepMetricId"]},{"id":"analytics-report-section-experiment-decisions","title":"Experiment decision evidence","source":"experimentDecisions.latestDecisions and experimentDecisions.counts","rowCount":0,"stableIds":["analyticsExperimentDecisionId","analyticsExperimentDecisionKind"]}],"totalSectionRows":12,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates."}],"cohortComparisonFixtures":[{"id":"analytics-cohort-fixture-source-newsletter","title":"Newsletter source cohort","dimensions":["utmSource","utmMedium","utmCampaign"],"filters":{"utmSource":"newsletter"},"metricIds":["metric-funnel-opt-in-rate","metric-checkout-start-rate","metric-gross-revenue","metric-upsell-accept-rate"],"caveat":"Fixture cohort only; live cohort claims require enough captured samples and privacy review."},{"id":"analytics-cohort-fixture-direct-or-referral","title":"Direct or referral cohort","dimensions":["referrerHost","utmSource"],"filters":{"referrerHost":"present_or_direct","utmSource":"missing_or_direct"},"metricIds":["metric-funnel-opt-in-rate","metric-checkout-start-rate","metric-gross-revenue","metric-upsell-accept-rate"],"caveat":"Fixture cohort only; it must not be treated as statistically meaningful proof."}],"ownerReviewedCohortComparisons":[{"id":"analytics-cohort-comparison-newsletter-vs-direct-referral","status":"owner-reviewed-cohort-comparisons-ready","issue":265,"parentIssue":18,"title":"Newsletter versus direct/referral cohort comparison","sourceDataRoute":"/analytics/source-data","selectedTimeWindowKey":"all","dashboardId":"analytics-dashboard-indie-launch","cohortFixtureIds":["analytics-cohort-fixture-source-newsletter","analytics-cohort-fixture-direct-or-referral"],"evidenceSectionIds":["analytics-report-section-source-attribution","analytics-report-section-assignment-aggregates","analytics-report-section-funnel-conversion","analytics-report-section-experiment-decisions"],"ownerReview":{"id":"analytics-cohort-review-indie-launch-source-mix","status":"reviewed_with_caveats","mode":"fixture_owner_review","issue":265,"reviewedAt":"2026-05-21","caveatAcknowledged":true,"requiredBeforeAgentClaims":true},"cohorts":[{"id":"analytics-cohort-fixture-source-newsletter","title":"Newsletter source cohort","filters":{"utmSource":"newsletter"},"metricIds":["metric-funnel-opt-in-rate","metric-checkout-start-rate","metric-gross-revenue","metric-upsell-accept-rate"],"sourceAggregateRowCount":0,"eventCount":0,"assignmentCount":12,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates."},{"id":"analytics-cohort-fixture-direct-or-referral","title":"Direct or referral cohort","filters":{"referrerHost":"present_or_direct","utmSource":"missing_or_direct"},"metricIds":["metric-funnel-opt-in-rate","metric-checkout-start-rate","metric-gross-revenue","metric-upsell-accept-rate"],"sourceAggregateRowCount":3,"eventCount":3,"assignmentCount":12,"conversionSampleSize":837,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates."}],"comparisonSummary":{"direction":"insufficient_sample_for_winner","winnerSelected":false,"statisticallyMeaningful":false,"publicClaimAllowed":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"agentInstruction":"Use this as owner-reviewed directional cohort evidence with sample-size caveats only; do not name a winner or make revenue claims."},"redaction":{"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"rawVisitorKeysIncluded":false,"rawReferrersIncluded":false,"rawQueryStringsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"privateNotesIncluded":false}}],"ownerReviewedAlertThresholds":[{"id":"analytics-alert-threshold-review-indie-launch-funnel-health","status":"owner-reviewed-alert-thresholds-ready","issue":267,"parentIssue":18,"title":"Indie launch funnel health threshold review","sourceDataRoute":"/analytics/source-data","selectedTimeWindowKey":"all","dashboardId":"analytics-dashboard-indie-launch","alertThresholds":[{"id":"analytics-alert-threshold-sales-to-checkout-rate","metricId":"funnel-metric-sales-to-checkout","label":"Sales page to checkout minimum review threshold","operator":"below","thresholdValue":0.1,"observedValue":0.119,"observedSampleSize":694,"action":"owner_review_only","caveat":"Thresholds flag review evidence only; sparse captured samples do not prove a launch problem."},{"id":"analytics-alert-threshold-waitlist-opt-in-rate","metricId":"funnel-metric-waitlist-opt-in","label":"Warm list opt-in minimum review threshold","operator":"below","thresholdValue":0.12,"observedValue":0.286,"observedSampleSize":18,"action":"owner_review_only","caveat":"Thresholds must stay paired with the source rows, selected window, and sample-size caveat."}],"anomalyReview":{"id":"analytics-anomaly-review-indie-launch-funnel-health","status":"reviewed_with_caveats","mode":"fixture_owner_review","issue":267,"reviewedAt":"2026-05-21","caveatAcknowledged":true,"requiredBeforeAgentAction":true,"anomalyCount":0,"sampleSize":712,"sampleSizeCaveat":"Captured test events are enough to verify reporting semantics, not enough to claim statistical significance. Agents must include sample-size caveats before summarizing conversion rates."},"automationBoundary":{"notificationSent":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"agentActionAllowed":false,"ownerReviewRequired":true,"agentInstruction":"Use threshold and anomaly evidence as owner-reviewed review prompts only; do not alert customers, route traffic, name winners, or make revenue claims."},"redaction":{"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"rawVisitorKeysIncluded":false,"rawReferrersIncluded":false,"rawQueryStringsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"privateNotesIncluded":false}}],"ownerReviewedNotificationReadiness":[{"id":"analytics-notification-readiness-indie-launch-threshold-review","status":"owner-reviewed-notification-readiness-ready","issue":269,"parentIssue":18,"title":"Indie launch analytics threshold notification readiness","sourceDataRoute":"/analytics/source-data","selectedTimeWindowKey":"all","dashboardId":"analytics-dashboard-indie-launch","dependsOnAlertReviewIds":["analytics-alert-threshold-review-indie-launch-funnel-health","analytics-anomaly-review-indie-launch-funnel-health"],"dependsOnThresholdIds":["analytics-alert-threshold-sales-to-checkout-rate","analytics-alert-threshold-waitlist-opt-in-rate"],"deliveryChannels":[{"id":"analytics-notification-channel-owner-email-digest","label":"Future owner email digest","audience":"owner_only","channel":"email","readiness":"contract_ready_only","enabled":false,"deliveryConfigured":false,"customerVisible":false,"caveat":"This records the future owner-notification contract only; it does not send email."},{"id":"analytics-notification-channel-admin-inbox","label":"Future admin inbox notice","audience":"owner_only","channel":"admin","readiness":"contract_ready_only","enabled":false,"deliveryConfigured":false,"customerVisible":false,"caveat":"This records the future owner admin-notification contract only; it does not create inbox rows."}],"readinessGates":{"ownerReviewRequired":true,"ownerReviewStatus":"reviewed_with_caveats","sampleSizeCaveatAcknowledged":true,"selectedWindowRequired":true,"alertThresholdsReviewed":2,"customerNotificationEnabled":false,"queueProducerEnabled":false,"emailSendEnabled":false,"retryPolicyEnabled":false,"directAgentSendAllowed":false},"deliveryBoundary":{"notificationSent":false,"persistedNotificationRows":false,"customerAlertEnabled":false,"ownerEmailSendEnabled":false,"adminInboxWriteEnabled":false,"trafficRoutingEnabled":false,"automatedWinnerEnabled":false,"revenueClaimEnabled":false,"agentInstruction":"Use notification readiness as a future owner-delivery contract only; do not send alerts, write inbox rows, route traffic, name winners, or make revenue claims."},"redaction":{"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"rawVisitorKeysIncluded":false,"rawReferrersIncluded":false,"rawQueryStringsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"privateNotesIncluded":false,"notificationRecipientIncluded":false,"emailBodyIncluded":false}}],"redaction":{"rawEventRowsIncluded":false,"rawAssignmentRowsIncluded":false,"rawVisitorKeysIncluded":false,"rawReferrersIncluded":false,"rawQueryStringsIncluded":false,"contactAnalyticsIncluded":false,"actorEmailIncluded":false,"privateNotesIncluded":false},"excludedFields":["rawAnalyticsEventRows","rawExperimentAssignmentRows","rawVisitorKeys","rawReferrerUrls","rawQueryStrings","contactIds","actorEmail","privateNotes","ipHash","userAgentHash","requestHash"],"writeBoundary":"Issue #263 exposes aggregate report export metadata only. Issue #265 adds owner-reviewed cohort comparison evidence with sample-size caveats. Issue #267 adds owner-reviewed alert threshold and anomaly-review evidence. Issue #269 adds owner-reviewed notification delivery readiness evidence. Issue #271 adds owner-confirmed notification inbox record evidence. Issue #284 adds owner-confirmed notification dispatch preflight evidence. These contracts do not create downloadable raw analytics exports, expose raw event rows, expose raw assignment rows, expose visitor keys, expose contact analytics, expose raw referrers or query strings, send alerts, send owner email, call providers, dispatch queues, route traffic, choose automated winners, or make revenue claims."}}