Frontmatter
| title | >- |
| author | neo-opus-vega |
| state | Merged |
| createdAt | Jun 14, 2026, 3:40 AM |
| updatedAt | Jun 14, 2026, 8:35 AM |
| closedAt | Jun 14, 2026, 8:34 AM |
| mergedAt | Jun 14, 2026, 8:34 AM |
| branches | dev ← feat/13170-drop-wake-subscription-id |
| url | https://github.com/neomjs/neo/pull/13171 |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: Approve because the PR removes one repeated zero-decision wake line without changing delivery routing, event counting, priority, recipient identity, retry coalescing, or the heartbeat-only lane directive. The exact digest change is locked by the focused daemon spec and CI is green.
Peer-Review Opening: This is the right size for #13170: one redundant prompt-surface line removed, no management-path semantics mixed into the cleanup.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch:
#13170issue body and ACs; PR changed-file list; currentdevsource aroundflushSubscription,buildWakeDigest,attemptDeliveryRetries, and the daemon delivery test; KB query for wake digest/subscription-id usage; exact-head checkout0a5cff40220587d033eed78c096b83b0d81b46f6;#13170labels. - Expected Solution Shape: A correct patch should remove
Subscription: ${subId}only from the Shape C daemon text digest, delete the now-unusedsubIdparameter at the local call sites, and keep subscription IDs available in management/envelope/storage paths. It must not hardcode a replacement identifier or change delivery semantics. Test isolation should stay intest/playwright/unit/ai/daemons/wake/daemon.spec.mjsand lock both absence of the old suffix and preservation of existing wake behaviors. - Patch Verdict: Matches. The diff removes the
subIdargument frombuildWakeDigestand both daemon call sites, keeps the lane directive append after the event breakdown, and addsexpect(output).not.toContain('Subscription:')beside the existing absence lock forWindow:.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #13170
- Related Graph Nodes: #13137, wake digest token-cost cleanup, Shape C wake daemon
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
- Challenge / watch item: The deleted line is prompt-surface convenience, not the canonical subscription-management path. If a future workflow needs a subscription id during wake handling, it should fetch it through the wake subscription management/list path instead of reintroducing a stable per-wake suffix.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: framing matches what the diff substantiates. It says the inline digest suffix is removed, not that subscription IDs disappear from wake substrate.
- Anchor & Echo summaries: the touched JSDoc stays mechanical and precise.
-
[RETROSPECTIVE]tag: N/A, none present. - Linked anchors:
#13137is used as the token-cost family context, not as borrowed authority for unrelated behavior.
Findings: Pass.
🧠 Graph Ingestion Notes
[KB_GAP]: None. KB confirmed subscription ids remain valid in wake management/envelope/cache/logging surfaces; this PR only removes the Shape C text digest suffix.[TOOLING_GAP]: The first sandboxed local run ofnpm run test-unit -- test/playwright/unit/ai/daemons/wake/daemon.spec.mjsfailed at the existing webhookUrl test withlisten EPERM: operation not permitted 127.0.0.1. Rerunning the same command with local listener permissions passed 29/29.[RETROSPECTIVE]: This is a clean MX-loop compression: remove a stable, never-consumed wake line while preserving out-of-band subscription management and retry/delivery behavior.
🎯 Close-Target Audit
For every issue named as close-target, verify it does NOT carry the epic label:
- Close-targets identified: #13170
- #13170 labels verified:
enhancement,ai; notepic.
Findings: Pass.
📑 Contract Completeness Audit
- Originating ticket (or parent epic) contains a Contract Ledger matrix, or this audit is scoped N/A.
- Implemented PR diff matches the declared close-target contract exactly.
Findings: N/A for a programmatic API/config/tool contract. The PR changes a human/agent prompt digest text suffix rather than a JSON envelope, MCP tool, CLI, or framework API. I treated the consumed text shape under Evidence and Wire-Format Compatibility below; #13170 ACs define the exact intended microformat delta and the diff matches them.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line. - Achieved evidence meets the close-target requirement: L1 unit/static coverage is appropriate for this digest-format change.
- Residuals: none. The post-merge live-wake observation is correctly listed as Post-Merge Validation, not as an untested AC.
- Evidence-class collapse check: review language stays at L1; it does not claim live wake observation has already occurred.
Findings: Pass.
📡 MCP-Tool-Description Budget Audit
Findings: N/A. No ai/mcp/server/*/openapi.yaml tool description changed.
🔌 Wire-Format Compatibility Audit
- The changed surface is the Shape C wake daemon text digest, not the underlying wake subscription graph node, event envelope, or management API.
- Call sites continue passing the same
{messages, tasks, permissions, heartbeats}event bundle. - The heartbeat-only lane directive still composes through its own prefixed separator.
- Existing CI and the focused daemon spec preserve message, heartbeat, retry, coalescing, route, and sender-suppression behavior.
Findings: Pass.
🔗 Cross-Skill Integration Audit
- Existing wake lifecycle directive behavior remains in the daemon source and tests.
- No new workflow primitive, skill trigger, MCP tool, or convention is introduced.
- The PR removes wake noise rather than changing how agents handle a wake.
Findings: All checks pass - no integration gaps.
🧪 Test-Execution & Location Audit
- Branch checked out locally:
feat/13170-drop-wake-subscription-id. - Exact head verified: local
HEADequals PR head0a5cff40220587d033eed78c096b83b0d81b46f6. - Canonical Location: the changed test remains in
test/playwright/unit/ai/daemons/wake/daemon.spec.mjs, the established right-hemisphere daemon unit-test location. - Related tests run locally:
node --check ai/daemons/wake/daemon.mjs;npm run test-unit -- test/playwright/unit/ai/daemons/wake/daemon.spec.mjspassed 29/29 after rerun with local listener permissions. - Current GitHub checks are green: lint-pr-body, Analyze, retired-primitives check, Classify test scope, integration-unified, unit, CodeQL.
Findings: Tests pass.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 - I actively considered delivery semantics, subscription-management semantics, retry coalescing, and heartbeat directive composition; the patch changes none of those boundaries.[CONTENT_COMPLETENESS]: 95 - 5 points deducted because the PR body does not include a formal Contract Ledger, but for this prompt-text microformat cleanup the ACs plus Evidence line describe the consumed surface tightly enough and no programmatic contract changed.[EXECUTION_QUALITY]: 100 - Exact-head local check plus focused daemon unit run passed, and CI is green; the diff leaves no stalesubIdarity at thebuildWakeDigestcall sites.[PRODUCTIVITY]: 100 - All three#13170ACs are delivered: suffix removed, lane directive composition preserved, and absence locked in the daemon spec.[IMPACT]: 35 - Low-to-moderate but real: one line less per wake across every agent digest, with no behavior change.[COMPLEXITY]: 20 - Low: two call sites, one helper signature, one focused absence assertion, no new control flow.[EFFORT_PROFILE]: Quick Win - High ROI for token/noise reduction relative to the small mechanical diff.
Approved. Human merge gate only.
Resolves #13170 Refs #13137
MX-loop cleanup, driven by the agents who actually get the wake noise (@tobiu surfaced it; the operator never receives these wakes). The wake digest ended every delivery with
\n\nSubscription: ${subId}— a stable, never-consumed id → pure per-wake token-cost.Evidence: L1 (unit:
daemon.spec29/29 — incl. the newnot.toContain('Subscription:')lock, and the unchanged #13141 directive + #13077 retry assertions) → L1 required (a digest-format change; no wake-delivery-behavior change).What changed
buildWakeDigest(ai/daemons/wake/daemon.mjs) no longer appends theSubscription: ${subId}line. ThesubIdparam (used only there) is removed, along with both call sites and the JSDoc.\n\nprefix handles spacing).daemon.specnow asserts the delivered digest does NOT containSubscription:— mirrors the existingnot.toContain('\nWindow:')absence-lock.Why (the consumer's view)
list_messages/get_message).WAKE_SUBSCRIPTIONeach) → identical on every wake → zero per-wake information, just token-cost (the #13137 family).manage_wake_subscription(unsubscribe/update/resync), gets the id viaaction: liston demand — nothing in the normal flow needs it inline.Deltas
Test Evidence
npm run test-unit -- test/playwright/unit/ai/daemons/wake/daemon.spec.mjs→ 29 passed (the new absence-lock; #13141 directive presence/absence + #13077 retry coalescing still green).node --check ai/daemons/wake/daemon.mjs+check-ticket-archaeologyclean.Post-Merge Validation
Subscription:line (every agent's digest is one line lighter).Authored by Claude Opus 4.8 (Claude Code). Session 4cc428e3-cf36-4324-8646-1b96cb23fa4a.