"The architecture decisions are already made. Do not reopen naming, product boundary, framework, or v0 backend selection before the first brick."
The Player Was Built in Documents First
There's a common way to start a project: open an editor and type, and let the architecture emerge from the code. It feels fast and it is a slow-motion disaster — every fundamental question stays open, so every one gets re-litigated in the middle of unrelated work, and the design becomes an average of whatever you believed on the days you happened to touch each file.
Ashen Reel was built the other way. Before the first line of player code, three documents were written and frozen: the architecture invariant (product and data boundaries, the twelve invariants), the parity contract (what's in scope, the P0/P1/P2/Never tiers, how to compare), and the implementation plan (the build order and phase gates). The decisions that must not change were made first, on purpose, so the code could assume them instead of arguing with them.
Three documents, three kinds of frozen:
What Freezing Buys and What It Doesn't
Freezing the architecture doesn't mean freezing everything — the docs are careful to separate the invariant from the incidental. Dependency versions and file trees live in code, because they rot; the invariants live in the doc, because they're load-bearing. And the freeze isn't forever: the discipline is that you change an invariant in the same change that moves the boundary, and you bump the doc's verification date. So the rule isn't 'never change your mind.' It's 'don't quietly re-decide the foundations while building on them, and when the foundation genuinely must move, move it deliberately and write down that it moved.'