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. 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

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

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions