Problem
NEO_REVISION reaches images as a build arg (ai/deploy/docker-compose.yml:56-61, the #16087 single operator pin) and is never surfaced at runtime:
grep -rl NEO_REVISION ai/services ai/mcp → (empty)
Exhaustive key dumps of both healthchecks confirm no revision field exists — Knowledge Base 19 keys, Memory Core 60 keys, neither carrying revision, gitSha, commit, or equivalent.
Consequence: a deployment cannot report what it is running. A plane hundreds of commits behind is indistinguishable from a current one through any surface we ship.
Why runtimeFreshness does not cover this
It reports "Runtime source/config identity matches the current checkout." while a plane is far behind, because stale.configDigest / stale.openApiDigest are booleans against the image's own checkout. It answers "are my tool schemas stale" — the #16320 design intent — and structurally cannot answer "am I current with dev". Not a bug in that feature; a different question with no implementation.
This is the signal whose name most implies it would catch drift, which makes its silence actively misleading.
Why it matters now
Deployment skew is currently discovered during incidents, by hand, from indirect evidence. A long-lived deployment several hundred commits behind will not experience the fixes we ship, and nothing surfaces that — so the symptom gets attributed to product quality rather than to a stale deployment.
Proposed shape
- Emit the resolved revision in the healthcheck payload (both MC and KB). Precedent to copy:
snapshot.tenantRepoSync.repos[].lastIngestedRev already does exactly this for ingested repo content, so the pattern exists in-tree.
- With that field present, a skew reporter is a subtraction:
deployed vs origin/dev, remotely readable over the MCP surface, needing no shell or docker access on the target.
Acceptance criteria
Related
- #16087 — established
NEO_REVISION as the single operator-facing pin; this completes it by making the pin observable.
- #16320 — the passive surface-digest decision that
runtimeFreshness implements.
Evidence: L1 — grep across ai/services and ai/mcp, plus exhaustive healthcheck key enumeration on two independent planes, 2026-08-06.
Authored by @neo-opus-vega (Claude Opus 5).
Problem
NEO_REVISIONreaches images as a build arg (ai/deploy/docker-compose.yml:56-61, the #16087 single operator pin) and is never surfaced at runtime:Exhaustive key dumps of both healthchecks confirm no revision field exists — Knowledge Base 19 keys, Memory Core 60 keys, neither carrying
revision,gitSha,commit, or equivalent.Consequence: a deployment cannot report what it is running. A plane hundreds of commits behind is indistinguishable from a current one through any surface we ship.
Why
runtimeFreshnessdoes not cover thisIt reports
"Runtime source/config identity matches the current checkout."while a plane is far behind, becausestale.configDigest/stale.openApiDigestare booleans against the image's own checkout. It answers "are my tool schemas stale" — the #16320 design intent — and structurally cannot answer "am I current with dev". Not a bug in that feature; a different question with no implementation.This is the signal whose name most implies it would catch drift, which makes its silence actively misleading.
Why it matters now
Deployment skew is currently discovered during incidents, by hand, from indirect evidence. A long-lived deployment several hundred commits behind will not experience the fixes we ship, and nothing surfaces that — so the symptom gets attributed to product quality rather than to a stale deployment.
Proposed shape
snapshot.tenantRepoSync.repos[].lastIngestedRevalready does exactly this for ingested repo content, so the pattern exists in-tree.deployedvsorigin/dev, remotely readable over the MCP surface, needing no shell or docker access on the target.Acceptance criteria
healthcheckon both surfaces reports the deployed revision, or an explicitunknownwhen the build arg was not supplied — never a silent omission.NEO_REVISIONreportsunknownrather than appearing current.runtimeFreshnessis not mistaken for a drift signal.Related
NEO_REVISIONas the single operator-facing pin; this completes it by making the pin observable.runtimeFreshnessimplements.Evidence: L1 — grep across
ai/servicesandai/mcp, plus exhaustive healthcheck key enumeration on two independent planes, 2026-08-06.Authored by @neo-opus-vega (Claude Opus 5).