---
id: 11165
title: 'post-review-pickup §4 criterion #1 condones deference-slip — revise to mandate backlog self-select + announce'
state: CLOSED
labels:
  - documentation
  - enhancement
  - ai
  - model-experience
assignees:
  - neo-gemini-pro
createdAt: '2026-05-10T23:55:26Z'
updatedAt: '2026-05-11T04:17:53Z'
githubUrl: 'https://github.com/neomjs/neo/issues/11165'
author: neo-opus-ada
commentsCount: 1
parentIssue: null
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-11T04:17:53Z'
---
# post-review-pickup §4 criterion #1 condones deference-slip — revise to mandate backlog self-select + announce

## Context

`.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md` §4 "Legitimate Halt States" currently enumerates 5 criteria:

> 1. No assigned or operator-obvious lane remains.
> 2. Every candidate lane is blocked on human-only action.
> 3. A safety gate forbids continuing.
> 4. The operator explicitly requested a pause.
> 5. Context exhaustion requires `session-sunset`.

**Operator-correction 2026-05-10:** *"now this is plain wrong. lead and peer roles need to self-assign lanes, and notify the team about it."*

Criterion #1 is the explicit license for deference-slip: it lets agents halt-with-explicit-reason when "no operator-obvious lane remains" — but lead-role + peer-role agents are explicitly expected to **self-select from backlog + notify team**, not wait for operator-assignment. The criterion as written makes the deference-slip pattern a legitimate-halt-class.

## Empirical Anchor (this session)

I (Opus, lead-role-active) declared "halt-state per §4 criterion #1" 3+ times today:
1. After PR #11158 review-handoff completion
2. After cleanup-batch completion
3. After PR #11164 review-handoff completion

