Session 39: Design system Phase H — QA pass, §13 parity verified, conversion COMPLETE (1907 tests)

Final phase of the VYNDR 2.0 conversion (Sessions 33-39). Verify -> fix -> lock.
Frontend-only; zero backend changes.

§13 automated checklist: all PASS or FIXED.
- QA.1 token resolution FIXED: ProcessingGrade #00ffb8 -> var(--g-ap);
  game/[id] sport literals -> var(--s-*). Remaining hex documented as intentional
  (var-with-fallback, Next metadata, bespoke intel-surface shades).
- QA.6 glitch discipline: ZERO glitch on data components.
- QA.4/5/8/11/16/18 verified; QA.9 (cmd palette) documented deferred;
  QA.17 (AI slop) flagged for Kev's manual browser review.

De-flake: soccerFeatureExtractorCascade hit Jest's 5s default under full-suite
load (falls through to live adapters on cache miss) -> jest.setTimeout(20000),
same family as the S32 pipeline test. Verified stable across 3 full-suite runs.

New: tests/unit/vyndrParityQA.test.js (17 tests locking the parity invariants).

Backend 1890 -> 1907, 146 suites, zero regressions (stable x3). Web build clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kev
2026-06-16 14:37:07 -04:00
parent 956a7455eb
commit e453c24d2c
6 changed files with 200 additions and 11 deletions
@@ -19,6 +19,13 @@ jest.mock('../../src/utils/redis', () => ({
const { normalizeName } = require('../../src/utils/normalize');
const extractor = require('../../src/services/intelligence/soccerFeatureExtractor');
// Session 39 (QA) — de-flake. When a cache key misses, the extractor falls
// through to live network adapters; under full-suite concurrency that async
// chain occasionally exceeds Jest's 5s default (intermittent timeout on the
// nextMatch/referee cascade tests). Same fix family as Session 32's CPU-bound
// pipeline test — give the suite headroom. Test-only; no service change.
jest.setTimeout(20000);
beforeEach(() => { mockCacheStore.clear(); });
describe('soccerFeatureExtractor — source cascade (Session 9)', () => {