← back to Tk11438 Postgres Migration

verification/fleet-classification/gracie-preflight.json

120 lines

{
  "status": "ready for scoped approval; refresh baseline before execution",
  "name": "gracie-internal",
  "pid": 8186,
  "restart_count": 1,
  "fields": [
    {
      "label": "effective",
      "PG": {
        "host": "localhost",
        "database": "dw_unified",
        "port": "5432",
        "socketHost": null,
        "explicitRole": false
      },
      "PGHOST": null,
      "DATA_SOURCE": null
    },
    {
      "label": "effective.env",
      "PG": {
        "host": "localhost",
        "database": "dw_unified",
        "port": "5432",
        "socketHost": null,
        "explicitRole": false
      },
      "PGHOST": null,
      "DATA_SOURCE": null
    },
    {
      "label": "saved",
      "PG": {
        "host": "localhost",
        "database": "dw_unified",
        "port": "5432",
        "socketHost": null,
        "explicitRole": false
      },
      "PGHOST": null,
      "DATA_SOURCE": null
    },
    {
      "label": "saved.env",
      "PG": {
        "host": "localhost",
        "database": "dw_unified",
        "port": "5432",
        "socketHost": null,
        "explicitRole": false
      },
      "PGHOST": null,
      "DATA_SOURCE": null
    }
  ],
  "source": {
    "path": "/Users/macstudio3/Projects/gracie-internal/server.js",
    "before_sha256": "b6a0dee64b777d1e3c41f806d93f51e44d803d3f8f300f0cc245cb75edf5406e",
    "after_sha256": "744feaf4a863badb311ed7ebc34f57c9ae8405b706b0519bcb842229abe6f168",
    "patch": "patches/gracie-server.patch"
  },
  "bundle_present": true,
  "http_checks": [
    {
      "route": "/healthz",
      "auth": "missing",
      "status": 200,
      "bytes": 11,
      "body_sha256": "4062edaf750fb8074e7e83e0c9028c94e32468a8b6f1614774328ef045150f93"
    },
    {
      "route": "/healthz",
      "auth": "invalid",
      "status": 200,
      "bytes": 11,
      "body_sha256": "4062edaf750fb8074e7e83e0c9028c94e32468a8b6f1614774328ef045150f93"
    },
    {
      "route": "/healthz",
      "auth": "valid",
      "status": 200,
      "bytes": 11,
      "body_sha256": "4062edaf750fb8074e7e83e0c9028c94e32468a8b6f1614774328ef045150f93"
    },
    {
      "route": "/api/products",
      "auth": "missing",
      "status": 401,
      "bytes": 24,
      "body_sha256": "45cceda8377a0f8cfb7a5dc927ee1760c648406764291c2032cbadad6e8e44fb"
    },
    {
      "route": "/api/products",
      "auth": "invalid",
      "status": 401,
      "bytes": 24,
      "body_sha256": "45cceda8377a0f8cfb7a5dc927ee1760c648406764291c2032cbadad6e8e44fb"
    },
    {
      "route": "/api/products",
      "auth": "valid",
      "status": 200,
      "bytes": 188603,
      "body_sha256": "b01acb69f4bd1d7d3c64d4dead18b84cf7f7026e9a702a2e9a77b08f66940264",
      "product_count": 150
    }
  ],
  "email_sends": 0,
  "application_imports": 0,
  "requests_route_invoked": false,
  "startup": "mountVendorRequests immediately runs CREATE TABLE/INDEX IF NOT EXISTS; restart is canonical DDL gated. Catalog may use JSONL; vendor requests still use PostgreSQL.",
  "proposed_scope": [
    "two source files only: server.js and lib/vendor-requests.js",
    "PG URI socket query in exact Gracie effective/saved PM2 fields; preserve all other fields",
    "one Gracie restart; existing startup DDL only; no POST /api/request and no email sends",
    "verify auth boundaries, read-only catalog/request GET after startup, socket pool identity/no process TCP5432, saved/effective agreement",
    "private file and scoped PM2 backups before apply; restore exact originals and restart only Gracie on regression"
  ]
}