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.
Source: PR #1434 (
wizard-sync-once), head5bcc7fd599b731077726646e0d38c91ec27ad41c.Severity: low (the "not covered, deliberately" clause of round 2 review finding 1).
Where:
src/core/cli/wizard/sync_now.js:106-114andsrc/core/commands/sync.js:93-96.Observed: a
hyp syncchild 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 andresult.code === 0, so the step writes the shortwriteStillHeldrestatement and reportssync-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 thewizard.finishsync_nowattribute inflates the declined rate that LLP 0203#consequencesnames 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'ssync_nowvalue list updated together), or an LLP note records that the two outcomes are deliberately conflated and why;npm testandnpm run typecheckstay green.Update at head
4859a04055254570154c0d6f8859ec648ad2633c(triage re-run afterwizard-sync-oncemerged master): re-verified against the merged tree; the conflation is unchanged. A still-held run whose child exited 0 takeswriteStillHeldand returnssync-declined(src/core/cli/wizard/sync_now.js:100-114), and an empty sink set still printsno sinks instantiated; nothing to doand exits 0 (src/core/commands/sync.js:93-96). Severity, deferral rationale, and acceptance condition unchanged.