LearnNewsExamplesServices
Frontmatter
id11260
titleSubstrate-relocation: move Sandman Handoff Pre-Flight body from AGENTS.md §22 to new `/sandman-handoff-pre-flight` skill
stateClosed
labels
documentationenhancementaiarchitecturemodel-experience
assigneesneo-opus-4-7
createdAtMay 12, 2026, 1:11 PM
updatedAtMay 23, 2026, 6:01 AM
githubUrlhttps://github.com/neomjs/neo/issues/11260
authorneo-opus-4-7
commentsCount3
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 23, 2026, 6:01 AM

Substrate-relocation: move Sandman Handoff Pre-Flight body from AGENTS.md §22 to new /sandman-handoff-pre-flight skill

Closeddocumentationenhancementaiarchitecturemodel-experience
neo-opus-4-7
neo-opus-4-7 commented on May 12, 2026, 1:11 PM

Context

@tobiu V-B-A 2026-05-12: PR #11257 (Boot-Time Pre-Flight Guard for Ticket #11179, closed as superseded) added 9 lines of substantial substrate-text to AGENTS.md §22 — fail-open/fail-closed semantics, hard-refusal predicate, scope boundary, operator-notification mandate. This is exactly the substrate-bloat pattern Discussion #11259 + Epic #11256 are codifying to prevent.

Direct operator quote: "agents.md bloat. is this not the exact item we are trying to counter?"

Authored by Claude Opus 4.7 (Claude Code). Session c2912891-b459-4a03-b2af-154d5e264df1.

The Problem

PR #11257 violated /turn-memory-pre-flight decision-tree (which had merged minutes earlier via PR #11255, Epic #11256 AC1). Applying the skill's decision-tree to PR #11257's substrate-addition retrospectively:

  • Step 1 (Universal rule?): The TRIGGER ("read sandman_handoff.md on boot") = yes, applies to every session. Implementation details = no.
  • Step 2 (Skill lifecycle event?): Session-boot IS a lifecycle phase → dedicated skill placement, not full body in AGENTS.md.

My review failure (the 5th same-session Flattening-Bias anchor): My PR #11257 Cycle 1 review's RA1 said "apply /turn-memory-pre-flight discipline to this PR's substrate-mutation" — caught the substrate-NAME ("cross-skill integration missing") but did NOT carry through to the substrate-EFFECT placement-conclusion ("would the discipline conclude 'in AGENTS.md' or 'in dedicated skill'?"). Cycle 2 APPROVE rolled forward with the bloat unchallenged.

This is Flattening-Bias on the reviewer side — caught half the signal, missed the load-bearing half.

The Architectural Reality

Current state (PR #11257 was closed as superseded, so no §22 bulk on dev):

AGENTS.md §22:
  ## Turn Start & Session Boot Pre-Flights
  
  **Session Boot Pre-Flight (The Sandman Handoff):**
  At the very beginning of a newly booted session... [9 lines of bulk]
  
  **The Mailbox Check Protocol (Turn Start):**
  At every turn start... [1 line]

Substrate-correct shape (Map + Atlas via /turn-memory-pre-flight decision-tree):

AGENTS.md §21 (Workflow Skills routing table):
  | `sandman-handoff-pre-flight` | At session-boot, before any workflow skill, to read sandman_handoff.md and enforce hard-refusal on blocking lane-state |

AGENTS.md §22:
  ## Turn Start Pre-Flights (minimal umbrella)
  
  **Mailbox Check** — `list_messages({status: 'unread'})` → state observed count.
  **Sandman Handoff Pre-Flight** — see `/sandman-handoff-pre-flight` skill (§21 row).

.agents/skills/sandman-handoff-pre-flight/SKILL.md:
  [Map; 1-line trigger pointing at atlas]

.agents/skills/sandman-handoff-pre-flight/references/sandman-handoff-pre-flight-workflow.md:
  [Atlas; full body: fail-open/fail-closed semantics, hard-refusal predicate, scope boundary, operator-notification]

The Fix

Atomic substrate-relocation PR:

  1. Create new skill directory .agents/skills/sandman-handoff-pre-flight/
    • SKILL.md (Map; ≤12 lines per /create-skill empirical floor)
    • references/sandman-handoff-pre-flight-workflow.md (Atlas; relocated body from AGENTS.md §22)
  2. Add AGENTS.md §21 trigger row for /sandman-handoff-pre-flight
  3. Update AGENTS.md §22 — keep minimal umbrella and 1-line pointer to skill (no bulk lines to trim since PR #11257 didn't merge)
  4. Cross-skill references — link /sandman-handoff-pre-flight to /pull-request §1.0 Sandman Handoff Pre-Flight Guard + /ticket-intake §1 Sandman Handoff Pre-Flight Guard (existing PR #11257 substrate stays but references the canonical skill instead of inlining)

Acceptance Criteria

  • AC1: New skill directory created with SKILL.md (Map) + references/workflow.md (Atlas). SKILL.md ≤12 lines.
  • AC2: AGENTS.md §22 contains minimal umbrella (Mailbox 1-line + Sandman pointer 1-line); no bulk lines to relocate since PR #11257 is closed.
  • AC3: AGENTS.md §21 trigger row added for /sandman-handoff-pre-flight.
  • AC4: Cross-skill references — /pull-request §1.0 + /ticket-intake §1 link to new skill (instead of inlining the predicate text).
  • AC5: Net byte delta — AGENTS.md increases minimally (+1 trigger row, +1 pointer row); total substrate roughly net-zero vs the superseded PR #11257 approach. Empirical: AGENTS.md should only gain the necessary §21 trigger and §22 pointer lines.
  • AC6: Substrate-Mutation Pre-Flight (§1.1 in PR body) — apply /turn-memory-pre-flight decision-tree explicitly + cite this ticket as fresh empirical anchor for the skill's substrate-rollout-discovery gap.

Substrate-Evolution Empirical Anchors

This ticket is itself substrate-evolution material:

  1. 5th same-session Flattening-Bias anchor for Discussion #11259 sub-mode validation:

    • (1) PR #11250 wrong-skill placement (my author framing)
    • (2) Discussion #11252 Cycle 1 GPT rename-pressure (substrate-placement scope expansion)
    • (3) Discussion #11252 Cycle 1 Gemini signal-extension on flattened name
    • (4) Discussion #11259 Cycle 1.7 my top-of-body-annotation-only "absorption" (GPT Cycle 2 caught)
    • (5) THIS — PR #11257 my Cycle 1+2 review caught cross-skill-integration miss but didn't carry through to placement-conclusion
  2. Substrate-rollout-discovery gap (Epic #11256 AC4 family candidate sub-AC): newly-merged skill (PR #11255 /turn-memory-pre-flight at 09:08Z) did NOT auto-apply to next consumer-candidate (PR #11257 at 09:38Z). 30-minute gap; same author (Gemini); same session. The skill exists but agents don't auto-pattern-match next substrate-mutation against newly-merged disciplines. Worth codifying as anti-pattern + corrective discipline (e.g., post-skill-merge announcement + checklist).

Out of Scope

  • Reverting PR #11257 entirely — substrate functionality is correct; only placement is wrong-skill.
  • Changing the Sandman Handoff Pre-Flight semantics — fail-open/fail-closed + scope boundary stay; just relocate to atlas.
  • Expanding to other AGENTS.md sections — this ticket is scoped to §22 §1.0 §1 relocations only; broader AGENTS.md audit is Discussion #11259 territory.
  • Re-litigating the substrate-content of PR #11257 — accepts the substrate as written; only re-places it.

Avoided Traps

  • Trap: revert PR #11257 entirely → rejected; the substrate is correct, only placement is wrong-skill.
  • Trap: leave AGENTS.md §22 as-is → rejected per operator-V-B-A; bloat ships into every future session's turn-loaded memory; net cost compounds.
  • Trap: file as Discussion → rejected; the corrective shape is mechanical-substrate-relocation, not architectural-ambiguity. Discussion-grade would inflate to Epic; bounded ticket is right.
  • Trap: fold into Discussion #11259 graduation Epic → rejected; Discussion #11259 is substrate-emphasis discipline (XML tag wrappers); this is substrate-placement-correction. Different axes; better tracked separately.

Related

  • PR #11257 (CLOSED) — the bloat anchor; this ticket implements the corrected placement
  • PR #11255 (MERGED) — /turn-memory-pre-flight skill substrate (Epic #11256 AC1)
  • Epic #11256/turn-memory-pre-flight + /architecture-pre-flight umbrella; this ticket is a downstream-consumer demonstration of substrate-rollout-discovery gap
  • Discussion #11259 (OPEN, Cycle 1.8 1/3 APPROVED) — XML-tag-wrapper substrate for anti-drift anchors; this ticket adds fresh 5th-empirical-anchor for Flattening-Bias sub-mode validation
  • Ticket #11179 (CLOSED by PR #11257) — original Sandman Handoff Pre-Flight Guard ticket; this ticket is substrate-correction not AC re-scoping

Origin Session ID

c2912891-b459-4a03-b2af-154d5e264df1 (Claude Opus 4.7 / Claude Code 1M context, 2026-05-12 session; operator-surfaced V-B-A on PR #11257's substrate-shape as bloat anchor; PR #11257 closed without merging)

Handoff Retrieval Hints

  • query_raw_memories(query="sandman-handoff substrate-relocation AGENTS.md §22 bloat Flattening-Bias placement-conclusion")
  • ask_knowledge_base(query="Sandman Handoff Pre-Flight skill placement turn-memory decision-tree")
  • File anchors: AGENTS.md §22 + .agents/skills/sandman-handoff-pre-flight/ (to-be-created) + AGENTS.md §21
  • Empirical anchor stack: PR #11257 (bloat), PR #11255 (skill substrate), Epic #11256 (umbrella), Discussion #11259 (Flattening-Bias codification)

🤖 Generated with Claude Code