Files
GTI_GERENCIADOR_FISCAL/.superpowers/sdd/2026-09-22-control-panel-operational-ux-v1/task-5-report.md
T

80 lines
4.2 KiB
Markdown

# Task 5 Report: Fixture Coverage, Documentation, And Regression Tests
## Result
Completed the fixture regression coverage and operational UX documentation.
The fixture retains its explicit non-production command gate and the default
100-Agent/500-event/100-job shape. Its deterministic blocker count is now 51:
50 distinct open tenant/product pairs, including two open blocker rows for the
same first product. Safe-blocked snapshot counts match the fixture's open
product pairs. Failed jobs have duration timestamps, and linked events point to
their job and, where present, the correct blocker/product and installation.
## TDD evidence
1. Added assertions for the additional same-product blocker, unique fingerprints,
exact UUID5 installation identities, ownership, failed-job durations, and
job/blocker/product event links. The first focused run was RED as expected:
fixture returned 50 blockers while the requirement expected 51.
2. After implementing the blocker/job/event fixtures, added an assertion that
each snapshot's `safe_blocked` value matched its open product pairs. The
focused run was RED as expected because the old sample formula reported
blocked products for installations without an open blocker.
3. Updated the deterministic snapshot values to match the generated open
product pairs. The focused test then passed.
## Verification commands
- RED: `python -m pytest central/tests/test_control_panel_fixture.py -q` —
failed on the expected blocker count gap (`50 != 51`).
- RED: `python -m pytest central/tests/test_control_panel_fixture.py -q` —
failed on the expected safe-blocked snapshot mismatch (`1 != 0`).
- GREEN: `python -m pytest central/tests/test_control_panel_fixture.py -q` —
passed (`1 passed`).
- Full central suite: `python -m pytest central/tests -q` — passed
(`275 passed`). Pytest emitted its existing `pytest-asyncio` fixture-loop
deprecation warning and one existing `openpyxl` print-area warning.
- `git diff --cached --check` — passed with no whitespace errors.
## Documentation review
Updated `docs/CONTROL_PANEL_V1.md` to link to the new operational UX contract
and distinguish the installation-wide confirmation step from the validated
blocker context workflow. Added `docs/CONTROL_PANEL_OPERATIONAL_UX_V1.md`
covering the health invariant, technical/fiscal distinction, blocker/product
counts, dashboard attention and empty states, identity-first views, timestamp
and timezone presentation, blocker filters and summaries, operational-only
priority tiers, safe resolution/auth/CSRF/audit fields, reprocess confirmation,
password policy, performance limits, responsiveness, fixture command, and
write/deployment boundaries.
## Commit
- Implementation and product documentation: `4ba0fa8`
(`test: complete control panel fixture UX coverage`)
## Concerns
- Resolved in the timestamp tooltip follow-up below: templates now use raw ISO
UTC timestamps in `title` and retain localized human-readable visible text.
- Full central tests retain the two pre-existing dependency warnings described
above; they did not fail the suite.
## Timestamp tooltip follow-up
Resolved the full technical timestamp concern: agent, job, blocker, and
populated dashboard failure timestamps now keep their localized human-readable
text visible and expose the complete ISO UTC timestamp (including seconds and
`+00:00`) in the `title` attribute. Blocker detail includes first- and
last-seen timestamps. The existing raw ISO serializer now explicitly normalizes
naive SQLite timestamps as UTC, matching the presentation layer's existing
interpretation without changing the view-model shape.
### TDD and verification
- RED: `python -m pytest central/tests/test_control_panel_pages.py -q -k "localized_last_seen or localized_created or localized_seen_times or bounded_failed_job_rows"` — 4 expected failures because the tooltips did not contain the required raw ISO values.
- GREEN: `python -m pytest central/tests/test_control_panel_pages.py -q` — passed (`12 passed`).
- Full suite: `python -m pytest central/tests -q` — passed (`278 passed`, one existing `openpyxl` warning; pytest-asyncio also emits its existing fixture-loop deprecation warning).
- `git diff --check` — passed.
- Commit message: `fix: show technical timestamps in tooltips`.