run-scenarios — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited run-scenarios (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Wraps the scenario-runner system prompt at system-prompt.txt (next to this file) and applies it to the three artifacts produced by earlier pipeline stages: a validated parameter JSON, a bounds JSON, and a generated Python calculations module. Output is a strict JSON document with one input pool and one output set per scenario (low, base, high), plus a comparison block summarising spread per computed output.
This stage is deterministic — it does not sample distributions. Monte Carlo is a separate later stage.
Stage 6 of the pipeline described in planexe_simulator/README.md.
generate-bounds / generate-calculations (both clean) and monte-carloNot for: regenerating any prior artifact (use the corresponding earlier skill), Monte Carlo or distribution sampling (later stage), or critiquing the plan as a whole.
output/<version>/):output/v12/parameters.json)output/v12/bounds.json)output/v12/calculations.py)low, base, high) per the system prompt's selection rules.recommended_first_calculations first, then derived_questions. Skip-and-warn on missing dependencies, NotImplementedError (for P(...) stubs), inf, or NaN. Do not abort the whole run.<dir-of-parameters>/scenarios.json next to the input. Print the file path back, plus a one-line summary (output count, warning count).| Variable type | Source for low/base/high |
|---|---|
key_value with bounds entry | bounds value for that scenario |
key_value with non-null value, no bounds | the same value for all three scenarios |
key_value with null value, no bounds | unresolved → may trigger missing-dependency warning |
missing_value_to_estimate with bounds entry | bounds value for that scenario |
| Output of a generated function | computed from current scenario input pool |
The scenario names refer to the input bounds, not "good vs bad" outcomes. High cost is bad; high effectiveness is good. Don't rename to optimistic/pessimistic.
{
"valid": true,
"plan_summary": { "plan_name": "...", "plan_type": "..." },
"scenarios": {
"low": { "inputs": {...}, "outputs": {...} },
"base": { "inputs": {...}, "outputs": {...} },
"high": { "inputs": {...}, "outputs": {...} }
},
"comparison": {
"outputs": {
"<output_id>": {
"low": ..., "base": ..., "high": ...,
"unit": "...",
"spread_ratio": <high/low or null>,
"spread_absolute": <high-low or null>
}
}
},
"warnings": [
{ "stage": "run_scenarios", "scenario": "low", "calculation": "people_protected",
"message": "Missing dependency 'voucher_install_success_rate'.", "severity": "WARN" }
]
}Numeric JSON rules: no NaN, no Infinity — write null and add a warning. No currency symbols, no thousands separators. Don't round unless needed for valid JSON.
| Mistake | Fix |
|---|---|
Wrapping output in ``` `json ``` fences | Raw JSON only |
| Renaming scenarios to "optimistic / realistic / pessimistic" | Keep low / base / high — those refer to bounds, not outcomes |
Aborting on first missing dependency or inf result | Skip the affected function for that scenario; emit a WARN; keep the run going |
Inventing values for null key_values that have no bounds | Don't. Mark the dependent calculation as missing |
Computing percentage change in comparison | Spec is spread_ratio = high/low and spread_absolute = high-low only |
| Running Monte Carlo or sampling | This stage is deterministic; sampling lives in monte-carlo |
Ignoring NotImplementedError from P(...) stubs | Skip, emit a WARN noting the formula needs monte-carlo |
Writing Infinity or NaN into JSON | JSON forbids both — use null and warn |
| Producing a markdown table or prose explanation | JSON only; the spec forbids prose |
system-prompt.txt../../README.md, Stage 6../extract-parameters-from-full/SKILL.md, ../validate-parameters/SKILL.md, ../generate-bounds/SKILL.md, ../generate-calculations/SKILL.md/Users/neoneye/git/neoneye_lab/planexe_simulator/output/v12/parameters.json/Users/neoneye/git/neoneye_lab/planexe_simulator/output/v12/bounds.json/Users/neoneye/git/neoneye_lab/planexe_simulator/output/v12/calculations.py~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.