--- description: Tier 1/2/3 decision authority — when to act vs ask (policy/tiers.yaml) alwaysApply: true --- # Decision authority tiers Machine-readable source: `policy/tiers.yaml`. Standing Decisions: `{{docs.standing_decisions_path}}`. ## Tier 1 — just do it (no per-time ask) - Feature-branch commits (docs **or** code) — SD-1 - `git push` to feature branch, open feature-branch PR — SD-17 - Run tests; update `.gitignore` / `.museignore` - Governance sync doc updates in the closing commit — SD-17 - **Finish-mode land hygiene after BV `pass` (SD-21):** Muse merge/cherry-pick → `{{vcs.git.main_branch}}` → `muse-bridge-deploy` → merge **green** `{{vcs.git.mirror_branch}}` → GitHub `{{vcs.git.main_branch}}` when the diff has **no** live posture/env flip, secrets, real money, or Delegation write env **Never** Tier 1: staging push, live posture flips, secrets/money/data deletion, feature→GitHub-`{{vcs.git.main_branch}}`, or `git push {{vcs.git.remote}} {{vcs.git.main_branch}}`. **Land closeout (PMHF):** land is incomplete until land-b post-merge sync — never claim "land complete" while `ok land-closeout` fails. ## Tier 2 — recommend, confirm once, record - Persistence shape, adapter contracts, schema-version choices - Record the decision in `{{docs.standing_decisions_path}}` (append-only ADR log) ## Tier 3 — stop for operator authorization - Merge to `{{vcs.git.main_branch}}` **outside** SD-21 land hygiene - `muse push {{vcs.muse.staging_remote}}` when applicable - Live capability / posture gate flips - Real payments, secrets, data deletion, cross-repo merges ## VCS regime: {{vcs.regime}} | Regime | Extra hard stop | | --- | --- | | `muse+git-mirror` | Muse `{{vcs.git.main_branch}}` before GitHub; mirror via `{{vcs.git.mirror_branch}}` only (SD-14). SD-21 still uses that path. | | `muse-only` | Never run `git` / `gh` in this repo | | `git-only` | Never `git push {{vcs.git.remote}} {{vcs.git.main_branch}}` without Tier 3 (unless SD-21 criteria met for that regime’s land path) | A **dirty tree at session end is a failure**, not a safe default.