Execution
Detect artifact. Accept: diff, file path, brief text, or HEAD~1..HEAD.
If none provided, ask once: What should I audit? (diff, file, or paste text)
Detect auditors. Roster covers six independent training lineages:
codex (openai family) -- OpenAI CLI
gemini (google family) -- Gemini CLI
claude (anthropic family) -- Claude Code (fresh session)
deepseek (oss / cn lineage) -- DeepSeek API
qwen (oss / cn lineage) -- Qwen Code CLI
kimi (oss / cn lineage) -- Moonshot Kimi
opencode, aider, copilot (additional oss / openai-family auditors)
Default selection: diversity strategy picks one openai-family + one
google-family + caller, excluding the caller's own family. Reachability =
CLI on PATH OR API key in env. The Donahoe Trident principle says: at least
three lenses, three lineages.
Override roster with --with. Pass --with <id>[,<id>] to pin the
exact auditors fired. Self-audit is rejected (same-lineage = single source).
Example: cross-audit --with codex,gemini,deepseek <target>.
Dispatch in parallel. Every lens runs concurrently; the orchestrator
short-circuits stragglers once minResponses productive results land. Per-
provider timeouts (codex 120s, gemini 90s, default 90s) plus
IJFW_AUDIT_TIMEOUT_SEC override.
Reconcile. Lexical-signature clustering (issue + location):
- CONSENSUS -- flagged by ≥2 lenses (
consensus: true, consensusCount, consensusLenses)
- CONTESTED / single-lens -- flagged by exactly 1 lens
- PASS -- no findings
Output ranks CONSENSUS findings first, then single-lens findings, each
ordered by canonical severity (critical → low).
Emit report using the report format rule below.
Budget controls
IJFW_AUDIT_BUDGET_USD (default $2.00) -- per-session aggregate cap.
Post-flight accumulation; first call is always allowed, subsequent calls are
rejected when accumulated + estimate > budget. Raise to continue.
IJFW_AUDIT_BUDGET_USD_PER_LENS -- granular cap on a single lens's spend
across one convergence cycle. Useful for "spend at most $0.50 per gemini
call" guardrails on long-running converge loops.
IJFW_AUDIT_TIMEOUT_SEC -- per-auditor budget (clamped to [1, 3600]).
IJFW_AUDIT_CONCURRENCY -- parallel-fire cap (default 3).
Report format rule (all cross-audit outputs)
Any reconciliation report presenting multiple paths MUST use this structure:
VERDICT
<one-line converged recommendation>
OPTIONS
A -- <short-name>: <one-line what it is>
B -- <short-name>: <one-line what it is>
REVIEWER CONVERGENCE
<reviewer>: <letter> <score> "<their call>" => Option <letter> -- <name>
RECOMMENDATION
Option <X> -- <name> because <one-sentence why>.
NEXT ACTION
<exact command or step>
Never write "Option A" or "Option B" without "-- name" immediately after it on the same line.
Severity / disposition vocabulary
Two axes, never mixed:
- Finding severity (sortable, per-item):
critical | high | medium | low.
- Audit disposition (status of the whole audit):
PASS | CONDITIONAL | WARN | FLAG | FAIL.
The merger coerces stray disposition values (warn, flag, etc.) on a per-
finding severity field into the canonical severity scale (warn→medium,
flag→high, fail→critical) so nothing sinks to the unranked bottom.
Output contract
Emit a gate-result block as the LAST content of your output. Nothing
after it. Use gate="cross-audit". Statuses: PASS | CONDITIONAL | WARN | FLAG | FAIL.
Format:
{
"schema_version": "1.0",
"gate": "cross-audit",
"status": "<STATUS>",
"project_type": "<from project-type-detector>",
"lenses": [],
"affected_artifacts": [],
"accounting": {"duration_ms": 0, "lenses_invoked": 0, "cost_usd": null},
"remediation": [],
"receipts_ref": null,
"supersedes": null,
"gate_id": "<gate-with-colons-replaced-by-dashes>-<ts>-<rand4>",
"emitted_at": "<ISO-8601>"
}
1---2name: ijfw-cross-audit-23description: Generate a cross-platform multi-model audit (Trident) on a diff, brief, or artifact. Trigger: 'cross audit', 'Trident', 'second opinion', 'check with other models', 'check with other AIs', 'cross-check this', 'get another perspective', /cross-audit4---56## Execution781. **Detect artifact.** Accept: diff, file path, brief text, or `HEAD~1..HEAD`.9 If none provided, ask once: `What should I audit? (diff, file, or paste text)`10112. **Detect auditors.** Roster covers six independent training lineages:12 - `codex` (openai family) -- OpenAI CLI13 - `gemini` (google family) -- Gemini CLI14 - `claude` (anthropic family) -- Claude Code (fresh session)15 - `deepseek` (oss / cn lineage) -- DeepSeek API16 - `qwen` (oss / cn lineage) -- Qwen Code CLI17 - `kimi` (oss / cn lineage) -- Moonshot Kimi18 - `opencode`, `aider`, `copilot` (additional oss / openai-family auditors)1920 Default selection: diversity strategy picks one openai-family + one21 google-family + caller, excluding the caller's own family. Reachability =22 CLI on PATH OR API key in env. The Donahoe Trident principle says: at least23 three lenses, three lineages.24253. **Override roster with `--with`.** Pass `--with <id>[,<id>]` to pin the26 exact auditors fired. Self-audit is rejected (same-lineage = single source).27 Example: `cross-audit --with codex,gemini,deepseek <target>`.28294. **Dispatch in parallel.** Every lens runs concurrently; the orchestrator30 short-circuits stragglers once `minResponses` productive results land. Per-31 provider timeouts (codex 120s, gemini 90s, default 90s) plus32 `IJFW_AUDIT_TIMEOUT_SEC` override.33345. **Reconcile.** Lexical-signature clustering (issue + location):35 - **CONSENSUS** -- flagged by ≥2 lenses (`consensus: true`, `consensusCount`, `consensusLenses`)36 - **CONTESTED / single-lens** -- flagged by exactly 1 lens37 - **PASS** -- no findings38 Output ranks CONSENSUS findings first, then single-lens findings, each39 ordered by canonical severity (critical → low).40416. **Emit report** using the report format rule below.4243## Budget controls4445- `IJFW_AUDIT_BUDGET_USD` (default `$2.00`) -- per-session aggregate cap.46 Post-flight accumulation; first call is always allowed, subsequent calls are47 rejected when `accumulated + estimate > budget`. Raise to continue.48- `IJFW_AUDIT_BUDGET_USD_PER_LENS` -- granular cap on a single lens's spend49 across one convergence cycle. Useful for "spend at most $0.50 per gemini50 call" guardrails on long-running converge loops.51- `IJFW_AUDIT_TIMEOUT_SEC` -- per-auditor budget (clamped to [1, 3600]).52- `IJFW_AUDIT_CONCURRENCY` -- parallel-fire cap (default 3).5354## Report format rule (all cross-audit outputs)5556Any reconciliation report presenting multiple paths MUST use this structure:5758```59VERDICT60 <one-line converged recommendation>6162OPTIONS63 A -- <short-name>: <one-line what it is>64 B -- <short-name>: <one-line what it is>6566REVIEWER CONVERGENCE67 <reviewer>: <letter> <score> "<their call>" => Option <letter> -- <name>6869RECOMMENDATION70 Option <X> -- <name> because <one-sentence why>.7172NEXT ACTION73 <exact command or step>74```7576Never write "Option A" or "Option B" without "-- name" immediately after it on the same line.7778## Severity / disposition vocabulary7980Two axes, never mixed:8182- **Finding severity** (sortable, per-item): `critical | high | medium | low`.83- **Audit disposition** (status of the whole audit): `PASS | CONDITIONAL | WARN | FLAG | FAIL`.8485The merger coerces stray disposition values (`warn`, `flag`, etc.) on a per-86finding `severity` field into the canonical severity scale (`warn→medium`,87`flag→high`, `fail→critical`) so nothing sinks to the unranked bottom.8889## Output contract9091Emit a `gate-result` block as the **LAST** content of your output. Nothing92after it. Use `gate="cross-audit"`. Statuses: `PASS | CONDITIONAL | WARN | FLAG | FAIL`.9394Format:9596```gate-result97{98 "schema_version": "1.0",99 "gate": "cross-audit",100 "status": "<STATUS>",101 "project_type": "<from project-type-detector>",102 "lenses": [],103 "affected_artifacts": [],104 "accounting": {"duration_ms": 0, "lenses_invoked": 0, "cost_usd": null},105 "remediation": [],106 "receipts_ref": null,107 "supersedes": null,108 "gate_id": "<gate-with-colons-replaced-by-dashes>-<ts>-<rand4>",109 "emitted_at": "<ISO-8601>"110}111```