Skip to main content

sage-gates

Sage's quality gates and the file checks each workflow must pass. Use when an edit was blocked, when asking why a hook stopped you, when a gate fails or reports UNVERIFIABLE, before claiming work is done, or when you need the spec/plan preconditions for build, fix, or architect.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
xoai/sage
آخر نشاط في المصدر
١١ يوليو ٢٠٢٦ في ١٨:٢٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٢٦
التفرعات
٧

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
sage-gates
description
Sage's quality gates and the file checks each workflow must pass. Use when an edit was blocked, when asking why a hook stopped you, when a gate fails or reports UNVERIFIABLE, before claiming work is done, or when you need the spec/plan preconditions for build, fix, or architect.
version
1.0.0
type
system
# Gates Two different mechanisms share the word "gate", and confusing them is how people end up arguing with a hook. | | Hooks | Gates | |---|---|---| | **When** | Before a tool call (PreToolUse) | After work, on demand | | **What** | Block the edit itself | Score the result | | **Failure mode** | **Fail open** — a broken hook must not brick the session | **Fail closed** — an unrun gate is not a passed gate | | **Examples** | `sage-spec-gate.sh`, `sage-tdd-gate.sh` | Gates 1–6 | Hooks are guards, not gates. ## Why you were blocked **"Sage spec gate: no spec exists for the active cycle."** A cycle in `.sage/work/*/manifest.md` has `gate_state: pre-spec`, and you tried to edit a source file. Write the spec, get `[A]`, and the manifest advances to `spec-approved`. Then the edit lands. **"Sage TDD gate: tests before code."** No test has been written for this change. Write the failing test first. The gate accepts a dirty/untracked test file or a red commit (tests touched, no source) as evidence. **Completion blocked.** The manifest cannot reach `complete` while `gate_state` is anything short of `gates-passed`, and it cannot complete with an unresolved `qa:` disposition. This is Rule 5 with a script behind it. Neither hook is arguing with you. Both are stating a precondition you can satisfy in about a minute. ## The workflow file checks **Build (Standard+) — BEFORE implementing, verify both files exist on disk:** - `.sage/work/<initiative>/spec.md` — `status: completed` - `.sage/work/<initiative>/plan.md` — `status: completed` If either is missing, create it first. No exceptions. *Do not rationalize past this:* | The thought | The reality | |---|---| | "The design is clear from earlier discussion" | Not a spec file. | | "The user described what they want" | Not a spec file. | | "This is straightforward" | If it is Standard scope, a spec is required. | | "Just build it" | Write a minimal five-line spec and get `[A]`. | **Branch gate (Standard+, git projects).** Before implementation commits begin, HEAD must not be the default branch — unless a branching decline is recorded in the initiative's decision log. Merging is **always** a user-gated `[M]` action. No workflow path merges on its own. Full protocol: `sage/core/capabilities/execution/git-discipline/SKILL.md`. **Gate sequence (build):** 1. Spec → `.sage/work/` → `[A]`/`[R]` → wait 2. Plan → `.sage/work/` → `[A]`/`[R]` → wait 3. Implement (tests before code, via the build loop) 4. Verify with **pasted** test output → `[A]`/`[R]` **Fix — scope AFTER root cause:** 1. Investigate the root cause with evidence → `[A]`/`[R]`/`[S]` → wait 2. **Then** scope the fix: - Surgical (1–2 files) → proceed - Moderate (3–5 files) → write a fix plan first → `[A]`/`[R]` - Systemic (5+ files, interface changes) → escalate to `/build` or `/architect` 3. Implement → verify with pasted output → `[A]`/`[R]` Do not fix before the root cause is confirmed. Do not skip fix scoping — a "quick fix" that touches eight files is a rebuild wearing a smaller word. **Architect — brief BEFORE design:** 1. Complete all three elicitation rounds (vision, constraints, gaps). Each produces visible output. `brief.md` must exist before design begins. Do not compress the rounds. Do not skip them because "I understand the system." 2. Design with ADRs → `.sage/docs/` → spec → `.sage/work/` → `[A]`/`[R]` 3. Milestone plan → `[A]`/`[R]` → phased build; each milestone follows the build gates independently. ## Verify before claiming done (Rule 5, in full) Before presenting any completion checkpoint: - Tests exist for the new or changed functionality - Tests **pass** — paste the actual output, do not summarize it - The implementation matches the spec or plan - If tests do not exist or do not pass, **the task is not done** **Spec compliance is adversarial.** Do not trust your own report that the implementation matches the spec. You wrote it; you are the last one who will notice what it does not do. Verify independently, or let a fresh reviewer do it. ## The three-state exit contract Gate scripts exit `0` pass, `1` fail, `2` **unverifiable**. Exit 2 is the one that matters. It exists because "the suite is green" and "there is no suite" are different claims that used to share exit 0 — which is precisely how a gate reports success on code it never looked at. **Exit 2 is never a pass.** It is also not a failure: it has produced no evidence either way. On exit 2, present the choice and record it: ``` [P] Proceed unverified — logged as a waiver in .sage/decisions.md [F] Fix verification setup — install the runner, then re-run ```
عرض على GitHub