Skip to content

Commit b267fcd

Browse files
GHGuideclaude
andcommitted
fix: add CI (ubuntu+macos matrix) + wire POLYLANE_CYCLE so ledger gates work
Conversation self-audit found two concrete holes: - No CI on a public repo with 446 tests (run only manually -> rot). Add GitHub Actions running shellcheck + tests/run.sh on a ubuntu+macOS MATRIX — macOS (BSD coreutils) catches the class of bug the corpus head -n 0 fix just addressed, which GNU/ubuntu silently accepts. - The runner's ledger row used ${POLYLANE_CYCLE:-0} but the SKILL launch never exported POLYLANE_CYCLE -> every row was cycle=0 -> ledger trend/roi (which compare consecutive cycles) silently no-op'd. Export POLYLANE_CYCLE=<N> at launch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent d69e94d commit b267fcd

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: ci
2+
on:
3+
push:
4+
branches: [main]
5+
pull_request:
6+
jobs:
7+
test:
8+
# matrix over BOTH coreutils families — macOS (BSD) catches bugs like the
9+
# `head -n 0` corpus bug that GNU/ubuntu silently accepts.
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
os: [ubuntu-latest, macos-latest]
14+
runs-on: ${{ matrix.os }}
15+
steps:
16+
- uses: actions/checkout@v4
17+
- name: Install deps (Linux)
18+
if: runner.os == 'Linux'
19+
run: sudo apt-get update && sudo apt-get install -y jq shellcheck tmux
20+
- name: Install deps (macOS)
21+
if: runner.os == 'macOS'
22+
run: brew install jq shellcheck tmux
23+
- name: Shellcheck all helpers
24+
run: |
25+
rc=0
26+
for f in bin/*.sh; do shellcheck -S warning "$f" || rc=1; done
27+
exit $rc
28+
- name: Run the test suite
29+
run: tests/run.sh

SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ with `--resume` (DONE lanes skipped), drains safe approval prompts itself (so a
311311
runner no longer blocks lanes), parks+notifies critical ones, and writes a heartbeat:
312312
```
313313
BIN="$(dirname "$(command -v polylane-run.sh || echo "$HOME/.claude/skills/polylane/bin/x")")"
314-
POLYLANE_SESSION="polylane-c<N>" "$BIN/polylane-supervisor.sh" .polylane/run.json
314+
POLYLANE_CYCLE=<N> POLYLANE_SESSION="polylane-c<N>" "$BIN/polylane-supervisor.sh" .polylane/run.json
315315
```
316316
Print the tmux watch commands in chat (`tmux attach -t polylane-c<N>`), then wait
317317
for the finish notification. **Read run state through the state surface, never by

0 commit comments

Comments
 (0)