Files
KoalaSync/AGENTS.md
T
2026-08-25 03:01:28 +02:00

41 lines
2.0 KiB
Markdown

# Repository agent release rules
These rules are mandatory for every automated agent working in this repository.
## Before changing code
- Run `git pull --ff-only` before starting.
- Inspect branch, remote tracking, dirty state, and relevant release workflow.
- Preserve unrelated work and stage only reviewed paths.
## Before claiming a release is ready
- Never treat a host macOS browser run as GitHub Linux parity.
- On a release branch, commit all intended changes and run:
`npm run release:gate -- MAJOR.MINOR.PATCH --candidate`
- This command must use the official lockfile-matched Playwright image with
`linux/amd64`, Ubuntu Noble, and `CI=1`; it must run clean installs, full
verification, all browser E2E tests, the relay image build, and health smoke.
- A failed, interrupted, ARM64, skipped, or partial run is not a passing gate.
- All OCI image references must use the canonical lowercase
`ghcr.io/shik3i/koalasync`; never construct Docker references from the
case-preserving `${{ github.repository }}` value. The local gate enforces this.
- Do not say "release-ready" until the candidate gate and PR required checks
are green for the exact commit.
## Before pushing a release tag
- Merge through a PR; resolve every review thread.
- Fast-forward local `main` and confirm a clean tree at exact `origin/main`.
- Wait for `verify`, `node20`, and `e2e` on the merged `main` commit.
- Run the final gate: `npm run release:gate -- MAJOR.MINOR.PATCH`.
- Create an annotated tag only after the final gate succeeds.
- Confirm tag target equals `origin/main`, then push the tag once.
- Monitor the complete release workflow. Distinguish tag push, CI, draft assets,
container publication, attestations, and public GitHub Release status.
- Never call a release complete while any job is pending, failed, or skipped.
The final gate deliberately simulates the release workflow seeing its own
in-progress `preflight` check. This is a permanent regression guard for the
failed first `v3.1.5` release attempt.