Skip to content

Commit f538593

Browse files
Merge pull request #882 from MaplePrivacyLabs/chore/mapleprivacy-transfer
Apply MaplePrivacyLabs identity and proxy namespace after transfer
2 parents 1242840 + 644dcd4 commit f538593

21 files changed

Lines changed: 576 additions & 72 deletions

File tree

‎.agents/skills/develop-maple-proxy/SKILL.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Develop and review the maple-proxy Rust crate, binary, container, a
55

66
# Develop Maple Proxy
77

8-
Work from the `OpenSecretCloud/Maple` repository root; the component source is
8+
Work from the `MaplePrivacyLabs/Maple` repository root; the component source is
99
under `proxy/`. Read the repository-root `AGENTS.md`, `proxy/README.md`,
1010
affected source and tests, and the root
1111
`.github/workflows/proxy-*.yml` files relevant to the change.
@@ -108,11 +108,11 @@ Release, `.github/workflows/proxy-publish.yml` independently compares that
108108
release's proxy version with the previous stable Maple Release. Unchanged
109109
versions skip, including the unbackfilled 0.3.3 baseline. A strictly newer,
110110
previously unpublished version automatically publishes Linux AMD64/ARM64 to
111-
`ghcr.io/opensecretcloud/maple-proxy` with exact, minor, major, and `latest`
111+
`ghcr.io/mapleprivacylabs/maple-proxy` with exact, minor, major, and `latest`
112112
tags. The workflow is serialized, rejects rollback and stale releases, verifies
113-
the public manifest, and supports manual retry from `master`. Maple's Actions
114-
repository must retain write access to that existing organization-scoped GHCR
115-
package. Treat any namespace, trigger, version policy, or package-access change
113+
the public manifest, and supports manual retry from `master`. The transferred Maple repository uses its `GITHUB_TOKEN` to publish in
114+
`MaplePrivacyLabs`; the new package must be public and grant Maple Actions write
115+
access. Existing old-namespace images remain available but receive no updates. Treat any namespace, trigger, version policy, or package-access change
116116
as a separate production-authority decision.
117117

118118
## Report

‎.agents/skills/develop-maple/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Develop and debug ordinary non-Agent-Mode Maple features and fixes
55

66
# Develop Maple
77

8-
Work from the `OpenSecretCloud/Maple` repository root. Treat `justfile`, `frontend/package.json`, `flake.nix`, `scripts/ci/`, and `.github/workflows/` as the command sources of truth. Check them again when they disagree with prose documentation.
8+
Work from the `MaplePrivacyLabs/Maple` repository root. Treat `justfile`, `frontend/package.json`, `flake.nix`, `scripts/ci/`, and `.github/workflows/` as the command sources of truth. Check them again when they disagree with prose documentation.
99

1010
## Route Specialized Work
1111

‎.agents/skills/develop-opensecret-sdk/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Develop and review the OpenSecret TypeScript/React and Rust SDKs un
55

66
# Develop the OpenSecret SDK
77

8-
Work from `OpenSecretCloud/Maple/sdk`. Read the repository-root `AGENTS.md`,
8+
Work from `MaplePrivacyLabs/Maple/sdk`. Read the repository-root `AGENTS.md`,
99
`sdk/README.md`, the affected implementation and tests, and the root
1010
`.github/workflows/sdk-*.yml` files relevant to the change.
1111

‎.agents/skills/release-maple/SKILL.md‎

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,30 @@ commit, external effect, and authority provided by the user.
3333
and repairs minor, major, and `latest` aliases without rebuilding an existing
3434
exact image. Version `0.3.3` is the explicit unbackfilled migration baseline.
3535
The container remains separately versioned at
36-
`ghcr.io/opensecretcloud/maple-proxy`.
36+
`ghcr.io/mapleprivacylabs/maple-proxy`.
3737
- GitHub Release creation does not itself submit the release IPA or AAB to
3838
Apple App Store review or Google Play.
3939

4040
Never push or merge `master`, create a release, retry a workflow, upload to a
4141
store, submit for review, or alter a rollout merely to see whether it works.
4242

