Skip to content

feat(kernel): complete P02b-3 durable subscriber delivery - #31

Merged
cemililik merged 126 commits into
mainfrom
development
Oct 15, 2026
Merged

cemililik merged 126 commits into
mainfrom
development

Conversation

@cemililik

@cemililik cemililik commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Complete P02b-3 durable subscription acceptance and independent delivery: retained envelopes, immutable shared inbox, six-attempt retries/recovery, fenced completion and atomic terminal MUST audit.

  • Activate two independent Customization defaults (card@1 content type, plain@1 taxonomy), preserve existing concept history, and hand Seeder to the same initializer commands with strict semantic verification.

  • Enforce actual handler/manifest/DI and typed lifecycle boundaries, extend audit/aggregate censuses, and reconcile documentation without rewriting Accepted ADR history.

  • Address the first verified external review: restore immediate failed-snapshot recovery, distinguish uncertain COMMIT from lease expiry, close tenant-announcement/status-parser test gaps, and correct current delivery status.

  • Close the second external review: prevent terminal-audit starvation in both workers with bounded class rotation, accept explicitly compatible alias duplicates without rewriting retained envelopes, and strengthen completion/project censuses, diagnostics and regression proofs.

Approach

Publication commits every required subscription envelope without constructing business handlers. A separate app-role executor claims the shared inbox before construction and owns business state, produced outbox, MUST audit and fenced ledger completion in one transaction. An attempt-local gate arbitrates cancellation against commit admission; actual tasks and cleanup retain scope/capacity until finished. Acceptance and execution use separate local partition lanes.

This implements the approved six-step package on development; each step has an implementation commit and two fresh independent review rounds. Publication remains at-least-once. There is no cross-process ordering or exactly-once transport claim.

Tests

  • Final correction-head CI run 38755136480: all seven required checks passed on source 0fa7dc869d5b0f704a2d05313226d3d1b0f98510. Strict protection and the required context set are unchanged; PR is OPEN/CLEAN.
  • Downloaded exact-head TRX artifacts: 3,745 backend cases passed, zero failures/skips — 1,864 unit + 312 architecture + 4 contract + 1,565 integration (176 Docker-free + 1,389 Testcontainers). All 10 newly added PostgreSQL regression cases explicitly passed. Expected empty Docker-filter Unit/Architecture/Contract files are covered by their nonempty backend-job runs.
  • Exact-head frontend logs: 1,616 passed (1,556 web + 60 SDK), zero skips/todos; typecheck/lint/build/native-ingress and cleanup job succeeded.
  • Demo artifact: nine URLs × three runs, 27 JSON + 27 HTML reports; maximum normalized gzip JS 106,554 bytes, CLS 0, automated accessibility 100. Proof 649,646 ms within 12 minutes; all batches HTTP 200 and owned cleanup checks true. Nine timing advisories remain warnings, not production p95 claims. Source/checkout/build/invocation/configuration identities and report digests match (checkout a131ca6b59f750c69d4465b46a0bd1a5717dcd0a).
  • Local Release build: zero warnings/errors. Full unit 1,864, architecture 312, contract 4, Docker-free integration 176 passed, zero failed/skipped. Focused integration: 31 acceptance + 23 subscriber worker + 19 producer worker + 113 store/audit/migration/composition; three composition cases overlap the Docker-free suite.
  • Fixed subscriber priority and literal-type-equality mutants each fail their new real PostgreSQL regression; restored sources rebuild and both regressions pass. The producer backlog regression also fails against its unchanged strict-priority baseline and passes after the adjacent correction.
  • Full format/diff and seven ADR parser checks pass. Document checks cover 2,822 links / 631 fragments and preserve historical receipts and Accepted ADR bodies. Catalogue: 219 methods / 202 Implemented rules (121 architecture, 81 elsewhere).
  • Both fresh independent review rounds for the delivery/alias bundle and the additional producer correction passed without remaining findings. Dispositions and executed evidence are recorded in the second external-review follow-up.

