Generate a GitHub Actions workflow
From the initialized application repository:firedrill init once first.
For coding agents and CI, keep the trigger explicit. With one valid saved recipe:
init if more than one exists or it lives outside the
current directory and firedrill/. Multiple candidates return exact paths rather
than guessing. Add the application’s real --install-command when dependencies
need preparing. GitHub is the default provider and the installed CLI version is
pinned automatically. JSON, --non-interactive and CI never prompt.
The generated file is .github/workflows/firedrill.yml. Generation writes files only: it does not contact GitHub, create secrets, invoke the target, or run a simulation. Existing differing workflow files are not overwritten. The receipt includes a repeatable noninteractive command with the resolved selections.
The recipe and native runner script must be regular checked-in files in this repository. Avoid absolute local working directories in command targets.
The generator can pin the exact installed CLI version automatically. An explicit --cli-version or --cli-archive remains available when you deliberately select another reviewed client.
Add the GitHub App report
Install the Firedrill CI App. GitHub asks which account and repositories to authorize. After selecting the repository, use the terminal wizard:--trigger pull_request --branch YOUR_BRANCH --github-app and an
exact recipe path when needed.
The first verified workflow report connects that repository and workflow to the selected Firedrill project and environment. You do not need to connect the repository in the portal. The workflow needs id-token: write to prove its GitHub identity; it does not receive the App’s private key or a repository-write token.
Firedrill publishes a check and updates one PR comment with simulation counts, pass/fail or inconclusive status, execution problems and an authenticated detailed-report link. If a runner creates several batches, their results are combined so a passing batch cannot hide an earlier failure. The check stays in progress until the workflow and required assessments finish.
The generated App-enabled workflow requires successful report delivery. An unavailable App or missing installation is reported as a reporting problem, not an agent failure, and does not rerun the simulation. For reporting recovery from the same authorized workflow job:
Select when it runs
Repeat--trigger for each desired event:
A scheduled example:
Protect the credential
Create a GitHub environment namedfiredrill-ci with required reviewers and appropriate deployment-branch restrictions. Review the exact code that will run before approval releases secrets. A same-repository branch is not inherently trusted.
An authorized human issuer can create a project/environment-scoped machine credential. For a tool-free command/HTTP simulation, the typical capabilities are read, runs:write, and runs:execute:
token value—not the entire JSON document—as environment secret FIREDRILL_TOKEN. Do not commit either private file. Use a distinct saved key for a deliberately new issuance and the same unchanged key/input to recover uncertainty.
Give the credential only additional capabilities actually required by the recipe’s Tools or actions. Machine credentials cannot issue other credentials. Your application’s model/provider credentials are separate secrets; supply them only to the approved execution step, never to recipe files or install steps.
What the workflow does
The generated workflow:- Checks out the selected revision with read-only repository permissions and no persisted Git credential.
- Installs a pinned CLI version using Node.js 24.
- Optionally installs application dependencies without the Firedrill token.
- Waits for the protected
firedrill-cienvironment before the job can use its secrets. - Runs the command/HTTP recipe on the GitHub runner with
--origin ci --non-interactive. - Writes a compact job summary with retained counts, a separate gate, and an authenticated report link.
- Runs an always-executed reporting step that reads retained results and enforces their exit policy, including native SDK scripts that otherwise exit successfully.
pull_request_target execution. Read pull-request CI before enabling repository PR code with credentials.
Native SDK runners
For a callback or explicitly isolated target, select the checked-in script that already calls the SDK:- TypeScript
- Python
FIREDRILL_RECIPE_FILE or the same pinned recipe and bind the actual callback. The SDK saves private batch-reference receipts before target execution; the final reporting step retrieves those batches and enforces their retained policy, even if the script exits zero. Missing receipts do not become a green result. A failed script remains a failed workflow.
The generator supplies FIREDRILL_SUBMISSION_ORIGIN=ci. Native clients inherit that declaration unless explicitly overridden. Use the TypeScript or Python recovery semantics; do not blindly start another simulation after uncertainty.
Understand CI results
A recipe may be observation-only, assessed, gated, or both assessed and gated. A configured gate isallow, block, or inconclusive; no gate is not_configured. Execution completion is not a quality verdict. Missing assessment is not zero, and an evaluator outage is not agent failure.
The CLI exits nonzero for a blocking/inconclusive gate, failed execution, incomplete work, or an infrastructure error. In other CI systems, native runners can use the SDK’s simulationExitCode(result) in TypeScript or simulation_exit_code(result) in Python. See exit codes.
Ordinal rubric thresholds use gate.minimumLevels. Fractional evaluator-score thresholds use gate.minimumScores; the two are not silently converted. For example, with an authored rubric dimension named answer_quality:
--origin ci records declared submission provenance; it is not proof of target source or workflow execution. GitHub metadata and the report link help locate the actual CI job. Summary-write failure is separate from execution and gate state.
Open CI runs in the portal to inspect runs in the selected project and environment, filter by repository or workflow, and follow the original PR and Actions links. Actual verified repository connections appear there when available; source metadata alone does not create a connected repository.
Other CI systems
Install the CLI and your application dependencies, select the project/environment, injectFIREDRILL_TOKEN through protected secrets, and run:
follow for observation; do not run the target again to retrieve an existing report.