mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 22:45:02 +01:00
* verify: add /verify skill and gstack-checks (GST-116 PR 1) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes (pass 2) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: adversarial review fixes Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: win32 NUL discard for the Go build check; unique Health Stack names (rule 23 grant) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: changelog fragment for /verify Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
88 lines
3.1 KiB
Cheetah
88 lines
3.1 KiB
Cheetah
---
|
|
name: verify
|
|
preamble-tier: 1
|
|
version: 0.1.0
|
|
description: |
|
|
Build loop while coding: run the repo's checks and the tests /ship would
|
|
pick, fix, repeat until green. Never green when no test covers a change.
|
|
Use when asked to "verify", "check my work", "run the checks", "make it
|
|
green", or after each change before /ship. (gstack)
|
|
triggers:
|
|
- verify my change
|
|
- run the checks
|
|
- make the tests pass
|
|
- check my work before ship
|
|
allowed-tools:
|
|
- Bash
|
|
- Read
|
|
- Edit
|
|
- Grep
|
|
- Glob
|
|
- AskUserQuestion
|
|
---
|
|
|
|
{{PREAMBLE}}
|
|
|
|
# /verify — build, check, fix, repeat
|
|
|
|
Use this while building, before /ship. It runs checks and fixes code. It never
|
|
reviews, bumps a version, edits CHANGELOG, pushes, or opens a PR: that is /ship.
|
|
|
|
## 1. See what will run
|
|
|
|
Each Bash call is a fresh shell, so every block sets `C` again.
|
|
|
|
```bash
|
|
C="{{RUNTIME_ROOT}}/bin/gstack-checks"; "$C" detect
|
|
```
|
|
|
|
`detect` reads files only. It lists each check with its source, the pregate
|
|
test selection, and `TRUST trusted|untrusted`. `CHECKS: none` means the repo declares no check,
|
|
pregate policy or test file: there is nothing to run, so say so and stop. Never invent a
|
|
command the repo does not declare.
|
|
|
|
When `untrusted`: in an interactive session, show the user the listed commands
|
|
and ask before `"$C" trust`. In a session launched to run repo commands, pass
|
|
`--allow-repo-commands` to `run` instead. Never trust without one of the two.
|
|
|
|
## 2. Loop: run, fix, run
|
|
|
|
```bash
|
|
C="{{RUNTIME_ROOT}}/bin/gstack-checks"; "$C" run
|
|
```
|
|
|
|
One line per check: `CHECK <name> <VERDICT> <secs>`, at most 40 failing lines
|
|
and a log path. Exit 0 is green; only `PASS` is green.
|
|
|
|
- `FAIL`: fix the code under test. A changed source file breaking an untouched
|
|
test is your bug, not a pre-existing one. Call a red "possibly pre-existing"
|
|
only if it was already red on your first `run` this session, before any edit.
|
|
- `UNMAPPED`: no test covers a touched file. Add a test that does, or map it in
|
|
`.gstack/pregate.json`. `ZERO_RUN`: the selected tests ran nothing; fix the
|
|
selector or the test file. `TOO_BROAD`: the change selects over 300 test
|
|
files; leave them to /ship's pregate and say so.
|
|
- `ENV` or `TIMEOUT` (exit 2): a missing tool, service, secret or network.
|
|
Report it with the log line; do not fix the environment or work around it.
|
|
A `FAIL` whose own error says a service, secret or env var is missing is
|
|
the same: report it, do not stub or skip it.
|
|
- Rerun one check with `"$C" run --only <name>` while fixing it, then a full
|
|
`run` before you stop.
|
|
|
|
Never weaken, skip, delete or edit a test, a checker config or a package.json
|
|
script to get green.
|
|
|
|
Stop after 5 runs, when the same failure comes back twice after a fix, or on an
|
|
`ENV`/`TIMEOUT`. Report what is still red and why. A stubborn red in your own
|
|
change goes to /investigate.
|
|
|
|
## 3. Hand off
|
|
|
|
```bash
|
|
C="{{RUNTIME_ROOT}}/bin/gstack-checks"; "$C" status
|
|
```
|
|
|
|
`status` reruns nothing. Only `READY_FOR_SHIP tree=<tree> ... not_covered=<lanes>`
|
|
(exit 0) means green at this exact tree. Print that line, name any
|
|
`not_covered` lanes (platform tests /ship's pregate owns), and stop with
|
|
"ready for /ship". `NOT_READY` means run again; never claim green from it.
|