Risk

  • Tenant/org isolation and the four-role privilege boundary change under Accepted ADR-0046. Retained delivery envelopes are org-scoped with RLS; immutable inbox identity is tenant/subscription/event. The confined scheduling role cannot read copied payload/causal fields or write business/inbox completion.
  • The existing fifth audit seam now also validates actual subscriber terminal witnesses; wrong tenant/org/event/subscription/transaction controls roll back terminal state and audit together.
  • Static guards cover enumerated typed capabilities, not arbitrary reflection, raw SQL transaction control or control-flow dominance; real PostgreSQL tests prove ordering/atomicity.
  • Operator replay/permissions, privileged erasure execution, broker adapters, mapped readiness and retention purge retain their named later owners. P02b-4–8 are not delivered by this PR.

Migration / Rollback

Apply 20261013083903_add_event_delivery_and_inbox through the normal platform migration chain before starting the new workers. It creates the two shared tables, isolation/immutability controls, matching indexes and column grants; existing producer rows remain available for durable acceptance. No new database role or secret is required.

Down drops the new ledger/inbox and their retained delivery evidence. Use it only on disposable schemas; keep durable tables and data when rolling an application deployment back. Completed inbox rows are never reset by internal replay.

Related

Prepared with Codex.

Record PR #27's merged head and independently verified merge-run evidence
so current status surfaces agree with the delivered public renderer.
Keep dated delivery history intact and name P02d-7's remaining decisions,
demo, Lighthouse and phase-exit obligations without starting that packet.
Record the approved lifecycle, genericity scope and serial browser/audit
measurement boundaries before implementation. Register the four proof
obligations without claiming passing runtime evidence or activating CI.

ADR: 0056
Give local and isolated CI runs one owned lifecycle with explicit stack
selection, migration readiness and seed-derived public content checks.
Preserve local data and refuse foreign listeners or uncertain cleanup.
The browser audit driver remains in its approved subsequent step.

ADR: 0056
Keep selected database configuration consistent before stack actions and make
owned teardown survive terminal hangup. Preserve split UTF-8 output within a
byte bound and keep public marketing outside private-content exclusions.

ADR: 0056
Close the second P02d-7 Step 1 review findings before the
ADR-0056 browser and audit work.
Close the focused ADR-0056 lifecycle fix review with a live
profile-boundary mutation and its accepted-hop control.
Project typed SeedData into exact backend/frontend identity controls,
ban production Seeder references and preserve the schema-revision
behavioral companion for the ADR-0056 exit foundations.
Keep the exact-literal guard effective across compiled C# branches, UTF-8
constants, emitted JSX values and runtime helpers behind test exclusions.
The first independent review found and reproduced each escape.
Keep lexical configurations independent and resolve static module URLs so
source exclusions cannot hide a demo-specific runtime helper.

ADR: 0056
Preserve the bounded import census when resolver options change the
location of a relative runtime helper.

ADR: 0056
Measure the actual seeded product navigation with bounded, repeatable
browser and audit evidence while preserving real admission and cleanup.
Keep passing local feasibility distinct from pending CI enforcement.

ADR: 0056
Close independently reproduced false-green paths in completion logging,
Lighthouse timeout admission and visible product identity. Exercise real
DOM mutations and the pinned soft-timeout behavior in the shared proof.

ADR: 0056
Keep damaged or deferred API refusals out of successful demo receipts,
and require the bounded seeded visibility controls to run against the
actual browser document.

ADR: 0056
Share the existing five-second cleanup reserve between process stopping
and output drain, and record the independent causal fix verification.

ADR: 0056
Record the complete round-two runtime proof and scoped source identity
so the CI exit step starts from verified evidence.

ADR: 0056
Run the shared seeded browser and audit lifecycle in real PR checks,
keep public artifacts bounded, and pair each exit obligation with its
named proof. Add third-locale and organization-branding pipeline/HTTP
cases and carry remaining lifecycle work to its explicit phase owner.
Live protection activation waits for the first successful real job.

