szl-forge-lab / forge_runtime_contract.py
betterwithage's picture
feat(contracts): add typed Forge runtime probes (#8)
651cbf7
Raw
History Blame Contribute Delete
10.1 kB
"""Typed, read-only HTTP compatibility contracts for the managed Forge Space.
The Gradio event API remains the product API. These routes are deliberately
small operational contracts for probes that require ordinary HTTP GET JSON.
They do not claim GitHub/Hugging Face byte parity or a reproducible build.
"""
from __future__ import annotations
import json
import os
import re
import threading
import time
import urllib.request
from collections.abc import Callable
from datetime import datetime, timezone
from typing import Any
from fastapi.responses import JSONResponse
SPACE_ID = "SZLHOLDINGS/szl-forge-lab"
SOURCE_REPOSITORY = "szl-holdings/szl-forge"
SOURCE_COMMIT = "43e0aedb176fbc8868557e56e30501d8de24578e"
SOURCE_PATH = ""
ALIGNMENT_STATE = "PENDING_GITHUB_SYNC"
_SHA = re.compile(r"^[0-9a-f]{40}$")
_CACHE_LOCK = threading.Lock()
_CACHE: dict[str, Any] = {"stored_at": 0.0, "measurement": None}
def _now_iso() -> str:
return datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
def _valid_sha(value: object) -> str | None:
candidate = str(value or "").strip().lower()
return candidate if _SHA.fullmatch(candidate) else None
def measure_hf_repository_head(force: bool = False) -> dict[str, Any]:
"""Measure Hub repository-head evidence without calling it process identity."""
now = time.monotonic()
with _CACHE_LOCK:
cached = _CACHE.get("measurement")
if not force and cached and now - float(_CACHE["stored_at"]) < 60:
return dict(cached)
space_id = os.environ.get("SPACE_ID") or SPACE_ID
observed_at = _now_iso()
resolver = f"https://huggingface.co/api/spaces/{space_id}?expand[]=sha&expand[]=lastModified"
revision = None
last_modified = None
error = None
request = urllib.request.Request(
resolver,
headers={"Accept": "application/json", "User-Agent": "szl-forge-runtime-contract/1.0"},
)
try:
with urllib.request.urlopen(request, timeout=4) as response:
payload = json.load(response)
revision = _valid_sha(payload.get("sha"))
last_modified = payload.get("lastModified")
except Exception as exc: # Network evidence is optional and reported honestly.
error = type(exc).__name__
measurement: dict[str, Any] = {
"hf_revision": revision,
"revision_state": "MEASURED_REPOSITORY_HEAD" if revision else "UNAVAILABLE",
"running_process_revision_state": "NOT_EXPOSED_IN_PROCESS",
"measurement_method": "HUGGINGFACE_HUB_API" if revision else "UNAVAILABLE",
"resolver": resolver,
"observed_at": observed_at,
"provider_last_modified": last_modified,
}
if error:
measurement["measurement_error"] = error
with _CACHE_LOCK:
_CACHE.update(stored_at=time.monotonic(), measurement=dict(measurement))
return measurement
def build_source_attestation(force: bool = False) -> tuple[dict[str, Any], int]:
measurement = measure_hf_repository_head(force=force)
revision = measurement["hf_revision"]
if revision is None:
return (
{
"schema": "szl.deployment-source-unavailable/v1",
"observed_at": measurement["observed_at"],
"transport_state": "REACHABLE",
"evidence_state": "UNAVAILABLE",
"authority_state": "READ_ONLY",
"deployment": {"hf_space": SPACE_ID, **measurement},
"limits": [
"Repository-head evidence was unavailable, so no deployment-source document was fabricated.",
"Retry this GET with ?refresh=1 after Hub API reachability recovers.",
],
},
503,
)
built_at = measurement.get("provider_last_modified") or measurement["observed_at"]
return (
{
"schema": "szl.deployment-source/v1",
"source": {
"repository": SOURCE_REPOSITORY,
"commit": SOURCE_COMMIT,
"path": SOURCE_PATH,
},
"deployment": {"hf_space": SPACE_ID, "hf_revision": revision},
"built_at": built_at,
"alignment_state": ALIGNMENT_STATE,
"extensions": {
"schema": "szl.forge.deployment-source-extension/v1",
"deployment_revision_evidence": measurement,
"source_observation": {
"state": "VERIFIED_REFERENCE",
"relation": "showcase-derived-from-source",
"immutable_evidence": (
"https://api.github.com/repos/szl-holdings/szl-forge/commits/"
+ SOURCE_COMMIT
),
},
"build_metadata": {
"built_at_semantics": (
"Provider-reported lastModified for deployment.hf_revision; "
"not a verified process start time or reproducible-build attestation."
)
},
"claims": {
"github_parity": "NOT_CLAIMED",
"reproducible_build": "NOT_CLAIMED",
"build_provenance": "NOT_CLAIMED",
},
},
"limits": [
"PENDING_GITHUB_SYNC means GitHub/Hugging Face content parity is not claimed.",
"deployment.hf_revision is repository-head evidence, not exact serving-process identity.",
"source.commit is a verified immutable reference, not proof of deployed byte equivalence.",
"This unsigned document does not establish SLSA provenance or binary reproducibility.",
],
},
200,
)
def build_health(status_provider: Callable[[], dict[str, Any]]) -> dict[str, Any]:
observed_at = _now_iso()
try:
packaged_status = status_provider()
packaged_contract = "PASS"
evidence_state = str(packaged_status.get("evidence_state", "UNKNOWN"))
except Exception as exc:
packaged_contract = "FAIL"
evidence_state = "UNAVAILABLE"
packaged_status = {"error": type(exc).__name__}
return {
"schema": "szl.forge.health/v1",
"observed_at": observed_at,
"status": "OK" if packaged_contract == "PASS" else "DEGRADED",
"transport_state": "REACHABLE",
"evidence_state": evidence_state,
"authority_state": "READ_ONLY",
"checks": {
"packaged_status_contract": packaged_contract,
"external_dependencies": "NOT_REQUIRED_FOR_TRANSPORT_HEALTH",
"model_quality": "NOT_MEASURED",
"source_parity": ALIGNMENT_STATE,
},
"limits": [
"HTTP health proves this process can answer a bounded read-only contract only.",
"It does not prove training quality, freshness, source parity, or promotion approval.",
],
"packaged_status_schema": packaged_status.get("schema"),
}
def build_runtime_status(
status_provider: Callable[[], dict[str, Any]], force: bool = False
) -> dict[str, Any]:
packaged = status_provider()
measurement = measure_hf_repository_head(force=force)
return {
"schema": "szl.forge.runtime-status/v1",
"observed_at": _now_iso(),
"transport_state": "REACHABLE",
"evidence_state": packaged.get("evidence_state", "UNKNOWN"),
"authority_state": "READ_ONLY",
"interface_mode": packaged.get("interface_mode", "READ_ONLY"),
"deployment": {"hf_space": SPACE_ID, **measurement},
"source": {
"repository": SOURCE_REPOSITORY,
"commit": SOURCE_COMMIT,
"alignment_state": ALIGNMENT_STATE,
"github_parity": "NOT_CLAIMED",
},
"application": packaged,
"limits": [
"Runtime reachability, repository-head evidence, training state, and model quality are independent.",
"The nested application object is packaged snapshot evidence, not a live benchmark.",
],
}
def _json_response(payload: dict[str, Any], status_code: int = 200) -> JSONResponse:
return JSONResponse(
payload,
status_code=status_code,
headers={
"Cache-Control": "no-store",
"X-SZL-Transport-State": str(payload.get("transport_state", "REACHABLE")),
"X-SZL-Evidence-State": str(payload.get("evidence_state", "SNAPSHOT")),
"X-SZL-Authority-State": str(payload.get("authority_state", "READ_ONLY")),
},
)
def register_contract_routes(
app: Any, status_provider: Callable[[], dict[str, Any]]
) -> dict[str, Any]:
"""Add exact GET routes ahead of Gradio's fallback after launch."""
async def source_attestation(refresh: int = 0): # noqa: ANN202
payload, status_code = build_source_attestation(force=refresh == 1)
return _json_response(payload, status_code=status_code)
async def health(): # noqa: ANN202
return _json_response(build_health(status_provider))
async def runtime_status(refresh: int = 0): # noqa: ANN202
return _json_response(build_runtime_status(status_provider, force=refresh == 1))
contracts = (
("/.well-known/szl-source.json", source_attestation),
("/healthz", health),
("/api/status", runtime_status),
)
existing_paths = {getattr(route, "path", None) for route in app.router.routes}
collisions = [path for path, _ in contracts if path in existing_paths]
if collisions:
raise RuntimeError(f"Refusing to shadow existing routes: {collisions}")
before = list(app.router.routes)
for path, endpoint in contracts:
app.add_api_route(path, endpoint, methods=["GET"], include_in_schema=True)
added = list(app.router.routes[len(before) :])
app.router.routes[:] = added + before
app.openapi_schema = None
return {
"ok": True,
"routes": [path for path, _ in contracts],
"position": "BEFORE_GRADIO_FALLBACK",
}