Begin with a working recipe
Run the real application locally through the CLI or native SDK, inspect its retained evidence, then check in the recipe and adapter. Keep scenario intent, repetitions, dependency versions, and any rubric/gate explicit. Generate the workflow from the initialized repository:--install-command when application dependencies need preparing. Native callbacks need the checked-in SDK script; the terminal wizard asks for it, or use --runner and --runner-arg in automation. See native CI runners.
This writes .github/workflows/firedrill.yml without executing the target or creating secrets. It does not overwrite a differing existing workflow.
Install the Firedrill CI App on that repository to enable its check and PR comment. The CLI pins its own exact installed version unless you select a different reviewed version explicitly. Omit --github-app if you only want the Actions workflow and job summary.
Require review before credentials
Configure the generatedfiredrill-ci GitHub environment with required reviewers and suitable branch restrictions. Add a scoped, expiring environment secret FIREDRILL_TOKEN using the credential instructions. Keep target-model keys separate and expose them only to the approved execution step.
The generated job:
- Skips fork pull requests.
- Uses
pull_request, notpull_request_target. - Uses read-only repository contents, requests a signed workflow identity for App reporting, and does not retain the checkout credential.
- Runs the checked-out application on the CI runner only after environment approval.
- Does not automatically cancel an earlier simulation merely because a newer push arrives.
Inspect the retained result
The workflow records declaredci origin and available GitHub source context, including repository, commit, workflow run, attempt, job, event, and optional PR number. These are caller declarations, not signed source attestations.
Its job summary links to the authenticated Firedrill report. With the App enabled, the PR also gets a simulation check and one updated comment with passed, failed, inconclusive and ungated counts. Multiple reported batches are combined; workflow execution failures cannot be hidden by a passing simulation batch. Inputs, outputs, evidence contents and credentials are not copied into the comment.
Open the detailed report to see scenario results, exact checks, quality scores and captured evidence. Links retain the correct organization, project and environment, and require sign-in. CI runs in the portal also shows the PR/workflow context and actual connected-repository details when available.
The App verifies GitHub’s signed workflow identity and repository/run information before posting. Caller-declared source metadata by itself cannot authorize a check or comment on another repository. Fork PRs and privileged pull_request_target handoffs are not eligible for this connection path.
A completed target is not automatically correct. Semantic rubrics assess meaning and allow valid output variation; exact checks enforce precise constraints. Missing evidence stays unknown. An unavailable evaluator may make a required gate inconclusive rather than establish an agent defect.
Compare a baseline and candidate
Use real retained batch IDs from like-for-like populations:Recover without duplicating execution
An interrupted CI observer is not proof that its target stopped. Preserve the private journal and original operation ID, then inspect and reconcile that work before dispatching another target.firedrill follow BATCH_ID only observes; simulate --resume OPERATION_ID can continue unfinished execution.
A fresh hosted runner does not contain another machine’s journal. Restore it only through an approved private artifact/state mechanism, or inspect the retained batch and use the reported recovery direction. Never commit journals or recover by changing the original scope, identity, or key.
The final workflow reporting step enforces the retained result, including blocked or inconclusive SDK results even when a script exits zero. A failed script remains a failed job. The separate Firedrill gate remains visible in its report. App publication failures are reporting problems; recovering delivery does not execute the target again.