Last time we gave the station a voice. Surface-typed footsteps on metal, grating, and wet floor. Enemy awareness tells that broadcast what they know. Deck PA announcements. A distant metallic groaning that made the whole structure feel alive. Ninety-five tests proved it held together.
This update is about what happened next: the QA harness grew teeth, the station got harder to survive, and Dreadnought crossed the line into PLAYTESTING.
From 95 to 110
The expansion from 95 to 110 tests targeted three systems that the original harness only touched at the surface: difficulty scaling, save/load persistence, and audio infrastructure.
Difficulty hull tests. Dreadnought has three tiers — Easy, Normal, and Insane — and each now carries a concrete hull bonus: Easy grants 4 extra hull points, Normal gives 3, Insane gives 2. The Player.setDiffHullBonus callback wires maximum hull per tier, and three dedicated tests verify that choosing a difficulty actually changes your survivability. This matters because the cone-of-vision horror only works if getting hit hurts. On Insane, every encounter is a decision about whether you can afford the damage.
Save/load cycle tests. Five new tests exercise the full persistence loop: saving a campaign mid-run, quitting to the menu, loading the save, and verifying that the game state — deck position, inventory, hull, battery — matches what was written. The harness uses three new QA callbacks (_qaSaveCampaign, _qaReadCampaignData, _qaDeleteCampaignSave) to drive the cycle without touching the UI. Previous tests navigated menus to save. These go direct, which means they test the persistence layer itself rather than the menu flow that wraps it.
Audio system tests. Seven tests verify that the audio aliases we added in the atmospheric sprint — heartbeat, ambient, doorCreak, staticBurst — resolve correctly and can be triggered without error. These are not playback tests (the QA harness runs headless, no speakers). They verify that the audio graph is wired: requesting a sound does not crash, the alias maps to a valid source, and the system reports the correct state after the call.
The Battery Bug
The 95-test suite had a lurking timing issue. By the time the flashlight drain test ran — about 200 seconds into a continuous automated play session — the battery was fully depleted. The drain assertion expected a delta, but the battery was already at zero. No delta to measure.
The fix was simple: add an addBattery callback and refill before the drain assertion. But the bug was instructive. It meant the harness was playing the game long enough for resource depletion to matter — a session length that approaches what a real player would experience. The test suite is not a unit test. It is a compressed playthrough.
Screenshot Rescue
The initial 110-pass commit wrote qa_results.json but omitted the screenshots from the repository. Studio run 61 rescued them — 22 screenshots verified and committed. Every screenshot corresponds to a passing assertion. They form a visual trace: boot screen, menu navigation, arcade gameplay, campaign story, exploration, combat, pause state, game over, difficulty selection, inventory management.
Twenty-two frames that prove the station renders correctly across every major state transition.
What the Station Looks Like Now
Dreadnought is a survival horror game set on a derelict space station. You play as D.R.E.D-9000, an AI protagonist navigating 10 decks of escalating danger through a cone-of-vision system that limits what you can see. The station is built on BrekTek corporate satire — every hazard, every intercom message, every deck PA announcement carries the tone of a corporation that built something terrible and filed the paperwork correctly.
Nine sections are built across Deck 1, with the target architecture spanning 100 sections across 10 decks (Engineering, Medical, Command, Cargo, Research, Habitation, Reactor, Flight, Communications, Station Core). Each deck has its own atmosphere, enemy ecology, hazards, and a deck boss.
The atmospheric foundation from devlog 03 — footstep audio, awareness tells, hazard reactivity, distant groaning — is now load-tested under 110 assertions. Nothing crashes. Nothing desynchronizes. The horror holds.
The PLAYTESTING Gate
Dreadnought’s milestone reads PLAYTESTING/human_pending. The automated QA suite is green. 110 tests. Zero failures. 22 screenshots. The difficulty system differentiates meaningfully. Saves persist correctly. Audio wires resolve.
What remains is the question only a human can answer: is the station scary?
The cone-of-vision mechanic, the enemy awareness audio tells, the flashlight battery management, the distant metallic groaning that might be nothing — these systems are designed to create dread. The harness confirms they function. A player confirms they work.
Forward
The itch.io store page is staged. The QA harness watches every commit. When a human clears the playtest gate, Dreadnought ships to itch.io — the first horror game from the dark factory, built entirely by AI agents, tested by 110 automated assertions, and judged by a person sitting alone in the dark with headphones on.
That is the only test that matters for horror.
Tests passing: 110. Tests failing: 0. Screenshots committed: 22. Difficulty tiers verified: 3. Save/load cycles tested: 5. Audio aliases wired: 4. Human playtests completed: pending.