name: hive-mind-cli cross-platform install + smoke # Wave 1 cleanup brief 2026-04-29 §3.5 — windows-latest CI regression test. # Verifies that `npm install -g @waggle/hive-mind-cli` followed by `hive-mind-cli doctor` # works without ENOENT, quarantine, or manual debug on Windows + macOS + Linux. # # Acceptance per feedback_memory_install_dead_simple binding rule: # - All three OS matrix cells PASS green # - Zero manual intervention required # - First MCP-style tool call (the doctor smoke test) succeeds in <60s on: push: branches: [main, 'feature/**'] paths: - 'packages/hive-mind-cli/**' - 'packages/hive-mind-shim-core/**' - 'packages/hive-mind-core/**' - 'packages/hive-mind-mcp-server/**' - 'packages/hive-mind-wiki-compiler/**' - 'packages/hive-mind-hooks-claude-code/**' - '.github/workflows/hive-mind-cli-cross-platform.yml' pull_request: branches: [main] paths: - 'packages/hive-mind-cli/**' - 'packages/hive-mind-shim-core/**' - 'packages/hive-mind-core/**' jobs: install-and-smoke: name: ${{ matrix.os }} install + smoke runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] node-version: ['20.x'] steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: Install workspace deps run: npm install # hive-mind-core imports @waggle/shared, whose dist/ is gitignored and so # absent on a clean checkout. hive-mind-core/tsconfig declares no project # reference to it (the OSS subtree-split mirrors that tsconfig, so a # ../shared reference would dangle in the export root), so `tsc --build` # won't bootstrap it. Build shared first — same as ci.yml/tauri-build-pr.yml. - name: Build @waggle/shared (hive-mind-core dep) run: cd packages/shared && npx tsc --build - name: Build hive-mind-core (substrate) run: cd packages/hive-mind-core && npx tsc --build - name: Build hive-mind-wiki-compiler run: cd packages/hive-mind-wiki-compiler && npx tsc --build - name: Build hive-mind-mcp-server run: cd packages/hive-mind-mcp-server && npx tsc --build - name: Build hive-mind-cli run: cd packages/hive-mind-cli && npx tsc --build - name: Run postinstall (bundles fix on win32, no-op POSIX) run: node packages/hive-mind-cli/postinstall.cjs - name: Init hive-mind data dir (scaffold personal.mind for the smoke) run: node packages/hive-mind-cli/dist/index.js init env: HIVE_MIND_DATA_DIR: ${{ runner.temp }}/waggle-ci-home - name: Smoke test — hive-mind-cli doctor (independent of upstream hook) run: node packages/hive-mind-cli/dist/index.js doctor env: # doctor + init resolve the mind via HIVE_MIND_DATA_DIR (the CLI never # reads WAGGLE_HOME — that prior env was a no-op). Isolate to a CI temp # dir; init above scaffolds personal.mind there so doctor finds it. HIVE_MIND_DATA_DIR: ${{ runner.temp }}/waggle-ci-home - name: Doctor smoke result must be green (no quarantine, no ENOENT) run: | # If we got here, doctor exited 0 — green. Re-emit a confirmation marker # so log scrapers see the success line clearly. echo "::notice title=hive-mind-cli doctor passed::Cross-platform install + smoke verified on ${{ matrix.os }}" shell: bash acceptance: name: Wave 1 acceptance gate runs-on: ubuntu-latest needs: install-and-smoke steps: - name: All matrix cells passed run: echo "Wave 1 dead-simple acceptance criteria met across windows-latest + macos-latest + ubuntu-latest."