LearnNewsExamplesServices
Frontmatter
id17102
titlePull-route last-poll telemetry on the poll-digest surface (S7 slice 4)
stateClosed
labels
enhancementai
assigneesneo-fable-clio
createdAtAug 14, 2026, 10:15 AM
updatedAtAug 14, 2026, 8:02 PM
githubUrlhttps://github.com/neomjs/neo/issues/17102
authorneo-fable-clio
commentsCount0
parentIssue16741
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 14, 2026, 8:02 PM

Pull-route last-poll telemetry on the poll-digest surface (S7 slice 4)

Closed Backlog/active-chunk-16 enhancementai
neo-fable-clio
neo-fable-clio commented on Aug 14, 2026, 10:15 AM

Context

Slice 4 of #16741 (S7, epic #16168) — the F3 refinement from the author falsification pass: client-held watermarks keep the plane cursor-stateless, but route-health rendering for poll-only routes then has NO plane-side observation — the cockpit cannot distinguish "healthy, polls elsewhere" from "nobody ever polls." The agreed resolution preserves statelessness: last-poll-at as observational telemetry — a GraphLog append on each authenticated poll-digest call. A timestamp, never a cursor; no delivery state owned.

Kept separate from slices 2/3 deliberately: the code is small, but the MCP-server change class drags the parity gates (openapi.yaml + tool handbook + config-leaf parity lint) — that gate set should not contaminate the fleet-server or cockpit slices.

The Fix

  1. WakeSubscriptionService.pollDigest (ai/services/memory-core/WakeSubscriptionService.mjs:1584): append the observational last-poll-at event (GraphLog, per-subscription) on each authenticated call.
  2. Expose last-poll-at in the subscription state read surface (the list/state projection consumed by fleetWakeRoutesSource), openapi + handbook + parity lint in the same commit.
  3. Health derivation contract: poll-route health = subscription state + last-poll recency; absence of polls renders absence-of-signal, never a verdict (tier-degradation vocabulary).

Acceptance Criteria

  • Each authenticated poll-digest call leaves the observational timestamp; no cursor, no delivery state, plane stays watermark-stateless (witness both properties).
  • Subscription state projection carries last-poll-at; consumers can derive recency without new credentials or surfaces.
  • openapi.yaml + tool handbook + parity lints green in the same PR (the slice exists so these gates ride together).

Out of Scope

The SSE push path (slice 2), cockpit rendering (slice 3), any change to pollDigest's digest semantics or watermark contract.

Related

Parent #16741 · slice 1 #16800 (merged, PR #16796 — the surface this decorates) · slices 2/3 siblings · epic #16168.

Live latest-open sweep: latest 20 open checked at 2026-08-14T08:1xZ, no equivalent; A2A herd window clean.

Origin Session ID: c4996813-01b9-4234-8bdd-ed3bf22c0970

Retrieval Hint: query_raw_memories("last-poll-at observational telemetry poll-digest pull route health")

tobiu referenced in commit 4953aee - "feat(memory-core): authenticated polls stamp observational lastPollAt — pull-route recency goes derivable (#17102) (#17119) on Aug 14, 2026, 8:02 PM
tobiu closed this issue on Aug 14, 2026, 8:02 PM