{
  "schema": 1,
  "required_workflow": ".gitea/workflows/ci.yml",
  "release_workflow": ".gitea/workflows/release.yml",
  "hard_timeout_minutes": 15,
  "internal_target_seconds": 720,
  "required_checks": [
    "format",
    "deterministic-generation",
    "api-semver",
    "workspace-tests",
    "compatibility-parity",
    "minimal-features",
    "jpeg2000",
    "rust-j2k",
    "skia-binary",
    "program-offline-smoke",
    "clippy",
    "documentation",
    "dependency-policy",
    "provenance-policy",
    "performance-evidence",
    "concurrency-regressions"
  ],
  "legacy_workflows": [
    {
      "workflow": "api-surface.yml",
      "responsibility": "Generated API mappings, SemVer baseline and audit, downstream consumer compilation, and focused lint",
      "destination": "required",
      "checks": ["deterministic-generation", "api-semver", "clippy"],
      "rationale": "Public API drift must block every code-ready change."
    },
    {
      "workflow": "artifact-audit.yml",
      "responsibility": "Source packages, release binaries, native linkage, and artifact/provenance inspection",
      "destination": "release",
      "checks": ["release-packaging", "native-artifact-audit"],
      "rationale": "Full packaging is expensive; routine provenance policy and package metadata validation remain required."
    },
    {
      "workflow": "codegen.yml",
      "responsibility": "Deterministic generation, generated wire/catalog tests, API fixture, and clean generator artifact",
      "destination": "required",
      "checks": ["format", "deterministic-generation", "workspace-tests", "compatibility-parity"],
      "rationale": "Generated-source and translated compatibility drift must fail before compilation proceeds."
    },
    {
      "workflow": "concurrency-audit.yml",
      "responsibility": "Focused race regressions and bounded resource soak",
      "destination": "split",
      "checks": ["concurrency-regressions", "long-resource-soak"],
      "rationale": "Focused regressions remain required; the 16-cycle resource soak runs in the non-routine release gate."
    },
    {
      "workflow": "documentation.yml",
      "responsibility": "Documentation audit, warning-free docs, doctests, examples, and documented program tests",
      "destination": "required",
      "checks": ["documentation", "program-offline-smoke"],
      "rationale": "Documentation and documented offline behavior are part of the public release surface."
    },
    {
      "workflow": "imaging-meshing.yml",
      "responsibility": "Imaging and meshing tests, parity cases, benchmark compilation, lint, and docs",
      "destination": "split",
      "checks": ["workspace-tests", "compatibility-parity", "clippy", "documentation", "benchmark-compilation"],
      "rationale": "Tests, parity, lint, and docs remain required; redundant benchmark compilation moves to the release gate."
    },
    {
      "workflow": "jpeg2000.yml",
      "responsibility": "Independent OpenJPEG and pure-Rust JPEG 2000 feature builds, tests, and interoperability",
      "destination": "required",
      "checks": ["jpeg2000", "rust-j2k"],
      "rationale": "The optional native codec is tested with exact OpenJPEG 2.5.4 and the pure-Rust codec is tested independently and together with it."
    },
    {
      "workflow": "performance.yml",
      "responsibility": "Pinned C# comparison harness and committed performance evidence audit",
      "destination": "split",
      "checks": ["performance-evidence", "performance-regeneration"],
      "rationale": "Committed evidence validation remains required; C# checkout and evidence regeneration are manual release work."
    },
    {
      "workflow": "release-candidate.yml",
      "responsibility": "Aggregate release-readiness gate and evidence",
      "destination": "release",
      "checks": ["release-candidate-audit"],
      "rationale": "The aggregate release decision is non-routine and no longer recompiles the required gate."
    },
    {
      "workflow": "release-matrix.yml",
      "responsibility": "MSRV, default, minimal, features, release profiles, and portable cross-target checks",
      "destination": "split",
      "checks": ["minimal-features", "jpeg2000", "rust-j2k", "skia-binary", "msrv", "portable-cross-targets", "release-profile"],
      "rationale": "Fast feature isolation remains required; clean MSRV, cross-target, and release-profile builds run non-routinely."
    },
    {
      "workflow": "rust-workspace.yml",
      "responsibility": "Milestone checks, workspace compilation, program smoke, audio feature, extension lint, and docs",
      "destination": "required",
      "checks": ["workspace-tests", "compatibility-parity", "program-offline-smoke", "clippy", "documentation"],
      "rationale": "One all-feature test graph replaces overlapping compile and test invocations."
    },
    {
      "workflow": "skia.yml",
      "responsibility": "Default and Skia feature tests plus package listing",
      "destination": "required",
      "checks": ["skia-binary", "workspace-tests"],
      "rationale": "The required gate proves the exact ARM64 GNU archive is installed and forbids source compilation."
    },
    {
      "workflow": "supply-chain.yml",
      "responsibility": "Dependency graph, advisory, license, source, provenance, duplicate, and unused-dependency audits",
      "destination": "required",
      "checks": ["dependency-policy", "provenance-policy"],
      "rationale": "Pinned prebuilt audit tools and cached advisory data keep policy enforcement in the routine gate."
    }
  ]
}
