You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(agents): mandatory CI pre-flight gate — no exceptions, no rationalizations
Agents keep rationalizing exceptions to the one-build-at-a-time rule and
destroying the builder. The rule now has teeth:
- copilot-instructions.md rule #9: explicit pre-flight command that MUST
return 'OK: field is clear' before any CI action. Lists every known
rationalization by name and marks each one wrong.
- ci-reference.md: pre-flight command block at top of file, not buried
- quickstart.md: pre-flight as rule #1 in Always Rules
- release-promotion.md: pre-flight as step 1 in Core Process
The command is copy-pasteable and self-describing. There is no ambiguity
about what 'cancel everything' means.
Assisted-by: Claude Sonnet 4.6 via GitHub Copilot
Copy file name to clipboardExpand all lines: docs/skills/ci-reference.md
+23Lines changed: 23 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,6 +92,29 @@ Route through `ci.md` first, then come here only when the focused skills do not
92
92
93
93
**Push is conditional:** Remote cache section is only added to `buildstream-ci.conf` if **both** are set. Without credentials, BST builds from source using local disk cache only — slower but functional. This is normal for external contributors' forks.
94
94
95
+
## ⚠️ Mandatory CI Pre-flight — run before every merge, push, or dispatch
96
+
97
+
Before any action that could trigger a build, verify the field is clear:
98
+
99
+
```bash
100
+
gh run list --repo projectbluefin/dakota --limit 30 \
101
+
--json databaseId,status,name,headBranch \
102
+
| python3 -c "
103
+
import json, sys
104
+
runs = json.load(sys.stdin)
105
+
active = [r for r in runs if r['status'] in ('in_progress', 'queued', 'pending', 'waiting')]
106
+
if active:
107
+
print(f'BLOCKED: {len(active)} active run(s). Cancel all before proceeding:')
108
+
for r in active:
109
+
print(f' gh run cancel {r[\"databaseId\"]} --repo projectbluefin/dakota # {r[\"name\"]} [{r[\"headBranch\"]}]')
110
+
else:
111
+
print('OK: field is clear, safe to proceed')
112
+
"
113
+
```
114
+
115
+
If not `OK: field is clear` — cancel every listed run, re-run until clean. Cache-warm
116
+
runs are not exempt. See Hard Rule #9 in `.github/copilot-instructions.md`.
117
+
95
118
## ⚠️ aarch64 cache-warm: first run is always a cold miss (2026-06-22)
96
119
97
120
The GHA `actions/cache` restore key for aarch64 is `bst-warm-aarch64-`. On the first
0 commit comments