ADR: 0056
Module: Tenancy, Education
Pair host, locale and organization HTTP outcomes with raw translation
reads on each request connection. Reserve cleanup inside the CI budget
and prepare sandbox-enabled managed Chromium on hosted Linux only.
Reconcile mutable exit and review guidance with delivered contracts.

ADR: 0036, 0040, 0052, 0056
Module: Education, Tenancy
Record independent runtime and corpus approval, focused proof results
and verified navigation fixes. Keep real Linux CI, full receipts and
seventh-check activation explicitly pending before phase exit.

ADR: 0056
Tie completion to the passing real PR reports and bounded required-check
activation so acceptance and local feasibility cannot stand in for exit
evidence. Preserve earlier delivery history and maintainer merge review.

ADR: 0056
Remove two stale pending suffixes after independently confirming both
named cases Passed in the downloaded real PR integration receipt.

ADR: 0056
Keep the identity census aligned with the producer's nullable curriculum
contract while preserving every tenant and present-curriculum assertion.
The required demo inventory remains enforced separately.

ADR: 0018, 0056
Keep installed tool metadata and receipt versions in one path while
retaining independent pinned drift checks. Distinguish reviewed-head
CI receipts from activation history and acceptance-time ADR wording.

ADR: 0056
Record both fresh independent approvals and local proof results while
keeping later-head seven-job CI acceptance with the PR check rollup.

ADR: 0056
Keep the documented seed launcher argument-free. Attempt owned Compose
teardown even when process cleanup or output observation fails, and retain
private state until every cleanup stage succeeds. Preserve private error
causes internally while keeping foreground diagnostics fixed.

ADR: 0056
Resolve supported local aliases and workspace exports transitively, refuse
unclassified roots/formats and missing imports, and distinguish actual
dependency/output roots from nested authored source. Cross-check backend
sources against evaluated Compile inputs and refuse unmodeled build shapes.

ADR: 0018, 0035
Include competing alias and JS/TS targets conservatively, and select
workspace exports only from owned manifests. Refuse implicit build hooks
and project references outside the evaluated production project set.

ADR: 0018, 0056
Refuse inherited alias maps even when a same-basename source file
would previously shadow the actual JSON configuration.

ADR: 0018, 0056
Exercise independent network overlap and per-route timing aggregation
in fast dirty/clean controls. Count completed navigations and restrict
uploads to named public artifacts. Record verified review dispositions
and align current P7 guidance without rewriting historical ADRs.

ADR: 0018, 0056
Record all three steps, verified fixes, both independent review rounds
and completed local validation. Require final seven-job PR CI without
attributing historical evidence to the new source head.

ADR: 0018, 0056
Persist validated immutable envelope copies atomically without constructing
business handlers. Claim shared inbox identities only on the announced
application transaction, before the later delivery owner executes work.

Prove duplicate waits, conflicting subsets, tenant scope and uncertain
acceptance COMMIT using PostgreSQL. Preserve producer worker cancellation
and cleanup proofs with a disclosed acceptance wrapper and direct control.

ADR: 0046, 0057, 0040, 0003
Keep retained-envelope execution on one prepared application transaction,
so inbox, business state, produced events, audit and delivery completion
commit together. Fence ownership after saved work and arbitrate cancellation
against physical commit without losing acknowledged durability to cleanup.

ADR: 0046, 0040, 0057, 0044
Record the independent first-round reviews and completed broader regression,
and attribute the two new owner-census proofs to their delivery step.

ADR: 0046
Record fresh second-round runtime and evidence verification before advancing
to independent subscriber scheduling under the accepted package.

ADR: 0046
Keep subscriber retries, terminal audit and targeted replay independent
from producer and sibling outcomes. Retain cancellation callbacks and
scope cleanup through actual completion, and observe bounded progress
without adding payload access to the confined scheduler.

ADR: 0040, 0044, 0046
A retained handler or cleanup must not consume the producer's timeout
and capacity through a shared partition queue. Keep consumer ordering
local while allowing durable acceptance to finish independently; prove
both held-handler and acknowledged-cleanup scenarios with a killed mutant.

