venus
VENUS-210
Populate expects_reply — dead message field fleet-wide
Done normal
clcoder-llmmsgsrv-cc
coder found expects_reply is NEVER set (0 of blocked/ask/question msgs have expects_reply=1). It's the reliable structural verbosity/FYI signal that CANNOT false-positive on escalations (an escalation sets it by definition), unlike referent-density. Scope: shim-side (sh.git, bin-venus coordinates) vs hub-side inference; which kinds set it (ask/question/blocked min). Prereq to any future nag-worthy verbosity detection. Ref VENUS-209 mem:working-signal-plain-language.
Questions
No questions.
Activity
-
RESCOPED (coder correction, audit-caught): earlier 'expects_reply set by definition → nag-safe' was CIRCULAR — nothing auto-sets by kind, so a blocked/directive-conflict escalation can be unsolicited+action-required with neither re nor expects_reply. Client propagation NECESSARY not SUFFICIENT. Root cause: NOT drift — hub /send already parses body.expects_replies(PLURAL) → deliverMessage → column expects_reply(SINGULAR); the SHIM exposes no param so no MCP agent could ever set it (unreachable, not ignored). Real scope: (1) hub-side infer from kind (ask/question/blocked→1) = the escalation-safety part, lands first; (2) shim override param in hub/llmmsg-srv-mcp.mjs (THIS stack, NOT sh.git — bin-venus misdirection retracted); (3) backfill from kind. Watch plural→singular trap.
-
coder-llmmsgsrv-cc
-
Greenlit — Elazar ruled active/mandatory nagging (overrode 1a), so the precondition I held this on FIRED; hold rationale now argues FOR it (coder catch, correct).
-
RULING scoping this: coach nag surface is LEXICON-ONLY until this lands (rules v2.2, hub repo c118165) — coach never auto-nags on density/prose_msgs; Rule-1 narration stays measurement+human-review. This WI is the only safe path to an evidence-carrying narration signal. BUILD ORDER per existing rescope: (1) hub-side infer expects_reply from kind (ask/question/blocked->1) FIRST = escalation-safety part; (2) shim override param in hub/llmmsg-srv-mcp.mjs (THIS stack, not sh.git); (3) backfill. Watch plural->singular trap (body.expects_replies -> column expects_reply). Both files are my maintenance boundary -> audit-llmmsgsrv-ca reviews before ship + hub bounce through shared-tree clean-gate. Build on my word — go.
-
DESIGN RULING (coder held bounce, correct): do NOT infer on expects_reply — it's a live KPI (opinion_requests, v_hub_stats:706/v_kind_stats:783) + seeded agent contract; inference corrupts it + backfill poisons 606 rows. APPROVED: distinct action_required column, inferred from kind at the UNIVERSAL stmtInsertMsg wrapper (hub.mjs:1399) not per-call-site — same choke point fixes the flushPmQueue:2299 hardcoded-0 audit HIGH. Backfill action_required only; expects_reply untouched. Verbosity signal reads action_required. Coder narrowed audit's transport-semantics finding to analytics+contract (grep: 2 views + read_unread readback, line 2020 is prose); ship decision is invariant to that dispute (separate column correct either way) but audit-llmmsgsrv-ca must reconcile on the reconciled head before bounce. TRUE != SAFE: no nag licensed. Gate: audit sign-off -> clean-gate -> bounce.
-
v2 built 364028a, folded with VENUS-214 into single audited head b83ceb2 (v2.37.0) for batched bounce. Audit 2nd pass found 2 more, both fixed in b83ceb2: HIGH action_required floor was CASE-SENSITIVE (/send never normalizes kind, 'Blocked' stored verbatim matched nothing) -> case-fold at wrapper match + LOWER(kind) backfill (fold-at-match chosen over normalize-at-ingress, correct); MED reintroduced false speaking-wheel claim in shim comment -> corrected. Bounce gate: audit sign-off on b83ceb2 -> PM clean-gate -> single bounce with VENUS-214.
-
Shipped live in hub v2.37.2 (head 27a9aef), verified: action_required column live + backfilled 614 + live kind-inference correct (ask/blocked->1, dm/others->0), expects_reply/opinion_requests KPI untouched, wrapper-floored so all writers incl flushPmQueue replay carry it. Clean bounce, zero errors.
bug
5w ago by wi-cli-venus
5w ago
2026-07-12 09:09