{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://genesiscodelang.dev/spec/SELFHOST_OBLIGATION_AUTHORITY_v0.1.schema.json",
  "title": "GenesisCode self-host obligation authority profile v0.1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "artifact",
    "auditDate",
    "binding",
    "contentIdentitySha256",
    "hostFacts",
    "independentVerifier",
    "kind",
    "migratedObligations",
    "nonclaims",
    "productionEntrypoints",
    "residualObligations",
    "resultKind",
    "runtimeEvidence",
    "schema",
    "sourceModules",
    "sourceSetSha256",
    "spec",
    "version"
  ],
  "properties": {
    "artifact": {"const": "selfhost/toolchain.gc"},
    "auditDate": {"type": "string", "format": "date"},
    "binding": {"const": "core/cli::obligation-authority"},
    "contentIdentitySha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "hostFacts": {
      "const": ["actual-value-hash", "canonical-module-forms", "coverage-decision-count", "coverage-decision-sample", "coverage-export-hit-count", "coverage-missing-effect-log-test", "coverage-per-test-instrumentation", "coverage-statement-site-hit-count", "coverage-test-count", "effect-entry-count", "effect-log-artifact", "effect-log-byte-count", "effect-log-entry-await-edge", "effect-log-entry-operation", "effect-log-entry-position", "effect-log-entry-schedule-step", "effect-log-entry-task-id", "effect-program-status", "expected-value-hash", "gfx-api-configured-export-symbol", "gfx-api-configured-surface-hash", "gfx-api-definition-expression-hash", "gfx-api-export-symbol", "gfx-configured-status", "gfx-entry-body-callable-status", "gfx-entry-field-value", "gfx-entry-identity", "gfx-entry-shape", "gfx-execution-result", "gfx-frame-budget-limits", "gfx-renderer-result", "gfx-suite-state", "module-path", "observed-effect-operation", "optimizer-original-evaluation-error", "optimizer-original-module-hash", "optimizer-original-value-hash", "optimizer-stat-counter", "optimizer-transformed-evaluation-error", "optimizer-transformed-module-hash", "optimizer-transformed-value-hash", "optimized-test-value-hash", "property-body-callable-status", "property-cases-value", "property-entry-shape", "property-execution-result", "property-suite-state", "preflight-caps-policy-load-error", "preflight-dependency-hash-error", "preflight-module-computed-hash", "preflight-module-load-error", "preflight-module-path", "preflight-module-pinned-hash", "replay-value-hash", "sealed-error-status", "stage2-mechanism-error", "stage2-module-hash", "stage2-original-value-hash", "stage2-result-equality", "stage2-status", "stage2-value-kind", "stage2-wasm-byte-count", "stage2-wasm-hash", "stage2-wasm-value-hash", "step-count", "test-identity"]
    },
    "independentVerifier": {"const": "scripts/lib/selfhost_obligation_authority.py"},
    "kind": {"const": "genesis/selfhost-obligation-authority-v0.1"},
    "migratedObligations": {"const": ["core/obligation::ai-style", "core/obligation::budgets", "core/obligation::capabilities-declared", "core/obligation::concurrency-replay", "core/obligation::coverage", "core/obligation::coverage-decision", "core/obligation::coverage-mcdc", "core/obligation::determinism", "core/obligation::gfx-api-stability", "core/obligation::gfx-frame-budgets", "core/obligation::gfx-golden-images", "core/obligation::lint", "core/obligation::preflight", "core/obligation::property-tests", "core/obligation::replayable-tests", "core/obligation::stage1-validation", "core/obligation::translation-validation", "core/obligation::typecheck", "core/obligation::typecheck-strict", "core/obligation::unit-tests"]},
    "nonclaims": {"type": "array", "minItems": 7, "uniqueItems": true, "items": {"type": "string"}},
    "productionEntrypoints": {"const": ["genesis", "genesis_wasi"]},
    "residualObligations": {"const": []},
    "resultKind": {"const": "genesis/obligation-authority-result-v0.2"},
    "runtimeEvidence": {
      "type": "object",
      "additionalProperties": false,
      "required": ["allocationLimit", "stepLimit", "timeoutSeconds"],
      "properties": {
        "allocationLimit": {"const": 10000000},
        "stepLimit": {"const": 5000000},
        "timeoutSeconds": {"const": 60}
      }
    },
    "schema": {"const": "docs/spec/SELFHOST_OBLIGATION_AUTHORITY_v0.1.schema.json"},
    "sourceModules": {"const": ["selfhost/obligation_authority_core_v1.gc", "selfhost/obligation_authority_typecheck_v1.gc", "selfhost/obligation_authority_determinism_v1.gc", "selfhost/obligation_authority_lint_v1.gc", "selfhost/obligation_authority_ai_style_v1.gc", "selfhost/obligation_authority_preflight_v1.gc", "selfhost/obligation_authority_replay_v1.gc", "selfhost/obligation_authority_property_v1.gc", "selfhost/obligation_authority_stage_v1.gc", "selfhost/obligation_authority_coverage_v1.gc", "selfhost/obligation_authority_translation_v1.gc", "selfhost/obligation_authority_gfx_api_v1.gc", "selfhost/obligation_authority_gfx_runtime_v1.gc", "selfhost/obligation_authority_gfx_runtime_finalize_v1.gc", "selfhost/obligation_authority_v1.gc"]},
    "sourceSetSha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "spec": {"const": "docs/spec/SELFHOST_OBLIGATION_AUTHORITY_v0.1.md"},
    "version": {"const": "0.1.0"}
  }
}