ADR: 0046
Record the verified acceptance-lane correction and independent second
round reruns before advancing to useful consumers and Seeder handoff.

ADR: 0046
Make both durable tenant-created subscriptions useful without replacing
any touched customization concept. Share transaction-owned semantic
locks with ordinary registration, and let Seeder retain verified warm
built-in identities while authored identities remain exact.

ADR: 0046, 0057
Module: Customization, Tenancy, Audit
Keep mutable audit ownership and review guidance consistent with the
Active production subscriptions, while preserving dated prior receipts.
Record the first independent Step 5 review and verified corrections.

ADR: 0046, 0057
Record both completed independent Step 5 reviews and distinguish the
Pending policy fixtures from the Active production bindings they protect.

ADR: 0046, 0057
Keep both real default subscribers inside the shared inbox and common
completion owner, and require concrete handler audit coverage in the
actual roots. Exercise missing and bypassed typed capabilities with
planted controls and prove persisted tracing from HTTP and delivery.
Reconcile current guidance while preserving accepted decision history.

ADR: 0046, 0057, 0044, 0038
Module: Customization, Tenancy
Bind provisioning to its exact type, follow inherited implementations
and generic DI forwarding, and enumerate EF transaction completion so
future typed bypasses cannot appear covered by the common-owner guards.
Keep independent dirty and clean controls and align current guidance.

ADR: 0046, 0042, 0057
Module: Customization, Tenancy
Record fresh second-round evidence and the verified current-carrier
corrections so the completed six-step implementation has one truthful
handoff. Preserve historical receipts and leave PR-head CI and merge
with their actual owners; background jobs remain the next packet.

ADR: 0046, 0057
@sourcery-ai

sourcery-ai Bot commented Oct 13, 2026

Copy link
Copy Markdown

Sorry @cemililik, your pull request is larger than the review limit of 150,000 diff characters

@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 163 files, which is 13 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to Team to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 7b323101-2464-4de8-95b6-71fb2ed91c6e
📥 Commits

Reviewing files that changed from the base of the PR and between 6a27777 and 0fa7dc8.

