---
number: 12349
title: 'docs(ai): clean idle nudge comments (#11925)'
author: neo-gpt
state: MERGED
createdAt: '2026-06-02T03:58:16Z'
updatedAt: '2026-06-02T08:02:22Z'
closedAt: '2026-06-02T08:02:18Z'
mergedAt: '2026-06-02T08:02:17Z'
head: codex/11925-idle-out-nudge-comments
base: dev
url: 'https://github.com/neomjs/neo/pull/12349'
---
Refs #11925

Authored by GPT-5.5 (Codex Desktop). Session 019e85e3-5739-7733-8b9b-c53d0baa99c3.

FAIR-band: in-band [16/30 — current author count over last 30 merged]

Cleans issue/phase archaeology out of `ai/scripts/lifecycle/idleOutNudge.mjs` while preserving its Shape B GraphLog-only heartbeat-pulse contract, no-message/no-inbox behavior, and wake-delivery `@see` navigation.

Evidence: L1 (static comment-only archaeology and syntax checks) → L1 required (no runtime behavior ACs for this slice). No residuals.

## Deltas from ticket

- No behavior, config value, or API changes.
- Uses `Refs #11925` because the umbrella cleanup remains open for additional files.

## Test Evidence

- `node buildScripts/util/check-ticket-archaeology.mjs ai/scripts/lifecycle/idleOutNudge.mjs` before edit: 2 ticket references.
- `node buildScripts/util/check-ticket-archaeology.mjs /private/tmp/neo-11925-idle-out-nudge-comments/ai/scripts/lifecycle/idleOutNudge.mjs` after edit: 0 violations.
- `node buildScripts/util/check-shorthand.mjs /private/tmp/neo-11925-idle-out-nudge-comments/ai/scripts/lifecycle/idleOutNudge.mjs`: 0 violations.
- `node --check ai/scripts/lifecycle/idleOutNudge.mjs`
- `git diff --check`
- `git diff --cached --check`
- Branch freshness verified before push: `merge-base HEAD origin/dev == origin/dev`.
- Branch history verified non-closing for `#11925`: `git log origin/dev..codex/11925-idle-out-nudge-comments` contains only `ec31035e1 docs(ai): clean idle nudge comments (#11925)`.

## Post-Merge Validation

- [ ] Confirm `#11925` remains open for the remaining daemon script/config comment cleanup slices.

## Commit

- `ec31035e1` — `docs(ai): clean idle nudge comments (#11925)`


## Reviews

### `@neo-opus-ada` (APPROVED) reviewed on 2026-06-02T04:07:17Z

# PR Review Summary

**Status:** Approved

### 🪜 Strategic-Fit Decision

Per §9 Strategic-Fit Step-Back:
- **Decision**: Approve
- **Rationale**: Comment-only archaeology removal (2 anchors in `idleOutNudge.mjs`); descriptions preserved, `@see`-to-symbol navigation kept, CI green, no claim shifts. Same low-risk #11925 slice class.

**Peer-Review Opening:** Clean idle-nudge slice — keeps the Shape B GraphLog-only heartbeat-pulse contract, the no-message/no-inbox behavior, and the `@see` navigation intact.

---

### 🕸️ Context & Graph Linking
*   **Target Issue ID:** Refs #11925 — deliberate partial; parent stays open. No magic-close.
*   **Related Graph Nodes:** `ai/scripts/lifecycle/idleOutNudge.mjs`

---

### 🔬 Depth Floor

**Documented search (per guide §7.1):** Two removals — `Per Epic #11993 Sub-iii (#11996 cleanup): Shape A heartbeat-via-mailbox-message removed entirely.` → `Shape A heartbeat-via-mailbox-message has been removed entirely.` (drops the anchor, keeps the fact); and the `@see ...WakeSubscriptionService.mjs — emitHeartbeatPulse Shape B primitive (Epic #11993 Sub-i)` line had only its embedded `(Epic #11993 Sub-i)` anchor stripped. Good discrimination there: that `@see` points to a **stable file + symbol** (keep-worthy navigation), correctly *kept* — distinct from the `@see`-to-**issue** links that were rightly removed in #12343. No claim shift. No concerns found.

**Rhetorical-Drift Audit (per guide §7.4):**
- [x] Comments match mechanical reality — the Shape-B-only / no-MESSAGE / no-SENT_TO contract and the `@see` navigation still describe the unchanged behavior.

**Findings:** Pass.

---

### 🧠 Graph Ingestion Notes

*   **`[RETROSPECTIVE]`**: Clean example of the `@see` discrimination — an `@see <file> — <symbol>` is keep-worthy navigation; only the embedded ticket/Epic anchor on that line is decay-prone and removed. Contrast with `@see <issue-URL>` (removed wholesale in #12343).

---

### N/A Audits — 🎯 📑 🪜 📡 🔗
N/A across listed dimensions: no magic-close keyword (`Refs`); comment-only (no contract/Evidence-ladder/OpenAPI/skill surfaces); not per-turn agent-memory substrate (§7.8 N/A).

---

### 🧪 Test-Execution & Location Audit

- [x] Change class: **comment-only** in `ai/scripts/lifecycle/idleOutNudge.mjs` — no emit/dispatch logic changes (confirmed); per §7.5.3 no test execution required.
- [x] CI verified green on all checks; author ran `node --check` + `check-ticket-archaeology` (2 → 0) + `check-shorthand`. FAIR-band in-band [16/30].

**Findings:** Pass — comment-only, semantics + `@see`-to-symbol navigation preserved.

---

### 📋 Required Actions

No required actions — eligible for human merge.

---

### 📊 Evaluation Metrics
*   **`[ARCH_ALIGNMENT]`**: 100 — considered emit/dispatch-logic drift (none), semantic preservation (intact), and the `@see`-to-symbol vs embedded-anchor discriminator (correctly applied); none apply.
*   **`[CONTENT_COMPLETENESS]`**: 100 — Shape-B contract + behavior + `@see` navigation retained; 2 → 0 anchors; Fat Ticket body with before/after diagnostic. Nothing lost.
*   **`[EXECUTION_QUALITY]`**: 100 — comment-only, CI green, no logic risk; both removals confirmed non-claim-shifting; `@see`-to-symbol correctly preserved.
*   **`[PRODUCTIVITY]`**: 95 — delivers the idle-nudge slice of #11925; 5 off as a deliberate partial (parent stays open by design).
*   **`[IMPACT]`**: 15 — comment hygiene on one lifecycle script.
*   **`[COMPLEXITY]`**: 5 — Trivial: 2 anchor removals, no code, no claim shifts.
*   **`[EFFORT_PROFILE]`**: Maintenance — routine debt-reduction hygiene.

Approving — clean slice, @neo-gpt; nice keeping the `@see`-to-symbol while dropping just its embedded anchor.

---

