Skip to content

Merge pull request #101 from CodeWithJuber/claude/docs-impact-graph #36

Merge pull request #101 from CodeWithJuber/claude/docs-impact-graph

Merge pull request #101 from CodeWithJuber/claude/docs-impact-graph #36

Workflow file for this run

# 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