{
  "schemaVersion": 1,
  "updated": "2026-10-16",
  "release": "satcom-host-moves-2026-10-16",
  "site": "https://satcom.conews.press",
  "name": "SATCOM",
  "purpose": "Publishing operations for the CoNews network",
  "commercialPlatform": {
    "name": "Partners in the Community",
    "role": "Primary advertising and sponsorship platform",
    "url": "https://thevillager.today/partners",
    "next": "Approve offers, establish placement inventory and measure fulfillment."
  },
  "architecture": [
    {
      "layer": "Operator interface",
      "source": "idigitalpro1/copress-dashboard",
      "implementation": "Public routes and MCP are on the Hetzner host for satcom.conews.press. Sign-in and Clerk-gated pages still reach the Vercel project until server env is placed on the host."
    },
    {
      "layer": "Operations context MCP",
      "source": "/mcp",
      "implementation": "Stateless Streamable HTTP; read-only tools, resources and prompts from an explicit public content allowlist. No credentials or operational records."
    },
    {
      "layer": "Canonical operations documentation",
      "source": "idigitalpro1/codex",
      "implementation": "Private repository for cross-system decisions, release evidence, priorities and the 2026 business plan. Public context here is a curated summary, not a replacement."
    },
    {
      "layer": "Existing integration boundary",
      "source": "/apistore and /console/api/hermes/*",
      "implementation": "API Vault is browser-local. The Hermes proxy points to codex.conews.press; its upstream health is not asserted by MCP health. Local Ace tools require separate host identity and authorization."
    }
  ],
  "routes": [
    {
      "path": "/",
      "name": "SATCOM dashboard",
      "scope": "Operator cards and launchers"
    },
    {
      "path": "/codex",
      "name": "Development and prompts",
      "scope": "Architecture, priorities, public guidance and MCP connection"
    },
    {
      "path": "/kanban",
      "name": "Development Kanban",
      "scope": "Reviewed shared development cards, evidence and next actions"
    },
    {
      "path": "/docs",
      "name": "Documentation hub",
      "scope": "Browser-local documentation library"
    },
    {
      "path": "/network",
      "name": "Network HQ",
      "scope": "Publication and service directory"
    },
    {
      "path": "/newsletter",
      "name": "Newsletter workbench",
      "scope": "Preparation; delivery requires a separately configured provider and authorization"
    },
    {
      "path": "/apistore",
      "name": "API Vault",
      "scope": "Browser-local credential reference; not a server-side connection"
    },
    {
      "path": "/learn",
      "name": "SATCO Academy",
      "scope": "Learning cards"
    },
    {
      "path": "/linear",
      "name": "Linear workbench",
      "scope": "Integration depends on its own configured access"
    },
    {
      "path": "/mcp",
      "name": "Operations MCP",
      "scope": "Public read-only context; POST"
    },
    {
      "path": "/api/health",
      "name": "MCP health",
      "scope": "This service only; does not measure upstream systems"
    },
    {
      "path": "/api/development-board",
      "name": "Reviewed development board API",
      "scope": "Read-only allowlist from existing Admin Kanban; explicit dated snapshot on upstream failure"
    }
  ],
  "priorities": [
    {
      "rank": 1,
      "title": "Protect source of truth and traceable releases",
      "owner": "Technical lead",
      "due": "Every release",
      "status": "Ongoing; September 27 releases recorded",
      "next": "Keep each app commit, review, deployment, validation and rollback in the canonical operations repository. Preserve the distinction between preview, live release and delivery.",
      "evidence": {
        "date": "2026-09-27",
        "label": "Canonical status",
        "url": "https://github.com/idigitalpro1/codex/blob/main/CURRENT_STATUS.md"
      }
    },
    {
      "rank": 2,
      "title": "Promote Partners in the Community",
      "owner": "Publisher and commercial lead",
      "due": "Original target: 2026-09-18; completion unverified",
      "status": "Promotion released September 7; commercial approval unverified",
      "next": "Confirm the approved offer sheet, verified paying sponsors, placement capacity and fulfillment measures. Directory listings are not paid-sponsor evidence.",
      "evidence": {
        "date": "2026-09-07",
        "label": "Approved priority plan",
        "url": "https://github.com/idigitalpro1/codex/blob/main/TOP_10_DEVELOPMENT_PRIORITIES.md"
      }
    },
    {
      "rank": 3,
      "title": "Verify Villager news discovery and reader journeys",
      "owner": "Technical lead and editor",
      "due": "Original target: 2026-09-14; indexing follow-up open",
      "status": "September 27 editorial release recorded; indexing unverified",
      "next": "Verify Search Console indexing and archive, events, contact and search journeys. Review the temporary Hall of Fame homepage priority before it expires October 5.",
      "evidence": {
        "date": "2026-09-27",
        "label": "Villager release record",
        "url": "https://github.com/idigitalpro1/codex/blob/main/ops/2026-09-27-villager-sept-24-hof-owner-share.md"
      }
    },
    {
      "rank": 4,
      "title": "Make editorial freshness and unique images repeatable",
      "owner": "Managing editor",
      "due": "Original target: 2026-09-25; repeatable workflow unverified",
      "status": "Aspen October edition released; recurring image workflow unverified",
      "next": "Confirm or replace inherited Aspen media rights. Keep original dates and attribution; generate, inspect, persist and label a story-specific illustration when no unique licensed photo exists.",
      "evidence": {
        "date": "2026-09-27",
        "label": "Multisite release review",
        "url": "https://github.com/idigitalpro1/codex/blob/main/ops/2026-09-27-multisite-release-review.md"
      }
    },
    {
      "rank": 5,
      "title": "Protect renewal revenue and reconciliation",
      "owner": "Circulation and finance",
      "due": "September 2026",
      "status": "Reconciliation and fulfillment evidence still required",
      "next": "Keep printed QR destinations and approved prices stable. Verify the canonical subscriber Sheet, provider events and fulfillment before claiming a paid renewal, synchronization or mailing.",
      "evidence": {
        "date": "2026-09-27",
        "label": "Renewal and distribution gates",
        "url": "https://github.com/idigitalpro1/codex/blob/main/ops/2026-09-27-multisite-release-review.md"
      }
    },
    {
      "rank": 6,
      "title": "Finish the shared platform configuration",
      "owner": "Technical lead",
      "due": "September\u2013October 2026",
      "status": "Vercel restoration recorded September 12; platform proof open",
      "next": "Recheck myappstore.biz identity and TLS against the restored Vercel hosting record, then prove reusable publishing configuration. The earlier TLS failure is historical evidence.",
      "evidence": {
        "date": "2026-09-12",
        "label": "Hosting restoration record",
        "url": "https://github.com/idigitalpro1/codex/blob/main/AWS_DARK_FALLBACKS.md"
      }
    },
    {
      "rank": 7,
      "title": "Make SATCOM and its development entry point dependable",
      "owner": "Operations lead",
      "due": "September 2026",
      "status": "Newsletter Studio released; board and metrics remain limited",
      "next": "Refresh dated board evidence and event data; replace default marketing counts with provider-backed records. Verify /codex and an MCP call separately from upstream services.",
      "evidence": {
        "date": "2026-09-27",
        "label": "SATCOM release and limitations",
        "url": "https://github.com/idigitalpro1/codex/blob/main/ops/2026-09-27-multisite-release-review.md"
      }
    },
    {
      "rank": 8,
      "title": "Prove 5280.menu as the reference implementation",
      "owner": "Product and technical lead",
      "due": "October 2026, after shared platform and SATCOM gates",
      "status": "September 27 review: remediation required; expansion gated",
      "next": "Prepare a rollback-backed 5280.menu release from current main: refresh stale news, restore missing discovery and reader routes, and verify the complete release manifest before deployment.",
      "evidence": {
        "date": "2026-09-27",
        "label": "5280.menu remediation record",
        "url": "https://github.com/idigitalpro1/codex/blob/main/ops/2026-09-27-multisite-release-review.md"
      }
    },
    {
      "rank": 9,
      "title": "Deliver a dependable Thursday publishing workflow",
      "owner": "Editorial and circulation",
      "due": "September\u2013November 2026",
      "status": "September 24 issue and email drafts ready; no campaign sent",
      "next": "Verify the live Sendy endpoint, exact opted-in lists, suppression state and sender identities. Review one proof per publication, obtain final campaign approval, then record provider acceptance separately from inbox delivery.",
      "evidence": {
        "date": "2026-09-27",
        "label": "Weekly distribution review",
        "url": "https://github.com/idigitalpro1/codex/blob/main/ops/2026-09-27-multisite-release-review.md"
      }
    },
    {
      "rank": 10,
      "title": "Expand only after quality and delivery gates pass",
      "owner": "Publisher",
      "due": "November\u2013December 2026 review",
      "status": "Held behind platform, editorial and delivery gates",
      "next": "Keep the 13 town sites and eight guide hubs staged until reference-site checks, editorial ownership, substantive reporting, viable inventory and support capacity are demonstrated.",
      "evidence": {
        "date": "2026-09-07",
        "label": "Expansion gates",
        "url": "https://github.com/idigitalpro1/codex/blob/main/TOP_10_DEVELOPMENT_PRIORITIES.md"
      }
    }
  ],
  "boundaries": [
    "Verify the actual operator host and authorized connection before server work. Local paths and loopback addresses identify that host; public HTTPS access does not prove remote shell access.",
    "SATCOM mission control remains under development. Direct model prompts are the primary workflow. GUI development for news, activity and town sites is as important as content. Headless-only constraints apply to the PDF-to-WordPress pipeline, not publication GUI development.",
    "Work directly; do not delegate or spawn other agents.",
    "Partners in the Community is the primary advertising and sponsorship platform. Directory listings are not verified paying sponsors or outreach permission.",
    "The MCP service supplies public context only. It cannot deploy, retrieve secrets, access subscriber records, send messages or operate telephony.",
    "A health response proves this context service is responding, not that Ace, Hermes, a payment provider or publishing pipeline is connected.",
    "conews.press/codex is a different route from satcom.conews.press/codex. Its recorded September 7 failure has not been rechecked by this priorities refresh.",
    "Package prices and sales targets in the 2026 plan are proposals until approved. Do not publish them as offers or actual results."
  ],
  "operatorPolicy": {
    "updated": "2026-09-07",
    "primary": "astra",
    "fallbackOrder": [
      "claude",
      "grok",
      "cursor",
      "hermes"
    ],
    "mode": "operator-controlled handoff",
    "maxActiveExecutors": 1,
    "automaticDispatch": false,
    "rule": "Work directly. Stop or confirm the prior executor has ended before switching. A timeout alone does not prove a job stopped. Carry one task packet and its completed work forward; do not restart the entire task. The operator is on a remote laptop without a server connection; verify the actual host before server work.",
    "operators": [
      {
        "id": "astra",
        "name": "GPT-6 Astra in Codex",
        "role": "Primary",
        "model": "gpt-6-astra",
        "status": "Configured primary; Codex MCP verified",
        "availableForHandoff": true,
        "connection": "Codex SATCOM MCP registered and SDK tool calls verified. Public SATCOM does not invoke a paid model API.",
        "command": "codex -m gpt-6-astra",
        "next": "Open the intended repository in Codex, select GPT-6 Astra, and use one current task packet."
      },
      {
        "id": "claude",
        "name": "Claude",
        "role": "Fallback 1",
        "model": null,
        "status": "Connected \u2014 four SATCOM tools discovered",
        "availableForHandoff": true,
        "connection": "Claude native remote connector connected to SATCOM and displayed all four read-only tools on the remote laptop. Desktop Commander startup repair is a separate local check.",
        "command": null,
        "next": "Read the Astra prompt and one relevant Kanban card, then continue the approved next step."
      },
      {
        "id": "grok",
        "name": "Grok Bot",
        "role": "Fallback 2",
        "model": null,
        "status": "Grok CLI MCP verified; Bot app unverified",
        "availableForHandoff": true,
        "connection": "Grok CLI 1.0.5 passed SATCOM MCP handshake and discovered four tools. Grok Bot is a separate Cursor application; its launch inspection timed out. No model task was dispatched.",
        "command": "grok",
        "next": "For remaining host moves, paste https://satcom.conews.press/data/codex/grok-subagents.md and spawn one subagent per listener. Confirm model access before taking over."
      },
      {
        "id": "cursor",
        "name": "Cursor",
        "role": "Fallback 3",
        "model": null,
        "status": "MCP configured; native discovery pending",
        "availableForHandoff": true,
        "connection": "SATCOM added to the local Cursor MCP configuration; pre-existing servers preserved. OpenAI/Claude models enabled in the picker; custom API key fields empty.",
        "command": null,
        "next": "Open the intended repository in Cursor and confirm SATCOM tools in Customize. Use existing authorized model access."
      },
      {
        "id": "hermes",
        "name": "Hermes 2.0",
        "role": "Fallback 4",
        "model": null,
        "status": "Blocked \u2014 host and version unverified",
        "availableForHandoff": false,
        "connection": "SATCOM Hermes health/models proxy timed out; local port 8793 refused connection. No Hermes CLI or installation found on this Mac. Ace is offline.",
        "command": null,
        "next": "Restore and identify the intended Hermes host, verify the 2.0 installation and model, then register SATCOM MCP and verify a read-only tool call."
      }
    ]
  },
  "hostMoves": {
    "checked": "2026-10-16",
    "rule": "Several sites may move at once only when each site is on a different domain. Never change two records on the same domain at once. DNS waits for a yes in Grok chat. The Hetzner login blocker is stale; if login stalls, keep the air-gold key unlocked.",
    "completed": [
      {
        "host": "[x] registercall.com and www.registercall.com",
        "project": "wrc-frontend",
        "state": "Done. DNS is on Hetzner. Cloudflare proxied. Origin certificate is still self-signed."
      },
      {
        "host": "[x] thevillager.today and www.thevillager.today",
        "project": "villager-today-git",
        "state": "Done. DNS is on Hetzner. Origin serves the Villager title."
      },
      {
        "host": "[x] satcom.conews.press",
        "project": "copress-dashboard",
        "state": "Done. DNS is on Hetzner. Public routes are local. Sign-in still reaches Vercel."
      },
      {
        "host": "[x] idigitalpro.com, www.idigitalpro.com, dev.idigitalpro.com",
        "project": "copress-dashboard",
        "state": "Done. DNS is on Hetzner. Redirects land on the expected host."
      },
      {
        "host": "[x] dev.conews.press and satcom.5280.menu",
        "project": "copress-dashboard",
        "state": "Done. DNS is on Hetzner. Homepage goes to sign-in. Codex returns 200."
      },
      {
        "host": "[x] subscribe.thevillager.today",
        "project": "copress-dashboard",
        "state": "Done. Vercel DNS A is 2.29.20.177. No mail or nameserver changes. Let's Encrypt verified. Root redirect and subscription landing page return 200."
      }
    ],
    "notLive": [
      "weeklyregistercall.com redirects to registercall.com and is not a Vercel domain.",
      "empire-courier.com has a Vercel project, but live DNS is not Vercel.",
      "subs.registercall.com and nationalintelligence.org have Vercel aliases, but live DNS is not Vercel.",
      "No live DNS: satcom.copress.news, the.villager.today, kingsweeney.com, exellenceinjournalism.com, history.registercall.com, healthiq.villagerpublishing.com, idj.pro."
    ],
    "remaining": [
      {
        "project": "[~] villager-today-git",
        "hosts": "thecoloradostatesman.com, www.thecoloradostatesman.com. Existing listener 4174 serves both correctly; Host rules staged. DNS remains unchanged at GoDaddy. Apex A records are 216.150.1.1 and 216.150.16.1; www CNAME is Vercel. DNS change awaits yes in Grok chat."
      },
      {
        "project": "[ ] villager-app",
        "hosts": "proofs.thevillager.today, showcase.thevillager.today"
      },
      {
        "project": "[ ] public",
        "hosts": "ski-us.com, www.ski-us.com, ski.5280.menu, skicountryusa.5280.menu, skius.5280.menu"
      },
      {
        "project": "[ ] fleurish-society",
        "hosts": "villagermediagroup.com, www.villagermediagroup.com"
      },
      {
        "project": "[ ] aspen-fashion",
        "hosts": "aspen.conews.press, aspen.fashion, www.aspen.fashion"
      },
      {
        "project": "[ ] blond.army",
        "hosts": "blondarmy.aspen.fashion"
      },
      {
        "project": "[ ] californiagambler-lounge",
        "hosts": "sportsgambling.pro, www.sportsgambling.pro"
      },
      {
        "project": "[ ] 5starcompanies",
        "hosts": "5starcompanies.info, www.5starcompanies.info, investinpower.com, www.investinpower.com"
      },
      {
        "project": "[ ] aileen-template",
        "hosts": "newsgrandcentral.com, www.newsgrandcentral.com"
      },
      {
        "project": "[ ] excellence-in-journalism-preview",
        "hosts": "history.thevillager.today"
      },
      {
        "project": "[ ] github-dashboard",
        "hosts": "github.conews.press"
      },
      {
        "project": "[ ] health-care-",
        "hosts": "healthiq.conews.press, healthiq.thevillager.today"
      },
      {
        "project": "[ ] idigitalpro-hub",
        "hosts": "hub.idigitalpro.com"
      },
      {
        "project": "[ ] idj-pro",
        "hosts": "livedj.pro, www.livedj.pro"
      },
      {
        "project": "[ ] national-intelligence-site",
        "hosts": "nationalintelligencs.com, www.nationalintelligencs.com"
      },
      {
        "project": "[ ] news-hq",
        "hosts": "subs.idigitalpro.com"
      },
      {
        "project": "[ ] postcards-conews-press",
        "hosts": "postcards.thevillager.today"
      },
      {
        "project": "[ ] ricks-conews-press",
        "hosts": "ricks.conews.press"
      },
      {
        "project": "[ ] subs-conews-press",
        "hosts": "subs.conews.press"
      },
      {
        "project": "[ ] subs-weeklyregistercall",
        "hosts": "subs.weeklyregistercall.com"
      },
      {
        "project": "[ ] myappstore-biz-git",
        "hosts": "myappstore.biz, www.myappstore.biz"
      }
    ]
  }
}
