Explicit event IDs keep their identity. An X-Event-Id header or a payload id whose id:value key would exceed the 255 character ledger column is stored as id-hash: followed by the sha256 of that key, so two IDs sharing their first 252 characters no longer collapse onto one processed_events row and silently suppress the second event's deliveries. A retry still matches an entry written under the old truncated key when the full ID recorded on the original event is the same one, so events accepted by 5.0.0 keep deduplicating rather than being delivered twice.
The webhook and dry run routes are plain functions again and run in the threadpool, and a raw_body dependency reads the body and refuses an oversized one on the declared Content-Length first and then on the chunks as they arrive, so one slow insert no longer serializes every other request on the event loop. A bulk replay selects failed deliveries with FOR UPDATE OF deliveries SKIP LOCKED and re-reads each status inside the transaction, so two administrators replaying at the same time cannot open two replacement series for the same failure. The worker takes its retry decision from RetryPolicy.should_retry and passes the budget recorded on the delivery row, so editing the configuration cannot change the budget of a delivery already queued; pending_count, check_database and DestinationRegistry.for_source are gone, and the first could never have run.
The build under test is traceable from the image to the numbers: /healthz reports the GIT_SHA baked in at image build time, the smoke suite posts it with its totals, smoke_runs stores it under Alembic 0005 and /ops/overview returns it. The demo summary names the build, the machine and the target, and its ingest rate is measured over request time with the deliberate pause excluded. The smoke suite gained --read-only, which skips the three checks that rotate a secret or create replays and reports them as SKIP, and --receiver-header NAME=VALUE, which reaches a receiver fake behind a routing rule the way the Terraform trial exposes it; make smoke-remote refuses the localhost default. The ECS worker task maps the metrics port it documents, 9100, and make install and the CI jobs install from the lockfile.
The browser console under web/ gained a nonce store, so a byte identical replay of a request that was deduplicated answers 409 as the service does, non-ASCII escaped in its JSON the way the service escapes it before signing, and a vectors.json fixture written by tests/test_web_vectors.py that pins the signature, the content hash and the canonical envelope for the port to assert against. The self check no longer runs on a production page load: it is gated and reports its tally in the footer. Contrast tokens, a type floor, live regions, one status to tone map, a stacked diagram under 640 px and a section menu close the accessibility and phone gaps, and a web CI job with make web-ci runs the typecheck, the bundle and the 25 self check assertions while web/README.md states what the port does and does not cover.
The two concurrency claims in ARCHITECTURE.md are tests rather than prose: the same event posted from two threads leaves one ledger row, one delivery set, one 202 and one 200, and two workers draining one queue deliver every row once. 166 tests at this commit.