# Development relocates to a private home; the public repo becomes a source-only mirror

Status: accepted (2026-07-15)

> **Mirror exclusion:** this file names the private home and MUST stay on the
> mirror script's exclusion list. It never ships upstream.

claude-spt development, release builds, and GitHub releases move to the private
repository `BigscreenVR/claude-spt-bs`. All consumers are Bigscreen-internal and
gh-authenticated; spt-core's `gh_release` updater already resolves private
repositories through the `gh` CLI, so `spt adapter add/update` keeps working
unchanged once an installed manifest points at the private home.

`SaberMage/claude-spt` (the original public repo) receives **no new releases,
ever**, and no committed reference to the BigscreenVR org or the private repo
name. It remains a public source lineage via a **source-only mirror**: per
release, a script stages the frozen release tree minus an enumerated exclusion
list — `adapter/claude-spt.toml` (its `[update]` block names the private home),
`ci/publish/`, `docs/RELEASE-RUNBOOK.md`, `dist/`, and this ADR — commits one
squashed snapshot on the public `main`, tags it `vX.Y.Z`, and pushes with plain
`git` only (no `gh`, no GitHub API). The script hard-fails if the staged tree
contains any case-insensitive match for the BigscreenVR org name, the private
repo name, or the `-bs` release-repo shorthand; a new leak vector must be
consciously added to the exclusion list, never silently scrubbed. The public
tree is deliberately not buildable or installable.

Installed-adapter migration carries no committed pointer in the public repo:
per-platform migration scripts live on a `migration/vX.Y.Z` branch of the
private home, are fetched via `gh api` (raw contents) per instructions
distributed internally, patch the installed adapter's manifest `[update]`
target, then run `spt adapter update claude-spt`. Endpoints need no action;
they pick up the new adapter on next restart per the normal update contract.

Alternatives rejected: a GitHub "private fork" (impossible — fork networks
force public visibility; the private home is a plain mirror-push clone with no
fork relationship); a verbatim squash mirror (leaks the private-home reference
committed in the manifest); a scripted scrub/transform mirror (rewrites shipped
source, weakens tree identity); a final public "pointer release" announcing the
move (would commit or publish the private name upstream).
