What it is
A story horror game shipped as one standalone Roblox place: a 96-stud veterinary corridor, 16 anomalies that each mutate specific parts and restore themselves, and a report you have to be right about. Two bugs nearly killed it — a capability-refused workspace write that terminated the entire server Script on frame one, and a desk placed inside the player's own camera — and both are now reproduced as failing tests before they are fixed.
Version history
Straight from the project’s own card data — what each version added.
16 anomalies, 8 nights, two endings, 2,812 lines of Luau.
b2-boot — the capability-refused write is caught and every boot stage is named.
b3-desk — solid intake counter, spawn moved off the wall, entity inside the corridor.
What broke, and what I’d change
Not written yet. This is the part only I can write — what actually went wrong, and what I’d do differently. It lives in builds/reflections/ward-seven.md (see _TEMPLATE.md); as soon as that file has words in it, this section fills in on the next build.
Everything else on this page — the spec, the version history, the file counts — is generated from the project’s own build notes and files, so nothing here is guesswork.
Build spec
The project’s own build notes, rendered. Open the raw .md ↗
Show the spec
Ward Seven — a Roblox horror game in a veterinary night clinic
Prompt:
"any other game?" → a story horror game, like Animal Hospital, with anomolies.
Then: "ok downloaded, any other game?" · "how do i play it?" · "theres no desk, wth"
The brief was a genre and two reference points, not a design document: a story horror game set in a veterinary clinic, in the register of Animal Hospital, with anomalies as the mechanic. That is enough to fix the shape of the whole thing — one shift, one corridor, exactly one thing wrong per night, and a report you have to be right about.
Skills used:
roblox-game-development— standalone.rbxlauthoring (Luneroblox.serializePlace), rbx-domflagship-quality-bar— the bar for what ships: real execution output as evidence, negative controls forisaac-portfolio-publish— this card, the build analysis, the play guide and the deploy.plan/todo— the six-stage pipeline was sequenced before any game code was written.
reflection checks, and the mock-engine smoke harness; the stale-Studio-lock entry in this skill is why the published file now carries its build id in the filename.
every assertion, honest limits written on the page rather than discovered by the user.
What it is: A single 39,597-byte place file that opens directly in Roblox Studio. 2,812 lines of Luau across six modules: a config (every tunable constant), a pure state machine with no Instances, a sixteen-entry anomaly catalogue with an explicit restore per entry, a procedural ward builder, a server Script and a client HUD script. Click Play and you are standing at the intake desk of Ward Seven at midnight.
Outcome: Six pipeline stages, 650 assertions, zero failures: 139 rules/story, 282 Roblox class and property names, 37 place-file checks after deserialisation, 146 server smoke checks driving eight nights to an ending, 40 client HUD checks against every state the server can send, and 6 build markers read back out of the published file. Both real bugs found in play were reproduced as failing tests first: a capability-refused workspace.FallenPartsDestroyHeight write that killed the entire server Script on frame one (so the ward — and the desk — never existed), and an intake desk placed half a stud behind the spawn point with CanCollide = false (invisible, intangible, inside the camera).
Verified failure text, not claims:
FAIL server script executes without error
([string "luau.load(...)"]:170: The current thread cannot write
'FallenPartsDestroyHeight' (lacking capability PluginOrOpenCloud))
FAIL ward built for the joined player
RESULT: FAIL — the server never built a ward; stopping here