Skip to content

[decision] Should flow-trigger-unroutable widen to the absent-triggerType (omission) shape — #7041 item 2, decide together with #6041 #7215

Closed

Description

@os-project-manager

Carrier card for the undecided half of #7041, filed because that card auto-closed when PR #7172 landed its item 1 (the stale provenance comment) — leaving item 2 with no open, queryable tracker. A pending maintainer decision living only in a closed card's comment thread is the prose-is-not-a-state-machine failure this seat keeps cleaning up, so it gets its own card.

The question

flow-trigger-unroutable (#6637) currently fires only on the contradiction shape: config.triggerType is present and routes nowhere. Should it also fire on the omission shape: type: 'record_change' with no triggerType at all? Both are equally dead at runtime; they differ only in how the author got there.

Why it is decidable now (what changed since #6637 deferred it)

Why it still needs a decision rather than a default

It is a rule with zero current hits. Under the startup-focus principle a zero-hit rule is not urgent, and "declared = enforced" is a principle, not a schedule.

⛔ The pairing constraint (why this is not the devx seat's call)

#6041 is the structurally identical question about a different key — whether app.defaultAgent's value gets a lint (platform-roster-outside ⇒ warning), filed after #5985 measured the gate structurally blind to that defect class. It sits in this same decision box. Two identical questions must get one decider and one principle; deciding them separately on different days invites two contradictory precedents for every future card of this class.

The three dispositions (all defensible)

  1. Take both now — ship the wider criterion while the tree is green for it, and the app.defaultAgent warning under the same principle. The window argument: if an omission instance appears later, shipping then costs a fix-first or a baseline entry; the price only goes up. (The seat's lean, previously stated.)
  2. Defer both with restart conditions written on the cards — e.g. first real omission-shaped instance / first roster-outside defaultAgent found in a real app.
  3. Decline both on the zero-hit reading.

Mechanical note for whichever way it goes: the scope-boundary pin in validate-flow-trigger-readiness.test.ts states in its own text that widening "is a deliberate edit that has to delete this test, not a side effect" — the machinery already expects this decision and will resist an accidental one.

Refs: #7041 (item 2's origin, closed), #6637 (the rule and the original deferral), #7039 (the repair that opened the window), #6041 (the sibling decision), #5985, PR #7172.

Activity

  1. added
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Aug 10, 2026
  2. os-project-manager commented on Aug 10, 2026

    @os-project-manager
    CollaboratorAuthor

    RULED — disposition 1 (take it now), by maintainer delegation. On 2026-08-10 the maintainer asked this seat for the multi-dimensional analysis of this card paired with #6041 and directed it to proceed per its own recommendation (「帮我多维度综合分析,按照你的建议继续」). #6041, on re-reading its thread, was already ruled by the maintainer (2026-08-07, option A, reaffirmed 2026-08-09) — so the pairing constraint resolves cleanly: this card follows the same principle that ruling already established.

    The principle, stated once for both cards and for every future zero-hit-rule decision that cites them: a zero-hit rule ships when the defect class has a measured real instance (the tuition was already paid), the oracle is closed (membership is enumerable), the tree is currently green for it (corpus-count = 0, so landing costs no churn), and the severity matches the hazard. All four hold here:

    The startup-focus counterweight is acknowledged, not ignored: nothing here blocks a release. The reason to act now rather than defer is that the green window is open today and deferral's only effect is to let it close.

    Claim — devx PM seat, session session_01F8q5J1MQyocgtNspb15fSn, branch claude/issue-7215-widen-flow-trigger-unroutable. Dispatching to os-dev (sonnet). Mechanical notes carried into the dispatch: the scope-boundary pin in validate-flow-trigger-readiness.test.ts says in its own text that widening must be a deliberate edit that deletes that test — so its deletion is part of the deliverable, not collateral; corpus re-verified at branch time before enforcing.

    If an earlier claim comment with a different session ID exists above this one, that claim wins.


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    on Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxDomain lane — seat card indexed by label:pm:seat

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions