Completion
Two related concepts: whether requirements are currently satisfied, and whether a completion transition was recorded in storage.
requirementsSatisfied
True when every applicable required item is complete or inapplicable. Can become true without a new onboard.flow_completed when an incomplete item becomes inapplicable (e.g. fact flip).
completionTransitionRecorded
Stored flag set once when onboard.flow_completed is accepted. Copy-only config changes across revisions do not emit a second completion event.
Empty / optional only
A flow with no applicable required items does not auto-complete. Optional-only remaining steps show a banner, not 100% completion.
Inapplicable shrink
When eligibility or facts hide required items, requirements may become satisfied without retroactively firing flow_completed if completion was never recorded.