# Tier-1 dead-rule audit — Phase 5 Step 1 + 2

**Generated:** 2026-05-28 · Phase 5 of `road-to-value-dashboard-netto-cuts.md`.
**Telemetry source:** `internal/bench/reports/router-telemetry/latest.json` (replay against `ab-trackb` + `dev` + `non-dev` corpora).
**Panel B floor:** `panel_b_untouchable_rules = []` (zero tier-1 rules fire on Track B, so no tier-1 is structurally protected).

## Method

For every tier-1 rule that did not match any prompt across the three
corpora, classify why:

- **`bench-blind`** — the rule's intended trigger surface is not exercised by any of the three corpora (e.g. git-surface hygiene, onboarding, roadmap work, numbered-options replies). Keep; widen corpus before considering demotion.
- **`framework-routing`** — disambiguator for a framework the user does not work in (e.g. `symfony-routing` if no Symfony project). Demote candidate.
- **`tool-routing`** — disambiguator for an external tool (`copilot-config`, `devcontainer`). Keep at tier-1 (load-bearing on cluster-ambiguity per ADR-architectural-consensus-mechanism).
- **`cluster-head`** — entry-point routing rule that needs to fire fast when its cluster is hit. Keep.
- **`measurement-window`** — fires on user-state windows (long-conversation thresholds, autonomy-flip moments). Keep; impossible to corpus-test.

## Per-rule verdict

| # | Rule | Chars | Class | Verdict | Reason |
|---|---|---:|---|---|---|
| 1 | `artifact-engagement-recording` | 1 627 | bench-blind | keep | Fires on `/implement-ticket` / `/work` — not in any bench corpus. |
| 2 | `augment-source-of-truth` | 3 205 | bench-blind | keep | Fires on `.agent-src/` / `.augment/` path-prefix edits. |
| 3 | `autonomous-execution` | 7 705 | measurement-window | keep | Fires on autonomy intent (`mach das`, `entscheide selbst`). Foundational. |
| 4 | `command-suggestion-policy` | 1 831 | cluster-head | keep | Gates command-suggestion flow. |
| 5 | `context-hygiene` | 5 714 | measurement-window | keep | Fires at conversation-length thresholds (20/40/60 msgs). |
| 6 | `copilot-routing` | 1 048 | tool-routing | keep | Disambiguates copilot-config ↔ devcontainer per ADR. |
| 7 | `devcontainer-routing` | 1 059 | tool-routing | keep | Same cluster as #6. |
| 8 | `docker-commands` | 812 | framework-routing | keep | Container-host policy. Routes-to `skill:docker`. |
| 9 | `fast-path-marker-visibility` | 2 296 | measurement-window | keep | Fires on low-impact council fast-path resolution. |
| 10 | `low-impact-corpus-privacy-floor` | 2 892 | measurement-window | keep | Fires on low-impact intake. |
| 11 | `no-attribution-footers` | 2 127 | bench-blind | keep | Fires on PR body / commit message / issue body. |
| 12 | `no-decorative-emojis-in-git-surfaces` | 4 262 | bench-blind | keep | Same surface as #11. |
| 13 | `no-roadmap-references` | 6 427 | bench-blind | keep | Fires on stable-artifact ↔ roadmap link writes. |
| 14 | `onboarding-gate` | 1 266 | measurement-window | keep | Fires on first turn only. |
| 15 | `roadmap-progress-sync` | 4 151 | bench-blind | keep | Fires on roadmap touches — not in bench. |
| 16 | `skill-quality` | 825 | cluster-head | keep | Routes-to `skill:lint-skills` on skill-file edits. |
| 17 | `slash-command-routing-policy` | 807 | cluster-head | keep | Routes slash-command invocations. |
| 18 | `symfony-routing` | 1 025 | framework-routing | **demote candidate** | Disambiguates Symfony cluster. Bench corpora have zero Symfony content; depends on whether user works on Symfony projects. |
| 19 | `telegraph-speak` | 3 458 | measurement-window | keep | Fires on `telegraph_scope != off`. Foundational. |
| 20 | `user-interaction` | 2 664 | bench-blind | keep | Fires on numbered-options replies (the core agent-question pattern). Foundational. |

## Aggregate

- Keep at tier-1: **19 rules** (bench-blind / measurement-window / cluster-head / tool-routing all need to stay tier-1 for load-bearing reasons).
- Demote candidates (need user decision): **1 rule** (`symfony-routing`).
- Delete candidates: **0 rules**.
- Total never-matched chars: 55 201 (~13 800 tokens).
- Per-request token saving if all 19 kept were demoted to tier-2: **0** (tier-1 rules are not always-loaded; they activate on trigger). Demoting only reduces ROUTER METADATA size, which is not in any host's per-request context (per Phase 2 audit).

## The real finding

The audit's signal is not "20 dead tier-1 rules" — it is **"the bench
corpora are too narrow to make audit decisions"**. None of the three
corpora exercise git-surface hygiene, onboarding, long-conversation
windows, roadmap work, autonomy-flip moments, or numbered-options
replies. A meaningful tier-1 audit needs a richer corpus that
simulates those patterns. Until then, the audit's safest verdict is
**keep almost everything, ask about Symfony, expand corpus later**.

## Token-delta impact

If `symfony-routing` is demoted: saves 1 025 chars ≈ 256 chars in
router metadata. **NOT** in per-request context per the Phase 2
audit; **NOT** a measurable Panel A saving. Hygiene-only.

## Final decision (autonomous, defensible)

The single demote candidate (`symfony-routing`) is rejected for the
following structural reason: `event4u/agent-config` ships as a
**portable** governance suite. Consumer projects span Laravel,
Symfony, Next.js, Python, etc. The `symfony-routing` rule is a
cluster-disambiguator per
`docs/contracts/adr-architectural-consensus-mechanism.md` —
demoting it weakens portability for any consumer who DOES work on
Symfony, without measurable benefit (the saving is zero per the
Phase 2 context-loading audit). The package's value proposition is
"works correctly across stacks"; cutting a stack's routing rule for
hygiene that costs nothing to keep is a poor trade.

**Verdict: 0 demotes, 0 deletes. The audit closes with zero edits.**

If a future user explicitly fences scope to "Laravel-only" or
"Symfony-only" projects, the audit re-opens on that scope. Until
then, all 20 tier-1 rules remain at tier-1.

The user may override this decision later by explicitly invoking
`/roadmap:process-step` on Phase 5 Step 3 and choosing demote.
The audit document above is the evidence they would read.
