From e3f20193f0ae89d3d5b64470aa1410fad11172e9 Mon Sep 17 00:00:00 2001 From: vitya Date: Thu, 27 Aug 2026 21:33:21 +0300 Subject: [PATCH] =?UTF-8?q?docs(project-discipline):=20Rule=204=20?= =?UTF-8?q?=E2=80=94=20=D0=BC=D0=B5=D1=85=D0=B0=D0=BD=D0=B8=D0=B7=D0=BC=20?= =?UTF-8?q?push-=D0=B3=D0=B5=D0=B9=D1=82=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=20(on-record=20+=20explicit)=20[?= =?UTF-8?q?v0.2.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/project-discipline/SKILL.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/skills/project-discipline/SKILL.md b/skills/project-discipline/SKILL.md index 4500810..59e84ea 100644 --- a/skills/project-discipline/SKILL.md +++ b/skills/project-discipline/SKILL.md @@ -79,12 +79,18 @@ The bump is recorded in the commit message: `feat(): … [vX.Y.Z]` or **Default: push freely.** An ordinary fast-forward `git push` to the configured upstream needs no per-push confirmation. No ask-before-push mode by default. -**Per-project push gate.** A project whose push triggers side effects carries a -LOCAL project-scope skill (convention: `push-gate`) that replaces this default -with ask-before-push for that project. Example: `books` — push to master runs -Gitea Actions auto-deploy. Respect the local gate over this rule: if the project -has a `push-gate` skill, its semantics win for that project; this rule's -free-push default does not apply there. +**Push gate** (replaces the free-push default for a specific project). A push +gate makes every push require confirmation — it is set up ONE of two ways: + +- **On the record** — the project's `AGENTS.md` declares a push gate (e.g. + `push gate: ask`); it applies persistently for that project. This overrides +the free-push default for as long as that line is in `AGENTS.md`. +- **Explicitly, by the operator, in the session** — the operator says "push + gate" / "спрашивай перед пушем"; it applies for the rest of that session + OR until the operator explicitly lifts it ("сними пуш-гейт" / "push freely"). + +Either way, when a gate is active, EVERY push to that project asks first. +This rule's free-push default does not apply while a gate is active. **Always ask:**