Skip to content

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.0 is 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 and Standards/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 describing v1.0.0 as 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, and handoverdaily.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.x tag range's original rationale — "avoid implying what v1.0.0, the public-launch tag, will contain" — no longer applies as stated, because v1.0.0 isn'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.0 now 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.md and Standards/04_GIT_WORKFLOW.md §5 are updated in the same change as this ADR — a stale "this repo is private" claim anywhere in Documentation/ 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.md must return nothing, and git 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.