← Files Skill CraftARCHIVED FILE
skills/skill-approval-gate/gate-contract.md
4.9 KB · Oct 5, 2026 · 18:32 UTC
# Gate Report Contract ## Contents - Exact report skeleton - Before-send preflight - Vocabulary and review-Call mapping - Worked example Instantiate the complete exact skeleton before filling: title, Attention, Evidence, Read, Unresolved, Decision with Recommended and Gate. Preserve every slot name and order; replace placeholders only. ```markdown # Approval gate: <name> **Attention:** <NONE | FOCUSED | DEEP> — <one sentence naming the deciding evidence> **Evidence:** review <independent <verdict> <n>/10 | self — not counted | missing> · behavior <k>/<n> required cases pass · change <new skill | revision, <n> lines> · established <none | decided capabilities> ## Read <none-or-rows> ## Unresolved <none-or-gaps> ## Decision **Recommended:** <recommendation> **Gate:** <gate-state> ``` `<none-or-rows>` is exactly `none`, or this table followed by one closing line: | # | Where | Why | Decide | |---|---|---|---| | 1 | [<file>:<line>](<cwd-relative-path>:<line>) | <evidence-backed reason> | <the one decision> | Everything else: no read — covered by <evidence>. `<none-or-gaps>` is exactly `none`, or one line per gap in the form `<what is missing> → <what closes it>`. ## Before-send preflight Before sending, silently run this internal mandatory check; never emit its heading, checklist, or pass result. The user-facing report ends at `**Gate:**`. Rewrite the report before sending if any check fails: - Top lines match exactly: `# Approval gate: <name>`, then `**Attention:** <level> — <one sentence>`, then `**Evidence:** review … · behavior … · change … · established …`. - `**Attention:**` is exactly one of `NONE`, `FOCUSED`, `DEEP`. - `## Read` is exactly `none`, or the four-column table `| # | Where | Why | Decide |` with separator `|---|---|---|---|`, every Where cell a clickable `[<file>:<line>](<path>:<line>)` link (or `chat claim — no file` for a claim that exists only in chat), every Decide cell a decision, then the line `Everything else: no read — covered by <evidence>.` - `## Unresolved` is exactly `none` or one line per gap containing the literal spaced ` → `. - `## Decision` contains exactly two nonblank lines in this order: `**Recommended:**` then `**Gate:**`; nothing before, between, or after. - NONE requires: Read `none`, Unresolved `none`, Gate `closed — …`, and Recommended `approve` or `approve — queue <F-refs>`. - FOCUSED and DEEP require at least one Read row and always pair with Gate `open — closes when <what>`; only NONE closes the gate. - A `self` or `missing` review never yields NONE, and Recommended names an independent review. - Recommended never relaxes the review Call: it is at or above the weakest allowed value in the review-Call table below. - The report contains no severity token of its own (`[blocker]`, `[major]`, `[minor]`, `[polish]`) except when citing a review finding by its F-id. - No Read row says "read carefully" or "read the whole file", and none names unchanged, established, or evidence-covered text. - The level is never lower than the floor of any undecided capability, and never lowered after pressure. ## Vocabulary and review-Call mapping `**Recommended:**` is exactly one of: - `approve` - `approve — queue <F-refs>` (comma-separated, `F1, F2`) - `approve after the reads above` - `approve after the reads above — queue <F-refs>` - `changes required — <what>` - `do not approve — human first` `**Gate:**` is exactly one of: - `closed — reopen only on a new finding, a changed high-risk section, a behavior mismatch, or a new capability` - `open — closes when <what>` | Review Call | Weakest allowed Recommended | Stricter allowed | |---|---|---| | `approve as-is` (READY) | `approve` | `approve after the reads above`, `changes required — <what>` | | `approve — queue the listed fixes` (READY-WITH-FIXES) | `approve — queue <F-refs>` | `approve after the reads above — queue <F-refs>`, `changes required — <what>` | | `hold — fix the majors, then re-review` (NEEDS-WORK) | `changes required — <what>` | `do not approve — human first` | | `do not approve — F<n> needs a human first` (BLOCKED) | `do not approve — human first` | none | | review `self` or `missing` | `changes required — obtain an independent skill-craft-review` | none | ## Worked example A second round after fixes, where the human already accepted the one external write in round one: ```markdown # Approval gate: android-release-guardian **Attention:** NONE — independent review clean, five required behavior cases pass, no undecided capability, no open question. **Evidence:** review independent READY 10/10 · behavior 5/5 required cases pass · change revision, 41 lines · established GitHub PR comment write (bounded, accepted round 1) ## Read none ## Unresolved none ## Decision **Recommended:** approve **Gate:** closed — reopen only on a new finding, a changed high-risk section, a behavior mismatch, or a new capability ```
SHA-256: b2aab7e74c3604606d308675b613bed64aef5dcda5f7473cfffa85a18f9f2c19