{
  "contractId": "SHOGI_REFLECTION_PRACTICAL_IMPROVEMENT_EXPORT_DESCRIPTOR",
  "schemaVersion": 1,
  "describesContractId": "SHOGI_REFLECTION_PRACTICAL_IMPROVEMENT_EXPORT",
  "descriptorStatus": "OFFICIAL_DESCRIPTOR_READY_EVIDENCE_EXPORT_NOT_IMPLEMENTED",
  "provenance": "OFFICIAL_REFLECTION_CONTRACT",
  "source": "shogi-reflection",
  "sourceOfTruth": "SHOGI_REFLECTION",
  "mode": "READ_ONLY",
  "recordPath": "/records/*",
  "requiredSemanticRoles": [
    "evidenceId",
    "verificationStatus",
    "practicalImprovementStatus",
    "confirmedAt",
    "reflectionReviewId",
    "reflectionAnalysisId",
    "newGameKifSha256",
    "newGameEvidenceRef"
  ],
  "fields": [
    {
      "semanticRole": "evidenceId",
      "path": "/records/*/evidenceId",
      "type": "string",
      "required": true,
      "semantic": "Reflectionが発行するPractical Improvement Evidenceの安定一意ID。Consumer側の重複判定キー。"
    },
    {
      "semanticRole": "verificationStatus",
      "path": "/records/*/verificationStatus",
      "type": "string",
      "required": true,
      "allowedValues": [
        "CONFIRMED"
      ],
      "semantic": "Reflectionで正式確認済みのEvidenceであることを示す。v1 Export対象はCONFIRMEDのみ。"
    },
    {
      "semanticRole": "practicalImprovementStatus",
      "path": "/records/*/practicalImprovementStatus",
      "type": "string",
      "required": true,
      "allowedValues": [
        "IMPROVEMENT_CONFIRMED"
      ],
      "semantic": "新しい実戦で改善が確認されたことを示す。v1 Export対象はIMPROVEMENT_CONFIRMEDのみ。"
    },
    {
      "semanticRole": "confirmedAt",
      "path": "/records/*/confirmedAt",
      "type": "string",
      "format": "RFC3339 date-time",
      "required": true,
      "semantic": "ReflectionがPractical Improvementを正式確認した時刻。"
    },
    {
      "semanticRole": "reflectionReviewId",
      "path": "/records/*/reflectionReviewId",
      "type": "string",
      "required": true,
      "semantic": "改善Evidenceの判定元となるReflection Reviewの安定ID。"
    },
    {
      "semanticRole": "reflectionAnalysisId",
      "path": "/records/*/reflectionAnalysisId",
      "type": "string",
      "required": true,
      "semantic": "改善Evidenceの判定根拠となるReflection Analysisの安定ID。"
    },
    {
      "semanticRole": "newGameKifSha256",
      "path": "/records/*/newGameKifSha256",
      "type": "string",
      "format": "sha256-lowercase-hex-64",
      "required": true,
      "semantic": "改善確認に使用した新しい実戦棋譜のSHA-256。別棋譜との取り違えを防止する。"
    },
    {
      "semanticRole": "newGameEvidenceRef",
      "path": "/records/*/newGameEvidenceRef",
      "type": "string",
      "required": true,
      "semantic": "Reflection内部で新実戦Evidenceを追跡するopaque reference。Consumerは分解・推測しない。"
    }
  ],
  "safetyField": {
    "semanticRole": "fixtureSafetyFlag",
    "path": "/records/*/fixture",
    "type": "boolean",
    "required": true,
    "acceptedValues": [
      false
    ],
    "semantic": "実ユーザーEvidenceだけをExportするための安全Field。falseのみ受理し、true・欠落・型不一致はExport/Consumer双方で拒否する。"
  },
  "exportPolicy": {
    "confirmedEvidenceOnly": true,
    "fixturesAllowed": false,
    "candidateAllowed": false,
    "reviewedUndecidedAllowed": false,
    "staleAllowed": false,
    "trainingSuccessAloneMeansPracticalImprovement": false,
    "missingFieldDefaultingAllowed": false,
    "guessedFieldPathAllowed": false
  },
  "recordEligibility": {
    "allRequiredFieldsPresent": true,
    "verificationStatusMustEqual": "CONFIRMED",
    "practicalImprovementStatusMustEqual": "IMPROVEMENT_CONFIRMED",
    "fixtureMustEqual": false
  },
  "writeBoundary": {
    "reflectionWriteFromThisDescriptor": false,
    "knowledgeWriteFromThisDescriptor": false,
    "gameReviewWriteFromThisDescriptor": false,
    "engineAnalysisWriteFromThisDescriptor": false,
    "trainingMayWriteReflection": false,
    "personaMayWriteReflection": false
  },
  "step16M": {
    "descriptorOnly": true,
    "practicalImprovementEvaluationImplemented": false,
    "evidenceGenerationImplemented": false,
    "realEvidenceExportImplemented": false,
    "recordsExported": 0
  }
}
