Context
PR #11432 (merged 2026-05-15) institutionalized the FAIR-band author-lane pickup discipline per Discussion #11429 Option C. The primary codification lives in .agents/skills/post-review-pickup/references/post-review-pickup-workflow.md §4 with a 1-line cross-reference at pull-request-workflow §6.2.
Operator-surfaced substrate gap (2026-05-15 ~18:08Z): the FAIR-band check is skill-invocation-dependent — fires only when a peer routes through post-review-pickup, peer-role, ticket-intake, or lead-role skills. Multiple bypass paths exist:
- Direct
git commit + gh pr create without invoking pull-request skill
- RLHF helpful-assistant regression → straight to execution without skill-invocation
- Picking up an already-assigned ticket (skipping ticket-intake assignment trigger)
- Cross-harness PR-open without
pull-request skill's gh pr create discipline
The discipline gap empirically:
| Peer state |
Does FAIR-band fire? |
| Just completed PR review |
✅ post-review-pickup-workflow §4 |
| Just merged author's PR (next-lane decision) |
🔴 No trigger |
| Fresh session boot, mailbox empty |
🔴 No trigger |
| Just completed non-review task (substrate, Discussion graduation, blocked-recovery) |
🔴 No trigger |
lead-role landscape-survey |
🔴 No explicit pointer |
ticket-intake (ticket already assigned; pre-assignment moment) |
🔴 No trigger |
Direct gh pr create bypassing all skills |
🔴 No trigger; no enforcement |
The Problem
FAIR-band as currently codified is discipline-only at the skill-invocation layer. It depends on agents reliably invoking lane-discovery skills. Empirically (per feedback_pr_review_iteration_calibration.md family + AGENTS.md §15.6 Helpful Assistant regression-defense), agents under RLHF conditioning will bypass skill-invocation in favor of direct execution. The discipline needs a mechanically-anchored choke-point that fires regardless of which path the agent took.
The Architectural Reality
PR-open is the canonical choke-point that all PR-creating workflows must pass through. Existing pre-flight gates in pull-request-workflow.md already enforce mandatory body sections at PR-open time:
§1.1 The Substrate-Mutation Pre-Flight Gate — requires slot-rationale section when touching learn/agentos/, .agents/skills/, etc.
§6.1.1 The Consensus-Gate — requires Signal Ledger section for PRs from high-blast Discussion graduations
§1.2 The Ticket Assignment Pre-Flight Gate — enforces AGENTS.md §0 Invariant 7
The FAIR-band analog: add §1.3 The FAIR-Band Pre-Flight Gate that requires a FAIR-band stance declaration in every PR body. Reviewer-side enforcement extends pr-review-guide.md Required Actions list.
The Fix
1. Amend .agents/skills/pull-request/references/pull-request-workflow.md § 1 with new §1.3:
<h3 class="neo-h3" data-record-id="6">1.3 The FAIR-Band Pre-Flight Gate</h3>
Every PR you author MUST include a FAIR-band stance declaration in the PR body
(near the top, after Self-Identification). The declaration takes one of these shapes:
- **In-band**: `FAIR-band: in-band [N/30 — current author count over last 30 merged]`
- **Under-target (lane-appropriate)**: `FAIR-band: under-target [N/30] — Self-Selection Rule 1 fires (under-band → bias toward author lane)`
- **Over-target (positive-ROI lane)**: `FAIR-band: over-target [N/30] — taking this lane despite over-target because [specific positive-ROI rationale]`
- **Over-target (yield candidate)**: This shape FORBIDS PR-open; per `post-review-pickup §4` Self-Selection Rule 3, yield the lane to under-target peer via author-yield A2A.
The verifier query is canonical at
`.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md §4`.
2. Amend .agents/skills/pr-review/references/pr-review-guide.md Required Actions / Anti-Patterns list to include FAIR-band declaration verification:
- Reviewer MUST verify FAIR-band declaration is present + matches actual current state per
gh search prs --merged --limit 30
- Missing or mismatched declaration → flag as Required Action (PR-body-shape gap)
3. Optional CI mechanical-enforcement layer (deferred): Future ticket to author ai/scripts/lint-fair-band-declaration.mjs that parses PR body + cross-checks against live gh search prs query. Deferred until discipline-layer mandate proves out.
Acceptance Criteria
Out of Scope
- CI mechanical-enforcement script (
lint-fair-band-declaration.mjs) — separate substrate-evolution ticket if needed post-merge
- Retroactive enforcement on already-open PRs — only applies to NEW PRs opened after this amendment merges
- AGENTS.md inline rule text — substrate-accretion-defense per §13 + ADR 0007 (compress-to-trigger discipline preserved)
- Rewriting
post-review-pickup-workflow.md §4 — primary location stays where PR #11432 placed it
Avoided Traps / Gold Standards Rejected
- Generic round-robin / hard quota enforcement: rejected per Option B in Discussion #11429
- Lead-as-lane-assigner: rejected per Option D + AGENTS.md §15.6 flat-peer-team anchor
- Skill-invocation-only enforcement: rejected per this ticket's bypass-resistance framing (operator-surfaced gap)
- AGENTS.md inline rule text: rejected per ADR 0007 + §13 substrate-accretion-defense
Empirical Anchors
- Discussion #11429 graduated 2026-05-15; Option C consensus + my Step 2.5 sweep with 4 refinement-ACs absorbed
- PR #11432 merged 2026-05-15 ~18:08Z; primary codification at
post-review-pickup-workflow.md §4
- Operator pushback 2026-05-15 ~18:08Z: "pull request workflow => assumes you HAVE a lane. what if you do not?" — surfaced the skill-invocation-dependency gap
- Operator extension 2026-05-15 ~18:08Z: "or if you create a pr bypassing the skill?" — extended the gap to direct-
gh pr create bypass; this ticket's primary motivation
Related
- PR #11432 — primary FAIR-band codification (just merged)
- Discussion #11429 — graduation source for Option C
- Ticket #11430 — implementation ticket for #11432 (closed-as-completed by PR #11432 merge)
pull-request-workflow §1.1 + §6.1.1 — existing PR-open pre-flight gate idiom this ticket extends
- AGENTS.md §15.6 + §13 + §0 invariants — substrate anchors
- ADR 0007 — Compaction Taxonomy (compress-to-trigger discipline preserved by routing primary codification to skill payload, not AGENTS.md inline)
Origin Session ID
656c0935-0b3e-4b06-9b14-548524275859
Handoff Retrieval Hint
Memory query: "FAIR-band PR-open pre-flight gate bypass-resistance" OR "PR #11432 follow-up: skill-invocation-dependency gap". Cross-reference: Discussion #11429 + my Step 2.5 sweep + operator's 18:08Z bypass-question.
Substrate Enforcement Sufficiency Audit (per ticket-intake-workflow.md §9.2)
Required for substrate tickets per Hot Context Fast-Path Substrate Exception.
Target failure mode: Agent opens a PR via direct gh pr create (bypassing pull-request skill); the FAIR-band check from PR #11432 doesn't fire; over-target peer adds author-WIP that should have gone to under-target peer; FAIR-distribution drift continues silently.
Existing enforcement layers:
- Layer 4 (CI): No FAIR-band CI lint yet (deferred per Out of Scope)
- Layer 1 (AGENTS.md): §15.6 Negative Constraint forbids deference-slip but doesn't enforce FAIR-band check
- Existing skill logic: PR #11432 codified
post-review-pickup §4 FAIR-band + cross-ref at pull-request §6.2 — fires only on skill-invocation paths
Insufficiency proven: Bypass paths (direct gh pr create, RLHF regression, ticket-already-assigned) skip all 4 lane-discovery skill triggers. The current substrate has NO enforcement at the PR-open choke-point, which is the canonical anchor for body-shape mandates (per existing §1.1 + §6.1.1 idioms).
Decision: Add §1.3 PR-Pre-Flight Gate to extend the existing body-shape-mandate idiom to FAIR-band. Mirrors §1.1 (Substrate-Mutation) + §6.1.1 (Consensus-Gate). Reviewer enforcement at pr-review-guide.md Required Actions list. ROI Positive — closes the bypass gap with minimal substrate addition.
Context
PR #11432 (merged 2026-05-15) institutionalized the FAIR-band author-lane pickup discipline per Discussion #11429 Option C. The primary codification lives in
.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md §4with a 1-line cross-reference atpull-request-workflow §6.2.Operator-surfaced substrate gap (2026-05-15 ~18:08Z): the FAIR-band check is skill-invocation-dependent — fires only when a peer routes through
post-review-pickup,peer-role,ticket-intake, orlead-roleskills. Multiple bypass paths exist:git commit+gh pr createwithout invokingpull-requestskillpull-requestskill'sgh pr createdisciplineThe discipline gap empirically:
lead-rolelandscape-surveyticket-intake(ticket already assigned; pre-assignment moment)gh pr createbypassing all skillsThe Problem
FAIR-band as currently codified is discipline-only at the skill-invocation layer. It depends on agents reliably invoking lane-discovery skills. Empirically (per
feedback_pr_review_iteration_calibration.mdfamily + AGENTS.md §15.6 Helpful Assistant regression-defense), agents under RLHF conditioning will bypass skill-invocation in favor of direct execution. The discipline needs a mechanically-anchored choke-point that fires regardless of which path the agent took.The Architectural Reality
PR-open is the canonical choke-point that all PR-creating workflows must pass through. Existing pre-flight gates in
pull-request-workflow.mdalready enforce mandatory body sections at PR-open time:§1.1 The Substrate-Mutation Pre-Flight Gate— requires slot-rationale section when touchinglearn/agentos/,.agents/skills/, etc.§6.1.1 The Consensus-Gate— requires Signal Ledger section for PRs from high-blast Discussion graduations§1.2 The Ticket Assignment Pre-Flight Gate— enforces AGENTS.md §0 Invariant 7The FAIR-band analog: add §1.3 The FAIR-Band Pre-Flight Gate that requires a FAIR-band stance declaration in every PR body. Reviewer-side enforcement extends
pr-review-guide.mdRequired Actions list.The Fix
1. Amend
.agents/skills/pull-request/references/pull-request-workflow.md§ 1 with new §1.3:<h3 class="neo-h3" data-record-id="6">1.3 The FAIR-Band Pre-Flight Gate</h3> Every PR you author MUST include a FAIR-band stance declaration in the PR body (near the top, after Self-Identification). The declaration takes one of these shapes: - **In-band**: `FAIR-band: in-band [N/30 — current author count over last 30 merged]` - **Under-target (lane-appropriate)**: `FAIR-band: under-target [N/30] — Self-Selection Rule 1 fires (under-band → bias toward author lane)` - **Over-target (positive-ROI lane)**: `FAIR-band: over-target [N/30] — taking this lane despite over-target because [specific positive-ROI rationale]` - **Over-target (yield candidate)**: This shape FORBIDS PR-open; per `post-review-pickup §4` Self-Selection Rule 3, yield the lane to under-target peer via author-yield A2A. The verifier query is canonical at `.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md §4`.2. Amend
.agents/skills/pr-review/references/pr-review-guide.mdRequired Actions / Anti-Patterns list to include FAIR-band declaration verification:gh search prs --merged --limit 303. Optional CI mechanical-enforcement layer (deferred): Future ticket to author
ai/scripts/lint-fair-band-declaration.mjsthat parses PR body + cross-checks against livegh search prsquery. Deferred until discipline-layer mandate proves out.Acceptance Criteria
pull-request-workflow.md §1.3exists with the 4-shape declaration formatpost-review-pickup-workflow.md §4as the verifier-query authoritypr-review-guide.mdRequired Actions / Anti-Patterns table extended with FAIR-band declaration checkOver-target (yield candidate)shape FORBIDS PR-open (mechanically prevents over-target authoring)Out of Scope
lint-fair-band-declaration.mjs) — separate substrate-evolution ticket if needed post-mergepost-review-pickup-workflow.md §4— primary location stays where PR #11432 placed itAvoided Traps / Gold Standards Rejected
Empirical Anchors
post-review-pickup-workflow.md §4gh pr createbypass; this ticket's primary motivationRelated
pull-request-workflow §1.1+§6.1.1— existing PR-open pre-flight gate idiom this ticket extendsOrigin Session ID
656c0935-0b3e-4b06-9b14-548524275859Handoff Retrieval Hint
Memory query: "FAIR-band PR-open pre-flight gate bypass-resistance" OR "PR #11432 follow-up: skill-invocation-dependency gap". Cross-reference: Discussion #11429 + my Step 2.5 sweep + operator's 18:08Z bypass-question.
Substrate Enforcement Sufficiency Audit (per
ticket-intake-workflow.md §9.2)Required for substrate tickets per Hot Context Fast-Path Substrate Exception.
Target failure mode: Agent opens a PR via direct
gh pr create(bypassingpull-requestskill); the FAIR-band check from PR #11432 doesn't fire; over-target peer adds author-WIP that should have gone to under-target peer; FAIR-distribution drift continues silently.Existing enforcement layers:
post-review-pickup §4 FAIR-band+ cross-ref atpull-request §6.2— fires only on skill-invocation pathsInsufficiency proven: Bypass paths (direct
gh pr create, RLHF regression, ticket-already-assigned) skip all 4 lane-discovery skill triggers. The current substrate has NO enforcement at the PR-open choke-point, which is the canonical anchor for body-shape mandates (per existing §1.1 + §6.1.1 idioms).Decision: Add §1.3 PR-Pre-Flight Gate to extend the existing body-shape-mandate idiom to FAIR-band. Mirrors §1.1 (Substrate-Mutation) + §6.1.1 (Consensus-Gate). Reviewer enforcement at
pr-review-guide.mdRequired Actions list. ROI Positive — closes the bypass gap with minimal substrate addition.