📒 Files selected for processing: 163
  • .claude/skills/add-integration-event/SKILL.md
  • .claude/skills/add-integration-test/SKILL.md
  • .claude/skills/code-review/SKILL.md
  • .claude/skills/seed-tenant/SKILL.md
  • .claude/skills/standards-check/SKILL.md
  • .claude/skills/wire-dapr-pubsub/SKILL.md
  • CLAUDE.md
  • README.md
  • backend/src/LearnStack.Api/Composition/CrossCuttingFoundationExtensions.cs
  • backend/src/LearnStack.Api/Composition/OutboxCompositionExtensions.cs
  • backend/src/LearnStack.Api/Composition/PersistenceCompositionExtensions.cs
  • backend/src/LearnStack.Api/Messaging/DeliveryAttempt.cs
  • backend/src/LearnStack.Api/Messaging/DeliveryHealthCheck.cs
  • backend/src/LearnStack.Api/Messaging/DeliveryObservation.cs
  • backend/src/LearnStack.Api/Messaging/DeliveryProcessor.cs
  • backend/src/LearnStack.Api/Messaging/OutboxProcessor.cs
  • backend/src/LearnStack.Application/Audit/AuditExecutionCoordinator.cs
  • backend/src/LearnStack.Application/Messaging/DeliveryCommitGate.cs
  • backend/src/LearnStack.Application/Messaging/DeliveryCompletionParticipant.cs
  • backend/src/LearnStack.Application/Messaging/ProducerExecution.cs
  • backend/src/LearnStack.Application/Persistence/TransactionExecutionCoordinator.cs
  • backend/src/LearnStack.Infrastructure.Audit/AuditConfigService.cs
  • backend/src/LearnStack.Infrastructure.Audit/Capture/AuditChangeTrackerInterceptor.cs
  • backend/src/LearnStack.Infrastructure.Audit/PostgresAuditStore.cs
  • backend/src/LearnStack.Infrastructure/Messaging/DeliveryDispatchOptions.cs
  • backend/src/LearnStack.Infrastructure/Messaging/DeliveryDispatchStore.cs
  • backend/src/LearnStack.Infrastructure/Messaging/DeliveryExecutionControl.cs
  • backend/src/LearnStack.Infrastructure/Messaging/DeliveryExecutionModels.cs
  • backend/src/LearnStack.Infrastructure/Messaging/DeliveryExecutor.cs
  • backend/src/LearnStack.Infrastructure/Messaging/InProcessEventBus.cs
  • backend/src/LearnStack.Infrastructure/Messaging/OutboxEnvelopeReader.cs
  • backend/src/LearnStack.Infrastructure/Messaging/OutboxEventRegistry.cs
  • backend/src/LearnStack.Infrastructure/Messaging/PostgresDeliveryAcceptance.cs
  • backend/src/LearnStack.Infrastructure/Messaging/PostgresDeliveryCompletion.cs
  • backend/src/LearnStack.Infrastructure/Messaging/PostgresInboxGuard.cs
  • backend/src/LearnStack.Infrastructure/Messaging/StoredEventEnvelope.cs
  • backend/src/LearnStack.Infrastructure/Persistence/Migrations/20261013083903_add_event_delivery_and_inbox.Designer.cs
  • backend/src/LearnStack.Infrastructure/Persistence/Migrations/20261013083903_add_event_delivery_and_inbox.cs
  • backend/src/LearnStack.Infrastructure/Persistence/NpgsqlUnitOfWork.cs
  • backend/src/LearnStack.Infrastructure/Persistence/PlatformDbContext.cs
  • backend/src/LearnStack.Infrastructure/Properties/AssemblyInfo.cs
  • backend/src/LearnStack.SharedKernel/Audit/AuditDraftComposer.cs
  • backend/src/LearnStack.SharedKernel/Audit/AuditIntent.cs
  • backend/src/LearnStack.SharedKernel/Audit/EventTerminalTransition.cs
  • backend/src/LearnStack.SharedKernel/Audit/IAuditStore.cs
  • backend/src/LearnStack.SharedKernel/Messaging/IEventBus.cs
  • backend/src/LearnStack.SharedKernel/Messaging/IInboxGuard.cs
  • backend/src/LearnStack.SharedKernel/Messaging/IIntegrationEventHandler.cs
  • backend/src/LearnStack.SharedKernel/Tenancy/EventTenantContext.cs
  • backend/src/LearnStack.Tools.Seeder/DemoIdentities.cs
  • backend/src/LearnStack.Tools.Seeder/SeedData.cs
  • backend/src/LearnStack.Tools.Seeder/SeedRunner.cs
  • backend/src/LearnStack.Tools.Seeder/SeedVerification.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application.Contracts/Customization/BuiltInCustomizations.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application.Contracts/Customization/InitializeTenantDefaultsCommands.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/Abstractions/CustomizationStores.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/Audit/CustomizationAuditCatalogSource.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/Customization/InitializeTenantContentTypeDefaultCommandHandler.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/Customization/InitializeTenantLevelTaxonomyDefaultCommandHandler.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/Customization/RegisterTenantContentTypeCommandHandler.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/Customization/RegisterTenantLevelTaxonomyCommandHandler.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/IntegrationEvents/InitializeContentTypeDefaultHandler.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/IntegrationEvents/InitializeTaxonomyDefaultHandler.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Application/LearnStack.Modules.Customization.Application.csproj
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Infrastructure/Persistence/CustomizationConceptHistory.cs
  • backend/src/Modules/Customization/LearnStack.Modules.Customization.Infrastructure/Persistence/CustomizationWriteStores.cs
  • backend/src/Modules/Tenancy/LearnStack.Modules.Tenancy.Application/Audit/TenancyAuditCatalogSource.cs
  • backend/tests/LearnStack.Tests.Architecture/AggregateWriteTests.cs
  • backend/tests/LearnStack.Tests.Architecture/AuditCatalogDiscovery.cs
  • backend/tests/LearnStack.Tests.Architecture/AuditCoverageIntegrationTests.cs
  • backend/tests/LearnStack.Tests.Architecture/AuditCoverageTests.cs
  • backend/tests/LearnStack.Tests.Architecture/CorpusConsistencyTests.cs
  • backend/tests/LearnStack.Tests.Architecture/DeliveryDispatchBoundaryTests.cs
  • backend/tests/LearnStack.Tests.Architecture/DeliveryOwnerBoundaryTests.cs
  • backend/tests/LearnStack.Tests.Architecture/DomainGenericityTests.DemoIdentities.cs
  • backend/tests/LearnStack.Tests.Architecture/IntegrationDeliveryBoundaryTests.cs
  • backend/tests/LearnStack.Tests.Architecture/IntegrationDeliveryLifecycleBoundaryTests.cs
  • backend/tests/LearnStack.Tests.Architecture/OutboxDispatchBoundaryTests.cs
  • backend/tests/LearnStack.Tests.Architecture/OutboxDispatchConventionTests.cs
  • backend/tests/LearnStack.Tests.Architecture/OutboxDispatchObservationTests.cs
  • backend/tests/LearnStack.Tests.Architecture/PlatformAdminScopeConventionTests.cs
  • backend/tests/LearnStack.Tests.Architecture/ProductionAssemblies.cs
  • backend/tests/LearnStack.Tests.Architecture/ProductionAssembliesTests.cs
  • backend/tests/LearnStack.Tests.Architecture/TenantContextConstructionTests.cs
  • backend/tests/LearnStack.Tests.Contract/DevelopmentWebApplicationFactory.cs
  • backend/tests/LearnStack.Tests.Integration/BackendDiscovery.cs
  • backend/tests/LearnStack.Tests.Integration/CompositionRootCatalogueTests.cs
  • backend/tests/LearnStack.Tests.Integration/ConstructionOnlyApiFactory.cs
  • backend/tests/LearnStack.Tests.Integration/ConstructionOnlyApiFactoryTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/AuditPipelineTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/AuditStoreTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/AuditWorkflowTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/CustomizationDefaultDeliveryTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/CustomizationDefaultInitializationTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/CustomizationProjectionCompositionTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/CustomizationPublicationConcurrencyTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/DeliveryDispatchStoreTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/DeliveryExecutionTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/DeliveryProcessorTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/DomainEventProductionTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/DurableEventAcceptanceTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/EventDeliveryMigrationTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/InboxGuardTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/MigrationChains.cs
  • backend/tests/LearnStack.Tests.Integration/Database/MigrationRollbackTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/OutboxDispatchMigrationTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/OutboxDispatchStoreTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/OutboxProcessorTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/OutboxProducerHttpTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/OutboxProducerTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/PlatformAdminScopeTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/PublicReadTransactionTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/SchemaFixture.cs
  • backend/tests/LearnStack.Tests.Integration/Database/SeederTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/TenancySchemaTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/TenantAssertionAuditTests.cs
  • backend/tests/LearnStack.Tests.Integration/Database/UnitOfWorkCommitCleanupTests.cs
  • backend/tests/LearnStack.Tests.Unit/Api/Composition/OutboxProductionCompositionTests.cs
  • backend/tests/LearnStack.Tests.Unit/Api/Messaging/DeliveryAttemptTests.cs
  • backend/tests/LearnStack.Tests.Unit/Api/Messaging/DeliveryObservationTests.cs
  • backend/tests/LearnStack.Tests.Unit/Api/Tenancy/AuditingTenantAssertionRecorderTests.cs
  • backend/tests/LearnStack.Tests.Unit/Application/Messaging/DeliveryCommitGateTests.cs
  • backend/tests/LearnStack.Tests.Unit/Infrastructure/Audit/AuditChangeTrackerInterceptorTests.cs
  • backend/tests/LearnStack.Tests.Unit/Infrastructure/Audit/DeliveryAuditDiagnosticsTests.cs
  • backend/tests/LearnStack.Tests.Unit/Infrastructure/Messaging/InProcessEventBusTests.cs
  • backend/tests/LearnStack.Tests.Unit/Infrastructure/Messaging/OutboxEventRegistryTests.cs
  • backend/tests/LearnStack.Tests.Unit/Modules/Customization/CustomizationCommandTests.cs
  • backend/tests/LearnStack.Tests.Unit/SharedKernel/Audit/DeliveryAuditMetadataTests.cs
  • docs/architecture/03-module-boundaries.md
  • docs/architecture/04-technical-architecture.md
  • docs/architecture/09-tenant-isolation.md
  • docs/architecture/10-cross-module-contracts.md
  • docs/architecture/15-event-and-outbox.md
  • docs/architecture/29-dapr-integration.md
  • docs/architecture/31-audit-subsystem.md
  • docs/architecture/32-tenant-customization-model.md
  • docs/decisions/0023-strongly-typed-id-source-generator.md
  • docs/decisions/0038-cross-cutting-port-and-event-contracts.md
  • docs/decisions/0044-audit-write-path.md
  • docs/decisions/0046-durable-event-delivery-and-recovery.md
  • docs/decisions/0057-transactional-event-production-and-completion.md
  • docs/decisions/README.md
  • docs/glossary.md
  • docs/modules/audit/README.md
  • docs/modules/audit/audit.md
  • docs/modules/customization/README.md
  • docs/modules/customization/audit.md
  • docs/modules/customization/permissions.md
  • docs/modules/tenancy/README.md
  • docs/modules/tenancy/audit.md
  • docs/modules/tenancy/permissions.md
  • docs/roadmap/README.md
  • docs/roadmap/phase-02b-events-auth.md
  • docs/standards/02-backend-coding.md
  • docs/standards/05-database.md
  • docs/standards/09-error-handling.md
  • docs/standards/10-observability.md
  • docs/standards/11-security.md
  • docs/standards/18-audit-coverage.md
  • docs/standards/20-infrastructure-stack.md
  • docs/standards/21-architecture-tests-catalogue.md
  • docs/standards/README.md
  • frontend/apps/web/src/test/fixtures/demo-identities.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Give the completed packet one live PR and exact-head CI owner while
