| name | hardening-pass |
| description | Review and harden a task template or task instance for correctness, robustness, and benchmark readiness. Use when a template or task has been created and needs quality-gating before use in real benchmarks. Also trigger when the user asks to "harden", "review a template", "check a task", or "validate before benchmarking". |
Hardening Pass
Perform a thorough quality review of a task template or task instance before it's used in real benchmarks. This skill protects the validity invariant — the top of the objective stack.
A template hardening catches formula and parameter issues before you generate instances. An instance hardening catches problems that only show up in concrete tasks (Dockerfile, verifier, instruction with real values).
When to Use
- After creating a template with
/create-template
- After manually authoring a task instance
- Before running a template's generated instances through Harbor for the first time
- When reviewing someone else's template or task
- Periodically, to re-validate existing templates against updated standards
Input
The skill accepts a path to either:
- A template directory (detected by presence of
engine.py + params.toml)
- A task instance directory (detected by presence of
task.toml)
/hardening-pass src/aec_bench/templates/builtin/ground/terzaghi_bearing/
/hardening-pass tasks/mechanical/heat-load/audit-office-building/brisbane-8rm/
If no path is provided, ask the user what they want to harden.
Process
Step 1: Detect Target Type
Read the directory contents:
- If
engine.py and params.toml exist → Template Hardening (Step 2)
- If
task.toml exists → Instance Hardening (Step 3)
- If neither → tell the user this doesn't look like a template or task instance
Step 2: Template Hardening
Read all template files: engine.py, params.toml, instruction.md, __init__.py.
2a. Formula Correctness
Read engine.py and assess:
2b. Parameter Ranges
Read params.toml and assess:
2c. Difficulty Calibration
2d. Instruction Quality
Read instruction.md and assess:
2e. Validation Run
Run the template through validation:
uv run aec-bench generate validate-template <template_dir>
Then generate a test instance and compute with sample values:
uv run aec-bench generate task <template-name> --instances 1 --seed 42 --output /tmp/hardening-preview/ --dry-run
Check: does the generated instruction look correct with concrete parameter values?
Step 3: Instance Hardening
Read all instance files: task.toml, instruction.md, and check for environment/Dockerfile, tests/verify.py.
3a. Metadata
Read task.toml and check:
3b. Instruction
Read instruction.md and check:
3c. Environment
If environment/Dockerfile exists:
3d. Verifier
If tests/verify.py (or tests/test.sh) exists:
If no verifier exists:
Step 4: Produce the Report
Output a structured hardening report:
## Hardening Report
**Target:** <path>
**Type:** Template / Instance
**Standard:** <referenced standard if applicable>
### Checks
| # | Category | Check | Status | Notes |
|---|----------|-------|--------|-------|
| 1 | Formula | Coefficients match standard | PASS/WARN/FAIL | detail |
| ... | ... | ... | ... | ... |
### Findings
**[FINDING-1]** severity: critical/high/medium/low
- Check: #N
- Issue: [what's wrong]
- Fix: [what to do]
- Evidence: [why this matters — cite the standard or show the calculation]
### Summary
- X checks run, Y passed, Z warnings, W failures
- Benchmark readiness: READY / NEEDS FIXES / NOT READY
Benchmark readiness criteria:
- READY — no failures, warnings are acknowledged
- NEEDS FIXES — failures exist but are fixable, or critical warnings need attention
- NOT READY — critical failures (missing verifier, wrong formula, physically impossible parameters)
Step 5: Offer Fixes
If findings exist, offer to fix them:
- For template issues: edit engine.py, params.toml, or instruction.md directly
- For instance issues: edit the relevant files
- Re-run the applicable checks after fixing
- Update the report
Reference Files
Read these as needed:
references/checklist-summary.md — Quick reference of all checks in table format