feat(story-1-3): practice exercises verification#6
Merged
Conversation
…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.
13 tasks
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.
This was referenced May 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ActivityIndicatorspinners with skeleton loading animations (FadeInDown) across 6 practice screensColors.*design tokens across 11 practice files including vocabularyuse-exercise,use-dictation, and pronunciation screenStory
Test plan
ActivityIndicatorspinners in generating states (only in evaluating/saving sub-states)Colors.*tokens — no hardcoded hex valuesnpm run type-check && npm run lint && npm run format:check— all pass clean