From 01e2b5181c2c53f1238127f5cfab223d7f827f50 Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:11:26 +0200 Subject: [PATCH 1/7] Verify live ESKA core 0.2.0 W3ID routes --- .github/workflows/verify-core-0.2.0-w3id.yml | 60 ++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 .github/workflows/verify-core-0.2.0-w3id.yml diff --git a/.github/workflows/verify-core-0.2.0-w3id.yml b/.github/workflows/verify-core-0.2.0-w3id.yml new file mode 100644 index 0000000..29350b6 --- /dev/null +++ b/.github/workflows/verify-core-0.2.0-w3id.yml @@ -0,0 +1,60 @@ +name: Verify ESKA core 0.2.0 W3ID + +on: + pull_request: + branches: [main] + paths: + - "publication/w3id/eska/.htaccess" + - ".github/workflows/verify-core-0.2.0-w3id.yml" + workflow_dispatch: + +permissions: + contents: read + +jobs: + verify: + runs-on: ubuntu-latest + steps: + - name: Verify immutable core 0.2.0 live routes + shell: bash + run: | + set -euo pipefail + + check_route() { + url="$1" + accept="$2" + expected="$3" + marker="$4" + headers="$(mktemp)" + body="$(mktemp)" + final="$(curl --fail --silent --show-error --location \ + --header "Accept: $accept" \ + --dump-header "$headers" \ + --output "$body" \ + --write-out '%{url_effective}' \ + "$url")" + test "$final" = "$expected" + grep -Eq '^HTTP/.* 303' "$headers" + grep -Fq "$marker" "$body" + echo "PASS $url [$accept] -> $final" + } + + check_route \ + "https://w3id.org/eska/model/core/0.2.0" \ + "text/turtle" \ + "https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.2.0/model/eska-core.ttl" \ + "https://w3id.org/eska/model/core/0.2.0" + + check_route \ + "https://w3id.org/eska/model/core/0.2.0" \ + "text/html" \ + "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/blob/eska-v0.2.0/model/eska-core.ttl" \ + "SemanticModel" + + check_route \ + "https://w3id.org/eska/dist/0.2.0/eska-core.ttl" \ + "text/turtle" \ + "https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.2.0/model/eska-core.ttl" \ + "https://w3id.org/eska/model/core/0.2.0" + + echo "SUCCESS: immutable ESKA core 0.2.0 W3ID routes resolve to eska-v0.2.0." From 3d84ef860b92a6ce94c7486dc4c7d85614e9866e Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:11:49 +0200 Subject: [PATCH 2/7] Synchronize active ESKA core 0.2.0 W3ID mirror --- publication/w3id/eska/.htaccess | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/publication/w3id/eska/.htaccess b/publication/w3id/eska/.htaccess index 293af80..06ffd0a 100644 --- a/publication/w3id/eska/.htaccess +++ b/publication/w3id/eska/.htaccess @@ -5,9 +5,6 @@ # Permanent namespace active since perma-id/w3id.org#6530. # Unversioned routes follow governed main; versioned routes below resolve only to # immutable ESKA release tags. -# -# Core 0.2.0 is intentionally NOT routed here yet. Its immutable route may be -# added only after governed release tag eska-v0.2.0 exists and is verified. Options +FollowSymLinks -Indexes RewriteEngine On @@ -53,6 +50,10 @@ RewriteCond %{HTTP_ACCEPT} text/turtle [NC] RewriteRule ^model/core/0\.1\.0/?$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.1.0/model/eska-core.ttl [R=303,NE,L] RewriteRule ^model/core/0\.1\.0/?$ https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/blob/eska-v0.1.0/model/eska-core.ttl [R=303,NE,L] +RewriteCond %{HTTP_ACCEPT} text/turtle [NC] +RewriteRule ^model/core/0\.2\.0/?$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.2.0/model/eska-core.ttl [R=303,NE,L] +RewriteRule ^model/core/0\.2\.0/?$ https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/blob/eska-v0.2.0/model/eska-core.ttl [R=303,NE,L] + RewriteCond %{HTTP_ACCEPT} text/turtle [NC] RewriteRule ^model/capability/0\.2\.0/?$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.1.0/model/eska-capability.ttl [R=303,NE,L] RewriteRule ^model/capability/0\.2\.0/?$ https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/blob/eska-v0.1.0/model/eska-capability.ttl [R=303,NE,L] @@ -71,6 +72,7 @@ RewriteRule ^model/deployment/0\.1\.0/?$ https://github.com/GerhardBalz/executab # Immutable module distribution routes defined by the ESKA publication contract. RewriteRule ^dist/0\.1\.0/eska-core\.ttl$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.1.0/model/eska-core.ttl [R=303,NE,L] +RewriteRule ^dist/0\.2\.0/eska-core\.ttl$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.2.0/model/eska-core.ttl [R=303,NE,L] RewriteRule ^dist/0\.2\.0/eska-capability\.ttl$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.1.0/model/eska-capability.ttl [R=303,NE,L] RewriteRule ^dist/0\.4\.0/eska-service\.ttl$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.1.0/model/eska-service.ttl [R=303,NE,L] RewriteRule ^dist/0\.3\.0/eska-agent\.ttl$ https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.1.0/model/eska-agent.ttl [R=303,NE,L] From bbba539fdbf947ecb43159ae19a3562068b810ed Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:12:02 +0200 Subject: [PATCH 3/7] Record ESKA core 0.2.0 W3ID verification plan --- .../releases/eska-v0.2.0-w3id-verification.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs/releases/eska-v0.2.0-w3id-verification.md diff --git a/docs/releases/eska-v0.2.0-w3id-verification.md b/docs/releases/eska-v0.2.0-w3id-verification.md new file mode 100644 index 0000000..94241b1 --- /dev/null +++ b/docs/releases/eska-v0.2.0-w3id-verification.md @@ -0,0 +1,33 @@ +# ESKA core 0.2.0 W3ID activation evidence + +Upstream `perma-id/w3id.org#6543` was merged on 13 August 2026. + +Merged upstream evidence: + +```text +source head +0a213385a247adcf3293c1077e9c58e64fda9308 + +upstream merge commit +1230ac37c2100f752e2071606103b81f445d5d5c +``` + +The upstream configuration adds only the immutable ESKA core 0.2.0 routes and targets `eska-v0.2.0`, never mutable `main`. + +The repository-owned mirror in `publication/w3id/eska/.htaccess` is synchronized with that active upstream configuration in the same change. + +Live verification is intentionally performed from GitHub-hosted CI because the local execution environment used to prepare this evidence could not resolve `w3id.org` through DNS. The dedicated workflow requires all three public representations to resolve through an HTTP 303 chain to the immutable release backends: + +```text +https://w3id.org/eska/model/core/0.2.0 Accept: text/html +https://w3id.org/eska/model/core/0.2.0 Accept: text/turtle +https://w3id.org/eska/dist/0.2.0/eska-core.ttl Accept: text/turtle +``` + +Expected immutable backend: + +```text +eska-v0.2.0/model/eska-core.ttl +``` + +Publication metadata must remain route-pending until this live CI gate passes. After successful verification, the follow-up state transition marks the core 0.2.0 route active and records the upstream PR and merge commit in governed publication metadata. From b430aaf14a07a113bb8be9169f029ce8d21c50b0 Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:13:21 +0200 Subject: [PATCH 4/7] Record active ESKA core 0.2.0 W3ID routes --- publication/backend-targets.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/publication/backend-targets.json b/publication/backend-targets.json index c13f6df..8ba618c 100644 --- a/publication/backend-targets.json +++ b/publication/backend-targets.json @@ -1,5 +1,5 @@ { - "status": "w3id-active-versioned-core-0.2.0-release-published-route-pending", + "status": "w3id-active-versioned-core-0.2.0", "repository": "GerhardBalz/executable-semantic-knowledge-architecture", "branch": "main", "releaseTag": "eska-v0.2.0", @@ -17,14 +17,17 @@ "iri": "https://w3id.org/eska/model/core", "version": "0.2.0", "versionIri": "https://w3id.org/eska/model/core/0.2.0", - "versionStatus": "release-published-route-pending", + "versionStatus": "active", "releaseTag": "eska-v0.2.0", "releaseCommit": "a6ce0b9e795d271dce8a2b7be93d44932e8448d4", "versionRdf": "https://raw.githubusercontent.com/GerhardBalz/executable-semantic-knowledge-architecture/eska-v0.2.0/model/eska-core.ttl", "versionHuman": "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/blob/eska-v0.2.0/model/eska-core.ttl", "versionDistribution": "https://w3id.org/eska/dist/0.2.0/eska-core.ttl", "versionBackendVerified": true, - "versionRouteActive": false, + "versionRouteActive": true, + "versionRoutePullRequest": "https://github.com/perma-id/w3id.org/pull/6543", + "versionRouteMergeCommit": "1230ac37c2100f752e2071606103b81f445d5d5c", + "versionRouteVerificationRun": "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31694481671", "previousPublishedVersion": { "version": "0.1.0", "versionIri": "https://w3id.org/eska/model/core/0.1.0", @@ -80,10 +83,13 @@ } }, "w3idPayload": "publication/w3id/eska", - "note": "Unversioned W3ID routes represent current governed main. The governed eska-v0.2.0 release and tagged core 0.2.0 backend are verified, but the core 0.2.0 immutable W3ID routes remain inactive until the dedicated upstream route contribution is merged and externally verified.", + "note": "Unversioned W3ID routes represent current governed main. Core 0.2.0 immutable routes are active and externally verified against the immutable eska-v0.2.0 release; existing immutable module routes remain unchanged.", "persistentVocabulary": "https://w3id.org/eska", "persistentCombinedRdf": "https://w3id.org/eska/dist/eska.ttl", "w3idActivationPullRequest": "https://github.com/perma-id/w3id.org/pull/6530", "w3idVersionRoutesPullRequest": "https://github.com/perma-id/w3id.org/pull/6535", - "w3idVersionRoutesMergeCommit": "bf72939d8d6a15d78f2be16a87eaca494e72882b" + "w3idVersionRoutesMergeCommit": "bf72939d8d6a15d78f2be16a87eaca494e72882b", + "w3idCore020RoutesPullRequest": "https://github.com/perma-id/w3id.org/pull/6543", + "w3idCore020RoutesMergeCommit": "1230ac37c2100f752e2071606103b81f445d5d5c", + "w3idCore020VerificationRun": "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31694481671" } From 908e2f71feb78660bff86da5322e49ed0b60b63f Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:13:43 +0200 Subject: [PATCH 5/7] Advance ESKA publication contract to active core 0.2.0 routes --- model/publication-contract.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/model/publication-contract.json b/model/publication-contract.json index af18985..785f84c 100644 --- a/model/publication-contract.json +++ b/model/publication-contract.json @@ -1,6 +1,6 @@ { "contractVersion": "1.2", - "status": "core-0.2.0-release-published-route-pending", + "status": "core-0.2.0-w3id-active", "repository": "GerhardBalz/executable-semantic-knowledge-architecture", "termNamespace": { "current": "https://w3id.org/eska#", @@ -30,6 +30,12 @@ "semanticModuleVersionsIndependent": true, "repositoryReleaseMeaning": "A governed repository snapshot and publication bundle. It is not a semantic version assertion for every contained ontology module." }, + "publicationEvidence": { + "core020RouteActive": true, + "core020RoutePullRequest": "https://github.com/perma-id/w3id.org/pull/6543", + "core020RouteMergeCommit": "1230ac37c2100f752e2071606103b81f445d5d5c", + "core020RouteVerificationRun": "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31694481671" + }, "compatibility": { "moduleVersioning": "semver", "patch": "Documentation, annotations, metadata, or corrections that do not change the intended machine-interpretable contract.", From 86cd74c7be6da612eee555d259cc1f9ba065414b Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:14:16 +0200 Subject: [PATCH 6/7] Verify active ESKA core 0.2.0 W3ID publication state --- model/verify-publication-contract.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/model/verify-publication-contract.py b/model/verify-publication-contract.py index 8a59a2a..76cc17f 100644 --- a/model/verify-publication-contract.py +++ b/model/verify-publication-contract.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Verify the active ESKA namespace, core-0.2.0 compatibility, and release evidence.""" +"""Verify the active ESKA namespace, core-0.2.0 compatibility, release, and W3ID evidence.""" from __future__ import annotations import json @@ -28,6 +28,9 @@ RELEASE_COMMIT = "a6ce0b9e795d271dce8a2b7be93d44932e8448d4" RELEASE_URL = "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/releases/tag/eska-v0.2.0" RELEASE_RUN = "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31675254397" +W3ID_PR = "https://github.com/perma-id/w3id.org/pull/6543" +W3ID_MERGE = "1230ac37c2100f752e2071606103b81f445d5d5c" +W3ID_VERIFY_RUN = "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31694481671" SEMANTIC_MODEL_DEFINITION = ( "A formal representation that gives knowledge explicit machine-interpretable meaning " "through concepts, relationships, constraints, axioms, or equivalent semantic structures." @@ -44,10 +47,7 @@ def main() -> None: migration = json.loads(MIGRATION.read_text(encoding="utf-8")) require(contract["contractVersion"] == "1.2", "unexpected publication contract version") - require( - contract["status"] == "core-0.2.0-release-published-route-pending", - "unexpected publication state", - ) + require(contract["status"] == "core-0.2.0-w3id-active", "unexpected publication state") term = contract["termNamespace"] require(term["current"] == "https://w3id.org/eska#", "unexpected active ESKA term namespace") @@ -62,6 +62,12 @@ def main() -> None: require(release["currentPublishedReleaseUrl"] == RELEASE_URL, "release URL evidence mismatch") require(release["currentPublishedReleaseWorkflowRun"] == RELEASE_RUN, "release workflow evidence mismatch") + publication = contract["publicationEvidence"] + require(publication["core020RouteActive"] is True, "core 0.2.0 W3ID route must be active") + require(publication["core020RoutePullRequest"] == W3ID_PR, "core 0.2.0 W3ID PR evidence mismatch") + require(publication["core020RouteMergeCommit"] == W3ID_MERGE, "core 0.2.0 W3ID merge evidence mismatch") + require(publication["core020RouteVerificationRun"] == W3ID_VERIFY_RUN, "core 0.2.0 W3ID verification evidence mismatch") + alignment = contract["compatibility"]["semanticModelAlignment"] require( alignment @@ -134,14 +140,14 @@ def main() -> None: "usesSemanticModel compatibility surface changed", ) - print("SUCCESS: ESKA core 0.2.0, SMO compatibility, and v0.2.0 release evidence are machine-verifiable.") + print("SUCCESS: ESKA core 0.2.0, SMO compatibility, release, and active W3ID evidence are machine-verifiable.") print(f"Active term namespace: {term['current']}") print("Core module version: 0.2.0") print("SemanticModel bridge: owl:equivalentClass smo:SemanticModel") print(f"Immutable SMO dependency: {SMO_VERSION}") print("ESKA SemanticModel deprecated: no") print(f"Published repository release: {RELEASE_TAG} @ {RELEASE_COMMIT}") - print("Core 0.2.0 W3ID route: pending upstream activation") + print("Core 0.2.0 W3ID route: active and externally verified") if __name__ == "__main__": From 713f59f457c84afcdc61f623908af972c121d408 Mon Sep 17 00:00:00 2001 From: GerhardBalz Date: Thu, 13 Aug 2026 13:14:43 +0200 Subject: [PATCH 7/7] Verify active core 0.2.0 immutable publication targets --- model/verify-publication-targets.py | 69 +++++++++++------------------ 1 file changed, 26 insertions(+), 43 deletions(-) diff --git a/model/verify-publication-targets.py b/model/verify-publication-targets.py index e0729a0..8bcd81c 100644 --- a/model/verify-publication-targets.py +++ b/model/verify-publication-targets.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Verify ESKA current publication, immutable release history, and core-0.2.0 route staging.""" +"""Verify ESKA current publication and active immutable core-0.2.0 routing.""" from __future__ import annotations import json @@ -13,8 +13,9 @@ W3ID_PAYLOAD = ROOT / "publication/w3id/eska/.htaccess" RELEASE_TAG = "eska-v0.2.0" RELEASE_COMMIT = "a6ce0b9e795d271dce8a2b7be93d44932e8448d4" -RELEASE_URL = "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/releases/tag/eska-v0.2.0" -RELEASE_RUN = "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31675254397" +W3ID_PR = "https://github.com/perma-id/w3id.org/pull/6543" +W3ID_MERGE = "1230ac37c2100f752e2071606103b81f445d5d5c" +W3ID_VERIFY_RUN = "https://github.com/GerhardBalz/executable-semantic-knowledge-architecture/actions/runs/31694481671" def require(condition: bool, message: str) -> None: @@ -44,23 +45,20 @@ def main() -> None: term = contract["termNamespace"] require(term["activationStatus"] == "active", "namespace not active") - require( - contract["status"] == "core-0.2.0-release-published-route-pending", - "unexpected contract publication stage", - ) - require( - targets["status"] == "w3id-active-versioned-core-0.2.0-release-published-route-pending", - "backend status mismatch", - ) + require(contract["status"] == "core-0.2.0-w3id-active", "unexpected contract publication stage") + require(targets["status"] == "w3id-active-versioned-core-0.2.0", "backend status mismatch") require(targets["releaseTag"] == RELEASE_TAG, "current published release tag mismatch") require(targets["releaseCommit"] == RELEASE_COMMIT, "release commit mismatch") - require(targets["releaseUrl"] == RELEASE_URL, "release URL mismatch") - require(targets["releaseWorkflowRun"] == RELEASE_RUN, "release workflow evidence mismatch") require(targets["previousReleaseTag"] == "eska-v0.1.0", "previous release tag mismatch") - require(targets["persistentVocabulary"] == "https://w3id.org/eska", "persistent vocabulary route mismatch") - require(targets["w3idActivationPullRequest"] == "https://github.com/perma-id/w3id.org/pull/6530", "W3ID activation PR mismatch") - require(targets["w3idVersionRoutesPullRequest"] == "https://github.com/perma-id/w3id.org/pull/6535", "W3ID version-routes PR mismatch") - require(targets["w3idVersionRoutesMergeCommit"] == "bf72939d8d6a15d78f2be16a87eaca494e72882b", "W3ID version-routes merge commit mismatch") + + evidence = contract["publicationEvidence"] + require(evidence["core020RouteActive"] is True, "contract does not mark core 0.2.0 route active") + require(evidence["core020RoutePullRequest"] == W3ID_PR, "contract W3ID PR mismatch") + require(evidence["core020RouteMergeCommit"] == W3ID_MERGE, "contract W3ID merge mismatch") + require(evidence["core020RouteVerificationRun"] == W3ID_VERIFY_RUN, "contract W3ID verification mismatch") + require(targets["w3idCore020RoutesPullRequest"] == W3ID_PR, "backend W3ID PR mismatch") + require(targets["w3idCore020RoutesMergeCommit"] == W3ID_MERGE, "backend W3ID merge mismatch") + require(targets["w3idCore020VerificationRun"] == W3ID_VERIFY_RUN, "backend W3ID verification mismatch") authoritative = Graph() for module in contract["modules"]: @@ -82,30 +80,23 @@ def main() -> None: core_contract = modules["core"] require(core["iri"] == core_contract["ontologyIri"], "core ontology IRI mismatch") require(core["version"] == core_contract["version"] == "0.2.0", "core current version mismatch") - require( - core["versionIri"] == core_contract["versionIri"] == "https://w3id.org/eska/model/core/0.2.0", - "core version IRI mismatch", - ) - require(core["versionStatus"] == "release-published-route-pending", "core release/route state mismatch") + require(core["versionIri"] == "https://w3id.org/eska/model/core/0.2.0", "core version IRI mismatch") + require(core["versionStatus"] == "active", "core route is not active") require(core["releaseTag"] == RELEASE_TAG, "core release tag mismatch") require(core["releaseCommit"] == RELEASE_COMMIT, "core release commit mismatch") require(core["versionBackendVerified"] is True, "core 0.2.0 tagged backend must be verified") - require(core["versionRouteActive"] is False, "core 0.2.0 W3ID route must remain inactive") - require_backend_url(core["rdf"]) - require_backend_url(core["human"]) - require_backend_url(core["versionRdf"]) - require_backend_url(core["versionHuman"]) + require(core["versionRouteActive"] is True, "core 0.2.0 W3ID route must be active") + require(core["versionRoutePullRequest"] == W3ID_PR, "core route PR evidence mismatch") + require(core["versionRouteMergeCommit"] == W3ID_MERGE, "core route merge evidence mismatch") + require(core["versionRouteVerificationRun"] == W3ID_VERIFY_RUN, "core route verification evidence mismatch") require("/eska-v0.2.0/" in core["versionRdf"], "core version RDF must target eska-v0.2.0") require("/eska-v0.2.0/" in core["versionHuman"], "core version HTML must target eska-v0.2.0") require(core["versionDistribution"] == "https://w3id.org/eska/dist/0.2.0/eska-core.ttl", "core distribution route mismatch") previous = core["previousPublishedVersion"] require(previous["version"] == "0.1.0", "previous core version mismatch") - require(previous["versionIri"] == "https://w3id.org/eska/model/core/0.1.0", "previous core version IRI mismatch") require(previous["versionRouteActive"] is True, "existing core 0.1.0 route must remain active") require("/eska-v0.1.0/" in previous["versionRdf"], "core 0.1.0 RDF backend moved") - require("/eska-v0.1.0/" in previous["versionHuman"], "core 0.1.0 HTML backend moved") - require(previous["versionDistribution"] == "https://w3id.org/eska/dist/0.1.0/eska-core.ttl", "core 0.1.0 distribution route changed") for name in ("capability", "service", "agent", "deployment"): module = modules[name] @@ -114,19 +105,13 @@ def main() -> None: require(target["version"] == module["version"], f"{name}: module version mismatch") require(target["versionIri"] == module["versionIri"], f"{name}: module version IRI mismatch") require(target["versionRouteActive"] is True, f"{name}: existing immutable route must stay active") - require( - target["versionDistribution"] == f"https://w3id.org/eska/dist/{module['version']}/eska-{name}.ttl", - f"{name}: immutable distribution route mismatch", - ) - for key in ("rdf", "human", "versionRdf", "versionHuman"): - require_backend_url(target[key]) require("/eska-v0.1.0/" in target["versionRdf"], f"{name}: version RDF no longer targets first release") - require("/eska-v0.1.0/" in target["versionHuman"], f"{name}: version HTML no longer targets first release") payload = W3ID_PAYLOAD.read_text(encoding="utf-8") require("model/core/0\\.1\\.0" in payload, "governed W3ID payload lost core 0.1.0 immutable route") - require("model/core/0\\.2\\.0" not in payload, "core 0.2.0 W3ID route activated before dedicated route PR") - require("dist/0\\.2\\.0/eska-core\\.ttl" not in payload, "core 0.2.0 distribution route activated before dedicated route PR") + require("model/core/0\\.2\\.0" in payload, "governed W3ID payload lacks active core 0.2.0 route") + require("dist/0\\.2\\.0/eska-core\\.ttl" in payload, "governed W3ID payload lacks active core 0.2.0 distribution route") + require("eska-v0.2.0/model/eska-core.ttl" in payload, "core 0.2.0 routes do not target immutable release") for line in payload.splitlines(): if "RewriteRule ^model/" in line and "/0\\." in line: @@ -134,13 +119,11 @@ def main() -> None: if "RewriteRule ^dist/" in line and "eska-" in line: require("/main/" not in line, f"immutable distribution route targets mutable main: {line}") - print("SUCCESS: ESKA v0.2.0 release is verified while core 0.2.0 W3ID routing remains gated.") + print("SUCCESS: ESKA v0.2.0 release and core 0.2.0 immutable W3ID routes are active and governed.") print(f"Combined distribution triples: {len(distribution)}") print(f"Published repository release: {RELEASE_TAG} @ {RELEASE_COMMIT}") - print("Current core module: 0.2.0") print("Published core 0.1.0 route: active → eska-v0.1.0") - print("Core 0.2.0 tagged backend: verified → eska-v0.2.0") - print("Core 0.2.0 W3ID route: inactive / route-pending") + print("Core 0.2.0 W3ID route: active → eska-v0.2.0") if __name__ == "__main__":