4.3.6 Project Estimation settings panel (`settings/project/estimation`) — statistic + scale + custom-scale editor + settings nav card (admin-only)
Estimate: 24m · Depends on: 4.3.1, 4.3.3
The project Estimation settings panel — the admin surface that configures the estimation statistic + the point scale, sibling of the Workflow + Board settings panels. Drawn per design/estimation/estimation-settings.mock.html; binds to 4.3.3 getEstimationConfig / updateEstimationConfig. Mirror: Jira board Estimation settings (rung 1), at project scope (the module-header deviation).
Route + nav. A new settings/project/estimation page under the existing project-settings shell (alongside settings/project/board + workflow), and an Estimation settings-hub nav CARD on the project-settings index (mirror BoardSettingsCard / WorkflowSettingsCard). Admin-only — the same project-admin gate the workflow/board settings pages use (a non-admin is denied / sees a read-only or forbidden state).
The form. Reuse the settings-card + FormField + Segmented chrome:
- Estimation statistic — Story Points (default) · Time estimate · Issue count (a
Segmented/ radio group), with helper copy on what each means + that it drives what the backlog/board/scrum show and the roll-ups sum. - Point scale — Fibonacci (default) · linear · custom (shown only when statistic = Story Points — the scale is a story-point concept).
- Custom-scale editor — an editable list of numeric values, shown only when scale = custom; validates non-empty + numeric (the 4.3.3
InvalidScaleConfigErrorsurfaced inline). - Save — calls
updateEstimationConfig(optimistic-with-reconcile, the settings-page contract); a success/error affordance.
Tokens + a11y + i18n. Colour via --el-*, shape via element shape tokens (CLAUDE.md); the form is keyboard-operable + properly labelled; the panel copy + the nav card get settings.* / estimation.* i18n keys in every shipped locale.
Out of scope here: the per-issue badge/picker (4.3.4 — which READS this config); the roll-up displays (4.3.5); any board-level estimation override (this product configures estimation per PROJECT, not per board — the justified deviation).
Acceptance criteria
- A new
settings/project/estimationpage (under the project-settings shell) + an Estimation settings-hub nav card (mirroring the Board/Workflow cards) read/write the project estimation config via 4.3.3; admin-only (the project-admin gate; non-admin denied/read-only). - The form offers the statistic selector (Story Points default / Time / Issue count), the point-scale selector (Fibonacci default / linear / custom, shown for Story Points), and the custom-scale editor (numeric list, validated, shown only for custom); Save calls
updateEstimationConfigoptimistically with a success/error affordance. - Switching the statistic changes which value the planning surfaces show + the roll-ups sum (verified via 4.3.4/4.3.5 reading the config); changing the scale changes the picker deck.
- Colour via
--el-*, shape via element tokens, AA-safe, keyboard-operable + labelled; copy has i18n keys in every shipped locale; matchesdesign/estimation/estimation-settings.mock.html. - Component tests assert the form render + the statistic/scale selection + the custom-scale validation + the admin gate (non-admin forbidden) + the optimistic save.
Context refs
design/estimation/estimation-settings.mock.html+design-notes.md(4.3.1) — the panel specapp/(authed)/settings/project/board+workflow+ their_components/*SettingsCard.tsx(BoardSettingsCard/WorkflowSettingsCard) +settings/project/page.tsx— the settings-page shell + nav-card + admin-gate pattern to mirror- Story 4.3.3 (
getEstimationConfig/updateEstimationConfig+InvalidScaleConfigError/EstimationConfigForbiddenError) — the read/write this binds to components/ui/*(FormField,Segmented, the settings card,Button); theprodect-i18n-threading-pattern; the Jira board Estimation settings as the mirror;motir-core/CLAUDE.md