ADR-0008 — Public repository ahead of v1.0.0¶
Status: ✅ Accepted Date: 2026-07-29 Supersedes: — Superseded by: —
Context¶
Standards/04_GIT_WORKFLOW.md §5 and
ROADMAP.md's Milestone 10 both state, as
binding project rules, that v1.0.0 is reserved specifically for the moment this repository
goes public — independent of feature completeness — and that the repository stays private
until then. That rule was written for a reasonable default situation: don't put unfinished,
uncompiled, unplaytested work in front of an audience before it's ready to be judged as a
game.
It did not anticipate a second, independent reason to go public: hosting a documentation
website. GitHub Pages for a private repository requires a paid GitHub plan; the free path is
a public repository (or a separate public repository, considered and rejected below). The
project owner decided to publish comprehensive documentation — covering players, server
operators, module developers, and content creators — as a website now, well before Milestone
10 closes or v1.0.0 is cut, and made a deliberate choice to go public to host it rather than
wait or route around the rule.
This is exactly the kind of decision Documentation/ADR/README.md's "when to write one" list
calls out: it "deliberately departs from" a rule the project itself documents as binding, and
it will be questioned later by someone without this context — most obviously, "why is a
pre-alpha, never-compiled-in-editor repository public?"
What happens if we decide nothing: the docs site stays unhosted, or gets built anyway with
the visibility rule silently ignored and undocumented — which is worse, because it leaves
ROADMAP.md and Standards/04_GIT_WORKFLOW.md actively lying about the repository's actual
state.
Decision¶
The repository goes public now, during Milestone 10, specifically to host a public documentation website.
v1.0.0is redefined to mean the first stable, feature-complete release — it no longer marks "goes public," because going public already happened.
Concretely:
Documentation/ROADMAP.md's Milestone 10 section andStandards/04_GIT_WORKFLOW.md §5's tag table are both updated in the same change as this ADR to stop claiming the repository is private and to stop describingv1.0.0as the public-launch marker.legacy/— the original gamemode's Lua source and binary Source-engine assets, not this project's own work — stays out of the public repository exactly as it always has: it has been gitignored (/legacy/) since before this ADR, was never tracked, and remains local-only.Documentation/Legacy/*.md, the maintained behavioral-spec write-up (this project's own analysis, not the original source), is unaffected and stays public.CLAUDE.md,tasks.md, andhandoverdaily.md— assistant session artifacts that were briefly tracked in two early commits before being relocated to a centralized private repo and symlinked back — are removed from git history entirely as part of this same change, so the public repository's history matches its current, intentional untracked state.
Alternatives considered¶
Wait for v1.0.0 as originally planned¶
Keep the repository private until Milestone 10 (or later) genuinely closes, and hold the docs site until then.
Rejected. There's no technical dependency between "the game is finished enough to launch" and
"the documentation describing its design is worth publishing" — the documentation is already
substantive and accurate about what is and isn't verified (see the ✅/🟡 convention throughout
ROADMAP.md). Waiting has a real cost (no public documentation for an indefinite number of
milestones) and no corresponding benefit once the "don't misrepresent an unfinished game"
concern is handled by the documentation's own existing honesty about verification debt.
Separate public docs-only repository¶
Keep fobiat/AppleJackRP-s-box private per the original rule; create a second, public
repository that CI mirrors Documentation/ and the module READMEs into, and serve Pages from
that instead.
Rejected, but not because it's a bad idea — it was the safer default and remains a reasonable
fallback if this decision is ever revisited. It was rejected here because the project owner
weighed the ongoing maintenance cost of a second repository and a mirroring pipeline against
simply moving the public date up, and preferred the simpler single-repository outcome given
that legacy/'s actual sensitive content was already excluded by the existing .gitignore,
not something this decision newly has to solve.
Enable GitHub Pages on a private repo via a paid plan¶
Avoids the visibility question entirely.
Rejected: introduces a recurring cost for a project with no revenue, to work around a rule this ADR is choosing to change deliberately instead.
Consequences¶
Positive¶
- A documentation website can be hosted for free via GitHub Pages, auto-deployed on every
push touching
Documentation/**. - The repository's actual state (public, and why) matches what its own governing documents say, instead of drifting from them.
- The decision and its reasoning are on record, so "why did this happen before v1.0?" has an answer instead of provoking a re-litigation.
Negative¶
- The pre-alpha, never-compiled-in-editor, never-playtested state described throughout
ROADMAP.md's Verification debt section is now visible to anyone, not just the project owner. This is a real change in audience, not a cosmetic one, and the documentation's existing honesty about what is and isn't verified becomes load-bearing rather than optional. - Commit history, including author email metadata, is now public. This was already implicitly true of any git commit (author identity is part of every commit object regardless of file content) but becomes actually reachable by the public at this point rather than theoretically so.
- The
v9.xtag range's original rationale — "avoid implying whatv1.0.0, the public-launch tag, will contain" — no longer applies as stated, becausev1.0.0isn't the public-launch tag anymore. The range is kept anyway (renumbering released tags is worse than an explanation that's evolved), but the tag table's prose needs to say why, not silently drop the old reasoning.
Neutral¶
v1.0.0now needs its own definition (first stable, feature-complete release) rather than inheriting meaning from "when did this go public" — a small but real bookkeeping change anyone reading the tag table for the first time needs to absorb.
Compliance¶
Documentation/ROADMAP.mdandStandards/04_GIT_WORKFLOW.md §5are updated in the same change as this ADR — a stale "this repo is private" claim anywhere inDocumentation/after this lands is a documentation bug per Standards/02_DOCUMENTATION_STANDARDS.md §8.- Before the visibility flip is executed,
git log --all -- CLAUDE.md tasks.md handoverdaily.mdmust return nothing, andgit ls-files legacy/must return nothing — both are checked as part of the same change that makes the repository public, not assumed.
Notes¶
If this project later wants to re-privatize (e.g. to control the narrative around an actual
v1.0.0 launch announcement), that needs its own ADR superseding this one — going private
again is not free (existing clones, forks, and any indexed content stay out in the world
regardless), and that cost belongs in a future decision record, not assumed away here.