{
  "schema-version": "0.1.0",
  "standard": {
    "schema-version": "0.1.0",
    "sequence": 231,
    "standard_id": "REL-003-JAVA",
    "title": "Java Patch Version Naming",
    "summary": "Java patched releases use a version naming profile that optimizes Maven, Gradle, repository-manager, dependency-update, SCA, feed, and policy-tool behavior for the affected upstream version line.",
    "extends": "REL-003",
    "doc-status": "Ratified",
    "standard-version": "0.1.0",
    "candidate-pack": "OSERA-SP-0.1.0 ratified",
    "ratified-in": "OSERA-SP-0.1.0",
    "ratified-date": "2026-09-10",
    "fitness-role": "Required Java profile check",
    "type": "REL",
    "category": "Release Process",
    "applies-to": [
      "Java package patch providers",
      "Enterprise Java recipients",
      "Java repository and dependency tooling"
    ],
    "requirements": [
      {
        "id": "REL-003-JAVA.REQ-001",
        "override-explanation": "Specializes the generic applicable-profile rule with a Java-specific version convention. The CARE-style convention uses the OSERA identifier; the parent obligations to identify the latest applicable remediation on the same upstream line and preserve baseline and OSERA identity remain.",
        "level": "MUST",
        "text": "Official OSERA Java patched releases must use the ratified Java patch CARE-style version naming convention with the OSERA identifier, so supported Java resolver, dependency update, repository manager, SCA, feed, and policy tooling treats the patched artifact as the latest applicable remediation on the same upstream version line.",
        "checkability": "partially-automated",
        "checks": [
          {
            "id": "REL-003-JAVA.CHECK-001",
            "override-explanation": "Replaces generic profile-selection evidence with Java profile-decision, resolver, and dependency-update compatibility evidence. The parent consumer outcome remains the acceptance criterion; the naming convention is the CARE-style OSERA form described below.",
            "title": "Java patch version pattern passes supported tooling compatibility tests",
            "type": "release",
            "severity": "blocking",
            "implementation": "osera-fitness.rel003_java.version_pattern_compatibility",
            "evidence": [
              "release_tag",
              "artifact_version",
              "java_profile_decision",
              "resolver_test_result",
              "dependency_update_test_result"
            ]
          }
        ]
      },
      {
        "id": "REL-003-JAVA.REQ-002",
        "override-explanation": "Specializes the parent identifier-consistency obligation for Java artifacts by explicitly including Maven package URLs. The same patched-release identity must still connect source tags, artifacts, feeds, and evidence.",
        "level": "MUST",
        "text": "Java release tags, artifact versions, Maven package URLs, vulnerability feeds, and release evidence must carry the same Java patch version identifier.",
        "checkability": "automated",
        "checks": [
          {
            "id": "REL-003-JAVA.CHECK-002",
            "override-explanation": "Uses Maven package URL evidence for the parent consistency check while retaining release-tag, artifact-version, and feed identity matching.",
            "title": "Java release identifier is consistent across source, artifact, and feeds",
            "type": "release",
            "severity": "blocking",
            "implementation": "osera-fitness.rel003_java.identifier_consistency",
            "evidence": [
              "release_tag",
              "artifact_version",
              "maven_purl",
              "feed_purl"
            ]
          }
        ]
      }
    ],
    "source_path": "docs/_standards/rel-003-java-patch-version-naming.md",
    "url": "/standards/rel-003-java-patch-version-naming/",
    "parent_relationship": {
      "parent_standard": "REL-003",
      "parent_version": "0.1.0",
      "requirements": [
        {
          "parent_item": "REL-003.REQ-001",
          "treatment": "Overrides",
          "effective_item": "REL-003-JAVA.REQ-001",
          "explanation": "Specializes the generic applicable-profile rule with a Java-specific version convention. The CARE-style convention uses the OSERA identifier; the parent obligations to identify the latest applicable remediation on the same upstream line and preserve baseline and OSERA identity remain."
        },
        {
          "parent_item": "REL-003.REQ-002",
          "treatment": "Overrides",
          "effective_item": "REL-003-JAVA.REQ-002",
          "explanation": "Specializes the parent identifier-consistency obligation for Java artifacts by explicitly including Maven package URLs. The same patched-release identity must still connect source tags, artifacts, feeds, and evidence."
        }
      ],
      "checks": [
        {
          "parent_item": "REL-003.CHECK-001",
          "treatment": "Overrides",
          "effective_item": "REL-003-JAVA.CHECK-001",
          "explanation": "Replaces generic profile-selection evidence with Java profile-decision, resolver, and dependency-update compatibility evidence. The parent consumer outcome remains the acceptance criterion; the naming convention is the CARE-style OSERA form described below."
        },
        {
          "parent_item": "REL-003.CHECK-002",
          "treatment": "Overrides",
          "effective_item": "REL-003-JAVA.CHECK-002",
          "explanation": "Uses Maven package URL evidence for the parent consistency check while retaining release-tag, artifact-version, and feed identity matching."
        }
      ]
    }
  }
}
