diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a2af62793..1c145b637 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -191,7 +191,8 @@ the new defaults. | Run one free test file while repairing | `bun test ` | Free, seconds | Never bare `bun test` for the suite | | Run full free acceptance before publishing | `bun run test` | Free, a few minutes | Bun 1.4.2 | | Run the full free suite from a small machine | `bun run test:ubicloud` | Free suite on a billed 16-vCPU VM, about 5 minutes | `UBICLOUD_API_KEY`, `UBI_OWNER` | -| Clear pregate's test tier on a machine under 8 cores ([remote gate](docs/pregate.md#remote-gate)) | `gstack-pregate --stage tests --remote --spend-cap 2 --timeout 2700 --allow-repo-commands` (same command keyed or keyless) | Keyed: one billed 16-vCPU VM, about 7 minutes and $0.06 for the whole free tier, worst case $0.38; keyless: free, local parallel shards, practical for small selections only (98 files took 103 s on 4 cores) | Keyed: `UBICLOUD_API_KEY`, `UBI_OWNER`; keyless: nothing | +| Clear pregate's test tier on a machine under 8 cores from CI, the default on gstack ([CI carry](docs/pregate.md#ci-carry)) | push, `gstack-ci-carry wait --base main`, then `gstack-pregate --allow-repo-commands` (a branch behind main first runs `gh workflow run free-tests.yml --ref `) | Free; reuses the green Free Tests run at your pushed tree | Pushed branch, `gh` | +| Clear pregate's test tier on a machine under 8 cores when no CI run covers your tree ([remote gate](docs/pregate.md#remote-gate), opt-in) | `gstack-pregate --stage tests --remote --spend-cap 2 --timeout 2700 --allow-repo-commands` (same command keyed or keyless) | Keyed: one billed 16-vCPU VM, about 7 minutes and $0.06 for the whole free tier, worst case $0.38; keyless: free, local parallel shards, practical for small selections only (98 files took 103 s on 4 cores) | Keyed: `UBICLOUD_API_KEY`, `UBI_OWNER`; keyless: nothing | | Run the curated Windows-safe subset | `bun run test:windows` (CI: six `windows-latest` jobs, nightly on main; PRs run the shorter `windows-smoke` check) | Free | Windows, Git Bash | | Refresh the Windows duration seed | `gh workflow run windows-free-tests.yml --ref -f record_durations=true`, then commit the `free-test-durations-windows` artifact | Free CI runners | Pushed branch, `gh` with workflow rights | | Run a native Windows qualification campaign | `gh workflow run native-qualification.yml --ref -f mode=` ([modes](docs/TESTING_INTERNALS.md#windows-free-lane)) | Free CI runners | Pushed branch, `gh` with workflow rights | diff --git a/docs/pregate.md b/docs/pregate.md index 326fb61ac..aaaa17e2e 100644 --- a/docs/pregate.md +++ b/docs/pregate.md @@ -174,7 +174,7 @@ The list lives in its own file, not in `pregate.json`, because older pregate rea ``` gstack-pregate [--stage preflight|tests|all] [--only ] [--allow-repo-commands] [--policy-from base|head] - [--timeout ] [--stall-timeout ] [--remote --spend-cap ] [--run ] [--from-run ] [--explain] [--json] + [--timeout ] [--stall-timeout ] [--remote --spend-cap ] [--run ] [--from-run ] [--no-ci-carry] [--explain] [--json] gstack-pregate verify | clear --remote --run-url | lanes | validate | init ``` diff --git a/docs/recommended-harness.md b/docs/recommended-harness.md index 467b5a1c0..3226b492e 100644 --- a/docs/recommended-harness.md +++ b/docs/recommended-harness.md @@ -139,7 +139,9 @@ harness-generic; only the thread and the PR tool are Capy. default branch. 4. **Run `/ship` unattended** with the `GSTACK_LAUNCH` assignments exported: it runs the pregate (on a machine under 8 cores the test tier - needs `gstack-pregate --stage tests --remote`, about $0.06 on a Ubicloud VM + clears from a verified CI run at the pushed tree when the base declares + `remote_gate_runs` ([CI carry](pregate.md#ci-carry)); otherwise it needs + `gstack-pregate --stage tests --remote`, about $0.06 on a Ubicloud VM or free locally for small selections), both reviews, the gate-integrity list, the docs audit, and writes the ship receipt into the PR body (`gstack-ship-receipt write --pr `). With `queue_mode: