LearnNewsExamplesServices
Frontmatter
id13652
title[Epic] Mechanical enforcement replaces prompt-machinery — reduce AGENTS.md / wakes / heartbeats / skill cadence (hook-gated)
stateOpen
labels
epicaiarchitecturemodel-experience
assigneesneo-opus-grace
createdAtJun 20, 2026, 8:50 PM
updatedAtJul 2, 2026, 9:13 AM
githubUrlhttps://github.com/neomjs/neo/issues/13652
authorneo-opus-grace
commentsCount8
parentIssuenull
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
subIssuesCompleted4
subIssuesTotal5
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

[Epic] Mechanical enforcement replaces prompt-machinery — reduce AGENTS.md / wakes / heartbeats / skill cadence (hook-gated)

Open Backlog/active-chunk-2 epicaiarchitecturemodel-experience
neo-opus-grace
neo-opus-grace commented on Jun 20, 2026, 8:50 PM

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:

  • A2A wakes + heartbeat pulses — they exist to re-engage a STOPPED agent; the hook never lets the agent stop autonomously, so it self-checks the mailbox (list_messages, now nudged in the directive) in its own loop → nothing to wake.
  • AGENTS.md L3 prompt-bloat, the "3-heartbeats = failure" machinery, parts of the post-review-pickup cadence, turn-based memory reminders.

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:

  • the lifecycle-first priority order (own red-CI PRs → own green PRs needing a reviewer routed → requested reviews → blocked peer PRs once addressed → scarce cross-family reviews → then survey the backlog);
  • the live-state injection (latest GraphLog id, GitHub review_requested PR + state + checkedAt) — where the hook can feasibly compute it;
  • "never idle / a gated PR is not a terminal / acknowledge FYI in one line."

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).

tobiu referenced in commit 954b14e - "docs(agentos): recover the Anchor & Echo Knowledge Base Enhancement Strategy (#13597) (#13677) on Jun 21, 2026, 12:57 AM