yannabadie/oida-code

Diagnostic evidence for AI-authored Python diffs. Produces JSON / Markdown / SARIF artifacts to help reviewers inspect whether claims are supported, contradicted, or still missing evidence. Not a merge or production-readiness decision. Phase 4.5 (ADR-30): reusable composite action only. NO GitHub App, NO custom Checks API annotations, NO external LLM provider by default. Reports stay diagnostic only; ADR-22 keeps `total_v_net` / `debt_final` / `corrupt_success` null in production.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
repo-pathPath to the repo to audit, relative to the workflow's `github.workspace`. Default `"."` audits the checkout root. no.
base-refGit revision to diff against (e.g. `origin/main`).noorigin/main
intent-fileOptional path to a Markdown file describing the change's intent (used as the `IntentSpec.summary` source). Operator- supplied content is treated as untrusted data — never fed to the deterministic verifier as instructions. no""
output-dirWhere artifact JSON / Markdown / SARIF land.no.oida
upload-sarif"true" → upload `${output-dir}/report.sarif` via `github/codeql-action/upload-sarif`. The action's caller MUST grant `security-events: write` to the JOB that runs this with `upload-sarif: true` (NOT the whole workflow). When "false", no SARIF upload happens and `security-events` is not needed. nofalse
fail-on`none` (default) | `any_critical` | `corrupt`. Mirrors the `--fail-on` flag on `oida-code audit`. This is a legacy deterministic-audit control, not an official OIDA `corrupt_success` field and not a merge-readiness verdict. The action exits non-zero when the chosen condition holds. nonone
surface`impact` (default) or `changed` — passed to `oida-code normalize --surface`. noimpact
enable-shadowRESERVED / NOT YET WIRED (Phase 4.5.2-E, QA/A22.md). The input is accepted for forward-compatibility but currently ignored by the action body. A future release (tracked under Phase 4.6+) will, when this is `"true"`, run `oida-code score-trace` with `--experimental-shadow-fusion`. The shadow report would be non-authoritative by ADR-22 / ADR-23. nofalse
enable-tool-gatewayEXPERIMENTAL OPT-IN (Phase 5.6, QA/A33.md, ADR-41). When `"true"`, the action additionally runs the gateway-grounded verifier (`oida-code verify-grounded`) against the bundle under `gateway-bundle-dir`. Default stays `"false"` — the gateway path is NOT the default audit path. The opt-in path is replay-only by construction: no MCP, no JSON-RPC, no provider tool-calling, no write or network tools, no official `total_v_net` / `debt_final` / `corrupt_success`. The action refuses to run the gateway path on `pull_request` / `pull_request_target` events (anti-RCE guard — pytest can execute repo code, so the gateway MUST NOT touch unverified PR contributions). nofalse
gateway-bundle-dirPhase 5.6 (ADR-41): directory holding the eight required gateway-bundle files (`packet.json`, `pass1_forward.json`, `pass1_backward.json`, `pass2_forward.json`, `pass2_backward.json`, `tool_policy.json`, `gateway_definitions.json`, `approved_tools.json`). The bundle MUST be inside `$GITHUB_WORKSPACE` and pass `oida-code validate-gateway-bundle` (rejects path traversal, secret-shaped filenames, provider/MCP config). Required when `enable-tool-gateway: "true"`. no""
gateway-output-dirPhase 5.6 (ADR-41): where gateway artifacts (grounded report JSON, audit log dir, Markdown summary, action outputs file) land. Default: `.oida/gateway-grounded`. no.oida/gateway-grounded
gateway-fail-on-contractPhase 5.6 (ADR-41): when `"true"`, exit non-zero if a contract violation is detected (official-field leak count > 0, bundle validation rejected, PR-context guard tripped). Findings/blockers from the gateway run are diagnostic only and NEVER trigger a fail-on-contract exit. Default `"false"` keeps the gateway path diagnostic-only. nofalse
llm-providerPhase 4.4.1 / 4.5: provider for the optional `llm_estimator` family of the calibration dataset. Default `replay` (per-case fixture). `openai-compatible` opts in to a real external provider — requires `provider-profile` + the appropriate `api_key_env` to be set as a GitHub Actions secret AND fed to the action via `env:`. The action itself will refuse to run an external provider on a `pull_request` event from a fork (anti-secret-exfil guard). noreplay
provider-profilePhase 4.4.1 / 4.5: provider-profile name when `llm-provider=openai-compatible` (deepseek / kimi / minimax / custom_openai_compatible). no""
api-key-envPhase 4.4.1 / 4.5: env var name carrying the API key. The action NEVER reads or stores the key value; it just passes the env var name to `oida-code calibration-eval --api-key-env`. no""
max-provider-casesPhase 4.4.1 / 4.5: cap on llm_estimator cases routed to a non-replay provider. 0 = no cap. Useful as a cost ceiling on external runs. no0
namedescription
report-jsonPath to the JSON audit report.
report-markdownPath to the Markdown audit report.
report-sarifPath to the SARIF audit report.
calibration-metricsPath to the calibration metrics JSON.
diagnostic-markdownPhase 4.9-A (ADR-34): path to the polished diagnostic Markdown report (banner + status card + provider matrix + redacted-IO links + "what this does NOT prove" section). Diagnostic-only by ADR-22.
diagnostic-statusPhase 4.9-D (ADR-34): one of `blocked` / `contract_failed` / `contract_clean` / `diagnostic_only`. No other value is producible — the CLI's emitter is statically constrained to a four-value Literal type. See ADR-34 for the rationale on why merge-readiness / production-readiness / verification labels are NOT emitted by this action.
official-field-leaksPhase 4.9-D (ADR-34): integer count of detected official-field leaks. ADR-22 hard wall — any value > 0 means the runtime gate fired and the action exits non-zero.
artifact-manifestPhase 4.9-F (ADR-34): path to the artifact bundle manifest (`<output-dir>/artifacts/manifest.json`). The manifest pins `mode=diagnostic_only` and `official_fields_emitted=false` via the Pydantic Literal schema — drift is unrepresentable. Each listed artifact carries a SHA256 hash for tamper detection.
gateway-report-jsonPhase 5.6 (ADR-41): path to the gateway-grounded verifier JSON report when `enable-tool-gateway: "true"`. Empty string when the gateway path is disabled.
gateway-summary-mdPhase 5.6 (ADR-41): path to the diagnostic-only Markdown summary rendered by `oida-code render-gateway-summary`. Empty string when the gateway path is disabled.
gateway-audit-log-dirPhase 5.6 (ADR-41): path to the per-day per-tool gateway audit log directory. Empty string when the gateway path is disabled.
gateway-statusPhase 5.6 (ADR-41): one of `disabled` / `diagnostic_only` / `contract_clean` / `contract_failed` / `blocked`. The five-value enum is structurally pinned via a Python `Literal[...]` in `oida_code.action_gateway.status`; product verdicts (`merge_safe` / `verified` / `production_safe` / `bug_free`) are unrepresentable.
gateway-official-field-leak-countPhase 5.6 (ADR-41): integer count of forbidden product-verdict / official-field tokens detected in the grounded report. ADR-22 hard wall — any value > 0 means the runtime gate fired.