{
  "schemaVersion": "office-deployment-profiles.v1",
  "updatedAt": "2026-05-24T00:00:00Z",
  "notes": [
    "Profiles are sanitized deployment views for Office.",
    "Secrets, private keys, tokens, signer material, and wallet env values do not belong in this file.",
    "The public Office page is read-only; safe operator actions are routed through office-api."
  ],
  "profiles": [
    {
      "id": "gcp-pilot",
      "label": "GCP Pilot",
      "stage": "pilot",
      "defaultForBuild": "production",
      "description": "GCP pilot profile for the cloud deployed PMF control hub, services, contracts, queues, Switzerland solver preview, and safe operator actions.",
      "networkSummary": "GCP us-central1 + GCP europe-west6 solver preview + Polygon mainnet",
      "sources": [
        { "label": "Profile JSON", "url": "/office/data/deployment-profiles.json" },
        { "label": "Office map", "url": "/office/data/office-map.json" },
        { "label": "Index API", "url": "https://pmf-pilot-index-api-bzxuuinypq-uc.a.run.app/docs" },
        { "label": "Cloud deployment", "url": "/docs/pilot/cloud-deployment.md" }
      ],
      "runtime": {
        "indexApiBaseUrl": "https://pmf-pilot-index-api-bzxuuinypq-uc.a.run.app",
        "officeApiBaseUrl": "",
        "apApiBaseUrl": "",
        "tradingEngineApiBaseUrl": ""
      },
      "contracts": {
        "contract-oracle": {
          "status": "live",
          "chainId": 137,
          "network": "Polygon Mainnet",
          "address": "0xAB2367688A0586bB1d25D4de9f574d88102A0c8C",
          "source": "contracts/scripts/deploy-basket-oracle.js"
        },
        "contract-registry": {
          "status": "live",
          "chainId": 137,
          "network": "Polygon Mainnet",
          "address": "0x2A4c76Dd04dC274fA63Bf16391297D6CfC388bAE",
          "source": "contracts/scripts/deploy-basket-oracle.js"
        },
        "contract-vault": {
          "status": "live",
          "chainId": 137,
          "network": "Polygon Mainnet",
          "address": "0x7bE53F1f71CcCaf72151aaa2675732F9f40AC212",
          "source": "contracts/scripts/deploy-polygon-pmf-vault.js"
        }
      },
      "services": {
        "service-index-api": {
          "status": "live",
          "url": "https://pmf-pilot-index-api-bzxuuinypq-uc.a.run.app",
          "runMode": "api",
          "gcpService": "pmf-pilot-index-api",
          "cloudResource": "Cloud Run service",
          "source": "index/managed_index/api/app.py"
        },
        "service-index-hourly": {
          "status": "live",
          "runMode": "hourly_publisher",
          "gcpJob": "pmf-pilot-index-hourly",
          "cloudResource": "Cloud Run Job",
          "source": "index/managed_index/jobs/hourly_publish.py"
        },
        "service-index-daily": {
          "status": "live",
          "runMode": "daily_discovery",
          "gcpJob": "pmf-pilot-index-daily",
          "cloudResource": "Cloud Run Job",
          "source": "index/managed_index/jobs/daily_discovery.py"
        },
        "service-index-oracle": {
          "status": "live",
          "runMode": "oracle_publisher",
          "gcpJob": "pmf-pilot-index-oracle",
          "cloudResource": "Cloud Run Job dry-run",
          "source": "index/managed_index/jobs/oracle_publish.py"
        },
        "service-oracle-fuzzy-controller": {
          "status": "planned",
          "runMode": "oracle-fuzzy-controller",
          "gcpService": "pmf-pilot-oracle-fuzzy-controller",
          "cloudResource": "Cloud Run service",
          "source": "services/oracle-fuzzy-controller/oracle_fuzzy_controller/app.py"
        },
        "service-oracle-fuzzy-tasks": {
          "status": "planned",
          "runMode": "delayed-oracle-publish",
          "gcpQueue": "pmf-pilot-oracle-fuzzy-publish",
          "cloudResource": "Cloud Tasks queue",
          "source": "infra/terraform/gcp/main.tf"
        },
        "service-office-api": {
          "status": "planned",
          "url": "https://office-api.pmf.finance",
          "runMode": "office-api",
          "gcpService": "pmf-pilot-office-api",
          "cloudResource": "Cloud Run service",
          "source": "services/office-api/office_api/app.py"
        },
        "service-ap-api": {
          "status": "live",
          "runMode": "ap-api",
          "gcpService": "pmf-pilot-ap-api",
          "cloudResource": "Cloud Run service",
          "source": "services/ap-server/ap_server/api/app.py"
        },
        "service-trading-api": {
          "status": "live",
          "runMode": "trading-engine-api",
          "gcpService": "pmf-pilot-trading-engine-api",
          "cloudResource": "Cloud Run service",
          "source": "services/trading-engine/src/trading_engine/api.py"
        },
        "service-trading-solver": {
          "status": "live",
          "runMode": "trading-engine-solver-worker",
          "gcpService": "pmf-pilot-trading-engine-solver-worker",
          "gcpRegion": "us-central1",
          "cloudResource": "Cloud Run service preview",
          "source": "services/trading-engine/src/trading_engine/worker.py"
        },
        "service-trading-reconciler": {
          "status": "live",
          "runMode": "trading-engine-reconciliation",
          "cloudResource": "Cloud SQL tables",
          "source": "services/trading-engine/src/trading_engine/reconciliation.py"
        },
        "service-europe-solver-subscription": {
          "status": "live",
          "runMode": "pubsub-subscription",
          "gcpSubscription": "pmf-pilot-solver-batches-europe-west6-sub",
          "gcpRegion": "europe-west6",
          "cloudResource": "Pub/Sub subscription",
          "source": "packages/pmf-interfaces/schemas/cloud-events.md"
        },
        "service-europe-trading-solver": {
          "status": "live",
          "runMode": "trading-engine-solver-worker",
          "gcpService": "pmf-pilot-trading-engine-solver-worker",
          "gcpRegion": "europe-west6",
          "cloudResource": "Cloud Run service preview",
          "source": "services/trading-engine/src/trading_engine/worker.py"
        },
        "service-europe-solver-store": {
          "status": "live",
          "runMode": "trading-engine-reconciliation",
          "gcpRegion": "us-central1",
          "cloudResource": "Shared Cloud SQL tables",
          "source": "services/trading-engine/src/trading_engine/reconciliation.py"
        },
        "service-intent-webhook": {
          "status": "live",
          "runMode": "intent-webhook",
          "gcpFunction": "pmf-pilot-intent-webhook",
          "cloudResource": "Cloud Run function",
          "source": "services/intent-processor/intent_processor/webhook_receiver.py"
        },
        "service-intent-committer": {
          "status": "live",
          "runMode": "intent-committer",
          "gcpFunction": "pmf-pilot-intent-committer",
          "cloudResource": "Cloud Run function",
          "source": "services/intent-processor/intent_processor/commit_intents.py"
        },
        "service-intent-poller": {
          "status": "planned",
          "runMode": "intent-oracle-poller",
          "gcpFunction": "pmf-pilot-oracle-poller",
          "cloudResource": "Cloud Run function dry-run",
          "source": "services/intent-processor/intent_processor/oracle_poller.py"
        },
        "service-intent-queue": {
          "status": "live",
          "runMode": "pubsub-topic",
          "gcpTopic": "pmf-pilot-intent-commit-requests",
          "cloudResource": "Pub/Sub topic",
          "source": "packages/pmf-interfaces/schemas/cloud-events.md"
        },
        "service-vault-batches-topic": {
          "status": "live",
          "runMode": "pubsub-topic",
          "gcpTopic": "pmf-pilot-vault-batches-committed",
          "cloudResource": "Pub/Sub topic",
          "source": "packages/pmf-interfaces/schemas/cloud-events.md"
        },
        "service-cloud-sql": {
          "status": "live",
          "runMode": "postgres",
          "cloudResource": "Cloud SQL PostgreSQL",
          "source": "infra/terraform/gcp/main.tf"
        }
      },
      "actions": {
        "action-refresh": {
          "mode": "direct",
          "enabled": true,
          "route": "browser public refresh"
        },
        "action-ap-status": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-index-hourly": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-index-daily": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-index-oracle-dry-run": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-intent-poller-dry-run": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-trading-dry-run": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-vault-preview": {
          "mode": "disabled",
          "enabled": false,
          "route": "deferred until office-api rollout"
        },
        "action-dry-run": {
          "mode": "disabled",
          "enabled": false,
          "route": "dev-only local compatibility"
        },
        "action-local-checks": {
          "mode": "disabled",
          "enabled": false,
          "route": "dev-only local checks"
        },
        "action-solver-live": {
          "mode": "disabled",
          "enabled": false,
          "route": "blocked from Office v1"
        }
      }
    },
    {
      "id": "local",
      "label": "Local",
      "stage": "development",
      "defaultForBuild": "development",
      "description": "Local Office profile: public GCP index reads with optional local Office/AP/trading proxies for development.",
      "networkSummary": "Local dev server + GCP pilot + Polygon mainnet",
      "sources": [
        { "label": "Profile JSON", "url": "/office/data/deployment-profiles.json" },
        { "label": "Office map", "url": "/office/data/office-map.json" },
        { "label": "Office API README", "url": "/services/office-api/README.md" }
      ],
      "runtime": {
        "indexApiBaseUrl": "/office-api/index",
        "officeApiBaseUrl": "/office-api/office",
        "apApiBaseUrl": "/office-api/ap",
        "tradingEngineApiBaseUrl": "/office-api/trading"
      },
      "contracts": {
        "contract-oracle": {
          "status": "live",
          "chainId": 137,
          "network": "Polygon Mainnet",
          "address": "0xAB2367688A0586bB1d25D4de9f574d88102A0c8C",
          "source": "contracts/scripts/deploy-basket-oracle.js"
        },
        "contract-registry": {
          "status": "live",
          "chainId": 137,
          "network": "Polygon Mainnet",
          "address": "0x2A4c76Dd04dC274fA63Bf16391297D6CfC388bAE",
          "source": "contracts/scripts/deploy-basket-oracle.js"
        },
        "contract-vault": {
          "status": "live",
          "chainId": 137,
          "network": "Polygon Mainnet",
          "address": "0x7bE53F1f71CcCaf72151aaa2675732F9f40AC212",
          "source": "contracts/scripts/deploy-polygon-pmf-vault.js"
        }
      },
      "services": {
        "service-index-api": {
          "status": "live",
          "url": "/office-api/index",
          "runMode": "api",
          "gcpService": "pmf-pilot-index-api",
          "cloudResource": "Cloud Run service",
          "source": "index/managed_index/api/app.py"
        },
        "service-office-api": {
          "status": "local",
          "url": "/office-api/office",
          "runMode": "office-api",
          "gcpService": "pmf-pilot-office-api",
          "cloudResource": "local proxy",
          "source": "services/office-api/office_api/app.py"
        },
        "service-ap-api": {
          "status": "local",
          "url": "/office-api/ap",
          "runMode": "ap-api",
          "gcpService": "pmf-pilot-ap-api",
          "cloudResource": "local proxy",
          "source": "services/ap-server/ap_server/api/app.py"
        },
        "service-trading-api": {
          "status": "local",
          "url": "/office-api/trading",
          "runMode": "trading-engine-api",
          "gcpService": "pmf-pilot-trading-engine-api",
          "cloudResource": "local proxy",
          "source": "services/trading-engine/src/trading_engine/api.py"
        }
      },
      "actions": {
        "action-refresh": {
          "mode": "direct",
          "enabled": true,
          "route": "browser refresh"
        },
        "action-local-checks": {
          "mode": "local",
          "enabled": true,
          "route": "POST /office-api/local-command",
          "commandId": "office-local-checks"
        },
        "action-dry-run": {
          "mode": "local",
          "enabled": true,
          "route": "POST /dry-run via local proxy"
        },
        "action-solver-live": {
          "mode": "disabled",
          "enabled": false,
          "route": "blocked from Office v1"
        }
      }
    }
  ]
}
