{
  "generated_at": "2026-07-01T09:33:38Z",
  "surface": {
    "name": "qazagents.qdev.run",
    "title": "QazAgents Operator Console",
    "role": "visual operator shell over Hermes, MCP, and project coverage",
    "live_url": "https://qazagents.qdev.run/"
  },
  "source_of_truth": {
    "repo": "/Users/belilovsky/Documents/Codex/2026-04-28/gpt-codex-qazlake-6-8-codex",
    "status_json": "/Users/belilovsky/Documents/Codex/2026-04-28/gpt-codex-qazlake-6-8-codex/docs/ops/hermes-status-latest.json",
    "namespace_registry_json": "/Users/belilovsky/Documents/Codex/2026-04-28/gpt-codex-qazlake-6-8-codex/docs/ops/mcp-hermes-namespace-registry-latest.json",
    "project_inventory_json": "/Users/belilovsky/Documents/Codex/2026-04-28/gpt-codex-qazlake-6-8-codex/docs/ops/mcp-hermes-project-inventory-latest.json"
  },
  "operator_status": {
    "score": 90,
    "top_class_readiness": "operational_core_not_top_class",
    "top_class_score": 50,
    "top_class_blocked_count": 2,
    "top_class_attention_count": 2,
    "provider_ok": true,
    "direct_completion_ok": true,
    "hermes_cli_budget_blocked": true,
    "host_healthy": false,
    "health_findings": [
      "disk_high: 91%"
    ]
  },
  "mcp": {
    "observed_tools": 53,
    "required_active_namespaces": [
      "platform-catalog",
      "pssr-read",
      "qazagents-read",
      "qazcompute",
      "qazlake-read",
      "qazpipe-read",
      "qazshield-read"
    ],
    "observed_namespaces": [
      "platform-catalog",
      "pssr-read",
      "qazagents-read",
      "qazcompute",
      "qazlake-read",
      "qazpipe-read",
      "qazpolit-read",
      "qazshield-read"
    ],
    "optional_namespaces": [
      "qazpolit-read"
    ],
    "missing_active_namespaces": [],
    "namespace_tool_counts": {
      "platform-catalog": 12,
      "pssr-read": 5,
      "qazagents-read": 7,
      "qazcompute": 6,
      "qazlake-read": 7,
      "qazpipe-read": 5,
      "qazpolit-read": 6,
      "qazshield-read": 5
    }
  },
  "coverage": {
    "project_roots": 60,
    "covered_ready": 57,
    "template_pending": 0,
    "uncovered": 0,
    "sample_project_configs": [
      "/Users/belilovsky/Documents/Codex/2026-04-28/codex-deep-audit-echo-sounder-6/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/codex-deep-audit-prompt-av-design/authoritative-sgeo-platform/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/codex-prompt-echo-sounder-echo-qdev/echo-sounder/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/editorial-hub/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/https-github-com-belilovsky-constitution-rag/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/https-github-com-belilovsky-crisis-monitor/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/https-github-com-belilovsky-crisis-monitor/cmnt-web-work/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/https-github-com-belilovsky-kazakh-translate/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/https-github-com-belilovsky-mazhilis-viii/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/https-github-com-belilovsky-taskqueue/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/qsign-translator-archive/.mcp.json",
      "/Users/belilovsky/Documents/Codex/2026-04-28/qsign-translator-ui-pass/.mcp.json"
    ]
  },
  "runtime": {
    "primary_model": "mistralai/mistral-small-3.2-24b-instruct",
    "fallback_model": "meta-llama/llama-3.1-8b-instruct",
    "disk_pct": 91,
    "mem_available_mb": 4250,
    "docker_visible_count": 63
  },
  "top_class_gates": [
    {
      "gate_id": "mcp_coverage",
      "title": "MCP active project coverage",
      "status": "pass",
      "evidence": "covered_ready=57; project_roots=57; missing_active=[]; uncovered=0",
      "next_action": "Run scripts/mcp_hermes_smoke.sh --check --probe and fix missing active namespaces or project templates.",
      "owner": "Codex"
    },
    {
      "gate_id": "provider_matrix",
      "title": "Primary and fallback provider matrix",
      "status": "pass",
      "evidence": "primary_ok=True; fallback_ok=True; primary=mistralai/mistral-small-3.2-24b-instruct; fallback=meta-llama/llama-3.1-8b-instruct",
      "next_action": "Repair provider keys/routing until both primary and fallback return OK.",
      "owner": "Codex/Owner"
    },
    {
      "gate_id": "hermes_chat_path",
      "title": "Hermes chat path without budget block",
      "status": "owner_blocked",
      "evidence": "direct_completion_ok=True; chat_ok=False; budget_blocked=True",
      "next_action": "Increase provider prompt entitlement or route hermes chat to a model/profile that stays inside budget.",
      "owner": "Owner"
    },
    {
      "gate_id": "host_disk_headroom",
      "title": "VPS disk headroom",
      "status": "blocked",
      "evidence": "disk_pct=91; top-class target is <80%",
      "next_action": "Approve retention cleanup, move large snapshots, or resize storage until disk_pct is below 80%.",
      "owner": "Owner"
    },
    {
      "gate_id": "host_health",
      "title": "Host health watchdog",
      "status": "attention",
      "evidence": "healthy=False; findings=['disk_high: 91%']; mem_available_mb=4250; docker_visible_count=63",
      "next_action": "Resolve host findings and rerun scripts/hermes_daily_vps_health_watchdog.py.",
      "owner": "Codex/Owner"
    },
    {
      "gate_id": "telegram_operator_channel",
      "title": "Telegram operator channel proof",
      "status": "pass",
      "evidence": "/Users/belilovsky/Documents/Codex/2026-04-28/gpt-codex-qazlake-6-8-codex/docs/ops/hermes-telegram-proof-2026-06-29.md",
      "next_action": "Send and document a fresh Telegram proof before claiming operator notification coverage.",
      "owner": "Codex/Owner"
    },
    {
      "gate_id": "qazagents_operator_surface",
      "title": "QazAgents operator surface",
      "status": "pass",
      "evidence": "docs/ops/qazagents-operator-bundle-latest.json and live marker smoke are checked by scripts/refresh_qazagents_operator_live.sh",
      "next_action": "Keep QazAgents attached to the generated operator bundle; do not hand-edit status copy.",
      "owner": "Codex"
    },
    {
      "gate_id": "ci_or_fallback_gate",
      "title": "CI or documented fallback gate",
      "status": "attention",
      "evidence": "GitHub Actions may be blocked by account billing; local/VPS scripts are available as fallback.",
      "next_action": "Restore GitHub Actions billing or record fallback gate output in every closeout.",
      "owner": "Owner/Codex"
    }
  ],
  "ui_modules": [
    {
      "id": "operator-overview",
      "title": "Operator Overview",
      "purpose": "single-screen truth for Hermes status, budget blockers, and host attention"
    },
    {
      "id": "mcp-namespace-map",
      "title": "MCP Namespace Map",
      "purpose": "show active namespaces, tool counts, and drift/missing coverage"
    },
    {
      "id": "project-coverage",
      "title": "Project Coverage",
      "purpose": "visualize MCP-covered repos and intake gaps"
    },
    {
      "id": "agent-registry",
      "title": "Agent Registry",
      "purpose": "keep current QazAgents profiles visible, but tie them to live operator state"
    },
    {
      "id": "runtime-blockers",
      "title": "Runtime Blockers",
      "purpose": "separate provider-budget, auth, and host-maintenance blockers"
    }
  ],
  "guardrails": [
    "qazagents.qdev.run should be the operator facade, not the only source of truth",
    "live secrets, auth state, and write actions stay in Hermes/runtime, not in the static site bundle",
    "status claims must come from generated JSON artifacts, not hand-written UI copy",
    "Hermes CLI budget_blocked must remain visible until provider entitlement changes"
  ]
}
