feat: v5 - #227
Open
patrickleet wants to merge 69 commits into
Open
Conversation
Add explicit aggregate_snapshot projection authoring, atomic source fences in memory/SQLite/PostgreSQL, tombstone-aware late confirmation, and adapter regression proofs. BREAKING CHANGE: ProjectionRecordMetadata gains source_snapshot. Existing unversioned read-model rows require an explicit rebuild before opting into source-snapshot semantics. Apply framework migration 0005 before using SQL-backed stores.
Preserve acknowledgement progress and broker tuning when an application changes its registered commands or events. Historical catch-up remains explicit. Refs incidents/nats-durable-subscription-drift
Publish the active process cohort after readiness, retain launch identity across client-only generations, and fence replaced, preparing, and retired instances. Derive GraphQL generation metadata from verified membership and classify pre-dispatch reload rejections without accepting invalid receipts. BREAKING CHANGE: supervised development requires matching CLI and runtime versions with process-instance membership. Upgrade both and restart distributed dev. Tests: 11 lifecycle process tests, 4 native gate tests, 344 JavaScript tests; live application commands across two UI-only activations with unchanged API PID. Public lifecycle e2e proof extended but not executed in this change.
Update migration-five integration expectations and distinguish eventual projection completion from fresh SSR visibility. Preserve command receipts, process membership, and durable browser proof. Refs: incidents/distributed-pr226-ci
Run the live adapter cases explicitly and retain lifecycle diagnostics. Document the eventual projection barrier used by the browser reload proof. Refs: incidents/distributed-pr226-ci
(cherry picked from commit 97003f3)
(cherry picked from commit d843e82)
(cherry picked from commit d864fa9)
(cherry picked from commit 475f1ba)
(cherry picked from commit ef8b4ff)
Documents the APIs carried from #217 and checks missing and unowned surface commands.
|
Important Review skippedToo many files! This PR contains 494 files, which is 394 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (5)
📒 Files selected for processing (494)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Register authority before loading, preserve command lifecycle and dispatch order, and expose generated preload support. Implements [[tasks/client-artifact-loading-2]]
Move command outcomes, shape metadata, validation, and consistency contracts into distributed::command. Adapt GraphQL and legacy derives at the boundary while retaining canonical artifacts and fingerprints. Implements [[tasks/core-command-contract-1]]
Use command-owned derives, metadata, and outcomes throughout library tests, e2e-ui domains, fixtures, and generated services. Remove legacy GraphQL traits, conversions, derives, and re-exports. BREAKING CHANGE: command authors must use distributed::command and the CommandInput/CommandOutput derives. GraphqlInput/GraphqlOutput and GraphQL command exports are removed. Implements [[tasks/core-command-contract-1]]
Keep the full rust-src diagnostic used in CI; document the regeneration prerequisite. All 35 compile-fail fixtures pass with rust-src installed. Refs: tasks/distributed-v5-pr-stack
WIP foundation for cell-local SQLite persistence. Native SQLx repositories use the shared event append, snapshot, tail-load, and fenced command-ledger operations. Add a synchronous Worker SQL execution boundary without switching aggregate cells to it yet. Validation: 787 SQLite-feature library tests; 21 repository conformance tests; 4 snapshot hardening tests; SQLite/PostgreSQL compilation; celld Worker wasm compilation. Pending: cell repository wiring, row-based outbox drain, migration and live restart/crash coverage.
Capture bounded projection inputs with the terminal command receipt in the domain commit. Return them from CellDispatchResult and stop the Worker response path scanning retained outbox messages. BREAKING CHANGE: successful cell command replay payloads now contain the result and projection inputs. Old stored successful receipts require explicit handling; no legacy replay fallback is provided. The public HTTP envelope is unchanged. Regression: restart with events and receipts but no outbox history; replay the same result and nonempty evidence without new events or publication. All 787 SQLite-feature library tests pass; celld Worker wasm check passes. Physical outbox deletion and SQL cell activation remain pending.
Keep event history and command replay receipts separate from delivery work. Preserve lease/attempt fencing and verify actual bus delivery in runtime tests. Implements [[tasks/distributed-cell-sqlite-persistence-1]]
Implements [[tasks/distributed-flat-event-preview-1]]
Implements [[tasks/distributed-boxed-readmodel-relations]]
Implements [[tasks/distributed-dev-startup-watch]]
Keep opaque JSON caps and complete artifact bounds intact. Cover generated large surfaces and nested validation. Implements [[tasks/distributed-structured-surface-budget]].
Implements [[tasks/distributed-preview-preset-inventory]]
Add retry-stable canonical derived occurrences without synthetic aggregate transitions. Reject derived facts in source-snapshot projections and document at-least-once publication.
Use one direct-join mapping for SQL and memory snapshots while retaining primary-key record scopes. Add committed snapshot regressions and exercise SvelteKit loader hydration in Chromium.
Implements [[tasks/distributed-unique-key-relations]]
Implements [[tasks/application-gateway-3]] in [[tasks/application-gateway-1]].
Implements [[tasks/application-gateway-4]] in [[tasks/application-gateway-1]].
Preserve selected-operation capabilities, causal receipts and live proofs across native HTTP and WebSocket gateways. Add portable operation parsing and real transport parity coverage. Refs: [[tasks/application-gateway-5]] [[tasks/application-gateway-1]]
Bind explicit client context to origin authority, preserve pending effects and confirmed floors, and opt selected stale-tolerant queries into replicas. Verify physical standby pause, primary outage, backend mismatch and replay recovery with an isolated PostgreSQL fixture. Refs: [[tasks/application-gateway-6]] [[tasks/application-gateway-1]]
Implements [[tasks/application-gateway-9]].
Implements tasks/application-gateway-11: opt-in mounts and public-origin browser parity.
Corrects integrated CI evidence for tasks/application-gateway-7; dedicated runner still executes the real PostgreSQL proof.
Implements tasks/application-gateway-12 with real native/workerd 100-query and 100-live comparisons, isolation and recovery costs.
Evidence for tasks/application-gateway-12 at clean eaa2d5d; actual body/frame bytes and measured latency.
Completes task11 configuration audit: host CI uses8791 and local GitOps public UI Service targets the gateway with an explicit internal UI origin.
Completes task6 CI correction: explicit invocation, owned primary data retained across restart, readiness and fresh primary read verified before subsequent fixtures.
Resolves tasks/application-gateway-ci-1: preserve remote command dispatch and internal relay ownership, update public origins, and verify actual dev browser flows.
Resolves tasks/application-gateway-ci-1. Optimistic paint remains asserted; reload now follows the command receipt and projection rather than cancelling a pending request.
Resolves tasks/application-gateway-ci-1. Let the coherent lifecycle own navigation after gateway restarts, retain prepared state through activation or rollback, and exercise the complete browser reload fixture through public ingress.
Use fresh independent same-scope evidence to restart query transports without clearing the replica or applying an older auth snapshot. Supply route authority during auth refresh and cover token rotation, stale seeds, and rejected authority. Implements [[tasks/gateway-demo-auth-refresh-1]]; resolves [[incidents/gateway-demo-confirmation-flash]].
Share the real session refresh handler with an optional page-data loader so native and Worker auth fixtures build without generated GraphQL clients. Keep browser continuity and stale-snapshot assertions without reading a discarded Chromium response body. Implements [[tasks/gateway-auth-refresh-ci-1]]; resolves [[incidents/pr-228-auth-refresh-ci]].
Keep protocol preparation errors visible within the engine and update the byte-exact unique-key artifact with its emitted protocol hash. No assertions or authorization checks are relaxed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.