{
  "schema": "smmods.production-readiness.v1",
  "generatedAt": "2026-06-06T23:30:00Z",
  "overallStatus": "not_release_ready",
  "liveBackend": false,
  "summary": "SMMODS has a validated static catalog, GitLab-hosted production manager release metadata, immutable download artifacts, a manual publishing lane, and a local backend publishing slice with passwordless account/session auth, API-key fast downloads, role management, upload staging, AV/deep-inspection validation contracts, generated detail-page validation, moderation, catalog publication, audit reads, rate-limited write routes, an enforced live-upload gate, verification email delivery gating, post-publish file smoke, deployment templates, and go-live evidence tooling. It is not fully release-ready until the authenticated backend is deployed with durable storage, antivirus scanning, file-signature inspection, archive-content-policy enforcement, and promoted live smoke evidence.",
  "releaseBlockers": [
    {
      "id": "live_backend_missing",
      "summary": "The backend has local passwordless account/session/API-key/role-management/upload-staging/detail-page validation/moderation/catalog-publication/post-publish-smoke code plus AV/deep-inspection validation contracts, nginx/systemd templates, rate-limited write routes, SMMODS_LIVE_UPLOADS enforcement, verification email delivery gating, and non-mutating plus lifecycle smoke tooling, but authenticated production deployment, durable storage, antivirus scanning, file-signature inspection, archive-content-policy enforcement, and promoted live audit/account/upload evidence are not yet complete."
    }
  ],
  "evidence": {
    "catalogUrl": "https://smmods.com/api/v1/catalog.json",
    "runtimeUrl": "https://smmods.com/api/v1/runtime/latest.json",
    "frameworkUrl": "https://smmods.com/api/v1/framework/latest.json",
    "managerUrl": "https://smmods.com/api/v1/manager/latest.json",
    "publishingWorkflowUrl": "https://smmods.com/api/v1/publishing/workflow.json",
    "publishingBackendContractUrl": "https://smmods.com/api/v1/publishing/backend-contract.json",
    "manualPublishingRunbook": "docs/manual-publishing.md",
    "deploymentRunbook": "docs/deployment.md"
  },
  "gates": [
    {
      "id": 1,
      "title": "Public routes and flows",
      "status": "partial",
      "evidence": [
        "/players/",
        "/modders/",
        "/support/",
        "/mods/",
        "/download/",
        "/upload/",
        "/account/",
        "/moderation/",
        "/attribution/"
      ],
      "remaining": [
        "Replace account, upload, and moderation placeholder copy only after matching backend services are deployed."
      ]
    },
    {
      "id": 2,
      "title": "Manager API compatibility",
      "status": "ready",
      "evidence": [
        "/api/v1/catalog.json",
        "/api/v1/runtime/latest.json",
        "/api/v1/framework/latest.json",
        "/api/v1/manager/latest.json",
        "/api/v1/mods/index.json",
        "tools/Validate-Site.ps1"
      ],
      "remaining": []
    },
    {
      "id": 3,
      "title": "Immutable artifacts and hashes",
      "status": "ready",
      "evidence": [
        "https://gitlab.curtpme.com/starminer-modding/smmodmanager/-/releases/permalink/latest/downloads/smmodmanager-0.1.26-windows-x64.zip",
        "/downloads/framework/StarminerFramework-0.5.8-cb528c8f.zip",
        "/downloads/mods/example.hello-lua/0.1.3/example.hello-lua-v0.1.3.zip",
        "/downloads/mods/example.hello-lua-companion/0.1.2/example.hello-lua-companion-v0.1.2.zip",
        "/downloads/mods/starminer.object-catalog-export/0.1.1/starminer.object-catalog-export-v0.1.1.zip",
        "tools/Test-ArtifactImmutability.ps1"
      ],
      "remaining": []
    },
    {
      "id": 4,
      "title": "Production mod publishing backend",
      "status": "blocked",
      "evidence": [
        "/api/v1/publishing/workflow.json",
        "/api/v1/publishing/backend-contract.json",
        "/api/v1/publishing/upload-submission.schema.json",
        "backend/server.mjs",
        "backend/server.test.mjs",
        "antivirus_scan validation check",
        "file_signature validation check",
        "archive_content_policy validation check",
        "tools/Invoke-BackendSmoke.ps1",
        "backend-health-smoke:protected",
        "rate_limit_exceeded write-route guards",
        "GET /api/v1/accounts",
        "PUT /api/v1/accounts/{accountId}/roles",
        "SMMODS email verification webhook gate",
        "POST /api/v1/catalog/publish",
        "SMMODS_LIVE_UPLOADS upload gate",
        "smmods.post-publish-smoke.v1",
        "deploy/smmods-backend.service",
        "deploy/nginx-smmods-backend.conf",
        "dist/backend/",
        "reports/backend-health-smoke-<commit>.json",
        "reports/backend-lifecycle-smoke-<commit>.json",
        "reports/go-live-evidence-<commit>.json",
        "/account/",
        "/upload/",
        "/moderation/"
      ],
      "remaining": [
        "Deploy the backend behind HTTPS with durable storage, verification and magic-link email delivery, API-key fast-download support, antivirus scanning, file-signature inspection, and archive-content-policy enforcement after account, upload staging, validation, moderation, catalog publication, and audit paths are production-configured.",
        "Configure SMMODS_BACKEND_SMOKE_BASE_URL and run backend-health-smoke:protected against the deployed route, then run full account lifecycle smoke after the deployed email path can provide verification and magic-link tokens to the smoke operator or CI job.",
        "Wire the local catalog publisher into deployment and live public smoke after HTTPS publication.",
        "Set liveBackend true only after the deployed services are covered by validation and smoke checks."
      ]
    },
    {
      "id": 5,
      "title": "Interim manual publishing lane",
      "status": "ready",
      "evidence": [
        "tools/Import-ModRelease.ps1",
        "docs/manual-publishing.md",
        "/api/v1/publishing/mod-release-submission.schema.json",
        "docs/mod-release-submission.example.json"
      ],
      "remaining": []
    },
    {
      "id": 6,
      "title": "Framework and sample mod resources",
      "status": "ready",
      "evidence": [
        "/modders/",
        "/wiki/getting-started/",
        "/mods/hello-lua/",
        "/mods/hello-lua-companion/",
        "/mods/object-catalog-export/",
        "/api/v1/framework/latest.json"
      ],
      "remaining": []
    },
    {
      "id": 7,
      "title": "Catalog dependency and update metadata",
      "status": "ready",
      "evidence": [
        "/api/v1/catalog.json",
        "/api/v1/mods/example.hello-lua/versions.json",
        "/api/v1/mods/example.hello-lua-companion/versions.json",
        "/api/v1/mods/starminer.object-catalog-export/versions.json"
      ],
      "remaining": []
    },
    {
      "id": 8,
      "title": "Production manager download",
      "status": "ready",
      "evidence": [
        "/download/",
        "/api/v1/manager/latest.json",
        "https://gitlab.curtpme.com/starminer-modding/smmodmanager/-/releases/permalink/latest/downloads/smmodmanager-0.1.26-windows-x64.zip",
        "sourceExecutableSha256"
      ],
      "remaining": []
    },
    {
      "id": 9,
      "title": "Public smoke coverage",
      "status": "ready",
      "evidence": [
        "tools/Invoke-PublicSmoke.ps1",
        "GitLab public-smoke:protected artifact"
      ],
      "remaining": []
    },
    {
      "id": 10,
      "title": "GitLab CI validation",
      "status": "ready",
      "evidence": [
        ".gitlab-ci.yml",
        "tools/Invoke-CIValidation.ps1",
        "tools/Validate-Site.ps1",
        "tools/Test-ArtifactImmutability.ps1"
      ],
      "remaining": []
    },
    {
      "id": 11,
      "title": "Deployment readiness",
      "status": "ready",
      "evidence": [
        "docs/deployment.md",
        "dist/backend/",
        "reports/go-live-plan-<commit>.json",
        "reports/go-live-evidence-<commit>.json",
        "go-live-evidence:protected",
        "public-smoke:protected"
      ],
      "remaining": []
    },
    {
      "id": 12,
      "title": "Truthful user-facing copy",
      "status": "partial",
      "evidence": [
        "/account/",
        "/upload/",
        "/moderation/",
        "/api/v1/publishing/workflow.json"
      ],
      "remaining": [
        "Remove static placeholder language only when auth, uploads, and moderation are working in production."
      ]
    },
    {
      "id": 13,
      "title": "Release publication hygiene",
      "status": "partial",
      "evidence": [
        "git main",
        "GitLab pipeline",
        "public smoke report"
      ],
      "remaining": [
        "Keep committing, pushing, and smoke-verifying each production release increment until every blocker is removed."
      ]
    }
  ]
}
