Skip to content

Wizard sync-now step counts a no-sinks exit-0 hyp sync child as a user decline #1437

Description

@philcunliffe

Source: PR #1434 (wizard-sync-once), head 5bcc7fd599b731077726646e0d38c91ec27ad41c.
Severity: low (the "not covered, deliberately" clause of round 2 review finding 1).
Where: src/core/cli/wizard/sync_now.js:106-114 and src/core/commands/sync.js:93-96.

Observed: a hyp sync child that exits 0 without ever rendering its plan (no sinks instantiated; nothing to do, sync.js:93-96, return 0) is indistinguishable in the wizard from a user who read the plan and declined: the marker is still held and result.code === 0, so the step writes the short writeStillHeld restatement and reports sync-declined. On that run the wizard's privacy narration had already stood down, so the screen misses the review hint and the imported-history fact, and the wizard.finish sync_now attribute inflates the declined rate that LLP 0203 #consequences names as the window-sizing measurement.

Why deferring is safe: the direction of the mistake is conservative - the hold stays held and nothing is sent; only copy and one telemetry attribute are off. On a machine whose config the wizard just wrote, an empty sink set is not an expected state. Distinguishing it needs a new signal from the child (a distinct exit code or marker), which the PR review judged more than that PR should carry.

Acceptance: either the no-sinks exit-0 outcome is distinguishable from a decline (its own reason in WizardSyncNowResult, the full held statement printed, a test covering it, and LLP 0203's sync_now value list updated together), or an LLP note records that the two outcomes are deliberately conflated and why; npm test and npm run typecheck stay green.


Update at head 4859a04055254570154c0d6f8859ec648ad2633c (triage re-run after wizard-sync-once merged master): re-verified against the merged tree; the conflation is unchanged. A still-held run whose child exited 0 takes writeStillHeld and returns sync-declined (src/core/cli/wizard/sync_now.js:100-114), and an empty sink set still prints no sinks instantiated; nothing to do and exits 0 (src/core/commands/sync.js:93-96). Severity, deferral rationale, and acceptance condition unchanged.

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

    Labels

    neutral:fixDelegate this issue to neutral for an autonomous fix attempt (reproduce -> fix -> PR)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions