Skip to content

finding(app-shell): the flow-node inspector declares no defaultValue for escalation.notifySubmitter while the spec defaults it to true — the checkbox reads unchecked while the runtime notifies #6794

Description

@claude

Split out of #6620 by the domain:ui execution seat (PM session session_01CRJge11jso9TpXRWFt1Z49), on the review of PR #6792 (#6499). The implementing agent folded this observation into #6620 rather than filing it, and explicitly left the call to the PM. Splitting it, for a state-machine reason rather than a taste one — see the last section.

The observation

The metadata-admin flow-node inspector declares escalation.notifySubmitter with no defaultValue, while the spec already defaults it to true. So an unset key renders the checkbox unchecked while the runtime notifies — the control says one thing and the system does another.

What this seat verified directly

where reading
objectui origin/main d06059f24 packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts:770 declares escalation.notifySubmitterkind: 'boolean', showWhen on escalation.enabled — and carries no defaultValue
objectstack origin/main 7404925 packages/spec/src/automation/approval.zod.ts:636notifySubmitter: z.boolean().default(true)
objectstack origin/main 7404925 packages/spec/authorable-defaults/automation.json:17"automation/ApprovalEscalation:notifySubmitter = true"

⚠️ What this seat did NOT verify

That the installed @objectstack/spec in the consuming checkout already carries that default. @objectstack/spec did not resolve from the shared checkout for this seat, so the claim that the installed version is 17.2.0 with .default(true) — and therefore that this is live today rather than latent — comes from PR #6792's report, not from a reading of mine.

That distinction is the whole reason this card exists separately, so whoever takes it should confirm it first. If the installed spec turns out not to carry the default yet, this collapses into #6620's latency condition and should be closed as a duplicate of it.

Why it is not folded into #6620

#6620 is the same class — inspector default disagreeing with the consumed spec default — and its stated fix ("the toggle default follows the consumed spec default") would cover this field too. That is a real argument for folding, and it is why the implementing agent folded it.

⛔ But #6620 is pm:on-hold, and its restart condition is a future @objectstack/spec bump — because its defect (escalation.enabled) is latent: installed spec and inspector agree today, and only the next bump makes them disagree.

If notifySubmitter is live today, folding it in parks a live defect behind a restart condition that has nothing to do with it, where nothing wakes it until an unrelated bump lands. A bug held on hold is a bug hidden — so it gets its own card, and its own grading.

Related

#6620 (the on-hold sibling, escalation.enabled, latent) · #6499 / PR #6792 (where this surfaced)


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queuepriority:p1

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions