Write the dashboard clarity acceptance criteria #59

Closed
opened 2026-09-10 05:12:36 +00:00 by xavierk · 1 comment
Owner

Parent map: Chart Fenris dashboard clarity

Question

Which testable statements (criterion IDs appended to docs/spec/acceptance-criteria.md) cover branding visibility, persistence parity across TUI and status, the two distinct stop indicators, the auth banner, and the release-notes mechanism — embedding the locked verbatim strings, with test-impact notes for the CI-2/CI-4 acceptance sweep?

Parent map: [Chart Fenris dashboard clarity](https://git.bongbetic.com/xavierk/Fenris/issues/55) ## Question Which testable statements (criterion IDs appended to docs/spec/acceptance-criteria.md) cover branding visibility, persistence parity across TUI and status, the two distinct stop indicators, the auth banner, and the release-notes mechanism — embedding the locked verbatim strings, with test-impact notes for the CI-2/CI-4 acceptance sweep?
xavierk added this to the Wayfinder: Chart Fenris dashboard clarity milestone 2026-09-10 05:12:36 +00:00
xavierk added the wayfinder:grilling label 2026-09-10 05:12:36 +00:00
xavierk added a new dependency 2026-09-10 05:12:46 +00:00
xavierk added a new dependency 2026-09-10 05:12:47 +00:00
xavierk self-assigned this 2026-09-10 06:23:16 +00:00
Author
Owner

Resolution

Criteria decided — grilling round 1, all recommendations accepted (Q1–Q7). Register append deferred to Assemble the dashboard clarity specification and close the map per Q7.

Decisions

  • Q1 Grouping: one new register section "Dashboard clarity and release notes", DC- prefix, citing Prototype the dashboard clarity additions, Lock the dashboard wording strings, Specify the changelog and release-notes mechanism.
  • Q2 TUI-4 conflict: TUI-4 amended minimally at append time — binding list becomes footer p pause · r resume · c collect · d disclosures plus bordered quit rail q QUIT TUI (rail owns quit; footer drops q), citing #57.
  • Q3 CI-2/CI-4: no edits to CI-2/CI-4 text; parity criteria carry their own test-impact notes.
  • Q4 Auth banner: evidence class A (Textual pilot drives refresh ticks headlessly).
  • Q5 Discipline: entries-at-fix-time, no-backfill, one-release-commit live in the spec only — not criteria. Triple-match guard stays testable → DC-7.
  • Q6 README: no criterion for README dashboard-instructions wording (fog → #60).
  • Q7 Timing: decide here, append at #60.

Criteria (verbatim for register append at #60)

Dashboard clarity and release notes (Chart Fenris dashboard clarity)

  • DC-1 (A) TUI branding: the header bar renders Fenris — NVMe endurance monitor; a dimmed by Bongbetic sits inline with service facts in the bottom service strip; neither string appears in fenris status (TUI-only identity surfaces).
  • DC-2 (A) Continuity parity, keyed to the boot fact as-is: active + boot-enabled renders monitoring: active in background · persists across reboots; boot-disabled renders monitoring: does not start on next boot — identical lowercase source strings in the TUI service strip and fenris status, including while paused (paused implies boot-disabled; the row still reports the fact). Test impact: feeds the CI-2 sweep (lowercase source-string comparison).
  • DC-3 (A) Paused presentation (Deliberate disable): the TUI shows a strong state block titled monitoring: paused — deliberate disable with subline paused time is excluded from your usage habit · resume: fenris monitor resume; fenris status prints the same two lines with identical wording. Test impact: feeds the CI-2 sweep (lowercase source-string comparison).
  • DC-4 (A) Quit affordance distinct from monitoring state: a bordered labelled rail q QUIT TUI visually separate from the paused state block; the footer reads p pause · r resume · c collect · d disclosures with no quit entry (the rail owns quit); quitting the TUI never alters monitoring state. Amends TUI-4's binding parenthetical.
  • DC-5 (A) Launch auth banner: privileged actions will prompt for authentication (polkit) renders full-width under the header at TUI launch, clears on the first refresh tick, and never reappears in the session; no user-facing string uses "sudo" (polkit-accurate elevation wording only).
  • DC-6 (A) CHANGELOG.md shape (Keep a Changelog 1.1): ## [Unreleased] always present at top, even empty; version headings ## [X.Y.Z] - YYYY-MM-DD with strict ISO date; categories Added/Changed/Fixed only, security folding into Fixed; entries are single - bullets, imperative mood, user-facing, no commit hashes or issue numbers.
  • DC-7 (A) Extraction fails closed: scripts/extract_changelog.py slices the requested version's section verbatim and never reads Unreleased; a missing or empty section or a malformed date produces ::error:: and a nonzero exit; the release workflow fails when the pushed tag ≠ v{version from pyproject.toml} (guard skipped on workflow_dispatch).
  • DC-8 (A/P) Release body: the body is the extracted section verbatim plus the standing footer from packaging/release-footer.md; a re-run against an existing release PATCHes the body (re-sync is a feature) while uploaded assets skip idempotently. A covers assembly/PATCH-logic unit tests; P is one scripted workflow_dispatch verification of body assembly.

Notes for assembly (#60)

  • Typography rule from #57 governs every DC string: em-dash — separates title from qualifier; middle dot · joins facts within a line; CI sweeps compare lowercase source strings (rendering case is styling).
  • Spec text (dashboard-clarity.md) carries the discipline statements: entries land in [Unreleased] as part of the fixing change; one release commit bumps pyproject version + renames the section; no backfill — per-release notes begin with the release shipping this mechanism.
  • No glossary or ADR change: strings reuse Deliberate disable; the release-notes mechanism implements the existing Release term.
## Resolution Criteria decided — grilling round 1, all recommendations accepted (Q1–Q7). Register append deferred to [Assemble the dashboard clarity specification and close the map](https://git.bongbetic.com/xavierk/Fenris/issues/60) per Q7. ### Decisions - **Q1 Grouping**: one new register section "Dashboard clarity and release notes", `DC-` prefix, citing [Prototype the dashboard clarity additions](https://git.bongbetic.com/xavierk/Fenris/issues/56), [Lock the dashboard wording strings](https://git.bongbetic.com/xavierk/Fenris/issues/57), [Specify the changelog and release-notes mechanism](https://git.bongbetic.com/xavierk/Fenris/issues/58). - **Q2 TUI-4 conflict**: TUI-4 amended minimally at append time — binding list becomes footer `p pause · r resume · c collect · d disclosures` plus bordered quit rail `q QUIT TUI` (rail owns quit; footer drops `q`), citing #57. - **Q3 CI-2/CI-4**: no edits to CI-2/CI-4 text; parity criteria carry their own test-impact notes. - **Q4 Auth banner**: evidence class A (Textual pilot drives refresh ticks headlessly). - **Q5 Discipline**: entries-at-fix-time, no-backfill, one-release-commit live in the spec only — not criteria. Triple-match guard stays testable → DC-7. - **Q6 README**: no criterion for README dashboard-instructions wording (fog → #60). - **Q7 Timing**: decide here, append at #60. ### Criteria (verbatim for register append at #60) ## Dashboard clarity and release notes ([Chart Fenris dashboard clarity](https://git.bongbetic.com/xavierk/Fenris/issues/55)) - **DC-1** (A) TUI branding: the header bar renders `Fenris — NVMe endurance monitor`; a dimmed `by Bongbetic` sits inline with service facts in the bottom service strip; neither string appears in `fenris status` (TUI-only identity surfaces). - **DC-2** (A) Continuity parity, keyed to the boot fact as-is: active + boot-enabled renders `monitoring: active in background · persists across reboots`; boot-disabled renders `monitoring: does not start on next boot` — identical lowercase source strings in the TUI service strip and `fenris status`, including while paused (paused implies boot-disabled; the row still reports the fact). Test impact: feeds the CI-2 sweep (lowercase source-string comparison). - **DC-3** (A) Paused presentation (Deliberate disable): the TUI shows a strong state block titled `monitoring: paused — deliberate disable` with subline `paused time is excluded from your usage habit · resume: fenris monitor resume`; `fenris status` prints the same two lines with identical wording. Test impact: feeds the CI-2 sweep (lowercase source-string comparison). - **DC-4** (A) Quit affordance distinct from monitoring state: a bordered labelled rail `q QUIT TUI` visually separate from the paused state block; the footer reads `p pause · r resume · c collect · d disclosures` with no quit entry (the rail owns quit); quitting the TUI never alters monitoring state. Amends TUI-4's binding parenthetical. - **DC-5** (A) Launch auth banner: `privileged actions will prompt for authentication (polkit)` renders full-width under the header at TUI launch, clears on the first refresh tick, and never reappears in the session; no user-facing string uses "sudo" (polkit-accurate elevation wording only). - **DC-6** (A) CHANGELOG.md shape (Keep a Changelog 1.1): `## [Unreleased]` always present at top, even empty; version headings `## [X.Y.Z] - YYYY-MM-DD` with strict ISO date; categories `Added`/`Changed`/`Fixed` only, security folding into Fixed; entries are single `- ` bullets, imperative mood, user-facing, no commit hashes or issue numbers. - **DC-7** (A) Extraction fails closed: `scripts/extract_changelog.py` slices the requested version's section verbatim and never reads Unreleased; a missing or empty section or a malformed date produces `::error::` and a nonzero exit; the release workflow fails when the pushed tag ≠ `v{version from pyproject.toml}` (guard skipped on workflow_dispatch). - **DC-8** (A/P) Release body: the body is the extracted section verbatim plus the standing footer from `packaging/release-footer.md`; a re-run against an existing release PATCHes the body (re-sync is a feature) while uploaded assets skip idempotently. A covers assembly/PATCH-logic unit tests; P is one scripted workflow_dispatch verification of body assembly. ### Notes for assembly (#60) - Typography rule from #57 governs every DC string: em-dash `—` separates title from qualifier; middle dot ` · ` joins facts within a line; CI sweeps compare lowercase source strings (rendering case is styling). - Spec text (dashboard-clarity.md) carries the discipline statements: entries land in [Unreleased] as part of the fixing change; one release commit bumps pyproject version + renames the section; no backfill — per-release notes begin with the release shipping this mechanism. - No glossary or ADR change: strings reuse Deliberate disable; the release-notes mechanism implements the existing Release term.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: xavierk/Fenris#59