Phase 10 — Developer / Progress Document¶
Purpose¶
Phase 10 is a refinement pass focused on stabilizing the product surface and release hygiene for v0.2.0, without changing analysis semantics, metrics, or data meaning.
Release Hygiene¶
- Updated public-facing documentation to match current behavior (
readme.md). - Introduced a SemVer-oriented changelog with explicit phase linking (
CHANGELOG.md). - Added/standardized local validation entry points (
scripts/checks) and ensured documentation builds in CI (.github/workflows/docs.yml). - Extended CI coverage to newer Python versions for earlier compatibility signals (
.github/workflows/django.yml).
Test Suite Health (Markers and Enforcement)¶
- Formalized a two-axis marker taxonomy:
- Speed markers (required; exactly one):
unit,integration - Semantic markers (optional):
regression,golden - Enabled strict marker behavior and documented intent in
pytest.ini. - Added a collection-time enforcement guard so unmarked (or multiply-marked) tests fail deterministically (
tests/conftest.py). - Split CI test execution into a fast unit job and a full suite job (
.github/workflows/django.yml). - Documented how to run and interpret markers in Developer Docs (
docs/development.md).
Battle History — Tournament Run Classification (Derived)¶
- Implemented derived tournament detection based on the Battle Report Tier label format (e.g.
3+,5+,8+) incore/tournament.py. - Exposed tournament metadata as view-layer fields (e.g.
is_tournament,tournament_bracket) without adding persisted fields or migrations. - Defaulted analytics and the Battle History table to exclude tournament runs, with explicit opt-in via an “Include tournaments” filter (
core/forms.py,core/views.py,core/templates/core/battle_history.html,core/templates/core/dashboard.html). - Added visual affordances for tournament rows (row styling and badges) to reduce accidental interpretation mixing (
core/static/core/app.css).
UX and Interaction Refinements¶
- Standardized a small design scale and shared tokens (spacing, font sizes, radii, neutral surfaces) in
core/static/core/app.css. - Reduced primary navigation to a small set of top-level destinations and moved secondary pages under a “More” menu (
core/templates/core/base.html). - Added a global search affordance with a lightweight results dropdown for quick navigation (
core/templates/core/base.html,core/templates/core/search.html,core/static/core/app.css). - Restructured the Charts dashboard controls to keep context filters visible and move optional controls behind disclosure (
core/templates/core/dashboard.html).
Notes and Limitations¶
- Tournament classification is heuristic and derived from raw Battle Report text; it assumes the Tier label continues to use the
N+convention for tournaments. - Marker enforcement is intentionally strict; test authors must choose
unitorintegrationfor every test to avoid accidental slow or flaky coverage creeping into the fast lane.