> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tuneplane.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Run Evidence

> The run's evidence as a downloadable, integrity-checked document; every export is audited.



## OpenAPI

````yaml /api-reference/openapi.json get /api/governance/runs/{execution_id}/evidence
openapi: 3.1.0
info:
  title: TunePlane Console
  description: >-
    The TunePlane control plane. Everything the `tuneplane` CLI and the web
    console do goes through this API, and so can your own tooling.


    Authenticate with a bearer token from `POST /api/auth/login` or a CLI device
    flow; see the Authentication page for how to get one and how long it lasts.
  version: 0.3.54
servers:
  - url: https://{host}
    description: Your TunePlane deployment
    variables:
      host:
        default: tuneplane.your-company.com
        description: >-
          The domain your administrator gave you, without a scheme or trailing
          slash.
security: []
tags:
  - name: auth
    description: >-
      Log in, exchange a CLI device code, and inspect the current identity.
      Everything else on this API needs a bearer token from here.
  - name: profile
    description: >-
      The signed-in user's own account: quota, tokens, preferences, and
      notification settings.
  - name: projects
    description: >-
      Projects group runs the way `tuneplane.yaml` names them. A run belongs to
      exactly one.
  - name: experiments
    description: >-
      Read the experiment definitions the console found in the configured
      repository.
  - name: submit
    description: >-
      Admit a JobSpec. This is what `tp submit` calls: the catalog handshake,
      quota check, and preflight all happen here, and a rejection names the gate
      that refused it.
  - name: jobs
    description: >-
      Everything about a job after it is admitted: status, logs, metrics,
      samples, artifacts, and the pause/resume/stop controls.
  - name: runs
    description: >-
      Finished work, addressed by run id. A run outlives the job that produced
      it.
  - name: ingest
    description: >-
      The endpoints training code reports to. `tuneplane.report` speaks this;
      you only call it directly when writing an adapter for a framework the
      catalog does not cover.
  - name: datasets
    description: >-
      Versioned dataset upload, listing, and metadata. Protected datasets expose
      identity and schema here but never their records.
  - name: volumes
    description: Governed directories of files a job may mount read-only.
  - name: environments
    description: >-
      Agent RL environments: their manifests, versions, and upload URLs. A
      taskset is never returned.
  - name: benchmarks
    description: >-
      The benchmark catalog, the score matrix across runs, and externally scored
      evaluations.
  - name: rubrics
    description: >-
      Written scoring standards, their revisions, and which runs cited which
      version.
  - name: judge
    description: >-
      The LLM-judge endpoint a training job calls to score a rollout.
      OpenAI-compatible.
  - name: models
    description: >-
      The model registry: register a version, promote it, archive it, read its
      card.
  - name: model-deployments
    description: >-
      Managed model versions serving application traffic: revisions, promotion,
      rollback, suspension, and deployment tokens.
  - name: inference
    description: >-
      OpenAI-compatible inference against a promoted deployment revision. This
      is the endpoint applications call.
  - name: playground
    description: >-
      Short-lived serving sessions for human evaluation. Distinct from a
      deployment: a session expires, a deployment does not.
  - name: reflow
    description: >-
      The governed path from a deployment's production traffic back to the
      training data of its next version.
  - name: annotate
    description: 'Preference annotation: pull a batch, push judgements, read progress.'
  - name: plugins
    description: Installed plugins and the extension shelf the console renders.
  - name: diagnosis
    description: >-
      Automated analysis of a finished or failed run, and the accumulated
      project memory it draws on.
  - name: approvals
    description: 'Approval requests: an escalation path, one level deep, with a record.'
  - name: billing
    description: >-
      What the GPU-hours cost. One price on top of the hours the usage page
      already shows.
  - name: teams
    description: 'Teams: the unit capacity is budgeted to. A department, not a tenant.'
  - name: agent
    description: >-
      Submit plans: a proposed submission a human approves or rejects before it
      becomes a job.
  - name: share
    description: >-
      Public, revocable read-only links to a job or a comparison. The
      `/api/share/{token}` routes need no bearer token, which is the point.
  - name: notifications
    description: The signed-in user's notification feed.
  - name: search
    description: Cross-surface search over jobs, runs, datasets, and models.
  - name: sandbox
    description: >-
      Execute model-generated code in a throwaway container with no GPU and no
      network.
  - name: uploads
    description: >-
      Resumable upload sessions used by dataset, environment, and plugin
      publishing.
  - name: integrations-hf
    description: Hugging Face account linking and repository push.
  - name: mcp
    description: Model Context Protocol access information and per-user tool settings.
  - name: mcp-oauth
    description: >-
      OAuth metadata, authorization, token exchange, and dynamic client
      registration for MCP clients.
  - name: cluster
    description: Live capacity and node state across the fleets.
  - name: fleets
    description: >-
      Registered execution backends and the machines in them. Reading is open to
      every user; creating a fleet, minting a join token and draining a node are
      admin-only. Joining is authorized by the join token alone.
  - name: admin
    description: >-
      User, role, quota, hardware, schedule, integration, and settings
      administration. Admin role required.
  - name: tasks
    description: >-
      Scheduled platform maintenance tasks: what they are, when they last ran,
      and running one now.
  - name: report
    description: The rendered daily report page.
  - name: health
    description: Liveness and version. Unauthenticated.
