Skip to content

Optimize pipeline performance and restructure CI workflows - #40

Merged
iamr8 merged 7 commits into
mainfrom
develop
Aug 7, 2026
Merged

Optimize pipeline performance and restructure CI workflows#40
iamr8 merged 7 commits into
mainfrom
develop

Conversation

@iamr8

@iamr8 iamr8 commented Aug 7, 2026

Copy link
Copy Markdown
Owner

No description provided.

iamr8 and others added 7 commits August 7, 2026 13:42
Profiling a full `apps -a` run (239 apps) showed the pipeline was dominated
by a single blocking subprocess and a handful of avoidable serial paths.

- Mac software update: `softwareupdate --list --all` blocked the entire scan
  for ~48s hitting Apple's servers; switch to `--no-scan` (reads macOS's own
  cached scan, effectively instant). Single biggest win.
- CheckOrchestrator: scanner check groups ran strictly serially despite the
  docs claiming concurrency; fan them out through the existing bounded-channel
  WhenAll helper. Counting/mutation stays on the single reader.
- Mac cask fallback: replaced O(N²) unresolved-set recomputation with HashSet
  lookups and raised the homebrew-api client concurrency 4 → 12.
- ProcessRunner: subprocess cap 6 → max(6, ProcessorCount); child work is
  I/O-bound so it under-utilised multi-core machines.
- ScannerHelper.FindExecutable: memoized (was re-walking PATH + 9 probes per call).
- GoScanner: `go version -m` now runs concurrently per binary instead of serially.
- PlistReader: dropped a dead per-plist MemoryStream allocation; added a
  fast-path for the common `_MASReceipt` location to avoid a full recursive
  bundle walk per app.
- ProjectManifestFinder: parse each `.gitignore` once and cache it instead of
  re-reading per subdirectory.

Output unchanged (239 discovered, 244 checked, 9 updates). All 286 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… releases

- Adopt develop (integration) / main (release) branch model; retarget all
  workflow branch filters and dependabot to develop.
- Rewrite release.yml as check -> test -> build -> github-release: VERSION
  file is the source of truth, release fails if VERSION is not newer than the
  highest published release. Drop tag trigger and delete tag.yml.
- Split CodeQL into codeql.yml with a security-and-quality config; keep Trivy,
  dependency-check and SBOM.
- Add ReSharper InspectCode advisory workflow.
- Add concurrency groups, bump checkout@v7 / setup-dotnet@v6, move
  allowed-licenses.json into .github/.
- Update CLAUDE.md versioning docs for the new flow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@iamr8
iamr8 merged commit d967e71 into main Aug 7, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant