Build log · Software & apps

Ward Seven — eight nights in a vet clinic, one thing wrong each night

Software & appsdone3 versionsRobloxhorror16 anomalies2,812 lines Luau650 assertions

reflection not written yet · every fact below is generated from this project’s own spec and files

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.

V1

16 anomalies, 8 nights, two endings, 2,812 lines of Luau.

V2

b2-boot — the capability-refused write is caught and every boot stage is named.

V3

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 .rbxl authoring (Lune roblox.serializePlace), rbx-dom
  • 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.

  • flagship-quality-bar — the bar for what ships: real execution output as evidence, negative controls for
  • every assertion, honest limits written on the page rather than discovered by the user.

  • isaac-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.

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