Shared rules for all AI agents. Read before any git operation.
Gate failures cost more downstream. Fix them at the source. Preflight MUST pass before every commit. No exceptions. CI MUST pass before every merge. No exceptions. Red gates block all forward work. Invoke fix-or-log immediately.
Preflight: make check (fmt → clippy -D warnings → test → ≤500 lines).
CI: gh pr checks (when a PR is open).
Found a bug unrelated to your task? Fix-or-log, then proceed.
quick-fix for trivial data-only fixes.fix-bug for logic fixes needing investigation.| Banned phrase | Action |
|---|---|
| "pre-existing" | Shifts blame. Fix or log it. |
| "unrelated to session" | Red gates are never unrelated. |
| "not introduced by my changes" | Irrelevant if the gate is red. |
| "out of scope" | Never ignore a red gate. |
make check-lines enforces this.#[allow(...)] attributes. Refactor instead.#![deny(clippy::wildcard_imports)] — no use foo::*;.Co-authored-by footers. Author solely as the user.feat(...), fix(...), docs(...).The cluster serves live traffic. A model runs at any time.
Run sm121 health before stop, power off, or power switch.
Confirm with the user that the cluster is idle before proceeding.
Never assume the cluster is idle. Verify first.
logs, health, doctor, and dry-runs (-d) are always safe.
Use shq() for SSH command interpolation.
Keep shq() output bare. NEVER wrap it in double quotes.
Single quotes inside "..." become literal characters in the path.
Use printf for path assembly inside SSH commands.
See commit 0208fc1 for the bug this prevents.
Write all planning output to specs/.
Read specs/ before writing code.
specs/tech-architecture/tech-stack.md is the project long-term memory.
specs/state.yaml tracks session state and active flow.
fluent-i18n crate, 6 locales: en, ru, es, it, fr, de.
Use t! macro with { "key" => value } args.
Pluralize via Fluent selectors: { $count -> [one] ... *[other] ... }.
set_locale is thread-local. Spawned tasks miss non-en locales.
Pass counts as u32 to match the cluster-selected pattern.