paths:
  /api/governance/runs/{execution_id}/evidence:
    get:
      tags:
        - governance-runs
      summary: Run Evidence
      description: >-
        The run's evidence as a downloadable, integrity-checked document; every
        export is audited.
      operationId: run_evidence_api_governance_runs__execution_id__evidence_get
      parameters:
        - name: execution_id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-9a-f]{32}$
            title: Execution Id
        - name: project
          in: query
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 256
            title: Project
        - name: purpose
          in: query
          required: true
          schema:
            type: string
            enum:
              - sft
              - preference
              - evaluation
              - custom
            title: Purpose
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GovernanceEvidenceExportOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    GovernanceEvidenceExportOut:
      properties:
        format:
          type: string
          const: tuneplane.governance.evidence/v1
          title: Format
        exported_at:
          type: string
          title: Exported At
        exported_by:
          type: string
          title: Exported By
        console_version:
          type: string
          title: Console Version
        run:
          $ref: '#/components/schemas/GovernanceEvidenceRunOut'
        evidence:
          anyOf:
            - $ref: '#/components/schemas/TextEvidence'
            - $ref: '#/components/schemas/EmbeddedTextEvidence'
          title: Evidence
        policy:
          anyOf:
            - $ref: '#/components/schemas/GovernanceEvidencePolicyOut'
            - type: 'null'
        decision:
          anyOf:
            - $ref: '#/components/schemas/GovernanceDecision'
            - type: 'null'
        reasons:
          items:
            $ref: '#/components/schemas/GovernanceReasonOut'
          type: array
          title: Reasons
        integrity:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Integrity
      additionalProperties: false
      type: object
      required:
        - format
        - exported_at
        - exported_by
        - console_version
        - run
        - evidence
        - policy
        - decision
        - reasons
        - integrity
      title: GovernanceEvidenceExportOut
      description: >-
        One run's accepted evidence as a file: digests, policy, decision and an
        integrity hash.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    GovernanceEvidenceRunOut:
      properties:
        execution_id:
          type: string
          pattern: ^[0-9a-f]{32}$
          title: Execution Id
        project_key:
          type: string
          title: Project Key
        purpose:
          type: string
          title: Purpose
        state:
          type: string
          title: State
        plan_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Plan Digest
        reduction_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Reduction Digest
        report_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Report Digest
        bundle_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Bundle Digest
        runtime_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Runtime Digest
      additionalProperties: false
      type: object
      required:
        - execution_id
        - project_key
        - purpose
        - state
        - plan_digest
        - reduction_digest
        - report_digest
        - bundle_digest
        - runtime_digest
      title: GovernanceEvidenceRunOut
    TextEvidence:
      properties:
        schema_version:
          type: integer
          const: 1
          title: Schema Version
          default: 1
        project_key:
          type: string
          maxLength: 256
          minLength: 1
          title: Project Key
        plan_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Plan Digest
        reduction_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Reduction Digest
        runtime_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Runtime Digest
        source:
          $ref: '#/components/schemas/ScopedSourceManifest'
        report:
          $ref: '#/components/schemas/ScopedGovernanceReport'
      additionalProperties: false
      type: object
      required:
        - project_key
        - plan_digest
        - reduction_digest
        - runtime_digest
        - source
        - report
      title: TextEvidence
    EmbeddedTextEvidence:
      properties:
        schema_version:
          type: integer
          const: 2
          title: Schema Version
          default: 2
        project_key:
          type: string
          maxLength: 256
          minLength: 1
          title: Project Key
        plan_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Plan Digest
        reduction_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Reduction Digest
        runtime_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Runtime Digest
        source:
          $ref: '#/components/schemas/ScopedSourceManifest'
        report:
          $ref: '#/components/schemas/ScopedGovernanceReport'
        embedded_image_assets:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Embedded Image Assets
      additionalProperties: false
      type: object
      required:
        - project_key
        - plan_digest
        - reduction_digest
        - runtime_digest
        - source
        - report
        - embedded_image_assets
      title: EmbeddedTextEvidence
      description: >-
        V2 keeps physical object coverage separate from images embedded in
        records.
    GovernanceEvidencePolicyOut:
      properties:
        requirement:
          $ref: '#/components/schemas/PolicyRequirement'
        mode:
          type: string
          title: Mode
        generation:
          type: integer
          title: Generation
      additionalProperties: false
      type: object
      required:
        - requirement
        - mode
        - generation
      title: GovernanceEvidencePolicyOut
    GovernanceDecision:
      properties:
        schema_version:
          type: integer
          const: 1
          title: Schema Version
          default: 1
        eligibility:
          type: string
          enum:
            - eligible
            - review_required
            - blocked
            - inconclusive
          title: Eligibility
        freshness:
          type: string
          enum:
            - current
            - stale
            - revoked
            - unknown
          title: Freshness
        policy_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Policy Digest
        project_key:
          type: string
          maxLength: 256
          minLength: 1
          title: Project Key
        purpose:
          type: string
          enum:
            - sft
            - preference
            - evaluation
            - custom
          title: Purpose
        operation:
          type: string
          enum:
            - submit
            - dispatch
            - publish
          title: Operation
        manifest_digest:
          anyOf:
            - type: string
              pattern: ^[0-9a-f]{64}$
            - type: 'null'
          title: Manifest Digest
        report_id:
          anyOf:
            - type: string
              maxLength: 256
              minLength: 1
            - type: 'null'
          title: Report Id
        reasons:
          items:
            $ref: '#/components/schemas/DecisionReason'
          type: array
          title: Reasons
      additionalProperties: false
      type: object
      required:
        - eligibility
        - freshness
        - policy_digest
        - project_key
        - purpose
        - operation
        - manifest_digest
        - report_id
        - reasons
      title: GovernanceDecision
    GovernanceReasonOut:
      properties:
        code:
          type: string
          title: Code
        text:
          type: string
          title: Text
      additionalProperties: false
      type: object
      required:
        - code
        - text
      title: GovernanceReasonOut
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    ScopedSourceManifest:
      properties:
        schema_version:
          type: integer
          const: 2
          title: Schema Version
          default: 2
        source_kind:
          type: string
          enum:
            - dataset
            - volume_snapshot
          title: Source Kind
        source_id:
          type: string
          maxLength: 256
          minLength: 1
          title: Source Id
        revision:
          type: string
          maxLength: 256
          minLength: 1
          title: Revision
        manifest_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Manifest Digest
        mapping_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Mapping Digest
        objects:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Objects
        records:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Records
        text_values:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Text Values
        image_assets:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Image Assets
        audio_assets:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Audio Assets
          default: 0
        video_assets:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Video Assets
          default: 0
        text_scopes:
          items:
            $ref: '#/components/schemas/TextScopeCount'
          type: array
          maxItems: 1024
          title: Text Scopes
      additionalProperties: false
      type: object
      required:
        - source_kind
        - source_id
        - revision
        - manifest_digest
        - mapping_digest
        - objects
        - records
        - text_values
        - image_assets
        - text_scopes
      title: ScopedSourceManifest
    ScopedGovernanceReport:
      properties:
        schema_version:
          type: integer
          const: 2
          title: Schema Version
          default: 2
        report_id:
          type: string
          maxLength: 256
          minLength: 1
          title: Report Id
        purpose:
          type: string
          enum:
            - sft
            - preference
            - evaluation
            - custom
          title: Purpose
        manifest_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Manifest Digest
        mapping_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Mapping Digest
        bundle_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Bundle Digest
        execution:
          type: string
          enum:
            - pending
            - running
            - succeeded
            - failed
            - cancelled
          title: Execution
        started_at:
          type: string
          format: date-time
          title: Started At
        completed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Completed At
        objects_read:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Objects Read
        records_seen:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Records Seen
        records_scanned:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Records Scanned
        records_quarantined:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Records Quarantined
          default: 0
        bytes_fetched:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Bytes Fetched
          default: 0
        bytes_decoded:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Bytes Decoded
          default: 0
        checks:
          items:
            $ref: '#/components/schemas/CheckCoverage'
          type: array
          maxItems: 1024
          title: Checks
        findings:
          items:
            $ref: '#/components/schemas/FindingCount'
          type: array
          maxItems: 5120
          title: Findings
          default: []
        uncovered_text_values:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Uncovered Text Values
        records_duplicate:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Records Duplicate
          default: 0
      additionalProperties: false
      type: object
      required:
        - report_id
        - purpose
        - manifest_digest
        - mapping_digest
        - bundle_digest
        - execution
        - started_at
        - objects_read
        - records_seen
        - records_scanned
        - checks
        - uncovered_text_values
      title: ScopedGovernanceReport
    PolicyRequirement:
      properties:
        schema_version:
          type: integer
          const: 1
          title: Schema Version
          default: 1
        policy_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Policy Digest
        project_key:
          type: string
          maxLength: 256
          minLength: 1
          title: Project Key
        purpose:
          type: string
          enum:
            - sft
            - preference
            - evaluation
            - custom
          title: Purpose
        bundle_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Bundle Digest
        checks:
          items:
            $ref: '#/components/schemas/CheckRequirement'
          type: array
          maxItems: 1024
          minItems: 1
          title: Checks
        block_severity:
          type: string
          enum:
            - critical
            - high
            - medium
            - low
            - info
          title: Block Severity
          default: high
        review_severity:
          anyOf:
            - type: string
              enum:
                - critical
                - high
                - medium
                - low
                - info
            - type: 'null'
          title: Review Severity
          default: medium
        max_age_seconds:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Max Age Seconds
      additionalProperties: false
      type: object
      required:
        - policy_digest
        - project_key
        - purpose
        - bundle_digest
        - checks
      title: PolicyRequirement
      description: The effective immutable policy, after scope and entitlement resolution.
    DecisionReason:
      properties:
        code:
          type: string
          maxLength: 256
          minLength: 1
          title: Code
        check_id:
          anyOf:
            - type: string
              maxLength: 256
              minLength: 1
            - type: 'null'
          title: Check Id
        modality:
          anyOf:
            - type: string
              enum:
                - record
                - text
                - image
                - audio
                - video
            - type: 'null'
          title: Modality
      additionalProperties: false
      type: object
      required:
        - code
      title: DecisionReason
    TextScopeCount:
      properties:
        fields:
          items:
            type: string
            maxLength: 512
            minLength: 1
          type: array
          maxItems: 256
          minItems: 1
          title: Fields
        text_values:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Text Values
      additionalProperties: false
      type: object
      required:
        - fields
        - text_values
      title: TextScopeCount
      description: The union of concrete text views selected by these frozen field scopes.
    CheckCoverage:
      properties:
        check_id:
          type: string
          maxLength: 256
          minLength: 1
          title: Check Id
        modality:
          type: string
          enum:
            - record
            - text
            - image
            - audio
            - video
          title: Modality
        unit:
          type: string
          enum:
            - objects
            - records
            - text_values
            - image_assets
            - audio_assets
            - video_assets
          title: Unit
        dependency_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Dependency Digest
        state:
          type: string
          enum:
            - complete
            - sampled
            - partial
            - unsupported
            - failed
            - not_applicable
          title: State
        planned:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Planned
        completed:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Completed
        failed:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Failed
          default: 0
        skipped:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Skipped
          default: 0
        quarantined:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Quarantined
          default: 0
        unknown:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Unknown
          default: 0
        fields:
          items:
            type: string
            maxLength: 512
            minLength: 1
          type: array
          maxItems: 256
          title: Fields
          default: []
        models:
          items:
            $ref: '#/components/schemas/ModelIdentity'
          type: array
          maxItems: 32
          title: Models
          default: []
        limits_reached:
          items:
            type: string
            maxLength: 256
            minLength: 1
          type: array
          maxItems: 32
          title: Limits Reached
          default: []
        not_applicable_reason:
          anyOf:
            - type: string
              const: no_units_in_manifest
            - type: 'null'
          title: Not Applicable Reason
      additionalProperties: false
      type: object
      required:
        - check_id
        - modality
        - unit
        - dependency_digest
        - state
        - planned
        - completed
      title: CheckCoverage
    FindingCount:
      properties:
        check_id:
          type: string
          maxLength: 256
          minLength: 1
          title: Check Id
        severity:
          type: string
          enum:
            - critical
            - high
            - medium
            - low
            - info
          title: Severity
        count:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          title: Count
      additionalProperties: false
      type: object
      required:
        - check_id
        - severity
        - count
      title: FindingCount
    CheckRequirement:
      properties:
        check_id:
          type: string
          maxLength: 256
          minLength: 1
          title: Check Id
        modality:
          type: string
          enum:
            - record
            - text
            - image
            - audio
            - video
          title: Modality
        unit:
          type: string
          enum:
            - objects
            - records
            - text_values
            - image_assets
            - audio_assets
            - video_assets
          title: Unit
        dependency_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Dependency Digest
        fields:
          items:
            type: string
            maxLength: 512
            minLength: 1
          type: array
          maxItems: 256
          title: Fields
          default: []
        models:
          items:
            $ref: '#/components/schemas/ModelIdentity'
          type: array
          maxItems: 32
          title: Models
          default: []
      additionalProperties: false
      type: object
      required:
        - check_id
        - modality
        - unit
        - dependency_digest
      title: CheckRequirement
    ModelIdentity:
      properties:
        name:
          type: string
          maxLength: 256
          minLength: 1
          title: Name
        weights_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Weights Digest
        runtime_digest:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Runtime Digest
      additionalProperties: false
      type: object
      required:
        - name
        - weights_digest
        - runtime_digest
      title: ModelIdentity
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````