fix(scanners): the fix engine downgraded a near-miss on xhigh to high (C2)
`fix-engine.mjs` carried its own copy of the valid `effortLevel` list, and that copy had gone stale on `xhigh` (CC 2.1.154's top Opus tier) while `settings-validator.mjs` had all five. The nearest-match "fix" therefore corrected `xhig` — and `XHIGH` — to `high`: the tool silently changed the tier the user asked for, in the one code path whose whole job is to write the corrected value back to disk. Fixed by sharing the validator's table instead of aligning the copy, so the two cannot drift again. Guard asserts the blanket invariant — a one-character near-miss on EVERY valid tier corrects back to that same tier — rather than pinning the one level that happened to be missing; verified red against the original stale array. Suite 1488/0. Frozen v5.0.0 snapshots untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014P6Rh59Mtj4uYrdYMCYZJE
This commit is contained in:
parent
c76dc537ce
commit
3d6ddb273c
3 changed files with 52 additions and 4 deletions
|
|
@ -9,6 +9,7 @@ import { dirname } from 'node:path';
|
|||
import { parseJson, parseFrontmatter } from './lib/yaml-parser.mjs';
|
||||
import { createBackup } from './lib/backup.mjs';
|
||||
import { runAllScanners } from './scan-orchestrator.mjs';
|
||||
import { VALID_EFFORT_LEVELS as SETTINGS_EFFORT_LEVELS } from './settings-validator.mjs';
|
||||
|
||||
/**
|
||||
* Fix type constants.
|
||||
|
|
@ -22,8 +23,8 @@ const FIX_TYPES = {
|
|||
FILE_RENAME: 'file-rename',
|
||||
};
|
||||
|
||||
/** Valid effortLevel values for nearest-match */
|
||||
const VALID_EFFORT_LEVELS = ['low', 'medium', 'high', 'max'];
|
||||
/** Valid effortLevel values for nearest-match — the validator's list, not a copy. */
|
||||
const VALID_EFFORT_LEVELS = [...SETTINGS_EFFORT_LEVELS];
|
||||
|
||||
/**
|
||||
* Plan fixes from a scanner envelope.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue