{
 "page": "github",
 "generated_at": "2026-06-18T20:38:48Z",
 "sources": {
  "github": "gh CLI read-only inventory 2026-06-10 (github-inventory.json)",
  "vps": "read-only SSH inspection 2026-06-10 (vps-inventory.json)"
 },
 "security_note": "Sanitized public snapshot. All tokens/secrets redacted. No SSH key material, no .env contents, no webhook URLs.",
 "kpis": {
  "repos": 13,
  "open_issues": 118,
  "unassigned_issues": 118,
  "open_prs": 0,
  "workflows": 10,
  "scheduled_workflows": 0,
  "deploy_workflows": 0,
  "containers_running": 64,
  "containers_unhealthy": 1,
  "github_built_containers": 1,
  "orchestrators": [
   "coolify 4.1.2",
   "dokploy",
   "nginx-proxy-manager",
   "portainer"
  ],
  "branch_count_viewport_ops": 98,
  "tree_paths_main": 1478,
  "labels": 166,
  "load_1min": 23.43,
  "uptime_days": 44
 },
 "github": {
  "collected_at": "2026-06-18T20:38:48Z",
  "org": "viewport-corp",
  "repo_count": 13,
  "note_vs_known_list": "13 actual repos vs 9-repo known list. Extra/unlisted: tenant-buddha-corporation, associate-vinay-patil. 'fork-hermes-bccl' present. demo-repository (GitHub starter) still in org.",
  "repos": [
   {
    "default_branch": "main",
    "description": "The agent that grows with you",
    "name": "fork-hermes-agent",
    "open_issues_count": 0,
    "private": false,
    "pushed_at": "2026-05-31T09:04:30Z",
    "size": 266998
   },
   {
    "default_branch": "main",
    "description": "Viewport Corporation operations, governance, migration council, and GitHub-first control plane.",
    "name": "viewport-ops",
    "open_issues_count": 23,
    "private": true,
    "pushed_at": "2026-06-10T05:34:51Z",
    "size": 25274
   },
   {
    "default_branch": "main",
    "description": "Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞 ",
    "name": "fork-openclaw",
    "open_issues_count": 2,
    "private": false,
    "pushed_at": "2026-05-31T09:03:45Z",
    "size": 1279146
   },
   {
    "default_branch": "main",
    "description": "The agent that grows with you",
    "name": "fork-hermes-bccl",
    "open_issues_count": 0,
    "private": false,
    "pushed_at": "2026-05-11T18:27:11Z",
    "size": 203495
   },
   {
    "default_branch": "main",
    "description": "Tenant BCCL / LaoWise website source. BCCL-only access boundary.",
    "name": "tenant-bccl-laowise-website",
    "open_issues_count": 0,
    "private": true,
    "pushed_at": "2026-05-12T19:01:14Z",
    "size": 24695
   },
   {
    "default_branch": "main",
    "description": "A code repository designed to show the best GitHub has to offer.",
    "name": "demo-repository",
    "open_issues_count": 0,
    "private": true,
    "pushed_at": "2026-05-30T13:48:54Z",
    "size": 2
   },
   {
    "default_branch": "main",
    "description": "Modern Lao Homes client portal source and Dokploy deployment package. Private; client-facing content only.",
    "name": "modern-lao-homes-client-portal",
    "open_issues_count": 0,
    "private": true,
    "pushed_at": "2026-05-31T01:39:07Z",
    "size": 219822
   },
   {
    "default_branch": "main",
    "description": "TradeX experimental product repo",
    "name": "product-tradex",
    "open_issues_count": 0,
    "private": true,
    "pushed_at": "2026-05-31T02:16:33Z",
    "size": 279
   },
   {
    "default_branch": "main",
    "description": "Internal private Viewport migration dashboard inspired by ReleaseBar; not a public fork.",
    "name": "migration-dashboard-internal",
    "open_issues_count": 5,
    "private": true,
    "pushed_at": "2026-06-07T04:23:30Z",
    "size": 710
   },
   {
    "default_branch": "main",
    "description": "Viewport public-safe Git-backed knowledge base for chat intake, ideas, references, and decisions.",
    "name": "viewport-kb",
    "open_issues_count": 0,
    "private": false,
    "pushed_at": "2026-06-08T18:19:16Z",
    "size": 2079
   },
   {
    "default_branch": "main",
    "description": "Viewport OS control-plane handoff and operating-state repository.",
    "name": "viewport-os",
    "open_issues_count": 2,
    "private": false,
    "pushed_at": "2026-06-05T00:11:04Z",
    "size": 15
   },
   {
    "default_branch": "main",
    "description": "Associate-scoped Hermes Agent runtime source/control repo for Vinay Patil. No secrets.",
    "name": "associate-vinay-patil",
    "open_issues_count": 2,
    "private": true,
    "pushed_at": "2026-06-07T18:22:41Z",
    "size": 38
   },
   {
    "default_branch": "main",
    "description": "BCCL / Buddha Corporation tenant source-of-truth for Hermes identity, runtime policy, evidence, and business workspace boundaries.",
    "name": "tenant-buddha-corporation",
    "open_issues_count": 0,
    "private": true,
    "pushed_at": "2026-06-08T01:16:23Z",
    "size": 17
   }
  ],
  "viewport_ops": {
   "default_branch": "main",
   "default_branch_note": "Default is main, NOT council/bootstrap-20260510 (council branch is 0 ahead / 206 behind main — fully abandoned).",
   "pushed_at": "2026-06-10T05:34:51Z",
   "branch_count": 93,
   "key_branches": {
    "main": {
     "role": "default",
     "last_commit": "2026-06-10T05:34:51Z",
     "last_msg": "Merge pull request #219 from viewport-corp/ops/status-main-218"
    },
    "council/bootstrap-20260510": {
     "role": "council bootstrap (claimed default in older docs)",
     "ahead_by": 0,
     "behind_by": 206,
     "status": "behind — abandoned since bootstrap"
    },
    "ops/openclaw-github-flow-44": {
     "role": "serves live site viewport.llc/migration",
     "ahead_by": 13,
     "behind_by": 87,
     "status": "diverged",
     "last_commit": "2026-06-10T05:17:53Z",
     "last_msg": "redesign: unify shell across all 17 migration pages"
    },
    "ops/finish-migration-p0-foundation": {
     "ahead_by": 1,
     "behind_by": 110,
     "status": "diverged"
    },
    "ops/gsd-ralphloop-githubops-runtime": {
     "ahead_by": 2,
     "behind_by": 117,
     "status": "diverged",
     "last_commit": "2026-06-05T03:25:12Z",
     "last_msg": "feat: add vps runtime reconciliation queue",
     "note": "GSD/RalphLoop runtime branch never merged; stale 5 days"
    }
   },
   "open_issues": {
    "count": 23,
    "unassigned_count": 23,
    "with_state_active": [
     15
    ],
    "with_state_blocked": [
     53,
     52
    ],
    "needs_triage": [
     214,
     213,
     212,
     195,
     194,
     193,
     192
    ],
    "key_issues": {
     "213": {
      "state": "open",
      "title": "[Control Plane]: Build Viewport closed operating loop v0.1",
      "assignee": null,
      "comments": 0,
      "labels": [
       "type:intake",
       "needs-triage"
      ],
      "note": "the closed-loop build vehicle itself sits untriaged with zero comments"
     },
     "196": {
      "state": "open",
      "title": "[GSD/RALPH] Activate GitHubOps truth loop for CompanyOS + VPS runtime",
      "assignee": null,
      "comments": 7
     },
     "195": {
      "state": "open",
      "title": "[REDESIGN] Full audit evidence publish + nav redesign",
      "assignee": null,
      "comments": 0
     },
     "15": {
      "state": "open",
      "title": "Odoo production installation and multi-company setup",
      "labels": [
       "priority-high",
       "odoo",
       "infra",
       "state:active",
       "priority:today",
       "agent-entry-required"
      ],
      "created": "2026-05-11",
      "note": "labeled priority:today + state:active for ~30 days, still unassigned"
     }
    },
    "all": [
     {
      "number": 214,
      "title": "[Research]: Evaluate GBrain as Viewport shared brain/memory layer",
      "labels": [
       "type:intake",
       "needs-triage"
      ],
      "assignees": [],
      "created": "2026-06-08T14:59:37Z",
      "updated": "2026-06-08T15:52:39Z"
     },
     {
      "number": 213,
      "title": "[Control Plane]: Build Viewport closed operating loop v0.1",
      "labels": [
       "type:intake",
       "needs-triage"
      ],
      "assignees": [],
      "created": "2026-06-08T14:57:20Z",
      "updated": "2026-06-08T14:57:20Z"
     },
     {
      "number": 212,
      "title": "[Control Plane]: Day-one-to-now chat forensic audit and live report system",
      "labels": [
       "type:intake",
       "needs-triage"
      ],
      "assignees": [],
      "created": "2026-06-08T14:01:23Z",
      "updated": "2026-06-08T14:01:23Z"
     },
     {
      "number": 196,
      "title": "[GSD/RALPH] Activate GitHubOps truth loop for CompanyOS + VPS runtime",
      "labels": [
       "companyos",
       "github-ops",
       "automation"
      ],
      "assignees": [],
      "created": "2026-06-05T03:18:03Z",
      "updated": "2026-06-05T15:18:07Z"
     },
     {
      "number": 195,
      "title": "[REDESIGN] Full audit evidence publish + nav redesign",
      "labels": [
       "anti-amnesia",
       "needs-triage",
       "chat-capture",
       "dept-engineering"
      ],
      "assignees": [],
      "created": "2026-06-05T01:12:54Z",
      "updated": "2026-06-05T01:12:54Z"
     },
     {
      "number": 194,
      "title": "[CHAT→TASK] Set up Neo4j as a company-brain component for Viewport OS",
      "labels": [
       "anti-amnesia",
       "needs-triage",
       "chat-capture",
       "tenant-unknown",
       "dept-engineering"
      ],
      "assignees": [],
      "created": "2026-06-05T00:09:59Z",
      "updated": "2026-06-05T00:09:59Z"
     },
     {
      "number": 193,
      "title": "[CHAT→TASK] Set up Neo4j as a company-brain component for Viewport OS",
      "labels": [
       "anti-amnesia",
       "needs-triage",
       "chat-capture",
       "tenant-unknown",
       "dept-engineering"
      ],
      "assignees": [],
      "created": "2026-06-05T00:08:53Z",
      "updated": "2026-06-05T00:08:53Z"
     },
     {
      "number": 192,
      "title": "[SECURITY] Session DB contains credential-pattern hits; block raw chat export",
      "labels": [
       "security",
       "anti-amnesia",
       "needs-triage"
      ],
      "assignees": [],
      "created": "2026-06-05T00:00:48Z",
      "updated": "2026-06-05T00:00:48Z"
     },
     {
      "number": 191,
      "title": "[AUDIT-FIND] Section 11 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:51Z",
      "updated": "2026-06-04T23:46:51Z"
     },
     {
      "number": 190,
      "title": "[AUDIT-FIND] Section 10 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:36Z",
      "updated": "2026-06-04T23:46:36Z"
     },
     {
      "number": 189,
      "title": "[AUDIT-FIND] Section 9 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:35Z",
      "updated": "2026-06-04T23:46:35Z"
     },
     {
      "number": 188,
      "title": "[AUDIT-FIND] Section 8 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:32Z",
      "updated": "2026-06-04T23:46:32Z"
     },
     {
      "number": 187,
      "title": "[AUDIT-FIND] Section 7 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:32Z",
      "updated": "2026-06-04T23:46:32Z"
     },
     {
      "number": 186,
      "title": "[AUDIT-FIND] Section 6 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:29Z",
      "updated": "2026-06-04T23:46:29Z"
     },
     {
      "number": 185,
      "title": "[AUDIT-FIND] Section 5 audit gaps — 2026-06-04 23:46 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:46:24Z",
      "updated": "2026-06-04T23:46:24Z"
     },
     {
      "number": 184,
      "title": "[AUDIT-FIND] Section 4 audit gaps — 2026-06-04 23:44 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:44:36Z",
      "updated": "2026-06-04T23:44:36Z"
     },
     {
      "number": 183,
      "title": "[AUDIT-FIND] Section 3 agent fleet gaps — 2026-06-04 23:36 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:36:41Z",
      "updated": "2026-06-04T23:36:41Z"
     },
     {
      "number": 182,
      "title": "[AUDIT-FIND] Section 2 VPS runtime inventory gaps — 2026-06-04 23:23 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T23:23:29Z",
      "updated": "2026-06-05T04:58:16Z"
     },
     {
      "number": 178,
      "title": "[AUDIT-FIND] Section 1 GitHub inventory gaps — 2026-06-04 22:57 UTC",
      "labels": [
       "audit",
       "AUDIT-FIND"
      ],
      "assignees": [],
      "created": "2026-06-04T22:57:56Z",
      "updated": "2026-06-04T22:57:56Z"
     },
     {
      "number": 56,
      "title": "Prepare protected dokploy.viewport.llc admin route contract",
      "labels": [
       "ops",
       "dokploy",
       "security",
       "dns",
       "state:protected"
      ],
      "assignees": [],
      "created": "2026-05-30T12:29:04Z",
      "updated": "2026-06-01T18:00:38Z"
     },
     {
      "number": 53,
      "title": "P1: TradeX MT5 compile/backtest runner path needed",
      "labels": [
       "state:blocked"
      ],
      "assignees": [],
      "created": "2026-05-29T18:25:21Z",
      "updated": "2026-06-01T18:00:35Z"
     },
     {
      "number": 52,
      "title": "Phase 5E: Fresh-node Dokploy permanent path",
      "labels": [
       "runtime",
       "company-os",
       "phase-5",
       "dokploy",
       "state:blocked"
      ],
      "assignees": [],
      "created": "2026-05-29T12:00:20Z",
      "updated": "2026-06-01T18:00:33Z"
     },
     {
      "number": 15,
      "title": "Odoo production installation and multi-company setup",
      "labels": [
       "priority-high",
       "odoo",
       "infra",
       "state:active",
       "priority:today",
       "agent-entry-required"
      ],
      "assignees": [],
      "created": "2026-05-11T08:50:55Z",
      "updated": "2026-06-01T19:18:50Z"
     }
    ]
   },
   "open_prs": {
    "count": 0,
    "list": []
   },
   "workflows": {
    "registered": [
     {
      "name": "Company OS Validate",
      "path": ".github/workflows/company-os-validate.yml",
      "state": "active",
      "triggers": "pull_request + push(ops/migration-control-plane-architecture only)"
     },
     {
      "name": "companyos-foundation",
      "path": ".github/workflows/companyos-foundation.yml",
      "state": "active",
      "triggers": "pull_request (path-filtered) + push"
     },
     {
      "name": "github-office",
      "path": ".github/workflows/github-office.yml",
      "state": "active",
      "triggers": "pull_request (path-filtered) + workflow_dispatch"
     },
     {
      "name": "repo-boundaries",
      "path": ".github/workflows/repo-boundaries.yml",
      "state": "active",
      "triggers": "pull_request + push(main)"
     },
     {
      "name": "Runtime Change Control",
      "path": ".github/workflows/runtime-change-control.yml",
      "state": "active"
     },
     {
      "name": "TradeX MT5 Core Static Check",
      "path": ".github/workflows/tradex-mt5-core-static.yml",
      "state": "active"
     },
     {
      "name": "Viewport Agent Messenger Status",
      "path": ".github/workflows/viewport-agent-messenger-status.yml",
      "state": "active",
      "triggers": "workflow_dispatch only"
     }
    ],
    "files_on_main": [
     "company-os-validate.yml",
     "companyos-foundation.yml",
     "github-office.yml",
     "repo-boundaries.yml",
     "viewport-agent-messenger-status.yml"
    ],
    "files_on_serving_branch_flow44": [
     "company-os-validate.yml",
     "viewport-agent-messenger-status.yml"
    ],
    "schedule_cron_triggers": "NONE — no workflow has a schedule: trigger; nothing runs without a human push/PR/dispatch",
    "deploy_workflows": "NONE — all workflows are validators/status commenters; zero deployment automation",
    "runs_last_100": {
     "events": {
      "push": 18,
      "pull_request": 81,
      "workflow_dispatch": 1
     },
     "conclusions": {
      "success": 96,
      "failure": 4
     },
     "window": {
      "oldest": "2026-06-01T10:30:09Z",
      "newest": "2026-06-10T05:34:54Z"
     },
     "by_day": {
      "2026-06-01": 80,
      "2026-06-05": 7,
      "2026-06-10": 13
     },
     "note": "100 runs span 2026-06-01..06-10 but cluster on only 3 days (06-01: 80, 06-05: 7, 06-10: 13). Zero runs 06-02..06-04 and 06-06..06-09 — two 3-4 day total-silence gaps."
    }
   },
   "labels": {
    "count": 166,
    "state_machine_labels": [
     "agent:intake",
     "agent:plan-required",
     "agent:research",
     "agent:implementation",
     "agent:qa-review",
     "agent:security-review",
     "agent:blocked",
     "agent:evidence-required",
     "agent:human-approval",
     "agent:incident",
     "agent:postmortem",
     "status:blocked",
     "status:intake",
     "status:ready",
     "status:validated",
     "state:active",
     "state:blocked",
     "state:protected",
     "state:not-now",
     "state:stale",
     "state:superseded"
    ],
    "note": "166 labels incl. 3 overlapping state systems (state:*, status:*, agent:*) plus dept:* and dept-* duplicates — label sprawl, no single state machine actually driven"
   },
   "issue_templates_on_main": [
    "01-office-intake.yml",
    "02-task-packet.yml",
    "03-incident.yml",
    "04-runtime-change.yml",
    "05-research-source-ingestion.yml",
    "company-os-task.yml",
    "config.yml"
   ],
   "control_plane_files": {
    "main": {
     "AGENTS.md": {
      "exists": true,
      "size": 3826
     },
     "HANDOFF.md": {
      "exists": false
     },
     "Migration/council/STATE.md": {
      "exists": true,
      "size": 486,
      "last_commit": "2026-05-10T06:33:35Z",
      "note": "frozen at revision v3 since bootstrap day; tracker.json has exactly 1 event"
     },
     "Migration/council/tracker.json": {
      "exists": true,
      "size": 215,
      "events": 1
     },
     "tasks/current-active-task.yaml": {
      "exists": false
     },
     "companyos/runtime/task-ledger-and-fallback-policy.yaml": {
      "exists": true,
      "size": 1391
     },
     "Migration/council/leases/active-leases.json": {
      "exists": false
     },
     "docs/agent-entry-protocol.md": {
      "exists": true,
      "size": 3297
     }
    },
    "ops/openclaw-github-flow-44": {
     "AGENTS.md": {
      "exists": false
     },
     "HANDOFF.md": {
      "exists": false
     },
     "Migration/council/STATE.md": {
      "exists": true,
      "size": 486
     },
     "Migration/council/tracker.json": {
      "exists": true,
      "size": 215
     },
     "tasks/current-active-task.yaml": {
      "exists": false
     },
     "companyos/runtime/task-ledger-and-fallback-policy.yaml": {
      "exists": false
     },
     "Migration/council/leases/active-leases.json": {
      "exists": false
     },
     "docs/agent-entry-protocol.md": {
      "exists": false
     }
    },
    "summary": "main has 5/8 canonical files; the branch serving the live site has 2/8 (only the frozen council STATE.md + tracker.json). HANDOFF.md, current-active-task.yaml, active-leases.json exist on NO branch checked."
   },
   "webhooks": {
    "repo_hooks": [],
    "org_hooks": [],
    "note": "ZERO webhooks at repo and org level — no GitHub→VPS push channel exists at all"
   },
   "github_to_vps_wiring": {
    "automated": "NONE. No deploy workflow, no webhook, no scheduled job.",
    "tree_matches_dokploy_coolify_deploy": [
     "company-os/dokploy-mirror",
     "company-os/dokploy-mirror/viewport-llc-108-projects.md",
     "company-os/proof-cases/008-dokploy-live-service-mapping-baseline.md",
     "company-os/service-contracts/viewport-llc/viewport-infrastructure-dokploy.md",
     "evidence/task-board-deep-research/live-deploy-20260604.md",
     "knowledgebase/domains/viewport-llc-migration-deploy.md",
     "templates/product-repo/deploy",
     "templates/product-repo/deploy/.gitkeep",
     "viewport-company-os/agents/devops-sre-specialist/service-deployment-handoff-simulation.yaml",
     "viewport-company-os/agents/github-actions-platform-engineer/issueops-noop-deploy-simulation.yaml",
     "viewport-company-os/agents/github-office/training-runs/issue-33-t4-noop-deployment-policy.yaml",
     "viewport-company-os/runtime/contracts/coolify-db.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/coolify-realtime.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/coolify-redis.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/coolify-sentinel.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/coolify.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/dokploy-postgres.1.sioj8xf6a7vb361xtqhdfbm43.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/dokploy-redis.1.d0dgsgijhwzsv4b9592nmk60y.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/dokploy-traefik.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/dokploy.1.9f2qhxd9d8vlrhdg03lusvrv5.runtime-contract.yaml",
     "viewport-company-os/runtime/contracts/mlh-client-portal-dokploy-staging-mdifsm-mlh-client-portal-1.runtime-contract.yaml"
    ],
    "interpretation": "All dokploy/coolify references on main are documentation (runtime-contract YAMLs, mirror docs, proof cases, simulations) — descriptions of the VPS, not connections to it. Deploy template dir is an empty .gitkeep."
   },
   "tree_file_count_main": 1478
  },
  "viewport_os": {
   "default_branch": "main",
   "pushed_at": "2026-06-05T00:11:04Z",
   "size_kb": 15,
   "files": [
    "HANDOFF.md",
    "README.md",
    "evidence/acceptance-tests.json",
    "evidence/session-db-redaction-scan.json",
    "intake-persistence/__init__.py",
    "intake-persistence/plugin.yaml",
    "runtime/intake-persistence-install.md",
    "skills/intake-classifier.md"
   ],
   "file_count": 8,
   "handoff_md_last_commit": {
    "date": "2026-06-05T00:11:04Z",
    "message": "feat: intake-to-persistence pipeline v1"
   },
   "open_issues": [
    {
     "number": 2,
     "state": "OPEN",
     "title": "[BLOCKER] Gateway restart approval required to activate intake hook",
     "created": "2026-06-05T00:11:54Z",
     "updated": "2026-06-05T00:11:54Z",
     "note": "self-declared BLOCKER untouched for 5 days"
    },
    {
     "number": 1,
     "state": "OPEN",
     "title": "[PIPELINE] Intake-to-Persistence v1",
     "created": "2026-06-05T00:04:49Z"
    }
   ]
  },
  "viewport_kb": {
   "default_branch": "main",
   "pushed_at": "2026-06-08T18:19:16Z",
   "index_md": true,
   "closed_loop_report_path": "public/migration/reports/viewport-closed-loop-v01-20260608/ (index.html + claude-viewport-loop-v01-full.html + CLAUDE-VIEWPORT-LOOP-BRIEF.html)",
   "last_commits": [
    {
     "date": "2026-06-08T18:19:15Z",
     "msg": "docs(migration): publish /migration/operations — full system + MLG/MLH deep dive"
    },
    {
     "date": "2026-06-08T15:51:57Z",
     "msg": "docs: publish GBrain evaluation safe spike report"
    },
    {
     "date": "2026-06-08T15:14:32Z",
     "msg": "docs: mark closed-loop report live on viewport.llc"
    },
    {
     "date": "2026-06-08T15:11:12Z",
     "msg": "docs: publish migration pages for viewport.llc worker"
    },
    {
     "date": "2026-06-08T14:55:51Z",
     "msg": "docs: publish Viewport closed loop v0.1 HTML report"
    }
   ]
  },
  "fork_hermes_agent": {
   "default_branch": "main",
   "fork": true,
   "pushed_at": "2026-05-31T09:04:30Z",
   "size_kb": 266998,
   "open_issues": 0,
   "kanban_subsystem": [
    "docs/hermes-kanban-v1-spec.pdf",
    "hermes_cli/kanban.py",
    "hermes_cli/kanban_db.py",
    "hermes_cli/kanban_decompose.py",
    "hermes_cli/kanban_diagnostics.py",
    "hermes_cli/kanban_specify.py",
    "hermes_cli/kanban_swarm.py"
   ],
   "lease_claim_modules": [
    "tests/stress/test_concurrency_reclaim_race.py"
   ],
   "note": "Kanban CLI subsystem exists upstream; no dedicated lease/claim runtime modules. Fork untouched since 2026-05-31."
  }
 },
 "vps": {
  "collected_at": "2026-06-10T16:30:00Z",
  "vps": "194.163.153.171",
  "container_totals": {
   "all": 64,
   "running": 64,
   "stopped": 0,
   "unhealthy": 1,
   "unhealthy_names": [
    "origin-backend"
   ]
  },
  "orchestrators": {
   "dokploy": {
    "status": "running",
    "core_containers": [
     {
      "name": "dokploy.1.ulrxe8de97h10dsckl80u3i9p",
      "image": "dokploy/dokploy:latest",
      "status": "Up 27 hours (healthy)",
      "swarm": true
     },
     {
      "name": "dokploy-redis.1.sk4td8klkwcemiwyc14lmnagq",
      "image": "redis:7",
      "status": "Up 29 hours"
     },
     {
      "name": "dokploy-postgres.1.wsn2jazoh1h7gv2rff4clkxwr",
      "image": "postgres:16",
      "status": "Up 29 hours"
     },
     {
      "name": "dokploy-traefik",
      "image": "traefik:v3.6.7",
      "status": "Up 11 days"
     }
    ],
    "traefik_version": "v3.6.7",
    "dynamic_config_dir": "/etc/dokploy/traefik/dynamic",
    "dynamic_config_files": [
     "acme.json",
     "certificates/",
     "certs/",
     "dokploy.yml",
     "hermes-vinay-patil.yml",
     "middlewares.yml",
     "modernlao-transition.yml",
     "modernlao-transition.yml.bak-20260531-otp-domains",
     "modernlao-transition.yml.bak-legal-domain-20260603110152"
    ],
    "dokploy_top_dirs": [
     "applications",
     "compose",
     "logs",
     "monitoring",
     "schedules",
     "ssh",
     "traefik",
     "volume-backups"
    ],
    "applications_managed": 0,
    "compose_projects": [
     "mlh-client-portal-dokploy-staging-mdifsm"
    ],
    "routes": {
     "viewport.llc": "dokploy-service-app (redirect-to-https + letsencrypt)",
     "hermes.vinaypatil.info": "hermes-vinay-patil container port 9119 (basic-auth)"
    }
   },
   "coolify": {
    "status": "running",
    "warning": "DUAL ORCHESTRATOR - Coolify and Dokploy running simultaneously",
    "version": "4.1.2",
    "containers": [
     {
      "name": "coolify",
      "image": "ghcr.io/coollabsio/coolify:4.1.2",
      "status": "Up 4 days (healthy)"
     },
     {
      "name": "coolify-db",
      "image": "postgres:15-alpine",
      "status": "Up 4 days (healthy)"
     },
     {
      "name": "coolify-redis",
      "image": "redis:7-alpine",
      "status": "Up 4 days (healthy)"
     },
     {
      "name": "coolify-realtime",
      "image": "ghcr.io/coollabsio/coolify-realtime:1.0.16",
      "status": "Up 4 days (healthy)"
     },
     {
      "name": "coolify-sentinel",
      "image": "ghcr.io/coollabsio/sentinel:0.0.21",
      "status": "Up 3 weeks (healthy)"
     }
    ]
   },
   "nginx_proxy_manager": {
    "name": "platformx-nginx",
    "image": "jc21/nginx-proxy-manager:latest",
    "status": "Up 6 weeks (healthy)",
    "note": "Third reverse proxy alongside Traefik"
   },
   "portainer": {
    "name": "portainer",
    "image": "portainer/portainer-ce:latest",
    "status": "Up 6 weeks",
    "note": "Container management UI"
   }
  },
  "new_dokploy_managed_containers": [
   {
    "name": "mlh-client-portal-dokploy-staging-mdifsm-mlh-client-portal-1",
    "image": "mlh-client-portal:github-fb39233",
    "status": "Up 10 days",
    "compose_project": "mlh-client-portal-dokploy-staging-mdifsm",
    "compose_file": "/etc/dokploy/compose/mlh-client-portal-dokploy-staging-mdifsm/code/docker-compose.yml",
    "traefik_managed": false,
    "github_labels": {
     "viewport.github.commit": "fb392335dcd362eb72e23865559e6ddb0e136845",
     "viewport.github.repo": "viewport-corp/modern-lao-homes-client-portal",
     "viewport.production-route": "controlled-by-dokploy-traefik-file",
     "viewport.scope": "mlh-production-github-source"
    },
    "note": "Only Dokploy-managed app container. Image built from GitHub commit."
   }
  ],
  "modernlao_routing": {
   "public_domains": [
    "modernlao.com",
    "www.modernlao.com",
    "modernlaohomes.com",
    "www.modernlaohomes.com",
    "investor.modernlao.com",
    "legal.modernlaohomes.com"
   ],
   "gated_domains": [
    "apps.modernlao.com",
    "clients.modernlao.com",
    "sign.modernlao.com",
    "clients.modernlaohomes.com",
    "sign.modernlaohomes.com"
   ],
   "backend": "modernlao-site (nginx:alpine)",
   "client_portal": "mlh-client-portal",
   "docuseal": "qfphb1umk5ce9jfmifel9o5k-050628046616:3000"
  },
  "old_containers_reference": [
   {
    "name": "origin-backend",
    "image": "origin-backend:latest",
    "status": "Up 3 hours (UNHEALTHY)",
    "project": "origin-platform"
   },
   {
    "name": "saathi-app-1",
    "image": "saathi-app:latest",
    "status": "Up 3 hours (healthy)",
    "project": "saathi"
   },
   {
    "name": "saathi-redis-1",
    "image": "redis:7-alpine",
    "status": "Up 3 hours",
    "project": "saathi"
   },
   {
    "name": "saathi-postgres-1",
    "image": "postgres:16-alpine",
    "status": "Up 5 weeks (healthy)",
    "project": "saathi"
   },
   {
    "name": "hermes-vinay-patil",
    "image": "nousresearch/hermes-agent:latest",
    "status": "Up 2 days"
   },
   {
    "name": "hermes-bccl",
    "image": "nousresearch/hermes-agent:latest",
    "status": "Up 2 days"
   },
   {
    "name": "openclaw-sbx-agent-bizdev-134566cd",
    "image": "openclaw-sandbox:bookworm-slim",
    "status": "Up 5 days"
   },
   {
    "name": "mlh-comms-vault-api",
    "status": "Up 7 days",
    "project": "modernlao"
   },
   {
    "name": "mlg-auth-gate",
    "status": "Up 7 days",
    "project": "modernlao"
   },
   {
    "name": "mlh-api-handler",
    "image": "mlh-api-handler:latest",
    "status": "Up 2 weeks"
   },
   {
    "name": "modernlao-site",
    "image": "nginx:alpine",
    "status": "Up 7 days"
   },
   {
    "name": "crusher-verify-api",
    "status": "Up 4 weeks",
    "project": "modernlao"
   },
   {
    "name": "weft-local-postgres",
    "image": "postgres:16-alpine",
    "status": "Up 5 weeks"
   },
   {
    "name": "mlg-jacam-api",
    "status": "Up 6 weeks",
    "project": "modernlao"
   },
   {
    "name": "platformx-mc-daemon",
    "status": "Up 6 weeks",
    "project": "mission-control"
   },
   {
    "name": "platformx-mc-api",
    "status": "Up 6 weeks",
    "project": "mission-control"
   },
   {
    "name": "mc_postgres",
    "status": "Up 6 weeks (healthy)",
    "project": "mission-control"
   },
   {
    "name": "platformx-n8n",
    "image": "n8n v2.10.4",
    "status": "Up 6 weeks",
    "project": "n8n"
   },
   {
    "name": "platformx-mem0",
    "status": "Up 6 weeks",
    "project": "mem0"
   },
   {
    "name": "platformx-neo4j",
    "image": "neo4j:5-community",
    "status": "Up 6 weeks (healthy)",
    "project": "mem0"
   },
   {
    "name": "platformx-anythingllm",
    "image": "mintplexlabs/anythingllm:latest",
    "status": "Up 6 weeks (healthy)"
   },
   {
    "name": "platformx-claude-memory",
    "image": "postgres:16-alpine",
    "status": "Up 6 weeks",
    "project": "claude-memory"
   },
   {
    "name": "platformx-litellm",
    "image": "ghcr.io/berriai/litellm:main-latest",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-litellm-db",
    "image": "postgres:15",
    "status": "Up 6 weeks (healthy)"
   },
   {
    "name": "platformx-odoo",
    "image": "odoo:17",
    "status": "Up 6 weeks",
    "project": "odoo"
   },
   {
    "name": "platformx-odoo-db",
    "image": "postgres:15",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-langfuse",
    "image": "langfuse/langfuse:2",
    "status": "Up 5 weeks"
   },
   {
    "name": "platformx-langfuse-db",
    "image": "postgres:15",
    "status": "Up 6 weeks (healthy)"
   },
   {
    "name": "platformx-redis",
    "image": "redis:alpine",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-coder",
    "image": "ghcr.io/coder/coder:latest",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-qdrant",
    "image": "qdrant/qdrant:latest",
    "status": "Up 6 weeks"
   },
   {
    "name": "local-registry",
    "image": "registry:2",
    "status": "Up 6 weeks"
   },
   {
    "name": "origin-worker",
    "status": "Up 6 weeks",
    "project": "origin-platform"
   },
   {
    "name": "origin-redis",
    "status": "Up 6 weeks",
    "project": "origin-platform"
   },
   {
    "name": "platformx-discord-bot",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-council-backend",
    "image": "llm-council-backend",
    "status": "Up 6 weeks (healthy)",
    "project": "llm-council"
   },
   {
    "name": "platformx-council-nginx",
    "status": "Up 6 weeks"
   },
   {
    "name": "oh-agent-server-6gCRPbTA90M4Jf9PnG9E9H",
    "image": "ghcr.io/openhands/agent-server:1.11.4-python",
    "status": "Up 6 weeks"
   },
   {
    "name": "oh-agent-server-7E6YLaYWJp9rhyHHe8kvpk",
    "image": "ghcr.io/openhands/agent-server:1.11.4-python",
    "status": "Up 6 weeks"
   },
   {
    "name": "oh-agent-server-2vTzHnwvsriBnKmbYovPby",
    "image": "ghcr.io/openhands/agent-server:1.11.4-python",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-openhands",
    "image": "ghcr.io/openhands/openhands:1.4",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-openwebui",
    "image": "ghcr.io/open-webui/open-webui:main",
    "status": "Up 6 weeks (healthy)"
   },
   {
    "name": "platformx-pipelines",
    "image": "ghcr.io/open-webui/pipelines:main",
    "status": "Up 6 weeks"
   },
   {
    "name": "platformx-claudecodeui",
    "image": "platformx-claudecodeui:latest",
    "status": "Up 6 weeks"
   },
   {
    "name": "viewport-openclaw-fresh-openclaw-cli-1",
    "image": "ghcr.io/openclaw/openclaw:latest",
    "status": "Up 9 days (healthy)",
    "project": "viewport-openclaw-fresh",
    "worktree": "/srv/viewport/worktrees/openclaw-main-live-20260531T090443Z"
   },
   {
    "name": "viewport-openclaw-fresh-openclaw-gateway-1",
    "image": "ghcr.io/openclaw/openclaw:latest",
    "status": "Up 9 days (healthy)",
    "project": "viewport-openclaw-fresh"
   }
  ],
  "github_vps_linkage": {
   "ssh_keys_in_root": [
    "authorized_keys",
    "coolify_deploy",
    "id_ed25519",
    "id_ed25519.pub",
    "known_hosts"
   ],
   "gh_cli_present": true,
   "gh_cli_path": "/usr/bin/gh",
   "git_repos_checked_out": [
    {
     "path": "/opt/origin-platform/repo",
     "remote": "https://ghp_hq…[REDACTED — rotation required]@github.com/theplatformx/origin-platform.git",
     "warning": "PAT token was embedded in remote URL - REDACTED here; rotation required"
    },
    {
     "path": "/opt/platformx/llm-council",
     "remote": "https://github.com/DmitryBMsk/llm-council-plus.git"
    },
    {
     "path": "/srv/saathi",
     "remote": "https://github.com/theplatformx/Saathi.git"
    }
   ],
   "github_actions_runner_process": false,
   "webhook_handler": {
    "process": "webhook-handler.js",
    "user": "openclaw",
    "pid": 925,
    "started": "Apr27"
   },
   "dokploy_github_pipeline": {
    "confirmed": true,
    "evidence": "mlh-client-portal image tagged github-fb39233 with labels viewport.github.commit and viewport.github.repo"
   },
   "summary": "GitHub integration = Dokploy build pipeline (confirmed) + webhook-handler.js (custom) + coolify_deploy SSH key + 3 checked-out repos. No GitHub Actions self-hosted runner."
  },
  "agent_runtime": {
   "hermes": {
    "binary": "/opt/hermes/.venv/bin/hermes",
    "supervisor": "s6",
    "services_supervised": [
     "main-hermes",
     "gateway-codex",
     "gateway-default",
     "gateway-bccl",
     "gateway-claude"
    ],
    "active_instances": 3,
    "note": "Multiple gateway run instances active simultaneously"
   },
   "openclaw_gateway_native": {
    "pid": 3227148,
    "port": 47293,
    "user": "root",
    "started": "May28",
    "note": "Root-level native process, not containerized"
   },
   "openclaw_gateway_container": {
    "pid": 2037841,
    "port": 18789,
    "user": "openclaw",
    "started": "Jun01",
    "note": "Container-based gateway"
   },
   "codex_app_servers": {
    "count": "20+",
    "user": "openclaw",
    "all_started": "Jun01",
    "note": "Many zombie-like codex instances from Jun01 — no kill cron to reap them"
   },
   "n8n": {
    "pid": 7681,
    "user": "openclaw",
    "started": "Apr27"
   },
   "paperclip": {
    "pid": 1614898,
    "user": "openclaw",
    "started": "today_14:44"
   },
   "session_db_state_db": {
    "path": "/opt/data/state.db",
    "exists": false
   }
  },
  "crons": {
   "cron_d_files": [
    "e2scrub_all",
    "openclaw-session-cleanup",
    "staticroute",
    "sysstat"
   ],
   "claude_6h_kill_cron": {
    "present": false,
    "verdict": "ABSENT - /etc/cron.d/claude-cleanup does not exist"
   },
   "openclaw_session_cleanup": {
    "file": "/etc/cron.d/openclaw-session-cleanup",
    "schedule": "*/30 * * * *",
    "action": "Delete .jsonl and .lock files older than 120min from sessions dir",
    "note": "File cleanup only - does NOT kill processes"
   },
   "root_crontab": [
    {
     "schedule": "*/30 * * * *",
     "cmd": "platformx-monitor.py"
    },
    {
     "schedule": "0 2 * * *",
     "cmd": "orchestrator-v2.sh learn"
    },
    {
     "schedule": "0 20 * * *",
     "cmd": "platformx-backup.sh"
    },
    {
     "schedule": "@reboot",
     "cmd": "ensure-proxy-network.sh"
    },
    {
     "schedule": "0 16 * * *",
     "cmd": "memory-flush.sh"
    }
   ],
   "openclaw_user_crontab": "empty"
  },
  "health_snapshot": {
   "disk": {
    "size": "968G",
    "used": "397G",
    "available": "571G",
    "use_pct": "42%"
   },
   "memory": {
    "total": "47Gi",
    "used": "15Gi",
    "free": "18Gi",
    "available": "31Gi"
   },
   "load_average": {
    "1min": 23.43,
    "5min": 19.46,
    "15min": 18.67
   },
   "uptime_days": 44,
   "egress_viewport_llc_status_json": 200
  }
 },
 "refresh_note": "github fields auto-refreshed by refresh-github-data workflow; vps fields are Hermes-owned and untouched"
}