Manifest fields¶
A manifest is the input for one release gate run. YAML and JSON are supported by the runtime. Keep one manifest focused on one release question.
Main fields¶
| Field | Required | Meaning |
|---|---|---|
release_id |
Yes | Stable name for this run. |
baseline_agent or baseline block |
Yes | Version that already works. |
candidate_agent or candidate block |
Yes | Version under review. |
dataset |
Yes | Approved source and expected identity. |
changed_context |
Yes | DataHub or prompt context that changed. |
requested_by |
Yes | Person or service that requested the check. |
replay_cases |
Yes | The behavior checks to execute. |
oracle |
Yes | Independent expected-result calculation. |
agent |
Optional | External SQL proposal service. |
Safe agent block¶
An agent block names a local transport. It does not contain a provider key.
agent:
required: true
baseline:
transport: datahub_analytics_agent
endpoint: http://127.0.0.1:8100
engine_name: themis_nyc_taxi
timeout_seconds: 120
candidate:
transport: datahub_analytics_agent
endpoint: http://127.0.0.1:8100
engine_name: themis_nyc_taxi
timeout_seconds: 120
The provider process owns its credential. Themis validates the returned SQL, recomputes the digest, executes the read-only query, and compares the result with the oracle.
SQL safety¶
Agent SQL must be read-only. The boundary rejects writes, multiple statements, unsafe functions, and malformed artifacts. Do not weaken this check to make a scenario pass.
Example release question¶
release_id: example-release
changed_context: urn:li:dataset:(urn:li:dataPlatform:duckdb,nyc_taxi,PROD)
requested_by: operator@example.invalid
replay_cases:
- row_count
- total_fare
oracle:
type: deterministic_sql
The exact fields vary by project version. Use the checked-in manifests as the source of truth for the current schema.