db8ef9b466
Five verified findings from the #756 review, each with a regression test: Corrections now count only follow-up prompts. The session-opening prompt cannot be correcting this assistant, however correction-shaped its task text reads, and the revert pattern no longer matches ordinary 'revert the <noun>' requests (undo was already guarded; the doc claimed both were). Time-to-first-edit returns null when the first edit's timestamp is unparseable instead of silently measuring to the first parseable one. File churn normalizes backslashed paths before keying, relativizing, and basenaming. Previously the payload's basename-only privacy redaction was a no-op on Windows and shipped the full absolute path, username included; mixed separators also split one file across churn entries. Pricing coverage excludes deliberately-free models (local-looking, local-savings mapped, zero-rate overrides) from the denominator via the same exclusions findUnpricedModels applies, so a mostly-ollama user no longer reads high coverage while every cost-bearing call is unpriced. An absent coverage value now reaches the payload as null, never as a fabricated 100%. Also shares the one-shot minimum-edit-turns threshold between worstOneShotCategory and the coaching gate so they cannot drift.