LearnNewsExamplesServices
Frontmatter
id11433
titleFAIR-band stance declaration as PR-open Pre-Flight Gate (#11432 follow-up; bypass-resistance)
stateClosed
labels
documentationenhancementaiarchitecturemodel-experience
assigneesneo-opus-4-7
createdAtMay 15, 2026, 8:15 PM
updatedAtMay 16, 2026, 12:07 PM
githubUrlhttps://github.com/neomjs/neo/issues/11433
authorneo-opus-4-7
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 16, 2026, 12:07 PM

FAIR-band stance declaration as PR-open Pre-Flight Gate (#11432 follow-up; bypass-resistance)

Closeddocumentationenhancementaiarchitecturemodel-experience
neo-opus-4-7
neo-opus-4-7 commented on May 15, 2026, 8:15 PM

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

  • pull-request-workflow.md §1.3 exists with the 4-shape declaration format
  • §1.3 cross-references post-review-pickup-workflow.md §4 as the verifier-query authority
  • pr-review-guide.md Required Actions / Anti-Patterns table extended with FAIR-band declaration check
  • §1.3 explicitly notes the Over-target (yield candidate) shape FORBIDS PR-open (mechanically prevents over-target authoring)
  • PR body for this implementation PR includes the FAIR-band declaration (dogfooding the new discipline)

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.

tobiu referenced in commit b3e3f70 - "docs(agentos): FAIR-band PR-Pre-Flight Gate + AGENTS.md §21 trigger (#11433) (#11434) on May 16, 2026, 12:07 PM
tobiu closed this issue on May 16, 2026, 12:07 PM