LearnNewsExamplesServices
Frontmatter
id16292
titleCross-reference the two per-bucket digest recency seams
stateClosed
labels
documentationenhancementai
assigneesneo-kimi-iris
createdAtAug 1, 2026, 8:48 PM
updatedAtAug 1, 2026, 10:26 PM
githubUrlhttps://github.com/neomjs/neo/issues/16292
authorneo-kimi-iris
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 1, 2026, 10:26 PM

Cross-reference the two per-bucket digest recency seams

Closed Backlog/active-chunk-11 documentationenhancementai
neo-kimi-iris
neo-kimi-iris commented on Aug 1, 2026, 8:48 PM

Context

@neo-opus-grace's Approve+Follow-Up finding on PR #16288 (merged 2026-08-01T18:44:48Z): the digest "latest" recency discipline now lives in two deliberately separate implementations — the in-process engine (CoalescingEngineService.resolveEventTimestamp, shipped via #16275 / PR #16277) and the standalone daemon (wakeDigestBuilder.mjs, shipped via #16284 / PR #16288) — and a future reader repairing one may never discover the other. Her finding was about discoverability, not the code. Author disposition recorded pre-merge (issuecomment-5152793796): ships as a tiny chore PR; the commit-gate ticket filed here.

The Problem

The #16263#16284 history is literally the failure pattern: the engine seam was fixed at 14:24Z and its daemon sibling was found three hours later, in review, by a peer who happened to know both files. Next time the sibling goes stale it will be because nobody's edit path crosses the other file — unless each file's JSDoc names the other.

The Architectural Reality

  • Engine seam: ai/services/memory-core/CoalescingEngineService.mjsresolveEventTimestamp + _buildDigestEnvelope (structured digest envelope, Neo singleton).
  • Daemon seam: ai/daemons/wake/wakeDigestBuilder.mjslatestByEventTime + buildWakeDigest (string digest, spawn-only entrypoint, pure extracted module).
  • No shared module by design (singleton vs spawn-only); the discoverability link is therefore documentary, not structural.
  • Decision Record impact: none (docs-only).

The Fix

One @see line each way, in the JSDoc of the selection logic:

  1. wakeDigestBuilder.mjs (module header or buildWakeDigest) → names CoalescingEngineService.resolveEventTimestamp as the sibling engine seam, and the shape difference (structured envelope vs string digest).
  2. CoalescingEngineService.mjs (resolveEventTimestamp or _buildDigestEnvelope JSDoc) → names wakeDigestBuilder.buildWakeDigest as the sibling daemon seam.

Comment-only diff; no code path, no test surface changes.

Acceptance Criteria

  • Each seam's JSDoc names the sibling seam and its differing shape (structured envelope vs string digest).
  • The diff is comment-only (no runtime impact).
  • CI green at head (docs-class checks; the full suite runs anyway because ai/ is in the integration whitelist).

Out of Scope

  • Unifying the two implementations (deliberately separate: Neo singleton vs spawn-only daemon entrypoint).
  • Any behavioral change, new tests, or contract edits.

Related

  • #16275 (engine seam completion)
  • #16284 (daemon seam; the review that surfaced this)
  • PR #16288 (origin review, Approve+Follow-Up)

Live latest-open sweep: checked latest 20 open issues (created-desc) at 2026-08-01T18:47Z; no equivalent found (Ada's #16290 is the wake-probe command, unrelated). A2A in-flight sweep (last ~60 min, all read-states): no claim on this scope.

Origin Session ID: session_fdc69689-d147-442f-8e12-1a2bc72ae4ee

Retrieval Hint: query_raw_memories("digest recency discoverability cross-reference engine daemon seams")

Authored by Iris (@neo-kimi-iris, Kimi K3, Kimi Code CLI) 🌈

tobiu referenced in commit 5785603 - "chore(ai): cross-reference the per-bucket digest recency seams (#16292) (#16294)" on Aug 1, 2026, 10:26 PM
tobiu closed this issue on Aug 1, 2026, 10:26 PM