{
  "issue": 155,
  "result": "PASS",
  "launcher": "0.1.36",
  "cli": "0.1.25",
  "runtime": "http://127.0.0.1:18136",
  "sourceCommit": "09e8ac85d7ed31c1df5a6c8ed2066e84818c3059",
  "jarSha256": "de54f48ce6164fb557a4a667607d84da4c0898e2cb822c30abe98c0763205dc3",
  "originalIssueModelsMatchPostedBody": true,
  "actualOriginalMetadata": {
    "businessAt": {
      "timeRole": "business_date",
      "recommendedUse": "business_axis_control"
    },
    "loadedAt": {
      "timeRole": "system_time",
      "recommendedUse": "technical_ingestion_only"
    },
    "createdAt": {
      "timeRole": "business_date",
      "recommendedUse": "explicit_business_axis"
    },
    "loadedTime$id": {
      "timeRole": "system_time",
      "recommendedUse": "technical_ingestion_dimension_only"
    }
  },
  "metadataScenarios": [
    "original one-row table",
    "same metadata after refresh",
    "empty table",
    "fallback when omitted",
    "custom string role",
    "renamed self-dimension ID"
  ],
  "nonStringValidationRejections": [
    {
      "case": "property-role-number",
      "success": false,
      "valid": null,
      "invalidFiles": null,
      "error": {
        "code": "MODEL_VALIDATE_FAILED",
        "lifecycle": {
          "affectedBindingGenerations": [],
          "beforeCatalogGeneration": "catalog:01b85bd6-65c9-47cc-89cd-5db13e8ec19c:17",
          "catalogState": "ACTIVE",
          "diagnostics": [
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.tm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeModel"
            },
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.qm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeQueryModel"
            }
          ],
          "failedTargets": [
            "TimeRoleProbeModel",
            "TimeRoleProbeQueryModel"
          ],
          "namespace": "time-role-invalid-036",
          "sourceRevision": "source:f8a1568d-3ced-4401-ab70-2a0a884b3b7a:g0:n0"
        },
        "lifecycleCode": "CATALOG_VALIDATION_FAILED",
        "message": "Detached model validation rejected the candidate.",
        "model": "TimeRoleProbeModel",
        "phase": "models.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Fix the model definition and retry validation."
      },
      "fieldDiagnostics": [
        {
          "category": "MODEL",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeModel.tm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.properties[2](loadedAt).timeRole must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received Integer)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "TM"
        },
        {
          "category": "CASCADING",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeQueryModel.qm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.properties[2](loadedAt).timeRole must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received Integer)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "QM"
        }
      ]
    },
    {
      "case": "property-use-object",
      "success": false,
      "valid": null,
      "invalidFiles": null,
      "error": {
        "code": "MODEL_VALIDATE_FAILED",
        "lifecycle": {
          "affectedBindingGenerations": [],
          "beforeCatalogGeneration": "catalog:01b85bd6-65c9-47cc-89cd-5db13e8ec19c:17",
          "catalogState": "ACTIVE",
          "diagnostics": [
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.tm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeModel"
            },
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.qm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeQueryModel"
            }
          ],
          "failedTargets": [
            "TimeRoleProbeModel",
            "TimeRoleProbeQueryModel"
          ],
          "namespace": "time-role-invalid-036",
          "sourceRevision": "source:f8a1568d-3ced-4401-ab70-2a0a884b3b7a:g0:n0"
        },
        "lifecycleCode": "CATALOG_VALIDATION_FAILED",
        "message": "Detached model validation rejected the candidate.",
        "model": "TimeRoleProbeModel",
        "phase": "models.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Fix the model definition and retry validation."
      },
      "fieldDiagnostics": [
        {
          "category": "MODEL",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeModel.tm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.properties[2](loadedAt).recommendedUse must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received HashMap)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "TM"
        },
        {
          "category": "CASCADING",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeQueryModel.qm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.properties[2](loadedAt).recommendedUse must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received HashMap)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "QM"
        }
      ]
    },
    {
      "case": "dimension-role-boolean",
      "success": false,
      "valid": null,
      "invalidFiles": null,
      "error": {
        "code": "MODEL_VALIDATE_FAILED",
        "lifecycle": {
          "affectedBindingGenerations": [],
          "beforeCatalogGeneration": "catalog:01b85bd6-65c9-47cc-89cd-5db13e8ec19c:17",
          "catalogState": "ACTIVE",
          "diagnostics": [
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.tm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeModel"
            },
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.qm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeQueryModel"
            }
          ],
          "failedTargets": [
            "TimeRoleProbeModel",
            "TimeRoleProbeQueryModel"
          ],
          "namespace": "time-role-invalid-036",
          "sourceRevision": "source:f8a1568d-3ced-4401-ab70-2a0a884b3b7a:g0:n0"
        },
        "lifecycleCode": "CATALOG_VALIDATION_FAILED",
        "message": "Detached model validation rejected the candidate.",
        "model": "TimeRoleProbeModel",
        "phase": "models.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Fix the model definition and retry validation."
      },
      "fieldDiagnostics": [
        {
          "category": "MODEL",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeModel.tm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.dimensions[0](loadedTime).timeRole must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received Boolean)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "TM"
        },
        {
          "category": "CASCADING",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeQueryModel.qm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.dimensions[0](loadedTime).timeRole must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received Boolean)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "QM"
        }
      ]
    },
    {
      "case": "dimension-use-array",
      "success": false,
      "valid": null,
      "invalidFiles": null,
      "error": {
        "code": "MODEL_VALIDATE_FAILED",
        "lifecycle": {
          "affectedBindingGenerations": [],
          "beforeCatalogGeneration": "catalog:01b85bd6-65c9-47cc-89cd-5db13e8ec19c:17",
          "catalogState": "ACTIVE",
          "diagnostics": [
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.tm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeModel"
            },
            {
              "message": "Detached model validation failed (IllegalArgumentException).",
              "phase": "validate.qm",
              "suggestedNextAction": "Fix the model definition and retry validation.",
              "target": "TimeRoleProbeQueryModel"
            }
          ],
          "failedTargets": [
            "TimeRoleProbeModel",
            "TimeRoleProbeQueryModel"
          ],
          "namespace": "time-role-invalid-036",
          "sourceRevision": "source:f8a1568d-3ced-4401-ab70-2a0a884b3b7a:g0:n0"
        },
        "lifecycleCode": "CATALOG_VALIDATION_FAILED",
        "message": "Detached model validation rejected the candidate.",
        "model": "TimeRoleProbeModel",
        "phase": "models.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Fix the model definition and retry validation."
      },
      "fieldDiagnostics": [
        {
          "category": "MODEL",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeModel.tm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.dimensions[0](loadedTime).recommendedUse must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received ArrayList)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "TM"
        },
        {
          "category": "CASCADING",
          "code": "IllegalArgumentException",
          "file": "TimeRoleProbeQueryModel.qm",
          "message": "INVALID_TIME_METADATA: TimeRoleProbeModel.dimensions[0](loadedTime).recommendedUse must be a string or null; use a semantic role label for timeRole and explanatory text for recommendedUse (received ArrayList)",
          "severity": "ERROR",
          "stackTrace": "Lifecycle operation failed.",
          "type": "QM"
        }
      ]
    }
  ],
  "dateQueriesPassed": 5,
  "originalIssueAndTeachingFilesUnchanged": true,
  "evidenceDirectory": "练习目录\\lab\\evidence\\launcher-0.1.36-retest\\runs\\20261022-154642-668771",
  "scope": "Isolated release runtime; no source build, no broad release/Console/multi-database acceptance, no GitHub comments"
}