43+
## Repository-transfer checkpoint
44+
45+
After the transfer to `MaplePrivacyLabs/Maple`, merge the prepared canonical
46+
repository metadata before creating a new release. Keep the existing updater
47+
Worker serving its deployed metadata until the first normal new-org release.
48+
Do not manually republish retained v3.3.10 updater metadata: its asset URLs use
49+
`OpenSecretCloud/Maple`, while the publisher and new Worker correctly require
50+
the current canonical owner. The next release generates new-owner URLs without
51+
changing the legacy updater fallback compiled into existing clients.
52+
53+
The first eligible proxy container publication creates
54+
`ghcr.io/mapleprivacylabs/maple-proxy`. GitHub creates new packages privately;
55+
make that package public in its settings, retain Maple Actions write access,
56+
and rerun only the proxy publisher if anonymous verification stops there. Do
57+
not create another release, change proxy versions, or overwrite exact tags to
58+
repair package visibility. Existing old-namespace images receive no updates.
59+
4360
## Prepare the version
4461

4562
1. Prepare the bump on a clean focused branch based on current `origin/master`;
@@ -50,7 +67,7 @@ store, submit for review, or alter a rollout merely to see whether it works.
5067
git fetch origin master
5168
git merge-base --is-ancestor origin/master HEAD
5269
current_version="$(nix develop --no-update-lock-file .#ci -c just get-version | tail -n 1)"
53-
released_version="$(gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.tag_name | ltrimstr("v")')"
70+
released_version="$(gh api repos/MaplePrivacyLabs/Maple/releases/latest --jq '.tag_name | ltrimstr("v")')"
5471
printf 'current=%s released=%s\n' "$current_version" "$released_version"
5572
```
5673
@@ -112,7 +129,7 @@ crates.io or GHCR publish.
112129
Preview GitHub's generated notes:
113130
114131
```bash
115-
gh api --method POST repos/OpenSecretCloud/Maple/releases/generate-notes \
132+
gh api --method POST repos/MaplePrivacyLabs/Maple/releases/generate-notes \
116133
-f tag_name="$tag" \
117134
-f target_commitish="$head_sha" \
118135
-f previous_tag_name="$previous_tag" | jq -r '.name, .body'
@@ -134,7 +151,7 @@ Create the GitHub Release exactly once. This creates the tag in the same flow:
134151
135152
```bash
136153
gh release create "$tag" \
137-
--repo OpenSecretCloud/Maple \
154+
--repo MaplePrivacyLabs/Maple \
138155
--target "$head_sha" \
139156
--title "$tag" \
140157
--notes-file "$notes_file"
@@ -148,12 +165,12 @@ release and workflow resolve to `head_sha`.
148165
Find and watch the new `Release` run:
149166
150167
```bash
151-
gh run list --repo OpenSecretCloud/Maple --workflow Release --event release \
168+
gh run list --repo MaplePrivacyLabs/Maple --workflow Release --event release \
152169
--commit "$head_sha" --limit 10 \
153170
--json databaseId,displayTitle,headSha,status,conclusion,url
154171
155172
gh run watch RELEASE_RUN_ID \
156-
--repo OpenSecretCloud/Maple --exit-status --compact
173+
--repo MaplePrivacyLabs/Maple --exit-status --compact
157174
```
158175
159176
Stay with every platform build, signature/canonical proof, artifact upload,
@@ -166,17 +183,17 @@ After `Release` succeeds, inspect the two required publication handoffs. Do
166183
not rerun the core Release to repair either sibling:
167184
168185
```bash
169-
gh run list --repo OpenSecretCloud/Maple --workflow 'Publish updater metadata' \
186+
gh run list --repo MaplePrivacyLabs/Maple --workflow 'Publish updater metadata' \
170187
--commit "$head_sha" --limit 10 \
171188
--json databaseId,status,conclusion,headSha,createdAt,url
172189
173190
pages_workflow='Promote Pages production'
174-
pages_enabled="$(gh variable list --repo OpenSecretCloud/Maple --json name,value \
191+
pages_enabled="$(gh variable list --repo MaplePrivacyLabs/Maple --json name,value \
175192
--jq '.[] | select(.name == "MAPLE_PAGES_PRODUCTION_ENABLED") | .value')" || exit 1
176193
if [ "$pages_enabled" = true ]; then
177194
pages_workflow='Publish Pages'
178195
fi
179-
gh run list --repo OpenSecretCloud/Maple --workflow "$pages_workflow" \
196+
gh run list --repo MaplePrivacyLabs/Maple --workflow "$pages_workflow" \
180197
--limit 10 \
181198
--json databaseId,status,conclusion,headSha,createdAt,url
182199
```
@@ -192,7 +209,7 @@ the unbackfilled `0.3.3` baseline. Retry it with manual dispatch; never create a
192209
proxy tag or Release and never rerun the core Release to repair it:
193210
194211
```bash
195-
gh run list --repo OpenSecretCloud/Maple --workflow 'Publish proxy container' \
212+
gh run list --repo MaplePrivacyLabs/Maple --workflow 'Publish proxy container' \
196213
--limit 10 \
197214
--json databaseId,status,conclusion,headSha,createdAt,url
198215
```
@@ -209,14 +226,14 @@ Report and repair sibling failures without altering completed release artifacts.
209226
Confirm the production ref in either mode:
210227
211228
```bash
212-
pages_sha="$(gh api repos/OpenSecretCloud/Maple/git/ref/heads/pages-production --jq .object.sha)"
229+
pages_sha="$(gh api repos/MaplePrivacyLabs/Maple/git/ref/heads/pages-production --jq .object.sha)"
213230
[[ "$pages_sha" == "$head_sha" ]]
214231
```
215232
216233
In legacy mode only, inspect Cloudflare's exact-commit check:
217234
218235
```bash
219-
gh api "repos/OpenSecretCloud/Maple/commits/$head_sha/check-runs" --jq '
236+
gh api "repos/MaplePrivacyLabs/Maple/commits/$head_sha/check-runs" --jq '
220237
[.check_runs[]
221238
| select(.name == "Cloudflare Pages")
222239
| select(.app.name == "Cloudflare Workers and Pages")
@@ -240,13 +257,13 @@ recreate a Release or rerun the core release merely to repair Pages.
240257
On failure, read the failed logs before acting:
241258
242259
```bash
243-
gh run view RELEASE_RUN_ID --repo OpenSecretCloud/Maple --log-failed
260+
gh run view RELEASE_RUN_ID --repo MaplePrivacyLabs/Maple --log-failed
244261
```
245262
246263
Retry only a terminal failure proven to be transient infrastructure trouble:
247264
248265
```bash
249-
gh run rerun RELEASE_RUN_ID --repo OpenSecretCloud/Maple --failed
266+
gh run rerun RELEASE_RUN_ID --repo MaplePrivacyLabs/Maple --failed
250267
```
251268
252269
Do not classify version/proof mismatches, deterministic builds, signing
@@ -258,11 +275,11 @@ or recreate a published release without separate explicit direction.
258275
Verify the published release and its assets:
259276
260277
```bash
261-
gh release view "$tag" --repo OpenSecretCloud/Maple \
278+
gh release view "$tag" --repo MaplePrivacyLabs/Maple \
262279
--json tagName,name,isDraft,isPrerelease,publishedAt,targetCommitish,url,assets
263280
264281
mkdir -p artifacts
265-
gh release download "$tag" --repo OpenSecretCloud/Maple --dir artifacts
282+
gh release download "$tag" --repo MaplePrivacyLabs/Maple --dir artifacts
266283
nix develop --no-update-lock-file .#ci -c \
267284
./scripts/ci/verify-release-artifacts.sh artifacts proxy
268285
```
@@ -303,7 +320,7 @@ trigger a release retry, or be reported as a Maple release failure. Inspect it
303320
only when Zapstore status is specifically useful:
304321
305322
```bash
306-
gh run list --repo OpenSecretCloud/Maple --workflow 'Publish to Zapstore' \
323+
gh run list --repo MaplePrivacyLabs/Maple --workflow 'Publish to Zapstore' \
307324
--commit "$head_sha" --limit 10 \
308325
--json databaseId,status,conclusion,headSha,createdAt,url
309326
```

‎.agents/skills/release-maple/scripts/preflight.sh‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/usr/bin/env bash
22
set -euo pipefail
33

4-
readonly expected_repo="OpenSecretCloud/Maple"
5-
readonly remote_url="https://github.com/OpenSecretCloud/Maple.git"
4+
readonly expected_repo="MaplePrivacyLabs/Maple"
5+
readonly remote_url="https://github.com/MaplePrivacyLabs/Maple.git"
66

77
fail() {
88
printf 'release preflight: %s\n' "$*" >&2

‎.github/workflows/proxy-publish.yml‎

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,28 @@ concurrency:
1818

1919
env:
2020
REGISTRY: ghcr.io
21-
IMAGE_NAME: opensecretcloud/maple-proxy
21+
IMAGE_NAME: mapleprivacylabs/maple-proxy
2222
UNBACKFILLED_PROXY_BASELINE: 0.3.3
2323

2424
jobs:
2525
prepare:
2626
name: Validate proxy publication
2727
if: >-
28-
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master') ||
28+
github.repository == 'MaplePrivacyLabs/Maple' &&
29+
github.repository_id == '923138240' &&
30+
github.repository_owner_id == '322649754' &&
31+
github.ref == 'refs/heads/master' &&
32+
((github.event_name == 'workflow_dispatch') ||
2933
(github.event_name == 'workflow_run' &&
3034
github.event.workflow_run.conclusion == 'success' &&
3135
github.event.workflow_run.event == 'release' &&
3236
github.event.workflow_run.path == '.github/workflows/release.yml' &&
33-
github.event.workflow_run.head_repository.full_name == github.repository)
37+
github.event.workflow_run.head_repository.full_name == github.repository))
3438
runs-on: ubuntu-latest
3539
timeout-minutes: 10
40+
permissions:
41+
contents: read
42+
packages: read
3643
outputs:
3744
publish: ${{ steps.plan.outputs.publish }}
3845
reconcile: ${{ steps.plan.outputs.reconcile }}
@@ -157,13 +164,9 @@ jobs:
157164
esac
158165
fi
159166
160-
registry_token="$(
161-
curl --fail --silent --show-error \
162-
"https://${REGISTRY}/token?scope=repository:${IMAGE_NAME}:pull" | jq -er '.token'
163-
)"
164-
curl --fail --silent --show-error \
165-
--header "Authorization: Bearer ${registry_token}" \
166-
"https://${REGISTRY}/v2/${IMAGE_NAME}/tags/list?n=10000" \
167+
# Only authenticated package metadata can confirm initial creation.
168+
# Anonymous denial/network errors must never mean an empty registry.
169+
python3 -I scripts/ci/proxy_registry_inventory.py \
167170
>"${RUNNER_TEMP}/proxy-tags.json"
168171
169172
plan="${RUNNER_TEMP}/proxy-publish-plan"
@@ -452,6 +455,10 @@ jobs:
452455
}
453456
454457
assert_release_is_current
458+
# GitHub creates a new container package as private. An operator must
459+
# make it public before anonymous verification or alias publication.
460+
# This workflow never changes package visibility on the user's behalf.
461+
python3 -I scripts/ci/proxy_registry_inventory.py --require-public >/dev/null
455462
image="${REGISTRY}/${IMAGE_NAME}"
456463
source_digest_dir=""
457464
if [ "${PUBLISHED_NOW}" = "true" ]; then

