fpa-capture-correction — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fpa-capture-correction (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.
A human reviewing a forecast is the highest-signal feedback there is - they catch structural errors and domain knowledge the backtest can't see, and catch them now. This skill turns that into durable memory: a typed correction in .fpa/corrections/ that grounds every future forecast.
Core principle: the human is the authority; capture, confirm interpretation once, then it persists. Everything is plain markdown the user owns.
an override (a config path + value) applied to every future forecast via pyfpa.apply_corrections.
pre-ratified structural proposal (the human authored it) - route it to fpa-learn-business to generate the skill/model change; do NOT wait for backtest misses.
fpa-cfo-judgment's one-time screen keeps the backtest from "learning" a one-off.
channels[*].seasonality[11],working_capital.dio_days), line, or profile area. For parametric, draft the concrete override: {path, value}.
pyfpa.save_correction. Set slug to a<date>-<short-name> string (e.g. 2026-06-08-december-seasonality) - save_correction uses the whole slug as the filename (.fpa/corrections/<slug>.md), so keep the date in it. Include frontmatter (type, target, status, date, override) and a markdown body (**Was off:** … **Correction:** … **Why:** [[…]]), linking to the assumption/profile it corrects with [[wikilinks]].
seasonality to 2.0 on all channels - right?"). Only on confirmation set status: applied.
When building any forecast, pyfpa.apply_corrections(cfg, load_corrections(".fpa/corrections")) folds the applied parametric corrections into the config. The per-client loop refines from there - corrections are seeds, not mandates.
.fpa/ vault (MEMORY.md index)Keep a .fpa/MEMORY.md that orients a human, Obsidian, or Claude:
business-profile.md - what we know about the business.corrections/ - human corrections (this skill).forecasts/*.snapshot.yaml, scorecard.md - forecast snapshots + backtest track record.learnings.md - accepted model changes.All plain markdown - open it in Obsidian if you like, but never required.
applied. Reversible via status (open/applied/superseded).the human decides.
Correction captured → fpa-monthly-close / fpa-board-briefing (re-run grounded by it).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.