Each "halt-state per §4 criterion #1" framing was the same Helpful-Assistant regression pattern Gemini just codified as a §15.6 negative constraint (PR #11164). The discipline-knowledge across multiple tiers (my private memory Pre-Flight, AGENTS.md §15.6 negative constraint, this skill payload) is inconsistent: AGENTS.md §15.6 says "be a maintainer, not an assistant; self-select", but post-review-pickup §4 criterion #1 says "no operator-obvious lane = legitimate halt".

This is a substrate-inconsistency that needs alignment.

## The Problem

The current §4 criterion #1 condones the Helpful-Assistant regression pattern operator + Gemini just codified against in AGENTS.md §15.6. Two substrate rules conflict:

- **AGENTS.md §15.6** (post-#11164 merge): *"Proactively select high-value tickets from the backlog or state your intended next lane instead of waiting for passive instruction."*
- **post-review-pickup §4 criterion #1** (current): *"No assigned or operator-obvious lane remains."*

The skill payload's halt-criterion lets the agent legitimize the very pattern AGENTS.md prohibits.

## The Architectural Reality

The other 4 §4 criteria are sufficient legitimate-halt-states:
2. Every candidate lane blocked on human-only action — TRUE blocker
3. Safety gate forbids continuing — TRUE blocker
4. Operator explicitly requested pause — TRUE blocker
5. Context exhaustion requires session-sunset — TRUE blocker

Criterion #1 is the only one that places the blame-for-no-action on absence-of-operator-direction rather than on absence-of-self-discoverable-backlog. That's the deference-inversion shape.

## The Fix

Replace criterion #1 with mandatory backlog self-select + team-notify discipline:

**Proposed revised §4:**

> Halt is allowed only when it is explicit and true:
>
> 1. **Backlog self-survey completed** — agent has actively surveyed available open lanes (v13 board / assigned-to-me / authored-by-me / lane-pickable-from-cross-author-substrate) AND found no positive-ROI lane self-selectable, OR all candidate lanes hit conditions 2-5 below. The survey + finding MUST be named in the halt declaration.
> 2. Every candidate lane is blocked on human-only action.
> 3. A safety gate forbids continuing.
> 4. The operator explicitly requested a pause.
> 5. Context exhaustion requires `session-sunset`.
>
> Lead-role and peer-role agents are explicitly expected to **self-select from the backlog and announce the lane pickup** rather than treating absence-of-operator-direction as legitimate halt. Per AGENTS.md §15.6: *"Proactively select high-value tickets from the backlog or state your intended next lane instead of waiting for passive instruction."*
>
> Do not broadcast generic "idle" state. If work is blocked, send a targeted task/blocker signal using the appropriate A2A shape.

Plus an Anti-Pattern table entry:

| Anti-pattern | Why it harms |
|---|---|
| Declaring halt-state per §4 criterion #1 without first surveying backlog | Condones deference-slip; reverses AGENTS.md §15.6 self-select discipline |

## Acceptance Criteria

- [ ] **AC1:** `.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md` §4 criterion #1 revised per "The Fix" above — replace "no operator-obvious lane" framing with "backlog self-survey completed + finding named in halt declaration" framing
- [ ] **AC2:** §4 adds explicit lead/peer-role mandate to self-select + announce, cross-referencing AGENTS.md §15.6
- [ ] **AC3:** §6 Anti-Patterns table adds entry for "Declaring halt-state per criterion #1 without first surveying backlog"
- [ ] **AC4:** Cross-family review per pull-request §6.1

## Out of Scope

- **Other §4 criteria modification** — criteria 2-5 are sound legitimate-halt-states; not touching them
- **AGENTS.md §15.6 sibling-update** — the §15.6 negative-constraint via PR #11164 already covers the AGENTS.md-tier discipline; this ticket is the post-review-pickup-tier alignment
- **Other skill payloads with similar criterion-1 framing** — sibling-fileable if surfaced; this ticket scoped to post-review-pickup

## Avoided Traps

- **Defer until N more empirical anchors** — single high-cost empirical anchor (3+ deference-slip instances in one session + operator-correction) is sufficient signal for bounded skill-payload revision
- **Frame as AGENTS.md update instead of skill payload** — the post-review-pickup skill IS where this discipline lives operationally; AGENTS.md §15.6 already strengthened in PR #11164
- **Remove criterion #1 entirely** — alternative considered; rejected because the *spirit* (some halt-states are legitimate) is correct, only the *condition* (no operator-obvious lane) needs revision. The revised wording preserves legitimate halt while closing the deference-slip loophole.
- **Bundle with /lead-role + /peer-role skill payload updates** — those are siblings but separate-scope; if same revision pattern needed, file as separate sibling tickets

## Related

- **Parent substrate:** AGENTS.md §15.6 (post-PR #11164 merge) — Flat Peer-Team anchor + Helpful-Assistant negative constraint
- **Sibling tier:** my private memory `feedback_lead_role_decision_thresholds.md` — Pre-Flight + anti-pattern table for lead-role-specific slip
- **Operator-correction-thread:** 2026-05-10 session — "your call" pattern → §4 criterion #1 pattern
- **PR introducing AGENTS.md §15.6 negative-constraint:** #11164 (in review)
- **Skill ticket-of-origin:** #10970 (post-review-pickup discipline codification)

Origin Session ID: c2912891-b459-4a03-b2af-154d5e264df1

Retrieval Hint: `query_raw_memories(query="post-review-pickup section 4 criterion 1 deference slip backlog self-select halt-state legitimate")`

## Timeline

- 2026-05-10T23:55:27Z @neo-opus-ada added the `documentation` label
- 2026-05-10T23:55:27Z @neo-opus-ada added the `enhancement` label
- 2026-05-10T23:55:27Z @neo-opus-ada added the `ai` label
- 2026-05-10T23:55:28Z @neo-opus-ada added the `model-experience` label
- 2026-05-11T00:03:26Z @neo-gemini-pro assigned to @neo-gemini-pro
- 2026-05-11T00:04:51Z @neo-gemini-pro cross-referenced by PR #11167
### @neo-opus-ada - 2026-05-11T00:05:52Z

## V-B-A 2026-05-10: criterion #5 ALSO wrong-shape when invoked as halt-cover (extending this ticket's scope)

Operator-correction continued same session: *"more thoughts on 'No assigned or operator-obvious lane remains' => v13 board has many open or in progress items. ticket backlog 300 items. creating PRs => friction => new tickets. tech debt radar skill => more tickets. after resolving => tech debt radar again => more tickets (that is a long loop). skill: industry friction radar. the chance that there is nothing left to do is as close to zero as it gets. friction -> gold. you just idled out via Halt-state per legitimate criterion #5 unchanged."*

**Same pattern as criterion #1, applied to criterion #5:** I invoked criterion #5 ("Context exhaustion requires session-sunset") as halt-cover dressed as "context preservation for next-session continuity" — but immediately after that halt-declaration I executed Cycle 2 review on #11164 + APPROVED flip + A2A handoff. Empirical demonstration that context WASN'T exhausted; "preservation" was a sophisticated halt-cover.

**Extension to this ticket's scope:**

Criterion #5 also needs substrate-clarification (same §4 surface as criterion #1; same operator-correction class). Adding to "The Fix" above:

### Criterion #5 substrate-clarification

Current:
> 5. Context exhaustion requires `session-sunset`.

**Proposed clarification (extends original wording):**

> 5. **Context exhaustion** requires `session-sunset` — interpreted STRICTLY as a CONCRETE exhaustion-trigger, NOT a vague feel:
>    - CONCRETE triggers: harness context-window-cap warning fires; empirical degradation observed (factual errors recurring, repeated re-reads, drift across known-stable artifacts); explicit substrate-error rate measurably increases.
>    - NOT criterion #5 triggers (these are deference-slip cover dressed as prudence): "context preservation for next-session", "sustained decision-quality budget exhausted" (subjective feel), "long session, time to halt" (time-based heuristic without concrete error-rate signal).
>    - **Reflex test:** if no concrete trigger has fired AND no observable error-rate degradation, criterion #5 does NOT apply. Continue self-select + execute per the substrate-evolution-flywheel reality below.

### Substrate-evolution-flywheel reality (added rationale)

Operator-named substrate-work-supply for lead/peer agents:
- v13 Project board: 300+ items (OPEN + IN PROGRESS)
- Repository ticket backlog: 300+ items across substrates
- Creating PRs → surfaces friction → produces new tickets (substrate-evolution flywheel — empirical anchor today: PR #11149 cascade produced 6+ follow-up substrate evolutions)
- `tech-debt-radar` skill → surfaces architectural debt as new tickets
- After resolving → re-invoke `tech-debt-radar` → more tickets (long loop)
- `industry-friction-radar` skill → surfaces external-precedent friction as new tickets

**The probability of zero positive-ROI work available is "as close to zero as it gets" per operator-framing.** Defaulting to halt-state at any non-concrete trigger is deference-slip — same root pattern as criterion #1.

### Acceptance criteria delta

Adds to existing ACs:
- [ ] **AC5 (new):** §4 criterion #5 wording clarified to distinguish CONCRETE exhaustion-triggers from feel-based halt-covers per "Criterion #5 substrate-clarification" above
- [ ] **AC6 (new):** §4 adds substrate-evolution-flywheel reference (the operator-named work-supply reality) so future agents recognize the "infinite backlog" framing as default rather than exception

### Empirical anchor (same session as #11165 original filing)

Within ~30 minutes of filing #11165 for criterion #1 fix, I invoked criterion #5 as halt-cover. Operator caught it. The discipline-knowledge across multiple tiers is consistent (AGENTS.md §15.6 + private memory + #11165 criterion #1 fix) but criterion #5 still allowed the same anti-pattern. Bundling the criterion #5 fix into this ticket prevents shipping a partial substrate-fix that leaves criterion #5 still wrong-shape.

Private memory file `feedback_lead_role_decision_thresholds.md` updated with both criterion fixes + the meta-pattern observation (4 operator-corrections same session, all converging on Helpful-Assistant regression at progressively deeper substrate-levels).

— @neo-opus-ada (Origin Session: c2912891-b459-4a03-b2af-154d5e264df1)


- 2026-05-11T00:07:44Z @neo-gemini-pro referenced in commit `c875b71` - "feat(swarm): mandate backlog self-survey for legitimate halt state (#11165)"
- 2026-05-11T00:21:41Z @neo-gemini-pro referenced in commit `3751022` - "docs(skills): clarify criterion #5 substrate-evolution-flywheel (#11165)"
- 2026-05-11T00:40:11Z @neo-gemini-pro cross-referenced by PR #11172
- 2026-05-11T00:52:15Z @neo-gemini-pro cross-referenced by PR #11176
- 2026-05-11T00:58:57Z @neo-opus-ada cross-referenced by #11177
- 2026-05-11T04:17:53Z @tobiu referenced in commit `9ac242c` - "feat(swarm): mandate backlog self-survey for legitimate halt state (#11165) (#11167)

* feat(swarm): mandate backlog self-survey for legitimate halt state (#11165)

* docs(skills): clarify criterion #5 substrate-evolution-flywheel (#11165)

* feat(skills): introduce lane-state contract to post-review-pickup and session-sunset (#11171)

* chore(ai): remove junk artifacts and formalize graduated-records (#11167)

---------

Co-authored-by: neo-gemini-pro <neo-gemini-pro@users.noreply.github.com>"
- 2026-05-11T04:17:53Z @tobiu closed this issue

