Glossary
Sandbox — an isolated, fully-deployed preview environment for a single branch or PR, running the actual Dentolize server + web app + supporting services (DB, cache, S3-compatible storage). Created/managed by the sandbox CLI on the homelab self-hosted runner.
Sandbox CLI (/opt/homelab/sandbox/bin/sandbox) — the host-side tool that does the real work: clone/build/deploy, seed, destroy, and (as of this PR's description) emit a registry snapshot of every live sandbox. Lives outside this repository.
Sandbox Ops (.github/workflows/sandbox-ops.yml) — the GitHub Actions workflow that actually executes reseed / reset-data / redeploy / destroy / update-docs on a given branch's sandbox. Both this PR's /sandbox command and the manual "Run workflow" button in the Actions tab dispatch it; neither duplicates its logic.
/sandbox command (.github/workflows/sandbox-command.yml, this PR) — a PR comment command that dispatches Sandbox Ops for the commenting PR's branch, gated to repo members.
Open sandboxes registry (.github/workflows/sandbox-registry.yml, this PR) — a pinned GitHub issue, auto-updated, listing every currently live sandbox (status, branch, PR, web URL, commit, deploy age).
Sandbox GC / teardown tracker (.github/workflows/sandbox-gc.yml, unrelated to this PR, unchanged) — a weekly report/issue listing sandboxes whose PR has already closed, as teardown candidates. Never destroys anything itself.
## 🧪 Sandbox block — the PR-description convention introduced in #428 that drives automatic sandbox settings (env overrides, seed mode, feature toggles) on every PR open/commit. Independent of, and still supported alongside, this PR's /sandbox comment command.
author_association — a field GitHub computes server-side on every comment/PR, indicating the commenter's relationship to the repo (OWNER, MEMBER, COLLABORATOR, CONTRIBUTOR, FIRST_TIME_CONTRIBUTOR, NONE, etc). Used by /sandbox's permission gate; cannot be forged via comment content.
workflow_dispatch — the GitHub Actions event type that lets a workflow be triggered via API call (or the Actions tab UI) rather than a repo event like a push or comment. Requires a token with sufficient scope; the default GITHUB_TOKEN cannot start one, which is why /sandbox uses a persisted host PAT instead.
Pinned issue — a GitHub repo feature limiting a repo to at most 3 simultaneously pinned issues, surfaced at the top of the Issues tab. The Open sandboxes registry issue is kept pinned via the GraphQL pinIssue mutation, best-effort (a full pin quota elsewhere in the repo will silently prevent it from staying pinned, without breaking the content update).