‎frontend/src-tauri/Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "3.3.11"
44
description = "Maple AI"
55
authors = ["tony@trymaple.ai"]
66
license = "MIT"
7-
repository = "https://github.com/OpenSecretCloud/Maple"
7+
repository = "https://github.com/MaplePrivacyLabs/Maple"
88
edition = "2021"
99
rust-version = "1.94.1"
1010

‎frontend/src/routes/proof.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ function Verify() {
612612
<p className="text-sm text-[hsl(var(--marketing-text-muted))] text-center mt-8">
613613
Both our{" "}
614614
<a
615-
href="https://github.com/OpenSecretCloud/Maple"
615+
href="https://github.com/MaplePrivacyLabs/Maple"
616616
target="_blank"
617617
rel="noopener noreferrer"
618618
className="text-foreground hover:text-foreground/80 underline"
@@ -665,7 +665,7 @@ function Verify() {
665665
<p className="text-sm text-[hsl(var(--marketing-text-muted))] text-center mt-8">
666666
Our code is open source:{" "}
667667
<a
668-
href="https://github.com/OpenSecretCloud/Maple"
668+
href="https://github.com/MaplePrivacyLabs/Maple"
669669
target="_blank"
670670
rel="noopener noreferrer"
671671
className="text-foreground hover:text-foreground/80 underline"

‎frontend/src/utils/githubRelease.test.ts‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import {
1212

1313
describe("repository metadata", () => {
1414
test("builds the current Maple GitHub URLs from the shared repository identity", () => {
15-
expect(GITHUB_REPOSITORY).toBe("OpenSecretCloud/Maple");
16-
expect(GITHUB_REPOSITORY_URL).toBe("https://github.com/OpenSecretCloud/Maple");
15+
expect(GITHUB_REPOSITORY).toBe("MaplePrivacyLabs/Maple");
16+
expect(GITHUB_REPOSITORY_URL).toBe("https://github.com/MaplePrivacyLabs/Maple");
1717
expect(GITHUB_RELEASES_API_URL).toBe(
18-
"https://api.github.com/repos/OpenSecretCloud/Maple/releases/latest"
18+
"https://api.github.com/repos/MaplePrivacyLabs/Maple/releases/latest"
1919
);
2020
expect(GITHUB_RELEASES_LATEST_URL).toBe(
21-
"https://github.com/OpenSecretCloud/Maple/releases/latest"
21+
"https://github.com/MaplePrivacyLabs/Maple/releases/latest"
2222
);
2323
});
2424
});
@@ -117,7 +117,7 @@ describe("getLatestDownloadInfo", () => {
117117
tag_name: "v9.9.9",
118118
name: "v9.9.9",
119119
published_at: "2026-08-23T00:00:00Z",
120-
html_url: "https://github.com/OpenSecretCloud/Maple/releases/tag/v9.9.9",
120+
html_url: "https://github.com/MaplePrivacyLabs/Maple/releases/tag/v9.9.9",
121121
assets: [
122122
{
123123
name: "Maple_9.9.9_universal.dmg",
@@ -144,7 +144,7 @@ describe("getLatestDownloadInfo", () => {
144144
linuxRpm: GITHUB_RELEASES_LATEST_URL,
145145
androidApk: GITHUB_RELEASES_LATEST_URL
146146
},
147-
releaseUrl: "https://github.com/OpenSecretCloud/Maple/releases/tag/v9.9.9"
147+
releaseUrl: "https://github.com/MaplePrivacyLabs/Maple/releases/tag/v9.9.9"
148148
});
149149
});
150150

‎proxy/Cargo.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ edition = "2021"
55
authors = ["OpenSecret"]
66
description = "Lightweight OpenAI-compatible proxy server for Maple/OpenSecret TEE infrastructure"
77
license = "MIT"
8-
repository = "https://github.com/OpenSecretCloud/Maple"
9-
homepage = "https://github.com/OpenSecretCloud/Maple/tree/master/proxy"
8+
repository = "https://github.com/MaplePrivacyLabs/Maple"
9+
homepage = "https://github.com/MaplePrivacyLabs/Maple/tree/master/proxy"
1010
keywords = ["openai", "proxy", "tee", "opensecret", "maple"]
1111
categories = ["web-programming::http-server", "api-bindings"]
1212
include = [

0 commit comments

Comments
 (0)