preserving scoped local receipts and the next background-job decision
gate. Maintainer review and merge remain pending.

ADR: 0046, 0057
Keep failed queue observations recoverable and distinguish uncertain
completion from lease expiry. Pin actual tenant-announcement callers,
status parsing and production index candidates without relaxing the
accepted overrun or causal-metadata contracts. Reconcile live delivery
status and record verified review dispositions and scoped validation.

ADR: 0040, 0046, 0044
Preserve the classified direct one-root consumer path while banning
module writes to inbox and delivery machinery. Remove a stale setter
count and record independent first-round verification and corrections.

ADR: 0040, 0044, 0046, 0057
Normalize qualified implementation statuses so two shipped integration
rules participate in catalogue checks. Pin qualified discovery in the
existing parser control and record independent second-round verification.

ADR: 0003, 0046
Rotate acquisition classes so terminal audit outages cannot starve
unrelated deliveries. Compare retained type identities through the
explicit registry family while preserving every immutable envelope.
Close constructor/project census gaps and align diagnostics and receipts.

ADR: 0046, 0057
Record three independent reviews and their executed checks without
substituting earlier CI evidence for the correction head.

ADR: 0046, 0057
The subscriber review exposed the same priority starvation in producer
dispatch. Rotate claim classes while retaining one claim, lease fencing,
terminal audit atomicity and the existing publication ownership boundary.
Prove real durable acceptance and recovery under sustained audit denial.

ADR: 0046
Record both independent review rounds for the adjacent producer fix
and keep final-head CI ownership explicit without reusing old receipts.

ADR: 0046, 0057
@cemililik

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review all

@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

@cemililik I will trigger a full review of all changes in this PR.

⚠️ Action not completed

Review skipped: 163 files exceed the limit of 150.

@cemililik
cemililik merged commit ed60157 into main Oct 15, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant