#869 Point-1 install-guard follow-ups (Windows .ps1 / --sync-only bypass / finalize.ts opt-out-warn) #882

Open
opened 2026-07-23 18:49:57 +00:00 by jason.woltje · 1 comment
Owner

Non-blocking follow-ups surfaced by the C2 (#879, install-ordering guard) independent review. Track before closing the #869 umbrella. Two are Point-2 (web1 activation-release) preconditions per Mos.

(a) mosaic-link-runtime-assets.ps1 (Windows) is NOT guarded — settings.json (with the enforcement hooks baked in) is still copied unconditionally on Windows, so the wired-but-inactive brick risk that C2 closes on POSIX remains on Windows hosts. C2 was POSIX/TS-only (parallels the PR-B PowerShell-parity deferral). MATERIALITY: if ANY fleet host is Windows this MUST be closed before Point-2 activation; if the fleet is POSIX-only (web1 is Linux) it is a lower-priority coverage card, still tracked. [Point-2 precondition if Windows]

(b) 'mosaic update --sync-only' (MOSAIC_SYNC_ONLY=1) early-exits before the post-install step that runs the guard, so the guard never re-evaluates settings.json in sync-only mode — a real bypass that could re-introduce the wired-but-inactive state the guard exists to prevent. Pre-existing behavior, not a C2 regression. MATERIALITY: Point-2 IS an update path, so this must be RESOLVED or explicitly risk-accepted before Point-2. [Point-2 precondition]

(c) finalize.ts surfaces the guard's stderr only on non-zero exit, so the opt-out WARNING (--allow-inactive-enforcement, which exits 0 with a console.warn) would be silently dropped IF that flag is ever threaded through the wizard. Currently UNREACHABLE (finalize.ts never passes the flag). Low priority — track and note; add stderr-on-logged-output surfacing to finalize.ts if the wizard ever exposes the opt-out. [low]

Part of #869 (Point-1). Owner: MS-LEAD; Point-2 gating decided by Mos with Jason.

Non-blocking follow-ups surfaced by the C2 (#879, install-ordering guard) independent review. Track before closing the #869 umbrella. Two are Point-2 (web1 activation-release) preconditions per Mos. (a) mosaic-link-runtime-assets.ps1 (Windows) is NOT guarded — settings.json (with the enforcement hooks baked in) is still copied unconditionally on Windows, so the wired-but-inactive brick risk that C2 closes on POSIX remains on Windows hosts. C2 was POSIX/TS-only (parallels the PR-B PowerShell-parity deferral). MATERIALITY: if ANY fleet host is Windows this MUST be closed before Point-2 activation; if the fleet is POSIX-only (web1 is Linux) it is a lower-priority coverage card, still tracked. [Point-2 precondition if Windows] (b) 'mosaic update --sync-only' (MOSAIC_SYNC_ONLY=1) early-exits before the post-install step that runs the guard, so the guard never re-evaluates settings.json in sync-only mode — a real bypass that could re-introduce the wired-but-inactive state the guard exists to prevent. Pre-existing behavior, not a C2 regression. MATERIALITY: Point-2 IS an update path, so this must be RESOLVED or explicitly risk-accepted before Point-2. [Point-2 precondition] (c) finalize.ts surfaces the guard's stderr only on non-zero exit, so the opt-out WARNING (--allow-inactive-enforcement, which exits 0 with a console.warn) would be silently dropped IF that flag is ever threaded through the wizard. Currently UNREACHABLE (finalize.ts never passes the flag). Low priority — track and note; add stderr-on-logged-output surfacing to finalize.ts if the wizard ever exposes the opt-out. [low] Part of #869 (Point-1). Owner: MS-LEAD; Point-2 gating decided by Mos with Jason.
Author
Owner

DISPOSITION (Mos, 2026-07-23, fleet-composition confirmed): the mosaic agent fleet is POSIX-only — web1 is Linux; agents + the sb-it installer/field-agent run Linux/Mac bash; NO Windows host runs mosaic install.

  • (a) Windows mosaic-link-runtime-assets.ps1 unguarded → lower-priority COVERAGE card, NOT a hard Point-2 precondition. Revisit only if a Windows operator/host is ever added to the fleet.
  • (b) mosaic update --sync-only bypass → REAL Point-2 (web1 activation-release) PRECONDITION — must be RESOLVED or explicit-risk-accepted before Point-2 activation, since Point-2 IS an update path. Mos weighs this with Jason at the Point-2 gate.
  • (c) finalize.ts opt-out-warning surfacing → low, track-and-note (currently unreachable).

Net: Point-2 preconditions from this issue = (b) resolved-or-accepted; (a) N/A while fleet is POSIX-only.

DISPOSITION (Mos, 2026-07-23, fleet-composition confirmed): the mosaic agent fleet is POSIX-only — web1 is Linux; agents + the sb-it installer/field-agent run Linux/Mac bash; NO Windows host runs mosaic install. - (a) Windows mosaic-link-runtime-assets.ps1 unguarded → **lower-priority COVERAGE card, NOT a hard Point-2 precondition.** Revisit only if a Windows operator/host is ever added to the fleet. - (b) `mosaic update --sync-only` bypass → **REAL Point-2 (web1 activation-release) PRECONDITION** — must be RESOLVED or explicit-risk-accepted before Point-2 activation, since Point-2 IS an update path. Mos weighs this with Jason at the Point-2 gate. - (c) finalize.ts opt-out-warning surfacing → low, track-and-note (currently unreachable). Net: Point-2 preconditions from this issue = (b) resolved-or-accepted; (a) N/A while fleet is POSIX-only.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#882