{
  "aapanel": {
    "api_proxy_extension_conf": "/www/server/panel/vhost/nginx/extension/mikemaksosa.com/api-proxy.conf",
    "nginx_conf": "/www/server/panel/vhost/nginx/mikemaksosa.com.conf",
    "previous_webroot": "/var/www/mikemaksosa.com/public",
    "site_registration_status": "prepared_for_aapanel_ui",
    "ssl_status": "installed_and_preserved",
    "webroot": "/www/wwwroot/mikemaksosa.com"
  },
  "backend": {
    "api_ledger_url": "https://mikemaksosa.com/api/ledger",
    "app_dir": "/opt/mikemaksosa",
    "bind": "127.0.0.1",
    "health_url": "https://mikemaksosa.com/api/health",
    "port": 8033,
    "service": "mikemaksosa-api.service"
  },
  "canonical_ledger_url": "https://mikemaksosa.com/mikemaksosa-ledger.json",
  "changes": [
    {
      "after": "/www/wwwroot/mikemaksosa.com",
      "before": "/var/www/mikemaksosa.com/public",
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-aapanel-webroot-prep-20260707T210646Z",
      "id": "mikemaksosa-aapanel-webroot-prep",
      "reason": "aaPanel rejected /var/www path because /var is treated as a protected system directory.",
      "timestamp_utc": "20260707T210646Z"
    },
    {
      "after": "Owned songs/covers copied to protected VPS storage and staged in owned-media.review.json.",
      "before": "Owned songs/covers existed only on local Mac.",
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-owned-media-ingest-20260707T215559Z",
      "id": "mikemaksosa-owned-media-private-ingest",
      "timestamp_utc": "20260707T215559Z",
      "validation": [
        "local archive uploaded",
        "audio extensions validated",
        "audio MIME types validated",
        "audio SHA-256 checksums validated",
        "artwork extensions validated",
        "artwork MIME types validated",
        "artwork SHA-256 checksums validated",
        "review manifest written",
        "ledger updated"
      ]
    },
    {
      "after": "Owned uploaded songs are classified as background_ambient and hidden from public track rail/catalog.",
      "before": "Owned uploaded songs were validated but not classified for UI behavior.",
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-background-owned-media-classification-20260707T220146Z",
      "id": "mikemaksosa-background-owned-media-classification",
      "timestamp_utc": "20260707T220146Z",
      "validation": [
        "owned-media.review.json exists",
        "background tracks matched by exact normalized titles",
        "private media files exist",
        "media SHA-256 checks passed",
        "review manifest updated",
        "background-media.approved.json written",
        "ledger updated"
      ]
    }
  ],
  "created_utc": "20260707T203814Z",
  "dns_required": {
    "authoritative_dns": "Contabo",
    "nameservers_at_squarespace": [
      "ns1.contabo.net",
      "ns2.contabo.net",
      "ns3.contabo.net"
    ],
    "records": [
      {
        "name": "mikemaksosa.com",
        "ttl": 14400,
        "type": "A",
        "value": "62.146.176.231"
      },
      {
        "name": "www.mikemaksosa.com",
        "ttl": 14400,
        "type": "CNAME",
        "value": "mikemaksosa.com"
      }
    ],
    "registrar": "Squarespace"
  },
  "domain": "mikemaksosa.com",
  "latest_result": "MIKEMAKSOSA_BACKGROUND_OWNED_MEDIA_CLASSIFICATION_PASSED",
  "media": {
    "artwork_private_dir": "/opt/mikemaksosa/storage/artwork-private",
    "background_media_manifest": "/opt/mikemaksosa/storage/manifests/background-media.approved.json",
    "background_owned_media_policy": {
      "autoplay_candidate": true,
      "background_rotation": true,
      "controlled_backend_routes_required": true,
      "owned_uploaded_songs_are_background_by_default": true,
      "raw_public_file_exposure_allowed": false,
      "show_in_public_left_track_rail": false,
      "show_in_public_streaming_catalog": false
    },
    "latest_background_media_classification": {
      "background_manifest": "/opt/mikemaksosa/storage/manifests/background-media.approved.json",
      "classified_count": 2,
      "classified_titles": [
        "Island from the sun",
        "Kapsoora"
      ],
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-background-owned-media-classification-20260707T220146Z",
      "review_manifest": "/opt/mikemaksosa/storage/manifests/owned-media.review.json",
      "status": "approved",
      "timestamp_utc": "20260707T220146Z"
    },
    "latest_owned_media_ingest": {
      "artwork_count": 6,
      "audio_count": 2,
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-owned-media-ingest-finalize-recovery-20260707T215737Z",
      "manifest": "/opt/mikemaksosa/storage/manifests/owned-media.review.json",
      "status": "review_pending_validated",
      "timestamp_utc": "20260707T215737Z",
      "validation_summary": "/root/mikemaksosa-evidence/mikemaksosa-owned-media-ingest-finalize-recovery-20260707T215737Z/owned-media-validation-summary.json"
    },
    "manifest_review_path": "/opt/mikemaksosa/storage/manifests/owned-media.review.json",
    "media_private_dir": "/opt/mikemaksosa/storage/media-private",
    "owned_media_review_manifest": "/opt/mikemaksosa/storage/manifests/owned-media.review.json",
    "private_storage_root": "/opt/mikemaksosa/storage"
  },
  "project": "MikeMaksosa Site",
  "repairs": [
    {
      "change": "Rewrote the mikemaksosa.com aaPanel vhost, validated config, reloaded Nginx through aaPanel binary, and validated host-header routing.",
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-live-nginx-routing-repair-20260707T204842Z",
      "id": "mikemaksosa-live-nginx-routing-repair",
      "issue": "Public DNS resolved correctly, but live Nginx served old/default content and returned 404 for /api/health and ledger.",
      "rollback_source": "/root/mikemaksosa-evidence/mikemaksosa-live-nginx-routing-repair-20260707T204842Z/mikemaksosa.com.conf.before",
      "timestamp_utc": "20260707T204842Z",
      "validation": [
        "DNS already resolves to VPS IP",
        "mikemaksosa-api service active",
        "direct backend /api/health passed",
        "Nginx config test passed",
        "host-header /api/health passed",
        "host-header /mikemaksosa-ledger.json passed"
      ]
    },
    {
      "after": {
        "api_proxy": "http://127.0.0.1:8033",
        "extension_conf": "/www/server/panel/vhost/nginx/extension/mikemaksosa.com/api-proxy.conf",
        "health_url": "https://mikemaksosa.com/api/health",
        "ledger_url": "https://mikemaksosa.com/mikemaksosa-ledger.json"
      },
      "before": {
        "extension_backup_if_any": "/root/mikemaksosa-evidence/mikemaksosa-aapanel-extension-api-proxy-20260707T215046Z/api-proxy.conf.before",
        "main_vhost_backup": "/root/mikemaksosa-evidence/mikemaksosa-aapanel-extension-api-proxy-20260707T215046Z/mikemaksosa.com.conf.before"
      },
      "change": "Added location ^~ /api/ reverse proxy through aaPanel extension include directory, preserving aaPanel main vhost and SSL.",
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-aapanel-extension-api-proxy-20260707T215046Z",
      "id": "mikemaksosa-aapanel-extension-api-proxy",
      "issue": "aaPanel active vhost had SSL but no /api/ location, causing /api/health to return static aaPanel 404.",
      "timestamp_utc": "20260707T215046Z",
      "validation": [
        "backend service active",
        "direct backend /api/health passed",
        "nginx config test passed",
        "HTTP local host-header /api/health passed",
        "HTTPS local-origin /api/health passed",
        "HTTP local host-header ledger passed",
        "HTTPS local-origin ledger passed"
      ]
    },
    {
      "change": "Validated existing protected media/artwork files, verified SHA-256 and sizes, avoided aaPanel .user.ini, finalized review manifest status, and updated ledger.",
      "evidence_dir": "/root/mikemaksosa-evidence/mikemaksosa-owned-media-ingest-finalize-recovery-20260707T215737Z",
      "id": "mikemaksosa-owned-media-ingest-finalize-recovery",
      "issue": "Initial owned-media ingest copied files and wrote the review manifest, but exited before final RESULT marker because the script attempted Linux-incompatible file -bI checks and recursive chmod touched aaPanel .user.ini.",
      "timestamp_utc": "20260707T215737Z",
      "validation": [
        "review manifest exists",
        "all media private paths exist",
        "all artwork private paths exist",
        "media SHA-256 checks passed",
        "artwork SHA-256 checks passed",
        "media file sizes matched manifest",
        "artwork file sizes matched manifest",
        "ledger updated",
        "public HTTPS API health passed",
        "public HTTPS ledger passed"
      ]
    }
  ],
  "rollback": {
    "backup_dir": "/root/mikemaksosa-evidence/mikemaksosa-backend-bootstrap-20260707T203814Z",
    "rollback_script": "/root/mikemaksosa-evidence/mikemaksosa-backend-bootstrap-20260707T203814Z/rollback.sh"
  },
  "temporary_http_ledger_url": "http://mikemaksosa.com/mikemaksosa-ledger.json",
  "vps_ip": "62.146.176.231",
  "web": {
    "nginx_server_names": [
      "mikemaksosa.com",
      "www.mikemaksosa.com"
    ],
    "web_root": "/www/wwwroot/mikemaksosa.com"
  },
  "www_domain": "www.mikemaksosa.com"
}
