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
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).
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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?
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
DC-prefix, citing Prototype the dashboard clarity additions, Lock the dashboard wording strings, Specify the changelog and release-notes mechanism.p pause · r resume · c collect · d disclosuresplus bordered quit railq QUIT TUI(rail owns quit; footer dropsq), citing #57.Criteria (verbatim for register append at #60)
Dashboard clarity and release notes (Chart Fenris dashboard clarity)
Fenris — NVMe endurance monitor; a dimmedby Bongbeticsits inline with service facts in the bottom service strip; neither string appears infenris status(TUI-only identity surfaces).monitoring: active in background · persists across reboots; boot-disabled rendersmonitoring: does not start on next boot— identical lowercase source strings in the TUI service strip andfenris 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).monitoring: paused — deliberate disablewith sublinepaused time is excluded from your usage habit · resume: fenris monitor resume;fenris statusprints the same two lines with identical wording. Test impact: feeds the CI-2 sweep (lowercase source-string comparison).q QUIT TUIvisually separate from the paused state block; the footer readsp pause · r resume · c collect · d disclosureswith no quit entry (the rail owns quit); quitting the TUI never alters monitoring state. Amends TUI-4's binding parenthetical.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).## [Unreleased]always present at top, even empty; version headings## [X.Y.Z] - YYYY-MM-DDwith strict ISO date; categoriesAdded/Changed/Fixedonly, security folding into Fixed; entries are single-bullets, imperative mood, user-facing, no commit hashes or issue numbers.scripts/extract_changelog.pyslices 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).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)
—separates title from qualifier; middle dot·joins facts within a line; CI sweeps compare lowercase source strings (rendering case is styling).