Fission

Fission Automation Guide

Generated: 2026-04-09
Scope: crates/fission-automation/

Overview

This crate runs quality lanes against fission_cli, aggregates inventory/diagnosis into JSON/Markdown, computes deltas vs baselines, and emits go/stop signals. Telemetry in summaries must stay aligned with fission_pcode::NirBuildStats (canonical definition: crates/fission-pcode/src/nir/types.rs).

Benchmark runner ownership now lives under benchmark/full_benchmark/; this crate only owns automation lanes and their artifact/reporting contract.

Layout

src/
├── main.rs           # allocator + thin CLI dispatch
├── cli.rs            # Clap commands / args (`nir-check`)
├── lanes/
│   ├── mod.rs        # sentinel manifest + lane target resolution
│   └── nir_check.rs  # NIR lane orchestration (inventory → diagnosis → artifacts → gates)
├── artifacts.rs      # run directory writes (`ArtifactWriter`, diagnosis Markdown helpers)
├── gates.rs          # `--fail-on-stop` + perf regression vs baseline
├── inventory.rs      # subprocess inventory emit
├── diagnosis.rs      # diagnosis buckets / next-patch hints
├── corpus.rs         # corpus artifacts + totals
├── model.rs          # row/summary types
└── report/           # snapshots, deltas, insights, render, baseline I/O

nir-check flags (high level)

Flag Role
--lane Sentinel lane name (e.g. nir; preview aliases to nir)
--release / --no-build How fission_cli is resolved under target/
--fission-bin Explicit fission_cli path
--manifest Override default crates/fission-automation/config/sentinel_sets.toml
--baseline Baseline summary.json for deltas + perf gate (optional)
--update-latest / --no-update-latest Copy run into benchmark/artifacts/automation/latest/<lane>/
--run-profile fast / mid / full — adjusts limits/timeouts
--functions-limit, --timeout-ms Per-target overrides
--dry-run Print targets and paths; no subprocess
--fail-on-stop Exit non-zero unless go_stop_gate.decision starts with go_
--emit-legacy-preview-artifacts Also write deprecated preview_* JSON aliases alongside canonical nir_* outputs
--jobs Parallel inventory runs (default 1)

CI

Heavy workflow builds fission-cli (release), runs crate tests, then a fast nir-check without baseline (perf regression gate skipped) and without updating latest/. Artifacts upload: benchmark/artifacts/automation/.

Validation

cargo test -p fission-automation
cargo run -p fission-automation -- source-semantic-check --no-build --fission-bin target/release/fission_cli
cargo run -p fission-automation -- check --help   # alias for source-semantic-check
cargo run -p fission-automation -- nir-check --lane nir --dry-run

Conventions