Skip to content

Respect already-running stages and date check results in Settings #927

Closed

Description

@Mjones13

The Install Status investigation for #872 found separate Settings consumers that do not fully use the new update-state evidence. This scope is explicitly deferred from the cumulative Install Status repair.

Evidence at source 5122708:

  • The web Install button in apps/web/src/jones/updates/JonesBuildStatus.tsx and the shared jonesInstallRefusal path in packages/client-runtime/src/jones/updates/jonesUpdates.ts do not consume stagedAlreadyRunning. Updating targetStatus.ts alone will not correct the action.
  • Check-result copy from packages/client-runtime/src/jones/updates/targetStatus.ts is undated in web and mobile Settings controls.
  • Mobile already supplies the staged source to an exact-source resolver that rejects an identical installed SHA. Its behavior differs from web; tree-only matching is not established by this investigation.
  • Actual host behavior when asked to install an already-running stage remains unverified.

Follow-up acceptance:

  • Verify and align the visible Settings Install gate and its execution-time refusal with authoritative already-running evidence; preserve held/unknown/outstanding-operation gates and revalidation.
  • Show relevant check outcomes with their actual check timestamp and clear stale failures after success, including old-host optional-field fallback.
  • Exercise the real web button plus shared executor and mobile consumer, rather than claiming coverage from a shared presentation helper alone.
  • Preserve protocol compatibility and distinguish implemented source, synthetic verification and installed-host behavior.

Coordinate before edits: PR #906 changes JonesBuildStatus.tsx, its browser test and JonesUpdateControls.tsx. Do not duplicate or overwrite that work.

Related: #872; accepted scope #872 (comment) . This issue preserves deferred work and is not a claim that Settings or installed runtimes were repaired.

Activity

  1. Mjones13 commented on Nov 12, 2026

    @Mjones13
    ContributorAuthor

    Delivered in #936, normally merged as eaa07048c2ba46ac215b29fec0f1afdd7e3c86f2 from exact qualified head 2445afdba3abe13ae8b3c7d047b81931559d6962. Direct main/parent/tree readback confirmed integration after #906.

    Web and mobile visible install admission now agree with shared dispatch-time refusal for an already-running stage; modern and legacy flag-only dispatch races remain refused, with protected/unknown operations preserved. Check outcomes use their own timestamps, old-host optional-field fallbacks remain supported, and successful checks clear retained generic failures. No protocol/server changes or client tree inference.

    The composed candidate passed 206 affected tests, seven package typechecks, standard Knip and strict boundary checks. Required Check, native startup, macOS install lifecycle and native Preview passed. Source-bound manual comparison images are retained on the PR. Failed advisory server-parallel performance evidence remains tracked under #853; it is not described as qualification.

    This closes the scoped Settings source/consumer acceptance. Native mobile rendering/Intl and actual installed-host redundant-install behavior were not established; no installed app/server update or restart occurred. Broader picker/recovery acceptance remains open in #872.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions