What's new
Updated677 threads have changed since your last visit
0576 — CLI --output json updated 2026-09-12
0760 — Client package lives at the module root updated 2026-09-12
0761 — Repository cleanup preserves records and repairs site links updated 2026-09-12
0762 — Client imports use the declared package name updated 2026-09-12
0763 — Header wordmark links home updated 2026-09-12
0764 — Avatar images match their display sizes updated 2026-09-12
0765 — Accept all memes use WebP images updated 2026-09-12
0766 — CLI commands mirror client verbs updated 2026-09-12
0767 — The multistream ladder is retired for unpaced ceiling holds updated 2026-09-12
0769 — The profile fades while idle and its personal text grows updated 2026-09-12
0770 — CLI resource JSON and binding scope follow the client updated 2026-09-12
0771 — Scheduler concurrency help follows produce validation updated 2026-09-12
0772 — Profile scrolling slows as the personal text grows updated 2026-09-12
0773 — Profile scroll slowdown is eased slightly updated 2026-09-12
0774 — CLI alert JSON and maintenance durations follow the read contract updated 2026-09-12
0775 — The profile effect begins after three idle seconds updated 2026-09-12
0776 — The profile text container expands to viewport width updated 2026-09-12
0777 — CLI migration names follow the client updated 2026-09-12
0778 — The profile effect begins after four idle seconds updated 2026-09-12
0779 — The idle fleet's cost is the manager tick, and its losing claims convoy on the shared system rows updated 2026-09-12
0780 — The group manager keeps its stream's upkeep and drops the system rows updated 2026-09-12
0781 — A declined claim backs off in the pool, and live instances keep their poll rate updated 2026-09-12
0782 — sqlstreams.io is the documentation origin updated 2026-09-12
0783 — Heartbeats are jittered like ticks updated 2026-09-12
0784 — Pages project is recreated as sqlstreams updated 2026-09-12
Alerts updated 2026-09-12
API reference updated 2026-09-12
Architecture updated 2026-09-12
Client updated 2026-09-12
compaction_read_cost [SQL0095] updated 2026-09-12
Consumer updated 2026-09-12
Handler Outcomes updated 2026-09-12
Maintenance updated 2026-09-12
Manager updated 2026-09-12
Metrics updated 2026-09-12
metrics_collector_progress [SQL0101] updated 2026-09-12
Quickstart updated 2026-09-12
Routing updated 2026-09-12
Scheduler updated 2026-09-12
Schedules updated 2026-09-12
sqlstreams.stream.state.partitions [SQL0098] updated 2026-09-12
sqlstreams.stream.workers.unclaimed [SQL0099] updated 2026-09-12
Stream updated 2026-09-12
Sustained throughput benchmark updated 2026-09-12
System updated 2026-09-12
The Shape of the API updated 2026-09-12
Upgrades & Migrations updated 2026-09-12
worker_liveness [SQL0096] updated 2026-09-12
0599 — the cookie notice is the site's privacy note, on its own surface updated 2026-09-11
0730 — Tests are pure, database, or e2e, and a database test runs against Postgres itself updated 2026-09-11
0731 — vulkantest is one published fixture package with a schema per test updated 2026-09-11
0745 — Maximum throughput uses the reliability lab with explicit workload and environment settings updated 2026-09-11
0747 — Throughput scenarios can disable message recording while retaining aggregate measurements updated 2026-09-11
0748 — Published throughput uses three fixed-duration runs and retains every outcome updated 2026-09-11
0749 — Benchmark runner lives at the .bench root updated 2026-09-11
0751 — Results follow maintained scenario families updated 2026-09-11
0752 — Proposed site pages exist only for features a user consumes updated 2026-09-11
0753 — Manager coordinates existing benchmark roles updated 2026-09-11
0754 — Benchmark runs share configuration and output updated 2026-09-11
0755 — Benchmark commands and runs use bench updated 2026-09-11
0756 — Accept all wears the dark pattern updated 2026-09-11
0757 — Retain per-stream tables instead of LIST/RANGE subpartitioning updated 2026-09-11
0758 — The debug buffer stays always-on at its measured cost updated 2026-09-11
0759 — Partition creation runs in an explicit transaction updated 2026-09-11
Roadmap updated 2026-09-11
Why SQLStreams updated 2026-09-11
0711 — The reliability lab is the benchmark harness, and a benchmark is a scenario updated 2026-09-10
0740 — Scheduled key vacuum is opt-in updated 2026-09-10
0741 — Vacuum settings follow stream declarations updated 2026-09-10
0742 — Maintenance settings and operations are separate updated 2026-09-10
0743 — Maintenance completion tracking and startup delay are deferred updated 2026-09-10
0744 — Controllers keep dependencies and registration owns declarations updated 2026-09-10
0746 — Concurrent lab handlers use independent record files updated 2026-09-10
worker is suspended [SQL0107] updated 2026-09-10
worker not found [SQL0106] updated 2026-09-10
0720 — End-to-end tests and runnable examples have separate hidden roots updated 2026-09-09
0724 — The metric root is singular updated 2026-09-09
0725 — SQLStreams is the project name updated 2026-09-09
0726 — SQLStreams cutover recreates disposable databases and keeps a temporary docs origin updated 2026-09-09
0727 — SQLStreams technical identity follows the product name updated 2026-09-09
0728 — Rename proposal review stays off the live website updated 2026-09-09
0729 — SQLStreams wordmark ends with an amber semicolon updated 2026-09-09
0732 — Diagnostic codes use the SQL prefix updated 2026-09-09
0733 — Claim observations use xid updated 2026-09-09
0734 — Janitor probes oldest row before sweeping updated 2026-09-09
0735 — Idempotency expiry uses timestamp order updated 2026-09-09
0736 — Integration tests live in a nested .tests module over testcontainers updated 2026-09-09
0738 — Partial message sweeps have a bounded grace period updated 2026-09-09
0739 — Partial sweep grace applies to every batch updated 2026-09-09
a worker instance is still live [SQL0010] updated 2026-09-09
abandoned-routine events dropped [SQL0052] updated 2026-09-09
alert condition holds [SQL0063] updated 2026-09-09
commit confirmation was lost [SQL0019] updated 2026-09-09
compaction head not found [SQL0066] updated 2026-09-09
Consumer Group Config updated 2026-09-09
consumer group not found [SQL0014] updated 2026-09-09
consumer group still has a live consumer [SQL0015] updated 2026-09-09
consumer group still has delivery rows [SQL0016] updated 2026-09-09
consumer stopped [SQL0041] updated 2026-09-09
Consumer Timeouts updated 2026-09-09
Consumer Tuning updated 2026-09-09
could not create partition ahead [SQL0033] updated 2026-09-09
could not create the covering partition [SQL0018] updated 2026-09-09
could not finish the schedule declaration [SQL0025] updated 2026-09-09
could not finish the stream declaration [SQL0021] updated 2026-09-09
could not finish the worker declaration [SQL0024] updated 2026-09-09
could not refresh group config [SQL0060] updated 2026-09-09
could not take a lock needed by the migration step [SQL0053] updated 2026-09-09
crash-loop kill backstop fired [SQL0031] updated 2026-09-09
Dead Letters & Recovery updated 2026-09-09
delivery cannot succeed [SQL0055] updated 2026-09-09
delivery dispatch exceeded the duration threshold [SQL0039] updated 2026-09-09
destroy is disabled [SQL0008] updated 2026-09-09
Error codes updated 2026-09-09
Errors and events updated 2026-09-09
exception dead-lettered [SQL0030] updated 2026-09-09
Fan-out, Retention & Replay updated 2026-09-09
instance is already consuming [SQL0001] updated 2026-09-09
lease lost to another consumer [SQL0003] updated 2026-09-09
lease reclaimed from expired worker [SQL0026] updated 2026-09-09
lifecycle context can never be cancelled [SQL0002] updated 2026-09-09
manager row suspended [SQL0035] updated 2026-09-09
measurements cannot be exported [SQL0104] updated 2026-09-09
message dead-lettered [SQL0029] updated 2026-09-09
Message key updated 2026-09-09
Message Lifecycle updated 2026-09-09
Message options updated 2026-09-09
messages dead-lettered [SQL0028] updated 2026-09-09
no partition covers the next message id [SQL0057] updated 2026-09-09
Ordered Delivery per Key updated 2026-09-09
Ordering & Concurrency updated 2026-09-09
partition creation cannot keep up with the id sequence [SQL0056] updated 2026-09-09
partition_count [SQL0094] updated 2026-09-09
payload cannot be encoded as JSON [SQL0097] updated 2026-09-09
Postgres pool updated 2026-09-09
produce exceeded the duration threshold [SQL0038] updated 2026-09-09
Producer updated 2026-09-09
queued message has insufficient lease time [SQL0105] updated 2026-09-09
Queues, Logs & the Fusion updated 2026-09-09
range quarantined after max reclaims [SQL0027] updated 2026-09-09
Replaying History updated 2026-09-09
schedule config replaced [SQL0062] updated 2026-09-09
schedule not found [SQL0013] updated 2026-09-09
schedule target stream keeps no success rows [SQL0058] updated 2026-09-09
schema version is newer than this build understands [SQL0023] updated 2026-09-09
schema version is older than this build requires [SQL0022] updated 2026-09-09
Schema Versions updated 2026-09-09
Side Effects & Retries updated 2026-09-09
SQLStreams vs. Job Queues updated 2026-09-09
SQLStreams vs. Kafka updated 2026-09-09
SQLStreams vs. RabbitMQ & SQS updated 2026-09-09
sqlstreams.alert.check.published_alerts [SQL0077] updated 2026-09-09
sqlstreams.alert.check.resolved_alerts [SQL0078] updated 2026-09-09
sqlstreams.alert.check.streams_evaluated [SQL0075] updated 2026-09-09
sqlstreams.alert.check.streams_failed [SQL0076] updated 2026-09-09
sqlstreams.alert.state.active_alerts [SQL0073] updated 2026-09-09
sqlstreams.alert.state.resolved_alerts [SQL0074] updated 2026-09-09
sqlstreams.consumer.abandoned_routines.outstanding [SQL0091] updated 2026-09-09
sqlstreams.consumer.abandoned_routines.self_clear_latency_avg [SQL0093] updated 2026-09-09
sqlstreams.consumer.abandoned_routines.total [SQL0092] updated 2026-09-09
sqlstreams.consumer.cursor.backlog [SQL0083] updated 2026-09-09
sqlstreams.consumer.cursor.claimed [SQL0081] updated 2026-09-09
sqlstreams.consumer.cursor.committed [SQL0082] updated 2026-09-09
sqlstreams.consumer.cursor.head [SQL0080] updated 2026-09-09
sqlstreams.consumer.cursor.inflight [SQL0084] updated 2026-09-09
sqlstreams.consumer.exceptions.dead [SQL0088] updated 2026-09-09
sqlstreams.consumer.exceptions.deferred [SQL0087] updated 2026-09-09
sqlstreams.consumer.exceptions.inflight [SQL0086] updated 2026-09-09
sqlstreams.consumer.exceptions.oldest_unresolved_age [SQL0089] updated 2026-09-09
sqlstreams.consumer.exceptions.ready [SQL0085] updated 2026-09-09
sqlstreams.consumer.open_leases [SQL0090] updated 2026-09-09
sqlstreams.consumer.session.abandoned [SQL0050] updated 2026-09-09
sqlstreams.consumer.session.claimed [SQL0042] updated 2026-09-09
sqlstreams.consumer.session.dead [SQL0047] updated 2026-09-09
sqlstreams.consumer.session.deferred [SQL0046] updated 2026-09-09
sqlstreams.consumer.session.lease_lost [SQL0051] updated 2026-09-09
sqlstreams.consumer.session.quarantined [SQL0049] updated 2026-09-09
sqlstreams.consumer.session.ready [SQL0045] updated 2026-09-09
sqlstreams.consumer.session.reclaimed [SQL0048] updated 2026-09-09
sqlstreams.consumer.session.success [SQL0043] updated 2026-09-09
sqlstreams.consumer.session.superseded [SQL0044] updated 2026-09-09
sqlstreams.metrics.collector.completed_timestamp [SQL0100] updated 2026-09-09
sqlstreams.otel.measurements.rejected [SQL0103] updated 2026-09-09
sqlstreams.otel.source.read_success [SQL0102] updated 2026-09-09
sqlstreams.schedule.state.oldest_due_age [SQL0071] updated 2026-09-09
sqlstreams.schedule.state.overdue [SQL0070] updated 2026-09-09
sqlstreams.schedule.state.suspended [SQL0072] updated 2026-09-09
sqlstreams.stream.state.compacted [SQL0079] updated 2026-09-09
sqlstreams.worker.state.failing_workers [SQL0069] updated 2026-09-09
sqlstreams.worker.state.oldest_unclaimed_age [SQL0068] updated 2026-09-09
sqlstreams.worker.state.unclaimed_workers [SQL0067] updated 2026-09-09
stored message options outside this consumer's bounds [SQL0032] updated 2026-09-09
stream config replaced [SQL0061] updated 2026-09-09
stream name already taken [SQL0007] updated 2026-09-09
stream name uses the reserved __system. prefix [SQL0009] updated 2026-09-09
stream not found [SQL0005] updated 2026-09-09
stream partition size does not match the existing stream [SQL0004] updated 2026-09-09
stream partitions remain after draining [SQL0020] updated 2026-09-09
stream still holds messages [SQL0006] updated 2026-09-09
streams are still registered [SQL0011] updated 2026-09-09
system manager stopped [SQL0065] updated 2026-09-09
system not registered [SQL0017] updated 2026-09-09
Table Design updated 2026-09-09
the connecting role cannot create the schema [SQL0064] updated 2026-09-09
The Message Key updated 2026-09-09
Transactional Produce updated 2026-09-09
Where a New Group Starts updated 2026-09-09
worker config replaced [SQL0059] updated 2026-09-09
worker instance lost [SQL0034] updated 2026-09-09
worker instance row expired or was removed [SQL0012] updated 2026-09-09
worker tick backoff curve exhausted [SQL0036] updated 2026-09-09
worker tick exceeded its poll rate [SQL0040] updated 2026-09-09
0001 — Claims use SELECT ... FOR UPDATE SKIP LOCKED updated 2026-09-08
0002 — The message DELETE commits in the same transaction as the claim updated 2026-09-08
0003 — The row lock is held for the entire processing duration updated 2026-09-08
0004 — Batch limit pinned to 1 updated 2026-09-08
0005 — Graceful shutdown lets the in-flight batch finish under context.WithoutCancel updated 2026-09-08
0006 — The table is named message_log, not jobs updated 2026-09-08
0021 — The queue lives in the same Postgres database as the business data updated 2026-09-08
0022 — AppendMessage threads its transaction into a producer callback updated 2026-09-08
0023 — ProducerFunc takes a concrete pgx.Tx updated 2026-09-08
0041 — The claim is row data (status + locked_at), not a held DB lock updated 2026-09-08
0042 — Failures return to ready with a backoff on can_run_after; max attempts goes dead updated 2026-09-08
0043 — The dead-letter queue is WHERE status='dead', not a separate table updated 2026-09-08
0044 — Lease reclamation is a claim-predicate branch, not a reaper daemon updated 2026-09-08
0045 — The stuck window is the work timeout plus a 5s buffer updated 2026-09-08
0046 — The consumer owns the operational knobs; the datastore takes only connection params updated 2026-09-08
0047 — Delivery is at-least-once; consumerFunc must be idempotent updated 2026-09-08
0061 — The prefetcher blocks on WaitForRoom; the buffer never drops a claimed row updated 2026-09-08
0062 — The in-memory buffer stays shallow: depth is a lease-safety constraint, not a throughput lever updated 2026-09-08
0063 — Claim per batch, record success or failure per message updated 2026-09-08
0064 — Throughput is min(supply(batch), ack_capacity(workers)) updated 2026-09-08
0066 — MaxConns is set explicitly on the datastore pool updated 2026-09-08
0067 — Scaling levers are applied in a fixed order updated 2026-09-08
0081 — Measure synchronous_commit only; skip the batch-ack measurement updated 2026-09-08
0082 — synchronous_commit=off is safe for this queue: it adds no new failure mode updated 2026-09-08
0083 — The crash lab proves off's cost is duplicate reruns, not loss, by SIGKILL with a widened WAL writer window updated 2026-09-08
0084 — The on/off sweep is read by shape with best-of-3/max, and conc=1 is the number to trust updated 2026-09-08
0085 — synchronous_commit=local is not measured updated 2026-09-08
0086 — The knob is set via ALTER DATABASE, and reset to on after the sweep updated 2026-09-08
0101 — Consuming reads an append-only log through a per-group cursor instead of mutating message rows updated 2026-09-08
0102 — The cursor claim must `ORDER BY id`; an unordered claim silently loses messages updated 2026-09-08
0103 — The cursor advances after each message, not once per batch updated 2026-09-08
0104 — `MoveCursor` stays a bare `SET position = $1` with no monotonic guard updated 2026-09-08
0105 — `FOR UPDATE` on the cursor serializes concurrent claims only, not the process-then-advance window updated 2026-09-08
0107 — Claimed rows are drained with `CollectRows` before the claim transaction commits updated 2026-09-08
0121 — A newly registered consumer group starts at position 0 and replays retained history updated 2026-09-08
0122 — `Process` is a continuous poll loop, not a single-shot pass updated 2026-09-08
0123 — The codebase keeps `message_log`/`cursor`/`position` naming rather than renaming to events/consumers updated 2026-09-08
0124 — Fan-out does not need a monotonic cursor guard; `MoveCursor` stays `SET position = $1` updated 2026-09-08
0125 — A `consumerFunc` error stops the whole poll loop; per-group retry and DLQ are deferred updated 2026-09-08
0126 — The poll loop waits one interval before its first claim updated 2026-09-08
0141 — Two cursor frontiers (`claimed`, `committed`) carry the happy path with no per-message row updated 2026-09-08
0142 — `committed` advances after each message, not once per batch at `high` updated 2026-09-08
0143 — `MoveCursor` gains the monotonic guard `WHERE committed < $1` updated 2026-09-08
0144 — The claim reads the pre-update `claimed` via an `old_values` CTE, not PostgreSQL 18's `old` alias updated 2026-09-08
0145 — `claimed` advances at claim time, before processing, with no lease updated 2026-09-08
0162 — AdvanceWaterline is two statements, not one UPDATE updated 2026-09-08
0163 — A lease covers (low, high], matching the claim read's convention updated 2026-09-08
0164 — Reclaim drains before fresh claim, one expired lease per poll updated 2026-09-08
0165 — The cap on repeated reclaims was deferred until the exception path existed updated 2026-09-08
0181 — A deliveries row exists only while a message needs individual attention; success is no row updated 2026-09-08
0182 — Commit frees the lease before recording exception rows updated 2026-09-08
0184 — ClaimExceptions dead-letters crash-looping rows before claiming updated 2026-09-08
0185 — DrainExceptions runs as its own poll loop, separate from CursorClaim updated 2026-09-08
0187 — No ON CONFLICT on the exception INSERT updated 2026-09-08
0188 — Resolution verbs are RecordExceptionSuccess/RecordExceptionFailure, not Ack/Nack updated 2026-09-08
0189 — String building in SQL uses concat(), not || updated 2026-09-08
0190 — Reclaim is one atomic UPDATE, not DELETE plus INSERT updated 2026-09-08
0192 — ExceptionClaim payload unmarshal failure is fatal, not retried updated 2026-09-08
0201 — Producers publish a routing_key attribute; groups opt in via binding rows; no binding means receive everything updated 2026-09-08
0202 — Routing is one shared predicate evaluated at read time in both consume paths updated 2026-09-08
0203 — Binding patterns are true wildcards, not NATS-style depth-precise matchers updated 2026-09-08
0204 — BindTopic and ClearBindings are admin calls, not Datastore interface methods updated 2026-09-08
0205 — Reads name their columns explicitly; SELECT * is out updated 2026-09-08
0206 — Matching is on routing_key only; no header or content matcher updated 2026-09-08
0207 — binding.kind, header_match, and their CHECK constraint were dropped updated 2026-09-08
0208 — FanOut keeps its full-table rescan; a per-group high-water mark is deferred updated 2026-09-08
0221 — message_log is partitioned by RANGE (id), not created_at updated 2026-09-08
0222 — Retention is a hybrid: whole-partition drop plus a bounded sweep of survivors updated 2026-09-08
0223 — Retention respects a MIN(committed) drop floor unless explicitly opted out updated 2026-09-08
0224 — Partition labs swap message_log to a lab-scale width and restore the schema on exit updated 2026-09-08
0225 — Register creates cursor rows only for CURSOR-type groups updated 2026-09-08
0226 — Retention shipped scoped to the one shared log, per-topic scoping deferred updated 2026-09-08
0227 — Partition automation is the Janitor loop in Go, not pg_partman updated 2026-09-08
0241 — Each topic is its own physical table with its own sequence, partitions, and janitor updated 2026-09-08
0242 — routing_key/bindings stay a coarser concept above topics, not folded into them updated 2026-09-08
0243 — topic_id joins the keys of cursor/deliveries/binding; lease gets the column only updated 2026-09-08
0244 — Topic identity is a per-call datastore parameter, not a field on the datastore updated 2026-09-08
0245 — Topics are registered explicitly and never auto-created on use updated 2026-09-08
0247 — No deliveries.status index until real evidence demands one updated 2026-09-08
0248 — Two routing_key slices sharing one topic share that topic's drop floor, by design updated 2026-09-08
0261 — Compacted topics resolve latest-per-key at claim time, not by background deletion updated 2026-09-08
0262 — latest_key trades a second synchronous write per keyed publish for an O(1) latest-per-key read updated 2026-09-08
0263 — The latest-per-key predicate is unbounded, not bounded by the claim's own high updated 2026-09-08
0264 — The compaction_key index is partial, covering only keyed rows updated 2026-09-08
0265 — Optional produce inputs travel in a ProduceOptions struct, not positional strings updated 2026-09-08
0266 — Key deletion is expressed in the payload; there is no schema-level tombstone updated 2026-09-08
0267 — The latest_key upsert guard compares id values, not commit order updated 2026-09-08
0268 — latest_key is one shared table across all topics, not per-topic updated 2026-09-08
0269 — Retention stays compaction-unaware; janitors garbage-collect dangling latest_key rows updated 2026-09-08
0270 — A latest_key backfill was built, verified live, then reverted updated 2026-09-08
0272 — The compaction_key partial index was dropped once latest_key left it without a consumer updated 2026-09-08
0273 — The synchronous latest_key write cost was measured and accepted, hot-key serialization included updated 2026-09-08
0281 — Every consumerFunc failure shape lands in the existing per-message retry/backoff/dead-letter path updated 2026-09-08
0282 — Datastore blips are retried via pkg/retry with explicit retryable/permanent classification updated 2026-09-08
0283 — An idempotency_key claim table prevents double-publish on ambiguous commit acks updated 2026-09-08
0284 — The idempotency check's measured cost was cut with a batched CTE and a per-call opt-out updated 2026-09-08
0285 — Commit() classification lives inline at each call site; Wrap passes pre-classified errors through updated 2026-09-08
0286 — Graceful shutdown narrows the interrupted lease instead of freeing it updated 2026-09-08
0287 — One shared callSafely wraps consumerFunc for all three claim paths updated 2026-09-08
0288 — The hard per-message timeout is a detached-goroutine race, with abandonment accepted and tracked updated 2026-09-08
0289 — WorkTimeoutGrace defaults to 100ms, sized from a measured scheduler latency updated 2026-09-08
0290 — Timeout errors record the message id in last_error, never the work payload updated 2026-09-08
0291 — Panic recovery's defer lives inside the spawned goroutine and sends into done updated 2026-09-08
0292 — AbandonedRoutines.Remove runs after recover() within the same defer updated 2026-09-08
0293 — The abandoned-goroutine registry is a mutex-guarded map keyed by (MessageId, Attempt), kept as plain in-process state updated 2026-09-08
0294 — The retry.Wrap success-after-retries bug was fixed with a plain early-return, not a classification rewrite updated 2026-09-08
0301 — The waterline rollup stays lazy; no cursor update at commit time updated 2026-09-08
0303 — The metrics snapshot is the single source for both the debug readout and the OTel instruments updated 2026-09-08
0304 — Logging goes through a caller-supplied interface with an io.Writer-backed default updated 2026-09-08
0305 — One queue-state query is the only derivation of the DB-truth health numbers updated 2026-09-08
0321 — Multi-topic atomic publish exposes the transaction via a closure, not a declarative PublishAll updated 2026-09-08
0322 — Partition self-heal in ProduceInTx is per-target via SAVEPOINT, with no opt-out updated 2026-09-08
0323 — InTransaction does not retry updated 2026-09-08
0324 — delivery_log_<topic_id> records only failed attempts; a row's absence is the success signal updated 2026-09-08
0325 — deliveries went per-topic, and the six remaining shared tables were singularized, before the audit table shipped updated 2026-09-08
0327 — Commit's per-exception writes are batched; RecordException stays one message at a time updated 2026-09-08
0328 — The Datastore interfaces' fate was deferred to a standing cleanup phase, not decided mid-audit updated 2026-09-08
0341 — Schema lives as versioned Go code; golang-migrate and its .sql files are deleted updated 2026-09-08
0342 — A migration is a sparse struct of func fields, run against a Querier that cannot manage transactions updated 2026-09-08
0343 — One append-only schema_log table; current version is the latest-by-id success row, not MAX(schema_version) updated 2026-09-08
0344 — System scope and topic scope version independently updated 2026-09-08
0345 — One advisory lock id, two hold-times: session-scoped for a migrate run, xact-scoped for RegisterSystem updated 2026-09-08
0347 — Missing or mismatched schema surfaces as teaching errors, not raw Postgres errors updated 2026-09-08
0349 — The alter UPDATE is one static COALESCE($n, col) statement, not a dynamically built SET list updated 2026-09-08
0350 — PartitionSize is immutable by omission from AlterConfig; dynamic partition bounds deferred updated 2026-09-08
0351 — renameTopic pins the id first and updates WHERE id = $1, never WHERE name = $1 updated 2026-09-08
0353 — delivery_log_<id> is always created; DisableDeliveryLog gates only the writes updated 2026-09-08
0354 — The CLI is a nested Go module, resolved locally through a gitignored go.work updated 2026-09-08
0355 — CLI flags map onto the sparse config structs via cmd.Flags().Changed updated 2026-09-08
0356 — No git tag marks this body of work updated 2026-09-08
0361 — MessageProducer.Register(ctx) captures the instance lifetime and gates Produce updated 2026-09-08
0362 — NewMessageProducer takes the raw PostgresDatastore and builds its datastores internally updated 2026-09-08
0363 — Register validates the topic handle fail-fast: by-name fetch plus whole-struct compare updated 2026-09-08
0364 — A non-cancellable lifecycle ctx is an error, with an explicit DisableGracefulShutdown opt-out updated 2026-09-08
0365 — Registration is once per instance, and lifecycle sentinels live in pkg/errors updated 2026-09-08
0366 — Consumer session loops keep their ctx and run under a merged ctx; wind-down returns nil updated 2026-09-08
0367 — Janitor splits into a gated public entrypoint and a private loop updated 2026-09-08
0368 — The consumer shutdown hook is deleted; the app that constructs the datastore closes it updated 2026-09-08
0369 — The payload generic is named Message, cascading Work* type names to Message* updated 2026-09-08
0370 — Topic administration moves to an admin object holding the datastore updated 2026-09-08
0371 — The table-name functions move to internal/topic updated 2026-09-08
0372 — Janitor and partition tuning fields are topic-scoped and persisted on the topic row updated 2026-09-08
0373 — QueueTimeout is renamed QueueMargin; WorkTimeout and AckMargin keep their names updated 2026-09-08
0374 — Datastore retry policy becomes retry.Policy, carried per config, not a global updated 2026-09-08
0375 — Exception retry backoff reuses retry.Policy instead of a separate config surface updated 2026-09-08
0376 — Always-on idempotency: make idempotency_key the enforced identity of message_log updated 2026-09-08
0377 — Configs validate at construction via an exported WithDefaults-then-Validate pair updated 2026-09-08
0378 — PartitionSafetyBuffer is deleted; the janitor always keeps the next partition created updated 2026-09-08
0379 — Multi-partition create-ahead (a PartitionsAhead knob) is rejected; PartitionSize is the lever updated 2026-09-08
0380 — The datastore interfaces are deleted in favor of the concrete types updated 2026-09-08
0382 — Partition batches use plain DROP TABLE IF EXISTS with no DETACH first updated 2026-09-08
0385 — The abandoned-routines tracking map stays unbounded; no config knob updated 2026-09-08
0386 — The abandoned-routine Add/Remove race is fixed structurally with a reaper goroutine updated 2026-09-08
0387 — A missing cursor row errors loudly, detected by restructuring the claim query instead of adding an existence check updated 2026-09-08
0388 — The cursor-claim query locks the cursor row with FOR UPDATE in the old_values read updated 2026-09-08
0389 — FanOut tracks a per-group high-water mark on the cursor table; LIFECYCLE groups register cursor rows and pin retention updated 2026-09-08
0390 — FanOut delivers eagerly past the proven head; only the mark waits for proof updated 2026-09-08
0391 — FanOut's scan bound is a scalar subquery, not a join on old_values updated 2026-09-08
0392 — cursor claimed advances via GREATEST so a group running both paths cannot regress its frontier updated 2026-09-08
0393 — Binding changes are forward-only; history the FanOut mark has passed stays as routed updated 2026-09-08
0394 — Cursor claims stop at a proven head via a snapshot fence, not the visible MAX(id) updated 2026-09-08
0395 — The pending (head, xmax) pair is stored unconditionally on every poll updated 2026-09-08
0396 — An idle poll short-circuits after the read-only snapshot statement updated 2026-09-08
0397 — No index on deliveries status for v1; reopen only on measured evidence, and prefer a partial index then updated 2026-09-08
0398 — No DELETE CASCADEs and no triggers; integrity and logging stay in visible DML updated 2026-09-08
0400 — Connection-death SQLSTATEs are retryable; resource-exhaustion, corruption, and misconfiguration codes are not updated 2026-09-08
0401 — A message schema change is a new physical topic under the same name, never an in-place migration updated 2026-09-08
0402 — Migrating a compacted topic to a new version is a user-space bridge consumer, not a library verb updated 2026-09-08
0403 — Compaction's winner rule generalized to a signed caller-supplied rank compared before id updated 2026-09-08
0404 — Message row metadata reaches consumer functions via consumer.MetaFromContext, not a signature change updated 2026-09-08
0405 — The topic catalog is keyed (name, schema_version), and constructors require SchemaVersion positionally updated 2026-09-08
0406 — FamilyHealth never reports a compacted topic safe to retire updated 2026-09-08
0407 — The bridge derives its IdempotencyKey deterministically from the source message id updated 2026-09-08
0408 — The topic catalog column is named schema_version, accepting the overlap with schema_log.schema_version updated 2026-09-08
0409 — There is no unversioned GetTopic(name); every topic read is version-addressed updated 2026-09-08
0410 — Topic display identity stays two structured fields, not a concatenated name@vN string updated 2026-09-08
0411 — FamilyHealth and VersionHealth live in pkg/admin, not as a pkg/metrics composition updated 2026-09-08
0421 — One generic worker/worker_instance pair replaces per-feature maintenance/duty plumbing updated 2026-09-08
0422 — Exclusivity is claim-per-instance, not claim-per-tick updated 2026-09-08
0423 — The manager respawns only on ErrInstanceLost and propagates every other error updated 2026-09-08
0424 — The consumer inversion: consumption loops are worker rows the manager spawns updated 2026-09-08
0425 — One system manager row; the daemon is the same manager at deployment scope updated 2026-09-08
0426 — Producer split into pure factory plus Register; the stored lifecycleCtx dropped updated 2026-09-08
0427 — Snapshot verdicts are classify functions returning named enums updated 2026-09-08
0428 — EnsureNextPartition deleted without a replacement home updated 2026-09-08
0429 — Duplicate beside pkg/maintain, don't retrofit it updated 2026-09-08
0430 — NoInstanceTarget (-1) for self-claimed consumer loops updated 2026-09-08
0431 — The umbrella package is systemmanager, not Maintainer updated 2026-09-08
0441 — Every domain gets the same three-layer package shape updated 2026-09-08
0442 — All input validation lives at the controller; datastores trust their inputs updated 2026-09-08
0443 — pkg/consumer is a door, not a vocabulary layer updated 2026-09-08
0444 — Consumption-loop packages sit under the door with their own narrow configs updated 2026-09-08
0445 — MessageMeta lives in the one new leaf, pkg/consumer/message updated 2026-09-08
0446 — ConsumerDatastore's phantom type parameter deleted updated 2026-09-08
0447 — uuid.UUID above the datastore, pgtype.UUID below; ErrLeaseLost declared where detected updated 2026-09-08
0448 — No shared base package for the consumption-loop packages at first updated 2026-09-08
0449 — deliveryconsumer kept in the tree but not wired to run updated 2026-09-08
0450 — rangeState and claimBuffer stay private, not their own packages updated 2026-09-08
0451 — Consumption-loop package names keep the house stutter for now updated 2026-09-08
0461 — Scheduled work is built on the existing messaging machinery, with one compacted `__system.job_requests` topic updated 2026-09-08
0462 — The job name is the routing key; there is no handler column updated 2026-09-08
0463 — Cron concurrency is enforced at consume time by the key lease, never by the scheduler updated 2026-09-08
0464 — Missed scheduled times are dropped: the scheduler walks to the newest due time and produces only that updated 2026-09-08
0465 — Job-request status is derived from existing tables, never written updated 2026-09-08
0466 — `__system.job_requests` runs with `DeliveryLogModeAll` so successes leave rows updated 2026-09-08
0467 — Status classification checks terminal outcomes before the not-head "superseded" case updated 2026-09-08
0468 — Registry verbs: idempotent `RegisterCronJob` that errors on config mismatch, `Alter` re-seeds `next_scheduled_time`, destroy gated by `AllowDestroy` updated 2026-09-08
0469 — Vendor the robfig cron schedule core instead of hand-rolling or adding a dependency updated 2026-09-08
0470 — The scheduler produces each due job in its own transaction updated 2026-09-08
0471 — `RunCronJob` takes a fresh v7 idempotency key per call and defaults to concurrency 'allow' updated 2026-09-08
0472 — "Firing" is retired from the codebase's vocabulary updated 2026-09-08
0473 — Status and request-listing reads are flat per-fact queries composed in Go, not one CTE statement updated 2026-09-08
0482 — One consumer group per check; the central alert dispatcher is dead updated 2026-09-08
0483 — The `__system.alerts` topic is the alert state store, dedup memory, and integration surface updated 2026-09-08
0484 — Alert transitions are decided by one pure function, and evidence never enters it updated 2026-09-08
0485 — There is no notifier component: notification is a side effect of `Record` observing a status change updated 2026-09-08
0486 — Alert executors are worker definitions the manager claims, never embedded goroutines updated 2026-09-08
0487 — The alert domain owns measurement and decision; producer and consumer inject it updated 2026-09-08
0488 — "handler" and "publisher" are retired as domain nouns; the write door is `AlertController.Record` updated 2026-09-08
0489 — Checks declare themselves at `RegisterSystem`, with binds made idempotent by `UNIQUE` + `ON CONFLICT DO NOTHING` updated 2026-09-08
0490 — The register-time evaluator pass is log-only and never writes to the alerts topic updated 2026-09-08
0501 — Schema provisioning is a library call, not an external migrate step updated 2026-09-08
0502 — The consumer gets an opt-in circuit breaker for systemic downstream failure updated 2026-09-08
0503 — Breaker input is user error classification, recorded as error_class on the delivery row updated 2026-09-08
0504 — The breaker trips per instance; global OPEN is a quorum of locally-open instances updated 2026-09-08
0506 — Reconciliation refunds systemic failures on CLOSE, run by the probe winner; recovery is automatic updated 2026-09-08
0507 — The public surface is organized by three audiences; plumbing types are demoted updated 2026-09-08
0508 — The concurrency package goes internal; consumers build queue and pool from ConsumerConfig updated 2026-09-08
0509 — The retry surface is trimmed to Policy and the two error types updated 2026-09-08
0510 — ConsumerType and its constants are demoted; NewConsumer defaults to cursor consumption updated 2026-09-08
0511 — Binding sets are declared at consumer Register; replacement waits for zero live declarers updated 2026-09-08
0512 — Producer create-ahead triggers at the partition's 80% mark id; heal path serialized by advisory lock updated 2026-09-08
0513 — Create-ahead ships with the 95% backstop mark, and destroyed topics evict their claim entry updated 2026-09-08
0514 — DestroySystem is RegisterSystem's inverse: drop every topic, then the control-plane schema updated 2026-09-08
0515 — Group tunables live in worker metadata as {default, override}; users tune through domain nouns updated 2026-09-08
0516 — AlertRepeatInterval moves to alert worker metadata; system config becomes a stub updated 2026-09-08
0517 — Uniform config get/set/unset surface; alter dies in the CLI; Go Alter* verbs take tri-state Update[T] updated 2026-09-08
0518 — Config is code-owned, the latest declaration wins, and the CLI never writes config updated 2026-09-08
0519 — Topic config lives in append-only declaration rows; topic keeps identity only updated 2026-09-08
0520 — Cron jobs are declared like every other resource; built-in alert config moves into RegisterSystem (amends 0518) updated 2026-09-08
0521 — Only a declarer writes config, so the CLI creates nothing (amends 0518, 0520) updated 2026-09-08
0522 — Metrics are samples on __system.metrics written by a collector worker; otel exposure moves to its own module updated 2026-09-08
0523 — The metric point type is Measurement, not Sample updated 2026-09-08
0525 — ProduceBatch: one call, N messages, one transaction updated 2026-09-08
0526 — migrate.Controller is the package's only door; the schema gate reads by id updated 2026-09-08
0527 — pkg/migrate adopts the three-layer template updated 2026-09-08
0528 — pkg/logger, pkg/retry, pkg/errors, pkg/context merge into a flat pkg/common updated 2026-09-08
0529 — One Querier contract; the produce transaction is the one sanctioned crossing updated 2026-09-08
0530 — pkg/compaction stays two-layer; MessageRow lives in common updated 2026-09-08
0532 — Consumer read-models live with the controller whose verbs return them updated 2026-09-08
0533 — Field absence is the zero value, never a nil pointer updated 2026-09-08
0534 — The metrics domain's write door is pkg/metrics/producer updated 2026-09-08
0535 — consumer/base cleanup: pure constructors, symmetric key verbs, RecordMargin updated 2026-09-08
0536 — MessageOptions is the sanctioned nilable sparse sub-document updated 2026-09-08
0537 — Every worker kind carries a controller layer updated 2026-09-08
0538 — File content ordering convention updated 2026-09-08
0539 — Blank-line convention for function bodies updated 2026-09-08
0540 — Bare sub-consumer constructors: doc fencing, not structural fencing updated 2026-09-08
0541 — examples, bench, and reference become dev-only nested modules updated 2026-09-08
0542 — Config & options refinement: the three shape decisions updated 2026-09-08
0543 — Config field order: domain-first, ambient tail updated 2026-09-08
0544 — Dead-field pass: two deletions, one exemption updated 2026-09-08
0545 — The waterline worker is renamed cursor_advancer; AdvanceWaterline becomes AdvanceCommitted updated 2026-09-08
0546 — Controller and datastore verbs drop their own domain noun updated 2026-09-08
0547 — Run-side worker structs are named *Instance; the concrete Definition keeps both roles updated 2026-09-08
0548 — The receiver letter is the initial of the type's final word updated 2026-09-08
0550 — Structured error anatomy: five parts + recovery, flat codes updated 2026-09-08
0551 — Retry classification is consulted, never encoded; one retry type updated 2026-09-08
0552 — A missing system topic raises migrate.ErrNotRegistered updated 2026-09-08
0553 — Which errors get codes: the declaration boundary updated 2026-09-08
0554 — Plain-error construction standard updated 2026-09-08
0555 — Package kinds, the seam law, and worker placement updated 2026-09-08
0556 — Standing walks over plain raise strings updated 2026-09-08
0557 — Developer tooling is a dev-only tools/ module updated 2026-09-08
0558 — Logging rule sheet updated 2026-09-08
0559 — Per-operation debug buffer updated 2026-09-08
0560 — SQL literal owner comments updated 2026-09-08
0561 — Logging machinery moves to pkg/common/logging updated 2026-09-08
0562 — Log events carry VK codes from the error registry updated 2026-09-08
0563 — Coded declarations move to pkg/common/diagnostic updated 2026-09-08
0564 — Repeated Warn/Error suppression in the logging pipeline updated 2026-09-08
0565 — logging grows a record pipeline under the Logger seam updated 2026-09-08
0566 — Slow-operation threshold logging updated 2026-09-08
0567 — Stop line as session summary updated 2026-09-08
0568 — Summary lines declare and carry a help breadcrumb updated 2026-09-08
0569 — Metric declarations join the shared VK registry updated 2026-09-08
0570 — Topic truth stays on the topic row; history is an append-only log (topic_log, binding_log) updated 2026-09-08
0571 — Per-topic table split rule updated 2026-09-08
0572 — Append-only is for history tables updated 2026-09-08
0573 — binding_log retention: the consumer group janitor updated 2026-09-08
0575 — Public read-models carry json struct tags updated 2026-09-08
0577 — Worker metadata history is an append-only worker_log updated 2026-09-08
0578 — fillfactor audit: adopt nothing, defaults everywhere updated 2026-09-08
0579 — migration txn steps run under lock_timeout; timeout retries updated 2026-09-08
0580 — Every migration step declares MinCompatibleVersion; the schema gate admits min_compatible_version <= build <= current updated 2026-09-08
0581 — the doc site documents shipped behavior only updated 2026-09-08
0582 — site stack: Astro without Starlight, Svelte 5 islands updated 2026-09-08
0583 — the doc site is a phpBB-era message board updated 2026-09-08
0584 — the site's SQL console runs the library's own SQL in PGlite updated 2026-09-08
0586 — the sandbox's Tick runs the real consume path, and drift is counted per verb updated 2026-09-08
0587 — sandbox consumers auto-run on their own clocks updated 2026-09-08
0588 — the compatibility matrix is exported from the gate's own rule updated 2026-09-08
0589 — a declaration's diagnose part is SQL updated 2026-09-08
0590 — a fix substitutes the caller's values updated 2026-09-08
0591 — the sandbox's Postgres is not prefetched updated 2026-09-08
0592 — ClientRouter, without persisting the sandbox updated 2026-09-08
0593 — the night board, chosen from the footer updated 2026-09-08
0594 — initial-payload ceilings are NOT built updated 2026-09-08
0595 — spacing token scale: exact values, pixel-value names, one tier updated 2026-09-08
0596 — the decision records publish as a board updated 2026-09-08
0597 — website layered error handling updated 2026-09-08
0598 — the site notice's full-page face is cut until something needs it updated 2026-09-08
0600 — each consent control gets its own answer, and Accept all gets its own component updated 2026-09-08
0601 — doc site versioning: one live site, frozen deployments per version updated 2026-09-08
0602 — doc site mobile pass: two breakpoints, sandbox gated off phones updated 2026-09-08
0603 — the page-failure net ignores browser cancellations updated 2026-09-08
0604 — the transition's ready promise is caught at the source updated 2026-09-08
0605 — the member profile page updated 2026-09-08
0606 — the doc site's browser support line updated 2026-09-08
0607 — the sandbox quiesces before closing its database updated 2026-09-08
0608 — Playwright covers the editor swap and the initial-JS ceiling updated 2026-09-08
0609 — website/VOICE.md: the doc site's prose voice file updated 2026-09-08
0610 — example attribute values on code threads updated 2026-09-08
0611 — table names are `<root>_<kind>` updated 2026-09-08
0612 — the message key is promoted out of compaction updated 2026-09-08
0613 — column naming rules updated 2026-09-08
0614 — handler outcomes by error classification updated 2026-09-08
0615 — delivery_log is keyed by its own id, not by attempt updated 2026-09-08
0616 — a new group's cursor position: consumergroup.CursorPosition, Head() updated 2026-09-08
0617 — ordered delivery per key; concurrency values parallel / exclusive / ordered updated 2026-09-08
0618 — the schema version is a message_log column declared by the Message type, not a topic key updated 2026-09-08
0619 — the Message type argument sits on Register, not on NewProducer / NewConsumer updated 2026-09-08
0620 — a missing-partition heal creates the partition of the sequence's next id and reruns under the retry policy updated 2026-09-08
0621 — a schedule is a producer on a cron expression; "cron job" is renamed "schedule" everywhere updated 2026-09-08
0622 — IdempotencyKey is a caller string, resolved to the claim table's UUID updated 2026-09-08
0623 — the standard library's uuid package replaces github.com/google/uuid updated 2026-09-08
0624 — the first RegisterTopic stands up the control-plane schema updated 2026-09-08
0626 — newest-wins is the only declaration form updated 2026-09-08
0627 — worker liveness is an alert, not a register-time check updated 2026-09-08
0628 — The table-name functions are public API updated 2026-09-08
0629 — "schema" names a Postgres schema and nothing else updated 2026-09-08
0630 — A Postgres schema is one Vulkan installation updated 2026-09-08
0631 — Every SQL literal names its schema updated 2026-09-08
0632 — The pool sets no search_path updated 2026-09-08
0633 — The datastore takes the caller's pool updated 2026-09-08
0634 — ProduceInTx takes the message updated 2026-09-08
0635 — Consume runs the system manager updated 2026-09-08
0636 — The client takes the pool updated 2026-09-08
0637 — The pool builder is client-package API updated 2026-09-08
0638 — The manager row is gated and Run is shared updated 2026-09-08
0640 — The shared loop re-claims instead of ending updated 2026-09-08
0641 — Run is a per-caller loop; the row is the only arbiter updated 2026-09-08
0642 — The client's own ConsumerInstance runs the manager beside Consume updated 2026-09-08
0643 — One declaration per type, vulkan as the client plus aliases updated 2026-09-08
0644 — Public type names state semantic roles updated 2026-09-08
0645 — Binding is a handle under the group; client lists are bare plurals updated 2026-09-08
0646 — the topic handle carries the message type; a message key is a handle under it updated 2026-09-08
0647 — First-class metrics use one declaration catalog updated 2026-09-08
0648 — Metric scope belongs to the diagnostic declaration updated 2026-09-08
0649 — Alerts take the metrics shape and the one registry updated 2026-09-08
0650 — The migration version reads through the client updated 2026-09-08
0651 — documentation links related mechanisms in context updated 2026-09-08
0652 — Astro's build emits the canonical sitemap updated 2026-09-08
0653 — Consumer names the public group handle updated 2026-09-08
0654 — The shared layout qualifies document titles updated 2026-09-08
0655 — Code-page meta descriptions come from code facts updated 2026-09-08
0656 — Search-engine indexing has one path policy updated 2026-09-08
0657 — The datastore holds Logger and Retry once updated 2026-09-08
0658 — Built-in alert config names the alert, not its scheduled work updated 2026-09-08
0659 — A missing compaction head has a lockable row updated 2026-09-08
0660 — Ensuring a compaction head is one upsert updated 2026-09-08
0661 — The system declaration configures the metrics collector updated 2026-09-08
0662 — Janitor cleanup steps have separate deadlines updated 2026-09-08
0663 — The janitor timeout names cleanup updated 2026-09-08
0664 — Defaults use the normal client API updated 2026-09-08
0665 — Vulkan defines the supported public API updated 2026-09-08
0666 — The payload never reaches a log line or an error updated 2026-09-08
0667 — Every _config table carries created_at and updated_at updated 2026-09-08
0668 — A cursor table carries its own id and the owner's id as UNIQUE updated 2026-09-08
0669 — An index is named for its table then its leading columns updated 2026-09-08
0671 — Fatal consumption errors stop the session updated 2026-09-08
0672 — Client results remain unnamed updated 2026-09-08
0673 — The scheduled time is a message_log column on every message updated 2026-09-08
0674 — Playground examples share handle, instance, and lifecycle patterns updated 2026-09-08
0675 — The message's own time is sent_at updated 2026-09-08
0676 — Admin owns orchestration and domains own validation rules and resource reads updated 2026-09-08
0677 — Public API comments state their contract updated 2026-09-08
0678 — Metrics export distinguishes read success and observation freshness updated 2026-09-08
0679 — The doc site splits by page kind: a Reference board, one thread per handle updated 2026-09-08
0680 — pkg/concurrency is infrastructure and lives under common updated 2026-09-08
0682 — Metrics export uses an OTel producer and source-read health updated 2026-09-08
0683 — Alert pending duration is derived from measurement history updated 2026-09-08
0684 — Collector progress contract and bounded history updated 2026-09-08
0685 — A claim poll reads its snapshot before any transaction and opens the reclaim transaction only on an expired lease updated 2026-09-08
0686 — History-based pending belongs to the shared alert framework updated 2026-09-08
0687 — The reliability lab is a ledger and a checker, with scenarios written as Go and printed, never parsed updated 2026-09-08
0688 — Shared alert history evaluation contract updated 2026-09-08
0689 — Alert implementation starts in existing recording updated 2026-09-08
0690 — Alert history uses stored message time updated 2026-09-08
0691 — Compaction options are constructed inline updated 2026-09-08
0692 — Alert evaluations carry findings and evidence updated 2026-09-08
0693 — Metrics collection owns alert evidence updated 2026-09-08
0694 — Alert evaluations return explicit states updated 2026-09-08
0695 — Partition alerts calculate retained duration updated 2026-09-08
0696 — The checker drains on the consumer group cursor, and every scenario declares the safety checks updated 2026-09-08
0697 — The record tables are produce_record and handler_record updated 2026-09-08
0698 — All existing alerts share retained history updated 2026-09-08
0699 — Alert timing fields are inline updated 2026-09-08
0700 — Worker instance history proves lease coverage updated 2026-09-08
0701 — Worker instance log writes and retention updated 2026-09-08
0702 — Instance log timestamps follow existing names updated 2026-09-08
0703 — Collector progress uses manager lease history updated 2026-09-08
0704 — Alert snapshots expose existing evaluation updated 2026-09-08
0705 — OTel readers collect from the producer updated 2026-09-08
0706 — Portable export validation and read health updated 2026-09-08
0707 — Export validation checks only export compatibility updated 2026-09-08
0708 — Exporter health has a collection scope updated 2026-09-08
0709 — Topic alerts evaluate every minute updated 2026-09-08
0710 — Consumer defaults use small batches and responsive polling updated 2026-09-08
0712 — Documentation starts with a runnable example and separates progress from delivery outcomes updated 2026-09-08
0715 — Throughput work excludes the archived delivery consumer updated 2026-09-08
0716 — Tools holds all repository-only developer tooling updated 2026-09-08
0717 — The OpenTelemetry integration module is otel updated 2026-09-08
0718 — End-to-end labs and runnable examples have separate roots updated 2026-09-08
0719 — Programs under .e2e are e2e tests updated 2026-09-08
0721 — Repository-only roots are hidden updated 2026-09-08
0722 — Repository support and build-output roots are hidden updated 2026-09-08
0723 — Repository support, build-output, and benchmark roots are hidden updated 2026-09-08
Regrets updated 2026-09-08