{
  "date": "2026-11-06",
  "started_at_utc": "2026-11-06T10:43:37.360545+00:00",
  "finished_at_utc": "2026-11-06T10:43:44.322165+00:00",
  "status": "PASS",
  "workflow_complete": true,
  "ghost_version": "6.72.0",
  "node_version": "v22.23.4",
  "platform": {
    "system": "Darwin",
    "release": "27.2.0",
    "machine": "arm64",
    "python": "3.14.2"
  },
  "development_mode": true,
  "database": "fresh better-sqlite3; not production MySQL",
  "listen": "127.0.0.1 only",
  "mail": "stub transport; no delivery test",
  "network": "owned Node process blocks non-loopback connections",
  "blocked_external_connect_attempts": 2,
  "startup_seconds": [
    2.342,
    1.009
  ],
  "resources": [
    {
      "phase": "ready-before-setup",
      "rss_kib": 284736,
      "cpu_percent_ps_snapshot": 58.7
    },
    {
      "phase": "workflow-complete",
      "rss_kib": 307072,
      "cpu_percent_ps_snapshot": 106.9
    },
    {
      "phase": "workflow-complete",
      "rss_kib": 307088,
      "cpu_percent_ps_snapshot": 3.5
    },
    {
      "phase": "workflow-complete",
      "rss_kib": 307088,
      "cpu_percent_ps_snapshot": 0.0
    },
    {
      "phase": "after-restart",
      "rss_kib": 241312,
      "cpu_percent_ps_snapshot": 89.3
    }
  ],
  "resource_limitations": "ps snapshots of the owned Node server RSS/CPU, not peak startup memory, host capacity, benchmark or VPS forecast",
  "export": {
    "format": "native Ghost GET /ghost/api/admin/db/ JSON",
    "meta_version": "6.72.0",
    "tables": 20,
    "fixture_posts": [
      {
        "slug": "solo-local-rehearsal",
        "status": "published",
        "fixture_v2_present": true,
        "draft_marker_present": false
      },
      {
        "slug": "solo-private-next-note",
        "status": "draft",
        "fixture_v2_present": false,
        "draft_marker_present": true
      }
    ],
    "raw_export_not_public": true
  },
  "checks": [
    {
      "check": "fresh database starts unconfigured",
      "pass": true
    },
    {
      "check": "session login accepts fresh local account",
      "pass": true
    },
    {
      "check": "fresh setup becomes configured",
      "pass": true
    },
    {
      "check": "anonymous admin API denied",
      "pass": true
    },
    {
      "check": "created post is draft",
      "pass": true
    },
    {
      "check": "draft public route is 404",
      "pass": true
    },
    {
      "check": "RSS responds 200",
      "pass": true
    },
    {
      "check": "draft excluded from RSS",
      "pass": true
    },
    {
      "check": "published status returned",
      "pass": true
    },
    {
      "check": "published route has revised marker",
      "pass": true
    },
    {
      "check": "RSS responds 200",
      "pass": true
    },
    {
      "check": "published route and revised content enter RSS",
      "pass": true
    },
    {
      "check": "RSS responds 200",
      "pass": true
    },
    {
      "check": "second draft excluded from RSS",
      "pass": true
    },
    {
      "check": "native export responds 200",
      "pass": true
    },
    {
      "check": "native export contains published and draft fixtures",
      "pass": true
    },
    {
      "check": "native export retains both actual content markers",
      "pass": true
    },
    {
      "check": "restart retains setup",
      "pass": true
    },
    {
      "check": "restart retains published route/content",
      "pass": true
    },
    {
      "check": "session login accepts fresh local account",
      "pass": true
    },
    {
      "check": "restart retains private draft/status",
      "pass": true
    },
    {
      "check": "restart draft remains 404",
      "pass": true
    },
    {
      "check": "RSS responds 200",
      "pass": true
    },
    {
      "check": "restart RSS contains only published fixture",
      "pass": true
    }
  ],
  "requests": [
    {
      "step": "fresh-owner-setup",
      "method": "POST",
      "status": 201,
      "milliseconds": 113.968,
      "bytes": 937,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "session-login",
      "method": "POST",
      "status": 201,
      "milliseconds": 71.263,
      "bytes": 7,
      "content_type": "text/plain; charset=utf-8"
    },
    {
      "step": "authentication/setup/",
      "method": "GET",
      "status": 200,
      "milliseconds": 2.024,
      "bytes": 27,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "anonymous-admin-posts",
      "method": "GET",
      "status": 403,
      "milliseconds": 1.245,
      "bytes": 343,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "create-draft",
      "method": "POST",
      "status": 201,
      "milliseconds": 36.779,
      "bytes": 5548,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "draft-public-route",
      "method": "GET",
      "status": 404,
      "milliseconds": 9.896,
      "bytes": 1160,
      "content_type": "text/html; charset=utf-8"
    },
    {
      "step": "public-rss",
      "method": "GET",
      "status": 200,
      "milliseconds": 8.523,
      "bytes": 1952,
      "content_type": "application/rss+xml; charset=utf-8"
    },
    {
      "step": "publish-edited-post",
      "method": "PUT",
      "status": 200,
      "milliseconds": 27.722,
      "bytes": 6202,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "published-public-route",
      "method": "GET",
      "status": 200,
      "milliseconds": 39.95,
      "bytes": 17660,
      "content_type": "text/html; charset=utf-8"
    },
    {
      "step": "public-rss",
      "method": "GET",
      "status": 200,
      "milliseconds": 4.738,
      "bytes": 2727,
      "content_type": "application/rss+xml; charset=utf-8"
    },
    {
      "step": "create-second-draft",
      "method": "POST",
      "status": 201,
      "milliseconds": 19.511,
      "bytes": 4466,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "public-rss",
      "method": "GET",
      "status": 200,
      "milliseconds": 4.674,
      "bytes": 2727,
      "content_type": "application/rss+xml; charset=utf-8"
    },
    {
      "step": "native-content-export",
      "method": "GET",
      "status": 200,
      "milliseconds": 5.065,
      "bytes": 39674,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "published-after-restart",
      "method": "GET",
      "status": 200,
      "milliseconds": 45.05,
      "bytes": 17660,
      "content_type": "text/html; charset=utf-8"
    },
    {
      "step": "session-login",
      "method": "POST",
      "status": 201,
      "milliseconds": 69.156,
      "bytes": 7,
      "content_type": "text/plain; charset=utf-8"
    },
    {
      "step": "draft-after-restart",
      "method": "GET",
      "status": 200,
      "milliseconds": 6.697,
      "bytes": 4126,
      "content_type": "application/json; charset=utf-8"
    },
    {
      "step": "private-draft-after-restart",
      "method": "GET",
      "status": 404,
      "milliseconds": 5.791,
      "bytes": 1160,
      "content_type": "text/html; charset=utf-8"
    },
    {
      "step": "public-rss",
      "method": "GET",
      "status": 200,
      "milliseconds": 7.588,
      "bytes": 2727,
      "content_type": "application/rss+xml; charset=utf-8"
    }
  ],
  "cleanup": {
    "owned_processes_stopped": true,
    "loopback_port_closed": true,
    "protected_existing_database_fingerprints_unchanged": true
  },
  "not_tested": [
    "native import/restore",
    "newsletter or sign-in email delivery",
    "member checkout or paid subscription",
    "HTTPS/reverse proxy",
    "concurrent load",
    "theme/responsive browser QA",
    "production deployment or VPS resource fit"
  ],
  "reproduction_script_sha256": "9d8cd3091cf33edb2924a3ee5cb8d16c5ad85f715469296596ad8b717fead277",
  "startup_definition": "Process launch to first successful unauthenticated setup-status HTTP response; not install time or a benchmark.",
  "fixture": {
    "first_draft": {
      "slug": "solo-local-rehearsal",
      "status": "draft",
      "html": "<p>SOLO_GHOST_DRAFT_V1 — a disposable handoff note.</p>"
    },
    "published_revision": {
      "slug": "solo-local-rehearsal",
      "status": "published",
      "html": "<p>SOLO_GHOST_PUBLISHED_V2 — revised after the draft check.</p><h2>Handoff</h2><p>Keep the content export separate from media and operating configuration.</p>"
    },
    "retained_draft": {
      "slug": "solo-private-next-note",
      "status": "draft",
      "html": "<p>SOLO_GHOST_PRIVATE_DRAFT — never published.</p>"
    }
  },
  "failed_harness_attempts": [
    {
      "attempt": 1,
      "status": "FAIL",
      "reason": "Fresh working directory initially lacked the Ghost-style current symlink used to find package metadata; process exited before owner setup.",
      "cleanup_passed": true
    },
    {
      "attempt": 2,
      "status": "FAIL",
      "reason": "Harness expected JSON for the successful 201 text/plain session response; full workflow stopped. Its initially overbroad PASS assignment was corrected to FAIL.",
      "cleanup_passed": true
    }
  ],
  "scope": "Actual local-only publishing/export/restart evidence. No native import/restore, paid membership, email delivery, production site or customer outcome."
}
