diff --git a/manifest.json b/manifest.json index e7b69ef7..2ac2f462 100644 --- a/manifest.json +++ b/manifest.json @@ -1,5 +1,5 @@ { - "_comment": "Pin refs to release tags for reproducible builds. 'main' is OK while all repos are internal.", + "_comment": "OSS surface registry — every repo listed here MUST be public on git.moleculesai.app. Layer-3 customer/private templates are NOT registered here; they are handled at provision-time via the per-tenant credential resolver (see internal#102 RFC). 'main' refs are pinned to tags before broad rollout.", "version": 1, "plugins": [ {"name": "browser-automation", "repo": "molecule-ai/molecule-ai-plugin-browser-automation", "ref": "main"}, @@ -40,7 +40,6 @@ {"name": "free-beats-all", "repo": "molecule-ai/molecule-ai-org-template-free-beats-all", "ref": "main"}, {"name": "medo-smoke", "repo": "molecule-ai/molecule-ai-org-template-medo-smoke", "ref": "main"}, {"name": "molecule-worker-gemini", "repo": "molecule-ai/molecule-ai-org-template-molecule-worker-gemini", "ref": "main"}, - {"name": "reno-stars", "repo": "molecule-ai/molecule-ai-org-template-reno-stars", "ref": "main"}, {"name": "ux-ab-lab", "repo": "molecule-ai/molecule-ai-org-template-ux-ab-lab", "ref": "main"}, {"name": "mock-bigorg", "repo": "molecule-ai/molecule-ai-org-template-mock-bigorg", "ref": "main"} ] diff --git a/scripts/clone-manifest.sh b/scripts/clone-manifest.sh index 3ad98580..4e9e5d99 100755 --- a/scripts/clone-manifest.sh +++ b/scripts/clone-manifest.sh @@ -8,27 +8,24 @@ # Requires: git, jq (lighter than python3 — ~2MB vs ~50MB in Alpine) # # Auth (optional): -# When MOLECULE_GITEA_TOKEN is set, embed it as the basic-auth password so -# private Gitea repos clone successfully. When unset, clone anonymously -# (works only for repos that are public on git.moleculesai.app). +# Post-2026-05-08 (#192): every repo in manifest.json is public on +# git.moleculesai.app. Anonymous clone works for the entire registered +# set. The OSS-surface contract is recorded in manifest.json's _comment +# — Layer-3 customer/private templates (e.g. reno-stars) are NOT in the +# manifest; they are handled at provision-time via the per-tenant +# credential resolver (internal#102 RFC). # -# This is the path the publish-workspace-server-image.yml workflow uses: -# it injects AUTO_SYNC_TOKEN (devops-engineer persona PAT, repo:read on -# the molecule-ai org) so the in-CI pre-clone step succeeds for ALL -# manifest entries — including the 5 private workspace-template-* repos -# (codex, crewai, deepagents, gemini-cli, langgraph) and all 7 -# org-template-* repos. +# MOLECULE_GITEA_TOKEN is therefore optional today. Kept supported for +# two reasons: (a) historical CI configs that still inject +# AUTO_SYNC_TOKEN remain harmless, (b) reserved for the case where a +# private internal-only template is later registered via a ci-readonly +# team grant — review must explicitly sign off on that, since it +# violates the public-OSS-surface contract. # -# The token never enters the Docker image: this script runs in the -# trusted CI context BEFORE `docker buildx build`, populates +# The token (when set) never enters the Docker image: this script runs +# in the trusted CI context BEFORE `docker buildx build`, populates # .tenant-bundle-deps/, then `Dockerfile.tenant` COPYs from there with # the .git directories already stripped (see line ~67 below). -# -# For backward compatibility — and so a fresh clone works without -# secrets when (eventually) the workspace-template-* repos flip public — -# the unset path remains a plain anonymous HTTPS clone. That path will -# FAIL with "could not read Username" on private repos today; CI MUST -# set MOLECULE_GITEA_TOKEN. set -euo pipefail