{
    "schema":  "starminer.publishing-validation.v1",
    "generatedAt":  "2026-05-29T04:05:00Z",
    "targetGameBuild":  "23435040",
    "frameworkVersion":  "0.5.7",
    "frameworkDependencyPolicy":  {
                                      "requiredDependencyId":  "starminer.framework",
                                      "recommendedConstraint":  "\u003e=0.5.7",
                                      "loadAfterRequired":  true
                                  },
    "checks":  [
                   {
                       "id":  "sidecar_schema",
                       "phase":  "package",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Package sidecar must use starminer.mod-package.v1 and required metadata fields.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "*.package.json"
                                  ],
                       "failureCode":  "invalid_sidecar_schema"
                   },
                   {
                       "id":  "manifest_schema",
                       "phase":  "package",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Packaged manifest must use the Starminer mod manifest shape and supported entrypoint types.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "manifest.json"
                                  ],
                       "failureCode":  "invalid_manifest_schema"
                   },
                   {
                       "id":  "manifest_identity",
                       "phase":  "package",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Package metadata id, version, mod folder, entrypoints, and manifest values must agree.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "manifest.json",
                                      "*.package.json"
                                  ],
                       "failureCode":  "manifest_identity_mismatch"
                   },
                   {
                       "id":  "semantic_version",
                       "phase":  "package",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Mod versions and dependency constraints must use supported semantic version text.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "manifest.json"
                                  ],
                       "failureCode":  "invalid_version"
                   },
                   {
                       "id":  "target_game_build",
                       "phase":  "package",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Mod targetGameBuild must match the current Starminer runtime profile build.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1 -TargetGameBuild",
                       "inputs":  [
                                      "runtime/ue4ss/starminer-ue4ss-v3.0.1-zdev.json",
                                      "manifest.json"
                                  ],
                       "failureCode":  "incompatible_game_build"
                   },
                   {
                       "id":  "dependency_contract",
                       "phase":  "dependency",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Every non-framework package must depend on starminer.framework and load after it.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "manifest.json"
                                  ],
                       "failureCode":  "invalid_dependencies"
                   },
                   {
                       "id":  "zip_path_safety",
                       "phase":  "artifact",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "ZIP entries must be relative, traversal-free, and under the single packaged mod root.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "*.zip"
                                  ],
                       "failureCode":  "unsafe_archive_path"
                   },
                   {
                       "id":  "entrypoint_presence",
                       "phase":  "artifact",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Every manifest entrypoint must exist in the packaged ZIP unless explicitly optional.",
                       "tooling":  "tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "*.zip",
                                      "manifest.json"
                                  ],
                       "failureCode":  "missing_entrypoint"
                   },
                   {
                       "id":  "mod_config_contract",
                       "phase":  "package",
                       "owner":  "framework",
                       "severity":  "error",
                       "summary":  "Optional modConfig metadata must declare safe JSON config paths, supported select settings, defaults, and allowed option values.",
                       "tooling":  "tools/Starminer.ValidateManifests.ps1; tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "manifest.json",
                                      "Config/*.json"
                                  ],
                       "failureCode":  "invalid_mod_config"
                   },
                   {
                       "id":  "artifact_hash",
                       "phase":  "artifact",
                       "owner":  "portal",
                       "severity":  "error",
                       "summary":  "Published artifact SHA256 must match the package sidecar and catalog metadata.",
                       "tooling":  "Get-FileHash; tools/Starminer.ValidateModPackage.ps1",
                       "inputs":  [
                                      "*.zip",
                                      "*.package.json",
                                      "catalog metadata"
                                  ],
                       "failureCode":  "artifact_hash_mismatch"
                   },
                   {
                       "id":  "detail_page",
                       "phase":  "catalog",
                       "owner":  "portal",
                       "severity":  "error",
                       "summary":  "Catalog entries must have aligned public mod detail and version endpoints before publication.",
                       "tooling":  "smmods.com tools/Validate-Site.ps1",
                       "inputs":  [
                                      "public/api/v1/catalog.json",
                                      "public/api/v1/mods/{modId}/index.json",
                                      "public/api/v1/mods/{modId}/versions.json"
                                  ],
                       "failureCode":  "missing_catalog_detail"
                   },
                   {
                       "id":  "manager_catalog_parse",
                       "phase":  "catalog",
                       "owner":  "manager",
                       "severity":  "error",
                       "summary":  "The mod manager must parse the updated catalog and dependency graph before publication.",
                       "tooling":  "smmodmanager catalog-url/catalog-state smoke",
                       "inputs":  [
                                      "public/api/v1/catalog.json"
                                  ],
                       "failureCode":  "manager_catalog_parse_failed"
                   }
               ]
}
