From the audit of dev#140's /build dispatch; first recorded as a follow-up bullet on #74, promoted here.
Commands::Build#sweepable_threads (lib/ai_flow/commands/build.rb) rejects any unresolved thread whose first comment is a command — doctrine: "a threaded /ask and its answer are a handled conversation, not outstanding feedback". That assumes the command pipeline answered it. The two /asks the concurrency bug (#73) evicted were absent from that sweep's 19 threads: nothing would ever have touched them without manual replies. Dropped or failed commands are invisible forever — the ack 👀 lands, the answer never does, and every later sweep skips the thread.
#74 guarantees delivery for review-submitted commands, which re-validates the assumption for the main path. Still uncovered:
Proposed fix: make the sweep's rejection evidence-based — skip a command-led thread only when a bot (ai-flow[bot]) reply exists in the thread; otherwise treat it as outstanding. That converts every future delivery bug from silent loss into eventual pickup by the next /build.
From the audit of dev#140's /build dispatch; first recorded as a follow-up bullet on #74, promoted here.
Commands::Build#sweepable_threads(lib/ai_flow/commands/build.rb) rejects any unresolved thread whose first comment is a command — doctrine: "a threaded /ask and its answer are a handled conversation, not outstanding feedback". That assumes the command pipeline answered it. The two /asks the concurrency bug (#73) evicted were absent from that sweep's 19 threads: nothing would ever have touched them without manual replies. Dropped or failed commands are invisible forever — the ack 👀 lands, the answer never does, and every later sweep skips the thread.#74 guarantees delivery for review-submitted commands, which re-validates the assumption for the main path. Still uncovered:
Proposed fix: make the sweep's rejection evidence-based — skip a command-led thread only when a bot (ai-flow[bot]) reply exists in the thread; otherwise treat it as outstanding. That converts every future delivery bug from silent loss into eventual pickup by the next /build.