Skip to content

feat(story-1-3): practice exercises verification#6

Merged
Simplemart17 merged 3 commits into
mainfrom
feature/1-3-practice-exercises-verification
Mar 26, 2026
Merged

feat(story-1-3): practice exercises verification#6
Simplemart17 merged 3 commits into
mainfrom
feature/1-3-practice-exercises-verification

Conversation

@Simplemart17

Copy link
Copy Markdown
Owner

Summary

  • Replace all ActivityIndicator spinners with skeleton loading animations (FadeInDown) across 6 practice screens
  • Add error states with Back + Retry buttons on all exercise screens (grammar, listening, reading, writing, pronunciation, dictation)
  • Replace all hardcoded hex colors with Colors.* design tokens across 11 practice files including vocabulary
  • Fix French spelling: "Tres bien" → "Très bien" in pronunciation and dictation
  • Add accessibility labels (listening speed button, reading passage collapse)
  • Fix dot indicator to preserve correct/incorrect color for current answered question
  • Add concurrent generation guards (ref-based) to use-exercise, use-dictation, and pronunciation screen
  • Standardize Back/Retry button styling consistently across all 6 error states

Story

  • Story ID: 1-3
  • Story Key: 1-3-practice-exercises-verification
  • Story File: _bmad-output/implementation-artifacts/1-3-practice-exercises-verification.md

Test plan

  • Open each practice screen (grammar, listening, reading, writing, pronunciation, dictation) — verify skeleton loading animation appears during generation
  • Trigger a generation error (e.g., disable network) — verify Back + Retry buttons appear on all 6 screens
  • Verify no ActivityIndicator spinners in generating states (only in evaluating/saving sub-states)
  • Verify all practice screens use Colors.* tokens — no hardcoded hex values
  • Verify "Très bien" spelling in pronunciation and dictation results
  • Verify listening speed button has accessibilityLabel
  • Verify reading passage collapse has accessibilityRole and accessibilityLabel
  • Verify dot indicators show green/red for answered current question (grammar)
  • Double-tap Retry quickly — verify only one generation request fires
  • Run npm run type-check && npm run lint && npm run format:check — all pass clean

…actice screens

Replace ActivityIndicator spinners with skeleton loading animations using
FadeInDown. Add Back+Retry error states on grammar, listening, dictation
screens. Standardize colors to Colors.* design tokens. Fix dot indicator
to preserve correct/incorrect color for current question.
…ng, writing, vocabulary, MCQCard

Add Back+Retry error state to pronunciation, reading, writing screens.
Replace all hardcoded hex colors with Colors.* tokens in vocabulary screen.
Standardize MCQCard option colors to design tokens. Add concurrent
generation guard to pronunciation screen.
Replace hardcoded colors in ScoreCard with Colors.gray700. Add ref-based
guards to prevent concurrent exercise generation in use-exercise and
use-dictation hooks.
@Simplemart17 Simplemart17 merged commit 455feba into main Mar 26, 2026
1 check failed
Simplemart17 added a commit that referenced this pull request May 16, 2026
… from Story 13-8)

Epic 13 closed. 8 of 8 stories shipped:
- 13-1 transcript render-storm fix
- 13-2 home query fan-out reduction
- 13-3 session-feedback aggregate RPC
- 13-4 streaming mock-test generation
- 13-5 history modal FlatList virtualization
- 13-6 Sentry sampling + perf-conservative SDK flags
- 13-7 className/style resolution on hot animated rows
- 13-8 prompt-truncation perf verification

Delivery metrics:
- +252 net Jest cases (1607 → 1859)
- 65 round-1 review patches across 7 reviewed stories (13-8 review
  pending)
- 0 production incidents
- All 4 quality gates green on every story merge
- Peak round-1 patch count: 13 (Story 13-3) — under the Epic 12 retro's
  15-patch threshold for round-2 auto-trigger

Significant discovery (load-bearing finding of the epic): Story 13-8's
calibration cycle surfaced that Story 11-7's "25× reduction on
user-derived tail" claim was empirically 6.7× — overstated by ~4×. The
25× was computed against user-item content only; reality includes
~1,318 chars of <USER_FACTS>/<USER_WEAK_AREAS> wrapper text per Story
9-4. Still a meaningful ~85% reduction in user-derived bytes per
session, but the marketing was wrong. MIN_REDUCTION_RATIO pinned at 5×
at CI level.

What went well:
- Single-chokepoint refactor + delete-don't-alias patterns applied
  consistently in 6 of 8 stories
- Drift detector + comment-stripped source + scoped JSX/function-body
  extraction became a project-wide idiom
- Range-based assertions over exact-value (Story 13-7 P3 → Story 13-8
  calibration) replaced over-tight failure mode
- Audit accuracy: every Epic 13 story closed its stated audit finding
- Verification-as-deliverable pattern (13-8) surfaced a real
  discrepancy

What didn't go well:
- 0 of 3 Epic 13 ACs verified empirically on device (all architectural
  proxies). Device profiling needed before Epic 16 ships.
- Story 11-7's claim sat for 4 epics without a CI pin — endemic
  CLAUDE.md "perf claim drift" pattern
- 8 of 9 Epic 12 action items remained open at Epic 13 close — same
  pattern from Epic 10 retro. Action items aren't getting done.
- CLAUDE.md grew to ~80KB; compression sweep is preventive
  maintenance

9 action items filed:
1. Correct Story 11-7 CLAUDE.md paragraph (25× → 6.7×)
2. Sweep CLAUDE.md for unverified numerical claims (continues Epic 12
   AI #9)
3. Device profiling pass before Epic 16 (iPhone 11 + Pixel 4a +
   4G-throttled networks; pin the 3 Epic 13 ACs)
4. bmad workflow: action-item accountability (block next-epic on prior
   AI status, or formally drop)
5. Tune adversarial review prompts to reduce noise (Story 13-4 had
   30+ rejects)
6. Codify "Bounded-budget cap pattern" as CLAUDE.md subsection
   (carry-over from Epic 12 AI #1)
7. Shared test utils (MinimalTestInstance + react-native-reanimated
   mock + findAllNodes/flattenStyle helpers duplicated in 3 files)
8. Carry forward Epic 12 AIs #5, #6, #7 unchanged
9. Compress mature CLAUDE.md paragraphs (Stories 9-X / 10-X)

Epic 14 (UI/UX Consistency) plan sound. No plan revision required.
Operator decision required on 14.1 language strategy before Epic 14
kickoff.

Sprint-status updated: epic-13-retrospective optional → done.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant