Interval
Work since the previous summary
Ten completed turns followed the previous checkpoint. The work began with deferred device notes, then stabilised the gameplay composition, made generation diagnostics temporarily permanent, and restructured campaign preparation after all ten grids began freezing the interface. A review of unavoidable repetition led first to mathematical recommendations and then to two 100-word profiles, deliberate immediate-replay variation, distinct fallbacks and a clean published project revision.
Direction of travel
How the work evolved.
Each step connects the user’s prompt to the practical change it produced.
Device feedback became a scoped next-session backlog
Prompt: Record, but do not immediately start, three issues: the board moving as targets changed, an all-reused final Standard level, and treasure bubbles clipping before leaving the top of the screen.
Outcome: The issues were preserved without changing the project, giving the following implementation pass a precise scope rather than mixing it into the earlier validated milestone.
The board stopped moving and finale bubbles gained full-screen travel
Prompt: Implement the fixed-grid presentation, expose generation attempts and fallback use, distribute unavoidable reuse more evenly, and let treasure bubbles continue beyond the visible top edge.
Outcome: A fixed three-row target area now prevents vertical board movement. Reuse was initially spread across the final three levels, generation metadata became visible for diagnosis, and the treasure overlay moved to full-screen coordinates so bubbles are not clipped by the board.
Temporary generation diagnostics replaced obsolete animation debug controls
Prompt: Remove the score-flight tuning and preview feature while leaving reuse and grid-generation information visible below the board.
Outcome: The Debug control now handles only word-path overlays. A fixed footer continuously shows placement attempts, fallback state and reused-word count without moving the board when debug state changes.
Levels began preparing only when needed
Prompt: Fix the apparent hang before the first grid and explain why each level could not be created as play progressed instead of generating all ten up front.
Outcome: Only levels 1 and 2 are prepared before play because the second layer must already be visible beneath the first. Later grids generate one at a time on a background actor, transitions wait responsively if preparation falls behind, and a preparation overlay communicates progress instead of leaving a frozen screen.
The cause of heavy reuse was made explicit
Prompt: Investigate why half of the final level repeated earlier words and propose concrete ways to reduce that count.
Outcome: The analysis showed that a ten-level dive needs 75 target slots while each profile held only 60 unique words, forcing at least 15 repeats. Increasing the pool above 75 was recommended over merely moving those repeats between levels.
Each profile expanded to 100 curated words
Prompt: Use 100 words per dive profile so replaying is less likely to show the same vocabulary and normal play can avoid within-dive reuse.
Outcome: The prototype site now has separate 100-word Standard and Hard profiles, with Timed sharing Standard. A normal campaign consumes 75 distinct targets. Immediate replay prioritises all 25 omitted words, relocates reused vocabulary to other levels and avoids same-level repetition unless no eligible alternative remains.
Fallback campaigns were aligned with the larger pool
Prompt: Ensure the expanded vocabulary actually improves the safety path rather than leaving fixed fallback campaigns full of repetition.
Outcome: Both prevalidated fallback plans now contain 75 distinct words, and the pool revision was advanced so history from the earlier vocabulary version cannot distort new replay selection.
The complete generation milestone was synchronized
Prompt: Confirm the working scope, record the finished campaign-generation and replay changes, and synchronize them through the normal project workflow without opening a review request.
Outcome: The coherent batch—incremental preparation, fixed layout and diagnostics, full-screen finale bubbles, expanded profiles and replay policy—was recorded as one project revision. The local workspace was confirmed clean and aligned with its remote counterpart.
What improved
Improvements made.
Evidence-led changes grouped around the product, implementation, design and working process.
Stable board composition
A reserved three-row target region and fixed diagnostic footer keep the puzzle board stationary as words disappear, refill or debug information changes.
Responsive campaign startup
Grid construction no longer blocks the interface while attempting ten complete layouts; the app prepares only the two layers needed to begin and streams later work in the background.
Visible preparation state
A dedicated overlay communicates that a level is being prepared, and transitions can wait without freezing or exposing an absent grid.
No normal within-dive word reuse
Each 100-word profile supplies enough vocabulary for all 75 target slots in a standard ten-level campaign to be distinct.
Deliberate immediate-replay variety
The selector always introduces the 25 words omitted from the previous dive first, then moves any necessary familiar words to different levels rather than relying on random chance.
Distinct safety campaigns
Both prevalidated fallbacks also contain 75 unique words, preserving the replay-quality goal even when dynamic placement exhausts its bounded attempts.
Pain points
Friction, constraints and open edges.
Resolved problems are separated from constraints and work that remains open.
Target updates shifted the puzzle board
The target area changed height as capsules disappeared or reflowed, subtly moving the grid. Reserving a fixed three-row region removed that motion.
Eager generation appeared to hang the app
Preparing all ten grids synchronously could execute many word and placement attempts before the first frame, blocking touches and rendering. Incremental background preparation removed the long main-thread stall.
The 60-word pool mathematically forced repetition
A campaign requires 75 target slots, so at least 15 repeats were unavoidable and accumulated heavily in later levels. Expanding each profile to 100 makes distinct normal campaigns possible.
More vocabulary alone would not guarantee better fallback replay
Without changing selection priority and fixed campaigns, the extra words could remain unused while fallbacks repeated older sets. The replay algorithm and both fallback plans were revised together.
Outputs & proof
What was delivered and verified.
The responsive loading boundary compiled successfully under the full toolchain, including its actor-isolated persistence adapter. The expanded vocabulary then passed focused replay, persistence, incremental-generation and forced-fallback checks before the complete suite ran on a fresh simulator. The final milestone ended with 113 passing tests, no failures, clean staged-diff validation and a synchronized project workspace.
Verification record
- The app target and complete test bundle compiled after campaign preparation moved behind an actor boundary.
- Incremental-generation tests confirmed that only the initial reveal layers are required up front and later transitions wait safely for prepared grids.
- Pool validation confirmed exactly 100 curated words in both Standard and Hard profiles, with Timed sharing Standard history.
- Normal Standard and Hard campaigns each used 75 distinct target words with no within-dive reuse.
- Immediate replay tests confirmed that all 25 words omitted from the previous dive are used and previously seen vocabulary moves away from its earlier level where possible.
- Both prevalidated fallback campaigns passed uniqueness, grid construction and replay-separation checks.
- The complete suite passed 113 checks with zero failures on a fresh large-screen simulator profile.
- The final publication diff passed whitespace validation and the synchronized workspace was clean.
Key decisions
Level 2 remains part of initial preparation because its selectable letters are already visible beneath level 1; later levels can be generated on demand.
The word plan remains campaign-wide so reuse and replay policy can be coordinated even though physical grids are created incrementally.
Normal campaigns use 75 distinct targets; word reuse is now reserved for exceptional safety conditions rather than routine play.
Immediate replay variation is deliberate: unseen words are prioritised and familiar words are relocated to different levels before same-level reuse is considered.
Vocabulary history is versioned so enlarging or revising a pool does not inherit incompatible replay state.
Generation attempts, fallback state and reused-word counts remain temporarily visible below the grid as product diagnostics.
Visual checkpoints
Generated and edited images.
No images were generated or edited during this interval. The work centred on domain rules, concurrency, diagnostics, test coverage and publication rather than new visual assets; user feedback was text-only.
Next moves & open questions
Current position.
The gameplay board remains fixed while target words change, generation diagnostics occupy a stable footer, and treasure bubbles can travel beyond the top edge without board clipping. Campaign startup is responsive because only the current and immediately revealed layers are prepared before play; later grids arrive incrementally in the background with safe waiting and fallback behaviour. The first site now has 100 curated words for each main profile, normal ten-level dives use 75 distinct targets, and immediate replays deliberately use all 25 previously omitted words. The complete 113-check suite passes, the project revision is synchronized, and the workspace is clean.