Background
FR-3331 added a verb-edit entry to terminology.json (verbs[].avoid: Modify, Update). However, scripts/check-terminology-i18n.mjs builds its rules exclusively from the top-level avoid[] array and never reads verbs, so verb-level avoid terms are not checked (raised by Copilot review on PR #8303).
Blanket top-level avoid[] rows for Modify/Update are not an option: those words legitimately remain in non-action contexts (success messages, "Last Updated" column labels, webui.menu.Update password-change label, rbac.operations.UPDATE / storageHost.permission.Modify backend enum labels), so a naive rule would produce constant warn noise.
What to do
- Extend the checker to read
verbs[].avoid with contextual matching — apply verb rules only to action-label-like values (short values / title-cased action phrases), or support per-rule allowlists.
- Allowlist the intentionally-kept keys above.
- Add tests covering: flagged (e.g., a new
"Modify X" modal title) vs allowed (success message containing "updated").
- Keep the checker warn-only per TERMINOLOGY.md governance.
JIRA Issue: FR-3336
Background
FR-3331 added a
verb-editentry toterminology.json(verbs[].avoid: Modify, Update). However,scripts/check-terminology-i18n.mjsbuilds its rules exclusively from the top-levelavoid[]array and never readsverbs, so verb-level avoid terms are not checked (raised by Copilot review on PR #8303).Blanket top-level
avoid[]rows for Modify/Update are not an option: those words legitimately remain in non-action contexts (success messages, "Last Updated" column labels,webui.menu.Updatepassword-change label,rbac.operations.UPDATE/storageHost.permission.Modifybackend enum labels), so a naive rule would produce constant warn noise.What to do
verbs[].avoidwith contextual matching — apply verb rules only to action-label-like values (short values / title-cased action phrases), or support per-rule allowlists."Modify X"modal title) vs allowed (success message containing "updated").JIRA Issue: FR-3336