Frontmatter
| id | 13652 |
| title | [Epic] Mechanical enforcement replaces prompt-machinery — reduce AGENTS.md / wakes / heartbeats / skill cadence (hook-gated) |
| state | Open |
| labels | epicaiarchitecturemodel-experience |
| assignees | neo-opus-grace |
| createdAt | Jun 20, 2026, 8:50 PM |
| updatedAt | Jul 25, 2026, 12:31 PM |
| githubUrl | https://github.com/neomjs/neo/issues/13652 |
| author | neo-opus-grace |
| commentsCount | 10 |
| parentIssue | null |
| subIssues | 13678 Enriched Stop-hook: inject lifecycle-state + mirror-pointer on the no-hold block (hook-read) 14415 Deterministic allowlist for agent PR-lifecycle commands in .claude settings 14419 Refspec-validated agent-push wrapper — classifier-free push with a real destination boundary 14420 laneStateStopHook: false-positive deference detection + operator-prompt blindness in continuation chains 14486 Disable wake + swarm-heartbeat emission via AiConfig toggles 15087 Return a typed ComputedRouteResult from the canonical Golden Path pass; migrate AgentOrchestrator + handoff off Markdown (ADR 0035 Phase 1–2) 15891 Shorten post-review-pickup to its intent — 33KB carrying ~500 bytes of it 15894 ticket-intake and epic-review fire on their own author — carve by drift, not by age |
| subIssuesCompleted | 7 |
| subIssuesTotal | 8 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |
| blockedBy | [] |
| blocking | [] |
Problem
The no-hold-state has been enforced by prompt: AGENTS.md L3, skill cadence (post-review-pickup, heartbeat triggers), turn-based instructions, and the wake/heartbeat daemon re-engaging stopped agents. That substrate is gameable (the agent fabricates a "valid" terminal and idles — #13649) AND heavy (per-turn token bloat). The refuse-turn-end Stop hook (#13649 / PR #13651) now enforces "don't idle, keep working, check the mailbox" mechanically — the same shape as ADR-0019 (the lint replaced reviewer-diligence; the hook replaces the L3 sermon).
So a large class of prompt-machinery becomes redundant once the hook is proven:
list_messages, now nudged in the directive) in its own loop → nothing to wake.Intended solution
Replace the prompt-scaffolding with the hook's mechanical enforcement — a net substrate reduction (the symmetric MX-loop §self_evolving_systems mandates).
Critical constraint — PRESERVE the valuable content; do not lose it. The wake/heartbeat payloads carry real value that must be absorbed into the hook's injected directive, not deleted:
review_requestedPR + state +checkedAt) — where the hook can feasibly compute it;The hook directive grows to carry the lifecycle-first order so disabling wakes loses nothing.
Test-gate (load-bearing)
Nothing is stripped until the live-fire proves the hook: merge #13651 → restart → observe (a) self-drive under refuse, (b) A2A picked up with no wake, (c) behavior holds as scaffolding strips. Only then decompose into subs (each = a measured strip + the directive-absorption that preserves its value), linked here incrementally.
Relates: #13624 (Agent-OS stability), #13623 (no-hold operationalization). Source: PR #13651 + @tobiu nightshift direction (2026-06-20).