Skip to content

fix(qa): contain Sparkle smoke artifacts within owned run directories - #2254

Merged
r3dbars merged 2 commits into
mainfrom
fix/oct17-sparkle-output-containment
Oct 18, 2026
Merged

r3dbars merged 2 commits into
mainfrom
fix/oct17-sparkle-output-containment

Conversation

@r3dbars

@r3dbars r3dbars commented Oct 17, 2026

Copy link
Copy Markdown
Owner

Fix

Fixes #2250. Builds on #2218. Validate each owned per-run directory component before descending/creating it; reject symlinked reports/logs and escaping run/state identifiers before cleanup, writes or launch. Preserve concurrent-run isolation and the explicit output root's supported canonical alias.

Evidence

  • Independent full repair review against original Isolate Sparkle smoke launch reports per run #2218 head: no blocking finding.
  • Focused Sparkle package suite: 9 tests PASS, independently rerun.
  • Deliberately restoring the unsafe guard makes two regressions fail with five assertions; restoring the repair returns all nine tests green.
  • Synthetic fake apps and test-owned temporary directories only; no real app, capture, settings or publication.
  • Static guards and diff check PASS. Final combined gates and applicable exact-head CI are pending; remains draft until complete.

This is bounded harness containment, not a claim of race-free behavior under a hostile concurrent filesystem swap. Native account-isolation guard remains unchanged.

Each sparkle-update-smoke run now writes its launch report, app log and isolated home under <output>/runs/<runID>/<state>, so two overlapping runs on the same output can no longer delete or consume each other's report. Adds a test with two runs sharing one output.

Fixes #2157
Reject symlinked run ancestors and launch artifacts before creating or launching scenario state. Add synthetic regressions for every directory level and traversal inputs.
@r3dbars r3dbars added bug Something isn't working needs owner review Owner must review before merge labels Oct 17, 2026
@r3dbars

r3dbars commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

Final review: the complete repair diff was independently approved, its original defect reproduced, and its regression tests passed. Exact repair-head CI is green. Combined candidate 75488fb passed mapped checks, fresh full deterministic QA/build and safe synthetic paste verification; see #2255 for evidence and the explicit native, thin-packaging and release limitations. Ready for the owner-authorized ancestry-preserving integration; no release or live hardware clearance is implied.

@r3dbars
r3dbars marked this pull request as ready for review October 18, 2026 00:24
@r3dbars
r3dbars merged commit 1ef641e into main Oct 18, 2026
11 checks passed
@r3dbars
r3dbars deleted the fix/oct17-sparkle-output-containment branch October 18, 2026 00:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working needs owner review Owner must review before merge risk:high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reject ancestor symlinks in per-run Sparkle smoke output

1 participant