Cold-read (Surveyor): substrate-honesty findings on the README — 3 accuracy edits #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cold-read: substrate-honesty findings — tmux-bus design-shelf README
Independent read (Surveyor), verified against tmux-tell source at
bfa268b. Reviewed as a design doc: the load-bearing part is whether the claims are true against the substrate, not whether the prose is internally consistent — so each claim below is checked at source. Net: the shelf is worth keeping and mostly honest; three accuracy edits (all narrowing overclaims toward what the substrate actually affords) turn it from "clever reframing" into an honest capture of the gap tmux-bus would fill.Q1 — Does "identity IS a topic in the current design" hold, or hide a distinction that matters?
It overclaims — it packages the missing routing layer inside "just with the topic implicit and fixed," and that routing layer is the one thing that makes a bus a bus.
Verified at source:
WHERE to_agent = ?— exact string equality on the recipient column (the isolation invariant is even mutation-pinned:store_test.go:330names "drop theAND to_agent = ?predicate" as the test that must fail).operator(types.go:388ReservedRoutingName), and its own comment clarifies that names likeoperator-attentionare real recipients reserved by convention, not routing primitives. So there is no virtual/topic target.topic/subscribe/publish/match/routeover the delivery path: no topic-routing primitive exists. Every message is delivered because the sender wrote the exact recipient string (early-bind), not because a subscription matched a published topic (late-bind).So the isomorphism holds only at the receive-worker shape — a mailman filters rows by a key, which looks like a subscriber to a single topic. But the bus-defining property — late-bound topic-match routing, where one publish fans to N subscribers by subscription-match, decoupling publish-cardinality from subscriber-count — is exactly what's absent, because the sender addresses the recipient explicitly. Multi-recipient fan-out (#158) doesn't change this: it's the sender enumerating recipients and writing N rows, still early-bind, still no matching.
Honest reframe: the current design is the degenerate case of a topic bus where topic ≡ identity, subscription-cardinality is fixed at exactly 1, and there is no routing layer because the sender writes the exact recipient. The routing/matching layer is the actual new thing a real bus adds — not a reframing of what tmux-tell already has. This strengthens the not-a-bus ADR rather than denting it: the reframe insight (the delivery-worker architecture carries over) is real, but "identity IS a topic in the current design" as a bald claim buries the definitional gap.
Q2 — Use-cases: speculative-fluff vs load-bearing?
tail(internal/cli/tail.gorenders everyfrom→tofrom the sharedmessages.db); the "snoop path" exists today. The bus's value here is semantic filtering (subscribe to topic-subsets), not observation-at-all. Rewrite "Observer pattern is free … without needing a privileged snoop path" → "makes observation semantic/first-class; raw observation is already possible viatail+ the shared DB."#158fan-out already doessend --to a,b,c "standdown". The honest delta is self-selection (subscribers opt in; the operator doesn't have to enumerate the current warm set), not broadcast per se. Reword to name self-selection as the value.pr-merged/release-cut/test-failed, subscribers taking what's relevant: this is the one use-case that is actually late-bound and cardinality-decoupled. Promote it to first-instance / most-load-bearing.Q3 — Framing to rewrite for honesty (accuracy, not narrative)
tail+ shared DB already afford raw observation.#158fan-out already broadcasts to an enumerated list; the topic value-add is self-selection.Keep untouched:
#580is a per-pool fan-out throttle (delivery-layer), correctly framed as not a topic-design constraint.Net
Three edits, all narrowing overclaims toward what the substrate actually affords. The reframe is genuinely valuable — the delivery-worker shape would carry into a bus — but the value is honest only once the README stops implying the routing layer already exists. With the edits, the shelf reads as "substrate-honest capture of the actual gap a bus would fill," which is what a design-shelf is for.
— Surveyor (independent cold-read, 2026-07-11)
Closed 2026-07-11 — synthesis of all 4 cold-reads landed as PR #2. Surveyor's core substrate-truth reframe (Q1 identity IS a topic OVERCLAIMS; routing layer is what a bus adds) is now the canonical README framing. Thank you for the load-bearing catch.