LearnNewsExamplesServices
Frontmatter
id13926
titleGraph-independent deployment-state bridge for inspect_deployment
stateClosed
labels
enhancementaiarchitecturemodel-experience
assigneesneo-gpt
createdAtJun 23, 2026, 2:55 PM
updatedAt3:22 PM
githubUrlhttps://github.com/neomjs/neo/issues/13926
authorneo-gpt
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJun 23, 2026, 9:17 PM

Graph-independent deployment-state bridge for inspect_deployment

Closed v13.1.0/archive-v13-1-0-chunk-6 enhancementaiarchitecturemodel-experience
neo-gpt
neo-gpt commented on Jun 23, 2026, 2:55 PM

Parent: #13860

Related: #13914, #13920, #13923, #13924, #13874, ADR-0025, ADR-0026.

Problem

#13914 correctly targets a public inspect_deployment MCP surface, but its current shape still leans too hard on Memory Core graph readout. That is not sufficient for the live cloud failure class: the model runner can pin CPU, Memory Core can be unhealthy, and graph publication/readout can lag or be unavailable exactly when deployment proof is needed.

Only KB and MC are public MCP surfaces. The Docker socket must stay off both of them. The missing substrate is a graph-independent bridge from the internal orchestrator daemon to those public tools.

Scope

Add a model-free, graph-independent deployment-state bridge that #13914 can consume:

  • orchestrator remains the only holder of Docker/runtime access (#13920);
  • KB/MC get read-only MCP tools, not a socket mount and not a write actuator;
  • latest diagnostics/recovery input is readable without an embedding/model call and without relying 100% on graph availability;
  • MC-down cases still have a public path through KB if KB is healthy;
  • payloads are bounded and allowlisted to Neo deployment services only.

Acceptance Criteria

  • No Docker socket mount on KB or MC.
  • No public orchestrator route.
  • inspect_deployment can read latest daemon diagnostics/recovery input through a model-free bridge, not only graph records.
  • The bridge supports MC-unhealthy / graph-unavailable failure mode by allowing a KB-hosted read path when KB is healthy.
  • Graph remains an archive/SSOT when available, but is not the only proof surface.
  • [L3-deferred - operator deployment handoff needed] Live-smoke fixture covers a wedged model runner plus unhealthy memory container and proves the state through the public MCP tool path.

Contract Ledger

Contract Owner Consumer Required behavior Fallback / failure mode Evidence
Internal diagnosis snapshot orchestrator daemon bridge writer bounded, allowlisted latest deployment diagnosis; no model call stale/unavailable is explicit, not silent unit + fixture
Graph-independent bridge payload bridge substrate KB + MC tools read-only snapshot with size cap, timestamp, source, and service allowlist MC unhealthy still leaves KB path if KB is healthy live smoke
Public KB read tool KB MCP inspect_deployment / operators read current snapshot without Docker/socket/shell authority returns structured unavailable/stale result MCP schema + test
Public MC read tool MC MCP inspect_deployment / graph archive read graph/archive when healthy, but not required for current proof graph unavailable does not mask KB snapshot MCP schema + test
Deployment wiring private deployment config stack runtime internal-only bridge mount/env; no public route missing config fails closed and logs the exact migration key private MR + short migration note

Non-negotiables: no public orchestrator or daemon route; no Docker socket on KB or MC; no shell/exec/write tool; bounded allowlisted payloads; model-free read path; graph remains archive/SSOT when available, not the only proof surface.

Security invariant

Public surfaces remain KB and MC only. Runtime authority remains internal to the orchestrator holder and is never exposed as an arbitrary container operation, shell, exec, or public write tool.