Merge pull request #101 from CodeWithJuber/claude/docs-impact-graph #36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Evidence-tier install smoke: a REAL clean install + uninstall exercised on a throwaway | |
| # HOME, across a multi-OS matrix, so the "it installs fine" claim is proven by machine on | |
| # every push/PR — not just asserted. scripts/smoke-install.sh drives `bash install.sh` into | |
| # an isolated temp HOME (never the runner's real ~/.claude), checks the exec-form hooks | |
| # (ME-23) land with the _forge marker, proves `forge init --settings-only` is idempotent and | |
| # fails on corrupt JSON (RA-04), reverses cleanly on uninstall, and — the load-bearing bit — | |
| # installs under a path CONTAINING A SPACE and runs an installed guard from it to guard the | |
| # RA-12 / ME-23 quoting regression. The full test suite also runs here so >=20 behavior is | |
| # verified on macOS too, not only Ubuntu. | |
| # | |
| # TODO(windows-git-bash): the guards are bash scripts and install.sh uses POSIX `ln -s`, so a | |
| # Windows run needs Git Bash AND symlink-capable checkout (Developer Mode / core.symlinks). | |
| # That is fiddly enough to defer — add `windows-latest` here behind `shell: bash` with the | |
| # symlink assertions softened once someone can validate it on a real Windows runner. | |
| name: Smoke | |
| on: | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| smoke: | |
| name: Install smoke (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/[email protected] | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - run: npm ci | |
| # The clean-install / uninstall / spaces-in-path smoke, on a throwaway HOME. | |
| # This is the load-bearing cross-platform check: it passes on ubuntu AND macos. | |
| - name: Install/uninstall smoke (isolated HOME) | |
| shell: bash | |
| run: bash scripts/smoke-install.sh | |
| # Re-run the unit suite here across the matrix. ci.yml already runs it on the Node | |
| # 20/22 Linux matrix; running it on macOS too proves the >=20 behavior on APFS + | |
| # /tmp→/private/tmp, where tmpdir() is a symlink (dryRun now canonicalizes worktree | |
| # paths so per-file attribution string-matches node --test's realpath'd locations). | |
| - name: Test suite | |
| run: npm test |