50 most recent check-ins that include changes to files matching 'internal/events/*'
|
2026-10-02
| ||
| 14:58 | Merge trunk check-in: b0f17d0e5b user: zeitgeist tags: admins-send-reset-links | |
| 03:33 | land delete-forgets-its-events check-in: b6f64c2e4c user: dmestas tags: trunk | |
| 01:54 | Test a repair stopped after its round; a tally yields only to a longer repository that exists (#294) closed check-in: 03bdb5c2ba user: zeitgeist tags: delete-forgets-its-events | |
| 01:14 | Keep dotted neighbours out of a repository's event log, tallies and watches; stopped pipelines write nothing; no empty dot segments in names (#294) check-in: 274b7ccc50 user: zeitgeist tags: delete-forgets-its-events | |
|
2026-10-01
| ||
| 21:23 | update rfc20-release-tag from trunk closed check-in: b42f59de5b user: dmestas tags: rfc20-release-tag | |
| 19:09 | merge trunk (bounded sync decoding) into rfc20-mirror-uv check-in: 3f4482ad5b user: zeitgeist tags: rfc20-mirror-uv | |
| 17:40 | Merge trunk check-in: 405f34fa66 user: zeitgeist tags: ci-tests-each-change-once | |
| 17:27 | Merge trunk into robot-lines-name-numbers check-in: e3ccbf9a54 user: zeitgeist tags: robot-lines-name-numbers | |
| 16:39 | land delete-forgets-the-repository check-in: 34b7277ba3 user: dmestas tags: trunk | |
| 15:36 | Forget ingest cursors and consumers by repository name, matching only that repository's own (#294) closed check-in: eb69465510 user: zeitgeist tags: delete-forgets-the-repository | |
| 15:16 | Merge trunk; delete also purges unversioned catalog, publisher cursor keys and finishes event scans on pending count (#294) check-in: ea6e1d281e user: zeitgeist tags: delete-forgets-the-repository | |
|
2026-09-30
| ||
| 13:05 | Deleting a repository erases only its own traffic tallies, never those of a dotted neighbour such as a.clone.auth (#294) check-in: 61447ac630 user: dmestas tags: delete-forgets-the-repository | |
| 12:44 | Deleting a repository forgets it everywhere: purge every name-keyed table, revoke its worker tokens, empty its chat channel and attention events (#294) check-in: 46b6caea1c user: zeitgeist tags: delete-forgets-the-repository | |
|
2026-09-28
| ||
| 22:05 | land landing-waiting-notify check-in: e917e68c83 user: dmestas tags: trunk | |
| 21:52 | A newly opened landing notifies its accepters, pushed or not closed check-in: 304e236887 user: zeitgeist tags: landing-waiting-notify | |
|
2026-09-27
| ||
| 11:38 | Merge trunk into background-jobs-follow-the-lease check-in: cf04732cdd user: dmestas tags: background-jobs-follow-the-lease | |
| 11:27 | update node-identity-is-persisted from trunk closed check-in: f61888abaf user: zeitgeist tags: node-identity-is-persisted | |
| 11:23 | update ci-race-on-landings from trunk closed check-in: 3bfe3ae2d8 user: zeitgeist tags: ci-race-on-landings | |
| 11:08 | land event-window-own-events check-in: b4b2132878 user: dmestas tags: trunk | |
| 05:55 | A refused stream limits update is logged rather than stopping the start, and an earlier stream's publish record is tested to force a rebuild check-in: 47631b3071 user: dmestas tags: event-window-own-events | |
| 05:29 | Judge the event window gap by each store's own publish record, and show the stream window at boot and on the ops page check-in: 0824d60cfb user: dmestas tags: event-window-own-events | |
|
2026-09-09
| ||
| 21:27 | land clone-identity check-in: 950a22e623 user: dmestas tags: trunk | |
| 21:02 | sync: record who cloned — client, verified account, claimed name, or nobody check-in: f3983f90bd user: dmestas tags: clone-identity | |
| 20:56 | Running docs: receiving email needs nothing but notify closed check-in: 598a8a26a6 user: dmestas tags: docs-receiver | |
|
2026-08-30
| ||
| 11:33 | land ci-live-sse check-in: 97dd341966 user: dmestas tags: trunk | |
| 11:33 | land attention-dedupe check-in: 62731b2cac user: dmestas tags: trunk | |
| 10:15 | merge trunk into fleet-tabs-1: keep trunk's four-surface fleet nav, wear the tab convention check-in: 73c9f1ca68 user: dmestas tags: fleet-tabs-1 | |
| 04:07 | ci: live run page over the event stream; ci.started/ci.completed raised; WatchNoun check-in: 3d493504b9 user: dmestas tags: ci-live-sse | |
| 03:48 | inbox: pair a mention's notify message with its attention event on the idempotency key, so one event is one row and one count check-in: 7251d16114 user: dmestas tags: attention-dedupe | |
| 02:58 | land attention-4 check-in: 48328f288f user: dmestas tags: trunk | |
| 01:48 | ci: live pages wait on the event plane instead of each keeping a 3s timer check-in: 3d01196d0d user: dmestas tags: trunk | |
|
2026-08-29
| ||
| 23:52 | merge trunk into exceptions check-in: 395e40d54d user: dmestas tags: exceptions | |
| 22:09 | land attention-2 check-in: 9eb8e48c21 user: dmestas tags: trunk | |
| 21:10 | take attention delivery off the write path and count unread without scanning the window check-in: b1e3e4f387 user: dmestas tags: attention-2 | |
| 20:22 | an attention stream, the ops that read it, and the activity robot check-in: 24aa859ca1 user: dmestas tags: attention-2 | |
|
2026-08-24
| ||
| 23:12 | land praise-ui check-in: 411e60c2d5 user: dmestas tags: trunk | |
| 21:20 |
Event log: proof the hooks fired
Read straight off the vocabulary stream — no table, no fold, nothing to keep in sync, so it cannot disagree with what the forge published. The window is the stream's window, 24 hours, and the page says so: a log that let a reader assume history would be lying about a live tail. Asks the consumer how much is pending before fetching. Without that a quiet repository waits out the fetch timeout, which would make 'nothing has happened yet' the slowest page on the site — 2s became 9ms. Linked from the webhooks settings, not given a tab: that is where the question gets asked. closed check-in: a5c5fe771e user: dmestas tags: praise-ui | |
| 20:18 | Merge trunk into praise closed check-in: 7b32366269 user: dmestas tags: praise | |
| 20:16 | Suite green; merges clean. Proven against a real server: two clones read 2, a pull leaves it at 2. check-in: bc4fbd1c79 user: dmestas tags: trunk | |
| 19:16 |
Count clones and fetches
A clone reads and writes nothing, so it is the one kind of forge activity that leaves no trace in the DAG at all. The sync edge classifies the protocol's cards: clone SEQNO 1 opens a new clone, later rounds do not, so a big store cloned in forty rounds still counts once. Two sinks: the vocabulary event for anything reacting, and a JetStream counter for how many, which converges across nodes instead of losing increments to a read-modify-write. check-in: dc058fa551 user: dmestas tags: clone-counts | |
| 16:27 | Add the new event-plane files the previous commit omitted check-in: f485551646 user: dmestas tags: trunk | |
| 16:27 |
Publish the vocabulary on quarry.evt.<repo>.<noun>.<action>
RFC 0005 picked zit.evt., which the fold consumer already claims with a trailing wildcard — every vocabulary event would have been handed to the artifact parser. Own stream, own root, tests pinning both. check-in: 3bca39d8f5 user: dmestas tags: trunk | |
| 15:50 |
events: the vocabulary as code, and what the bus really does
RFC 0005 §1 as internal/evt, named at the eight sites that raise events instead of sliced out of a TxnID — so a ticket change that closes one is ticket.closed, not ticket. Measured the window: a gap IS detectable (first_seq - ack_floor) but the next fetch succeeds silently, so every consumer must check. dagnats has no scheduler; quarry owns the clock. check-in: f08add75f5 user: dmestas tags: trunk | |
|
2026-08-17
| ||
| 16:40 |
deploy: Dockerfile, compose stack and a run book
quarry had no packaging at all while notify already had a working Dockerfile and compose. The image ships zit WITH quarry, deliberately: 0001 §2 makes the zit CLI the entire store interface, so zit's behaviour IS quarry's, and today alone three zit builds changed what quarry does — frames got faster, a card fix changed which artifacts parse, stat -R enabled bare-store serving. ZIT_REF is a build argument and /etc/quarry-build records the pair, so a container can answer which zit it carries. compose follows notify's shape, including the constraint its own file documents: dagnats binds loopback in standalone mode, so everything shares its network namespace. quarry joins it too — its embedded NATS uses DontListen and binds nothing, so there is no port to collide with. docs/running.md is the by-hand path, which is what this was actually developed against: the launchd-signed dagnats, notify's bootstrap and workflows, the topic-vs-subscriber addressing, and the two credentials that close the write and push gates. Unverified, and said so in the doc: no container runtime is installed here, so the images have never been built. The two build recipes inside them ARE verified natively — zit compiles from a clean clone with zig build --release=fast, quarry builds fully static with CGO_ENABLED=0. Also lands the publish-throughput measurement as an opt-in test. It is what disproved the hypothesis that synchronous publish was the ingest bottleneck (62k msg/s sync), which redirected the search to zit frames and quarry's folding. check-in: bbe731e042 user: dmestas tags: trunk | |
|
2026-08-16
| ||
| 09:57 |
chat: drop DAG archival — keep chat ephemeral like Fossil
Reversed 0001 §5's 'durability is the DAG': minting chat into synced, content-addressed forum artifacts writes casual chatter permanently into the DAG, the opposite of Fossil's deliberate chat ephemerality (server-local, auto-purged, never synced). Chat stays live + the 7-day JetStream window; durable archival becomes a future quarry-specific/S3 concern, not near-term. Removes internal/chatarchive, its wiring and flags, events.KV, and the zitcli forum/technote wrappers it used (they return with v2 web-authored forum). Chat itself is unchanged. check-in: 3d68e9b401 user: dmestas tags: trunk | |
| 05:16 |
chat archival: fold chat into forum-thread artifacts (0001 §5 durability)
internal/chatarchive: batches a channel's messages (per N or T) and mints them as a 'Chat archive' forum thread through zit forum post/reply (zit#76) — one thread per channel, each batch a reply carrying the transcript, so history clones with the repo. Minting runs only on the lease holder; non-holders drop their buffers (the holder's archive folds back to every node). zitcli gains ForumPost/ForumReply/ TechnoteAdd. --chat-archive on by default. Verified live: chat batches materialize as forum threads and reply to the same thread. check-in: bd91af3158 user: dmestas tags: trunk | |
| 04:50 |
chat: per-repo live channel over NATS (0001 §5)
internal/chat: messages fan out over NATS with a 7-day JetStream window (replay on join), keyed by project code so a channel is shared across nodes. chat.history/chat.post ops (post is not lease-gated — it mutates no store); web page with on-load history, a plain post form (no-JS baseline), and an SSE append stream (Datastar enhancement). Verified live: form post + cross-connection SSE delivery in-browser, and cross-node fan-out on a shared external NATS. Durable forum-thread archival waits on zit forum verbs (zit#76); the window is interim durability. check-in: 5670d3643d user: dmestas tags: trunk | |
| 03:48 |
scale-out: external NATS + multi-node fan-out (trio part 1)
events.Connect joins an external NATS so N nodes share one plane; --nats selects it (embedded stays the single-node default). Retention switched work-queue -> limits+cap: work-queue load-balanced one copy across nodes, leaving each index partial; limits fans out to per-node durables (name now carries a hashed node id) while MaxBytes/MaxAge keep disk bounded. Lease refusals surface as 503 (ops.ErrUnavailable), not 500. Verified live: two nodes on one external NATS + shared store, each folds the full store, the leased node writes while the other 503s and still folds the write cross-node. check-in: 89e4991bbf user: dmestas tags: trunk | |
|
2026-08-15
| ||
| 20:56 |
web: live fleet page; shared SSE patch loop
Home table morphs on any repo's change via Watch("*") wildcard. check-in: 0556d0b12c user: dmestas tags: trunk | |
| 20:36 |
events: work-queue retention on ZITEVT; migrate old streams
Acked events leave the stream, so disk tracks the in-flight backlog, not store history (was 5.6GB beside sqlite's 218MB). Old-config streams are dropped with their cursors; the census republishes and idempotent folds converge. check-in: 14b0c96b83 user: dmestas tags: trunk | |