mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 22:48:57 +02:00
Both sides shipped overlapping test-infra work in parallel; resolutions compose intent rather than picking sides: - free-tests.yml (both added): keep this branch's lane (canonical strict-parallel runner, secretless, plain runner, ~2min) over main's per-file-serial container loop (45min budget, hand-curated skip list, needs GITHUB_TOKEN); ported main's git safe.directory insight. - Dockerfile.ci Bun install: main discovered the installer IGNORES the BUN_VERSION env var (the old form silently installed latest) — main's arg-form mechanism + this branch's 1.3.13 target. - parity baseline: both sides rebased after hitting the same silent drift; adopted main's v1.64.1.0 union-normalized fixture and dropped this branch's interim v1.64.0.0 capture. carve-guards caps: main's tighter re-ratchets win (all four). - touchfiles: kept this branch's three-file facade split; ported main's pure-data removals (dead sidebar-agent entries, spec judge entry, ship-idempotency) into touchfiles-data.ts. - ship-idempotency SDK variant: main deliberately removed it as redundant with the real-PTY test; adopted — dropped this branch's rehomed copy and its periodic matrix row (the zombie-monolith deletion stands; coverage-audit + triage rehomes verified untouched by main). - e2e-tier-alignment: taught the new parent-mapper hard check main's consolidated describeE2ETier()/e2eTierEnabled() self-gate shapes (the helper's header names this file as a required recognizer). - browse/test/compare-board.test.ts: quarantined behind GSTACK_COMPARE_BOARD_TESTS=1 — all 16 tests fail identically on origin/main solo on dev machines (blame protocol receipts in-file); main's own CI lane skip-lists it. An always-red file would block every PR now that free-tests is a required check. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
52 lines
2.3 KiB
YAML
52 lines
2.3 KiB
YAML
name: Skill Docs Freshness
|
|
# push is main-only: a push to a PR branch already fires the pull_request run;
|
|
# the unrestricted push trigger double-ran every PR commit.
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
# Cancel superseded runs for the same branch (matches evals.yml,
|
|
# windows-free-tests.yml, etc.). head_ref is set on pull_request; ref_name is
|
|
# the fallback for push so a rapid push series doesn't pile up stale runs.
|
|
concurrency:
|
|
group: skill-docs-${{ github.head_ref || github.ref_name }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
check-freshness:
|
|
runs-on: ubicloud-standard-2
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: oven-sh/setup-bun@v2
|
|
- run: bun install
|
|
# One generation pass for ALL 10 hosts. gen-skill-docs --host all
|
|
# hard-fails on any per-host generation error (scripts/gen-skill-docs.ts
|
|
# aggregates failures and exits non-zero), so every host is gated on
|
|
# "generates cleanly." Known limitation, on purpose: the 9 gitignored
|
|
# host outputs (.agents/, .factory/, .kiro/, ...) are NOT byte-freshness
|
|
# checked — `git diff` on ignored untracked paths is always empty (the
|
|
# previous per-host `git diff -- .agents/` gates could never fail for
|
|
# exactly that reason). Byte-freshness is enforced only for tracked
|
|
# output (the Claude SKILL.md files), which the two steps below cover.
|
|
- name: Generate all host skill docs
|
|
run: bun run gen:skill-docs --host all
|
|
- name: Verify tracked skill docs are fresh
|
|
run: |
|
|
git diff --exit-code || {
|
|
echo "Generated SKILL.md files are stale. Run: bun run gen:skill-docs --host all"
|
|
exit 1
|
|
}
|
|
# git diff misses NEW untracked files (e.g. a freshly added skill whose
|
|
# generated SKILL.md was never committed). Fail on any untracked stray
|
|
# the generator produced outside the gitignored host dirs.
|
|
- name: Verify no untracked generated files
|
|
run: |
|
|
STRAYS=$(git status --porcelain --untracked-files=all | grep '^??' || true)
|
|
if [ -n "$STRAYS" ]; then
|
|
echo "Generator produced untracked files that are neither committed nor gitignored:"
|
|
echo "$STRAYS"
|
|
echo "Commit them (bun run gen:skill-docs --host all) or gitignore them."
|
|
exit 1
|
|
fi
|