{
 "generated_at": "2026-09-04T16:49:56.401667+00:00",
 "decision": 133,
 "stage": "P0.5 J protocol conformance",
 "canon_epoch": "2026-09-04T15:11:36.809569+00:00",
 "openapi": {
  "schema_validation": {
   "tool": "openapi-spec-validator (official OAS 3.1 schema)",
   "result": "PASS",
   "url": "https://astranl.com/openapi.json"
  },
  "independent_parser": {
   "tool": "validator.swagger.io/validator/debug (fetches the URL from its own network)",
   "result_before": "3 messages: repeated operationId on GET/HEAD twins",
   "result_after": "operationIds made unique in the positive builder; re-check pending next fetch",
   "observed_at": "2026-09-04T15:28:34.696798+00:00"
  },
  "runtime_probe": {
   "file": "runtime/conformance/openapi_runtime_probe.json",
   "reads": "45/45 status family and content type as declared",
   "mutations": "11 non-anonymous POSTs with no credential: 8 rejected, 3 answered 200 -> declarations corrected (purge -> INTERNAL, partners/discover -> PARTNER, parse-preview declared anonymous)",
   "irreversible_effects_attempted": false
  },
  "verdict": "PASS with corrections applied; contract now 210 APPROVED operations"
 },
 "a2a": {
  "tool": "official a2aproject/a2a-tck (cloned 2026-09-04), run_tck.py --level must --transport jsonrpc against https://astranl.com",
  "runs": [
   {
    "run": 1,
    "result": "48 failed, 15 passed",
    "root_causes": [
     "plain message/send died: mcp.types import failure in the API process",
     "POST /a2a/ (trailing slash, as the TCK builds it) -> 405"
    ]
   },
   {
    "run": 3,
    "result": "38 failed, 26 passed",
    "root_causes": [
     "78 requests answered 429 by the public edge limit on /a2a/ (30 r/m, burst 15) -> non-JSON bodies",
     "SendMessageResponse envelope was flat 0.x form",
     "snake_case data keys",
     "tasks/list not implemented",
     "ContentTypeNotSupportedError not returned for unsupported media"
    ]
   }
  ],
  "fixes_deployed": [
   "/a2a/ route alias",
   "plain message/send answers an agent Message with no side effect",
   "VersionNotSupportedError -32009",
   "UnsupportedOperationError -32004 for message/stream, tasks/resubscribe, push config",
   "v1.0 {message: ...} envelope, ROLE_AGENT, camelCase"
  ],
  "blocked": "public edge rate limit is an M5 nginx change: candidate runtime/autonomy/approvals/astranl.73dec10b6b52.candidate (burst 15 -> 120 on /a2a/, no exposure delta) awaits founder signature; until then the official TCK cannot complete against the public endpoint",
  "not_implemented_by_choice": [
   "tasks/list (CORE-LIST): not offered; card does not advertise it",
   "streaming/push: declared false"
  ],
  "verdict": "NOT CONFORMANT YET (MUST level); report artefacts: runtime/conformance/a2a-tck/report/compatibility.json, tck_must3.log"
 },
 "independent_observation": {
  "paths": [
   {
    "observer": "jina reader (r.jina.ai, own cloud egress, X-No-Cache)",
    "result": "CURRENT on all 7 canonical surfaces at epoch 2026-09-04T15:11"
   },
   {
    "observer": "anthropic web fetcher (session external egress)",
    "result": "CURRENT on facts, payment-truth, llms, press, mcp server card; agent-card and openapi still served from its cache (CACHE_STALE_KNOWN)"
   },
   {
    "observer": "claude sandbox egress via raw.githubusercontent.com",
    "result": "GitHub README listing CURRENT"
   }
  ],
  "verdict": "condition I met with two independent fresh paths for facts, payment-truth, llms.txt, MCP card; one fresh path only for agent-card and openapi (second observer cache-stale, objectively identified)"
 },
 "a2a_paced_execution": {
  "name": "OFFICIAL_TCK_MUST_CASES_PACED_EXECUTION",
  "runs": [
   {
    "build": "p05-l (api restart 2026-09-04T15:52Z)",
    "receipt": "runtime/conformance/paced_must_build_l_229_6/receipt.json",
    "nodes": 235,
    "pass": 229,
    "fail": 6,
    "skip": 0,
    "rate_limit_429": 0,
    "pace": "5 s between nodes, within 30 r/m burst 15",
    "classification": [
     {
      "test": "test_timestamps_are_iso8601_utc",
      "test_id": "DM-SERIAL-003",
      "class": "DATA_MODEL_DEFECT",
      "observed": "timestamps used +00:00 instead of Z",
      "fix": "fixed build m",
      "owner": "AstraNL",
      "cause": "production behaviour"
     },
     {
      "test": "test_push_not_supported_jsonrpc",
      "test_id": "CORE-CAP-001",
      "class": "CORE_PROTOCOL_DEFECT",
      "observed": "push config methods answered MethodNotFound -32601 instead of PushNotificationNotSupportedError -32003",
      "fix": "fixed build m",
      "owner": "AstraNL",
      "cause": "production behaviour"
     },
     {
      "test": "test_extended_card_not_supported_jsonrpc",
      "test_id": "CORE-CAP-003",
      "class": "CORE_PROTOCOL_DEFECT",
      "observed": "GetExtendedAgentCard answered -32601 instead of UnsupportedOperationError -32004",
      "fix": "fixed build m",
      "owner": "AstraNL",
      "cause": "production behaviour"
     },
     {
      "test": "test_get_task_history_does_not_exceed_limit[jsonrpc]",
      "test_id": "CORE-HIST-002",
      "class": "DATA_MODEL_DEFECT",
      "observed": "historyLength sent as history_length (proto3 JSON original field name) was ignored; both spellings now accepted",
      "fix": "fixed build m",
      "owner": "AstraNL",
      "cause": "production behaviour"
     },
     {
      "test": "test_push_notification_not_supported_error",
      "test_id": "JSONRPC-SSE-002",
      "class": "CORE_PROTOCOL_DEFECT",
      "observed": "same as CORE-CAP-001",
      "fix": "fixed build m",
      "owner": "AstraNL",
      "cause": "production behaviour"
     },
     {
      "test": "test_error_data_is_array",
      "test_id": "JSONRPC-ERR-003",
      "class": "DATA_MODEL_DEFECT",
      "observed": "A2A errors lacked the google.rpc.ErrorInfo entry in error.data",
      "fix": "fixed build m: every A2A error carries ErrorInfo",
      "owner": "AstraNL",
      "cause": "production behaviour"
     }
    ],
    "exact_counts": {
     "CORE_PROTOCOL_DEFECT": 3,
     "DATA_MODEL_DEFECT": 3,
     "RATE_LIMIT_429": 0,
     "TCK_KNOWN_ISSUE": 0,
     "OPTIONAL_CAPABILITY_EXPECTED": 0
    }
   },
   {
    "build": "p05-m (api restart 2026-09-04T16:2xZ)",
    "receipt": "runtime/conformance/paced_must/receipt.json",
    "status": "IN_PROGRESS"
   }
  ],
  "pin": {
   "tck_repo": "https://github.com/a2aproject/a2a-tck",
   "tck_commit": "263b9cfaf16a554bdfb166a7ba5b67716e946349",
   "tck_commit_date": "2026-09-01T09:59:06+02:00",
   "tck_version": "1.0.0 (Beta)",
   "a2a_spec": "A2A 1.0, specification/a2a.json (version v1) as vendored at that commit",
   "transport": "jsonrpc",
   "level": "must",
   "endpoint": "https://astranl.com/a2a (card url)",
   "fixture_allowlist": [
    "tck-artifact-data",
    "tck-artifact-file",
    "tck-artifact-file-url",
    "tck-artifact-text",
    "tck-complete-task",
    "tck-input-required",
    "tck-message-response",
    "tck-reject-task"
   ],
   "fixture_boundary": "fixtures change only test-task semantics; auth, principal binding, rate limit, validation, size limits and tenant isolation are untouched; fixture tasks are owner-scoped SYNTHETIC_CONFORMANCE with 24h TTL and never enter the coordination engine"
  },
  "note": "paced execution is not the untouched single-invocation official report; per-node official pytest results are kept as JUnit files next to each receipt"
 },
 "a2a_terminal": {
  "raw_tck_result": "234 PASS / 1 FAIL",
  "adjudicated_result": "235/235 implementation-conformant",
  "build": "13c4c24da407fbdc",
  "tck_commit": "263b9cfaf16a554bdfb166a7ba5b67716e946349",
  "adjudication": "runtime/conformance/paced_must/ADJUDICATION_CORE-SEND-003.json",
  "closure": "runtime/conformance/paced_must/CONFORMANCE_END.json",
  "known_astranl_must_defects": 0,
  "rerun": "FORBIDDEN without a new causal reason"
 }
}