Skip to content

Maintainer questions filed inside a dev report's open_questions array are invisible to every sweep — one sat 17 days, and it is not the only one #16662

Description

@os-zhuang

The defect

The os-dev report contract has an open_questions array. A dev that hits a
question only the maintainer can answer writes it there — with options and a
recommendation, exactly as intended.

Nothing sweeps that array. The decision inbox is label:needs-user-decision,
and a question inside a report comment's JSON body carries no label. So the
question is filed, well-formed, and unreachable: it is not in the inbox, not in
any candidate query, and not in any staleness alert. The card meanwhile keeps
pm:dispatched and an assignee, which reads as in flight on every board.

The failure mode is the one this org keeps paying for: three success signals
and a wrong answer.
The dev did its job, the report validated, the PM accepted
it — and a decision the maintainer was owed simply never arrived.

Two instances, both found on 2026-09-07, neither by design

cloud#1555 — 17 days. A P0 card split from cloud#1535. Its delivering
PR #1557 was closed unmerged on 2026-08-22, so the instrument that produced
its measurements (scripts/dev-local/bootstrap-curve.mjs) is not in the tree —
anyone re-running the analysis starts from zero. The card kept pm:dispatched
and an assignee from 2026-08-21 until the repo:cloud R37 board sweep healed it
at 2026-09-07T16:36Z. The two questions that sat unreachable:

  1. whether to serve the previous complete kernel while a rebuild runs (a
    staleness policy the card itself says is the maintainer's call), and
  2. a one-SELECT prod reading only a maintainer can take, which separates "the
    database is slow" from "the path to it is slow".

⚠️ The urgency was real and is not spent: jack.objectos.ai served 503 for a
day
(134 s bootstrap against a 20 s waiter). It serves today only because its
kernel is cached — the next eviction repeats the outage, and the card's own
standing constraint is ⛔ do not delete or re-provision it, because it is the
reproduction.

objectstack#13973 — same shape, caught early. Its original question was
ruled B1 (narrow) on 2026-09-02 and executed (PR #16619). The execution then
raised three new residual questions, which the dev again wrote into
open_questions (comment 5573240453, 2026-09-07T16:10Z). The engine seat routed
them by re-applying needs-user-decision to the already-ruled card — which
works, but produces a second problem: the box now holds a card whose ruled
question and whose open questions are different questions, and nothing in the
label says which is which. A reader who trusts the label re-presents a ruling
that has already been executed.

Why this is worth fixing rather than remembering

Both instances were found by humans-in-the-loop noticing something, not by any
mechanism. The repo:cloud seat found #1555 during a board sweep it runs for
other reasons; I found #13973 because the inbox count changed between two
check-ins. Neither route is reliable, and the inventory this hides in is large:
label:pm:dispatched is:open is the lane's in-flight reading, and a card stuck
there for 17 days looks exactly like a card being worked on.

Shape of a fix (not a decision — a maintainer's call is not needed to start)

Three parts, roughly independent:

  1. Sweep the array. A check:*-style script (or a PM-loop step) that scans
    os-dev-report comments on open cards for a non-empty open_questions and
    reports any whose card does not carry needs-user-decision. This is the load-
    bearing half — it converts an invisible state into a listable one.
  2. Staleness on pm:dispatched. A card carrying pm:dispatched with no
    branch activity and no live agent for N days is a half-state, not work in
    flight. docs(agents): codify merge/worktree discipline + shared read-only permission allowlist #1555 sat 17 days; the threshold that would have caught it is
    generous.
  3. Residual questions get their own card. When executing a ruling raises new
    questions, they belong on a new card that links the ruled one — not on the
    ruled card re-flagged. This keeps "what is open" answerable from the label
    alone. ⭐ It also protects the standing rule that a card with a ruling comment
    is executed or contradicted with a reason, never re-presented.

⛔ Nothing here proposes changing the os-dev report contract itself. The array
is the right place for a dev to put the question; what is missing is the reader.


Filed by the director seat while auditing the decision inbox, 2026-09-07T17:01Z.
Related: cloud#1555 (the 17-day instance) · objectstack#13973 (the re-flag
instance) · cloud#1535 (the parent of #1555).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions