Cross-company Workflow Runner v0
Cross-company workflow runner v0
Last verified: 2026-05-25
What it is
~/system/tools/cross-company-workflow.js is a deterministic wrapper around Mission Control and Company Mesh.
Use it when a task needs a bounded multi-company loop such as:
- CodeCraft builds or reviews an implementation plan.
- Securion reviews security/privacy risk.
- Proveo validates acceptance or QA evidence.
It is not a replacement for Mission Control ownership, Mehanik/Prompt-Forge gates, or Proveo verification. It only makes the cross-company handoff repeatable and evidence-producing.
Source files
- Runner:
~/system/tools/cross-company-workflow.js - Deterministic smoke workflow:
~/system/workflows/company-mesh-tool-smoke.json - Strong-model workflow smoke:
~/system/workflows/company-mesh-strong-review-smoke.json - Smoke test wrapper:
~/system/tools/tests/cross-company-workflow-smoke.sh - Evidence output default:
/tmp/alai/cross-company-workflows/
Commands
Validate a workflow:
node ~/system/tools/cross-company-workflow.js validate ~/system/workflows/company-mesh-tool-smoke.json --json
Run a workflow:
node ~/system/tools/cross-company-workflow.js run ~/system/workflows/company-mesh-tool-smoke.json --json
Inspect state:
node ~/system/tools/cross-company-workflow.js status /tmp/alai/cross-company-workflows/<state>.json --json
Finalize MC tasks after a PASS workflow:
node ~/system/tools/cross-company-workflow.js finalize /tmp/alai/cross-company-workflows/<state>.json \
--bookstack https://docs.alai.no/link/184 \
--json
For static plumbing-only responder runs, finalization is intentionally blocked unless explicitly marked:
node ~/system/tools/cross-company-workflow.js finalize /tmp/alai/cross-company-workflows/<state>.json \
--bookstack https://docs.alai.no/link/184 \
--allow-plumbing-finalize \
--json
Workflow JSON shape
Minimum example:
{
"name": "example-review-loop",
"description": "Bounded build/security/QA review loop.",
"priority": "M",
"actor": "john",
"responderMode": "gemini-review",
"steps": [
{
"id": "codecraft",
"company": "CodeCraft",
"title": "CodeCraft review",
"purpose": "Review implementation approach.",
"prompt": "Review the pasted evidence. Return PASS/PARTIAL/BLOCKED first.",
"endState": "ANSWERED"
},
{
"id": "securion",
"company": "Securion",
"title": "Security review",
"purpose": "Review security/privacy risks.",
"dependsOn": ["codecraft"],
"prompt": "Review security implications of the pasted evidence.",
"endState": "ANSWERED"
}
]
}
Required per step:
idcompanyoragentpurposepromptorpromptFile
Optional per step:
dependsOntitlepriorityendState(PASS,PARTIAL,BLOCKED,ANSWERED,DECLINED)responderMode(answer,blocked,decline,agent-runner,gemini-review)ttlSeconds,maxTurns,costCapUsd,timeoutSeconds
Safety defaults
The runner is intentionally conservative:
- Uses JSON workflows only.
- Uses
spawnSyncargv arrays, not shell interpolation. promptFilemust remain under the workflow file directory.- MC child tasks use
route=generalso pi-orchestrator does not compete with the workflow. - Responder execution is explicit per run/step; no daemon is started.
- State records the workflow SHA-256 and refuses status/finalize if the workflow file changed.
- Finalize refuses non-PASS workflows.
- Finalize refuses static responder evidence unless
--allow-plumbing-finalizeis provided.
Responder modes
| Mode | Meaning | Use |
|---|---|---|
answer |
Static deterministic response | Plumbing-only smoke tests |
blocked |
Static blocked response | Negative-path plumbing tests |
decline |
Static decline response | Policy/eligibility tests |
agent-runner |
Local persona via agent-runner.js |
Cheap local advisory, subject to claim gate |
gemini-review |
Cloud strong-model advisory via Gemini CLI | Bounded strong review; keep prompts evidence-based and cost-limited |
Claim-gate override
--claim-gate-off passes COMPANY_MESH_CLAIM_GATE=off to responder execution. Treat this as a break-glass/debug option only.
Use it only when all are true:
- the workflow is plumbing-only or local debugging;
- no production, deploy, legal, financial, security, or customer-facing completion claim will be made from the output;
- the final evidence explicitly says claim gate was disabled;
- MC finalization is either skipped or marked as plumbing-only.
Do not use --claim-gate-off to make blocked agent-runner responses look valid. If claim gate blocks a response, prefer adding concrete evidence paths/pasted evidence or returning PARTIAL/BLOCKED honestly.
Evidence model
A run writes:
- state JSON (
0600) containing parent task, child tasks, message ids, responses, and end states. - markdown evidence summary next to the state JSON.
- responder evidence JSON under the chosen evidence directory.
Evidence should be treated precisely:
- Company Mesh delivery proves delivery only.
- Static
answerproves plumbing only. agent-runner/gemini-reviewoutput is advisory unless it cites concrete evidence paths or pasted evidence.- Mission Control
donestill requires normal validator/verdict gates.
Known gotchas
mc.js readyrequires task statusin_progressorready_for_review, validation notes, and--bookstack <url>.- Claim gate can block
agent-runneroutputs if the response makes factual completion claims without evidence paths. gemini-reviewuses the localgeminiCLI and may fail if credentials/model access are unavailable.- Public demo/product workflows must still obey product guardrails: no destructive public mutation, no fake deploy/integration claims.
Current verified status
Completed evidence exists for the initial Company Mesh workflow runner smoke:
/tmp/alai/company-mesh-handoff-20260523/mc-101896-cross-company-workflow-final-pass.md/tmp/alai/company-mesh-p2p-six-artifacts-consolidated-20260525T0210Z.md
The next maturity step is a bounded non-smoke workflow using gemini-review or agent-runner against a real evidence artifact, with cost capped and no production mutation.