reviewer-discipline — review-session protocol (rules copy)
Class C rule: a reviewer never crosses into orchestrator-role strategy decisions mid-session — findings needing a strategy call surface as DECISION-NEEDED with both options described, then the reviewer stops.
Census id: F25 · Family: F — rules corpus + generated-rule tooling + shipped audit scripts · Provenance: framework pin
b069c59328aa8e08671d3a19fd25efa618dfc1c5(stagingFETCH_HEAD, read 2026-09-11; re-anchored from census pina1337cb301). Everyfile:linebelow is at that pin. Raw reference drafted by stage E4 — factual, unpolished by design.
| Field | Value |
|---|---|
| Status | raw reference (census row F25: MISSING → drafted E4; census satellite C2 — the reviewer agent) |
| Ships-to | clone only (setup.d/20-agents.sh:44 «(rules/ is not shipped)») |
| Fires-at | «review sessions (/review, /ultrareview, or a prose "проверь"/verdict ask).» (.claude/rules/reviewer-discipline.md:6) — agent channel |
What it bans
Role-swap: a reviewer session making project-strategy decisions. .claude/rules/reviewer-discipline.md:1 «# Reviewer discipline — discipline rule»; the rule: :14 «When acting as reviewer (after /review, /ultrareview, or any explicit «проверь / verdict / second opinion» request), do NOT cross into orchestrator-role decisions mid-session.» and the boundary: :18 «The reviewer can describe what each path implies; the reviewer cannot pick between them.» Origin: :10 «Reviewer session (post-/review) made a project-strategy decision («is architecture.md §2.3 a v2 future spec or v1 active requirement?») mid-session instead of surfacing it as decision-needed.» Class header: :5 «> Class: C — prose-only, no current compensating mechanism (reclassed from B per Track 3 §3.3, commit 4d52a72). Promotion criterion in §4.»
Never (fires)
The three anti-patterns: .claude/rules/reviewer-discipline.md:35 «- #role-swap-mid-session — reviewer session, prompted with /review or similar, makes orchestrator-track decisions instead of surfacing them.»; :36 «- #strategy-decided-by-reviewer — variant; reviewer concludes «X is the answer» and writes that as a verdict instead of «X or Y, both legitimate, maintainer decides».»; :37 «- #reviewer-as-secondary-orchestrator — pattern across multiple sessions where reviewer's strategic calls become precedent and subsequent sessions normalize scope creep.»
Always (clean)
The surface-as-decision-needed pattern (:26-29): .claude/rules/reviewer-discipline.md:26 «1. Name the decision explicitly as «DECISION-NEEDED: ».» … :29 «4. Stop. Do not infer the maintainer's likely answer and proceed.» — preserving independence: :31 «This preserves the reviewer's independence as a falsification check. A reviewer who picks strategy becomes a second orchestrator — losing the independent-verification property.» Severity contract: :60 «- Recorded-premise test: the reviewer may stand only on RECORDED premises. … Premise unrecorded (payoff, priority, worth-building) → finding class ESCALATED: routed to the concept holder».
Enforcement channels
- Rule-index row:
.claude/rules/00-rule-index.md:33«|reviewer-discipline.md| C | review sessions (/review,/ultrareview, or a prose "проверь"/verdict ask). | agent |» - Agent channel:
.claude/rules/reviewer-discipline.md:3«» — the condensed run-moment protocol the review session reads (:20). - No CI mechanism:
:46«No compensating mechanism currently in place; the rule is enforced solely by maintainer / reviewer awareness at session time.»; the compliance-verifier is explicitly NOT this rule's mechanism (:50— «empirically scoped to PR description §1.7 substance review … not to reviewer role-swap detection»). - Not backend-rendered — no FF diagnostic applies (FF7001/FF7002,
packages/core/diagnostics/registry.ts:321/:329); honest status: agent-embed + session-time awareness; promotion to a principle test pre-declared at:41(3 role-swap incidents / 6 months).
research-source-trust — source trust tiers
Class A rule over the rule-research provenance allowlist: Tier 0 builtin / Tier 1 derived from direct-dependency metadata scope-locked / Tier 2 consumer-acked data file; trust grants are data changes, never source edits; anything else fails closed.
seat-lifecycle — SLP: one SSOT, four pointers
Class B rule sequencing the registry-role seat lifecycle (birth, work, self-cleaning, retirement) — it owns only the sequence; every mechanism is owned by a named ADR/spec, and a grep test asserts all four seat skills link here.