mirror of
https://tangled.org/evan.jarrett.net/at-container-registry
synced 2026-08-29 12:17:00 +00:00
The namespace no longer depends on the personal PDS at jarrett.app being online. lexicons/ is compiled by Corpora into a signed AT Protocol repository and served from a Cloudflare Worker that holds no key, no state and no database. Signing happens offline; nothing at serving time signs. This is the failure that prompted it: when that PDS returned HTTP 500, OAuth logins failed with "invalid_scope: Failed to resolve requested permission set", and only for users whose Auth Server met the NSID on a cold cache — which is why it looked user-specific rather than global. lexicons/ stays the source of truth. dist/ is compiled output and is gitignored, as is any signing key, which lives outside both repositories and is needed for every publish: any record change moves the MST root and re-signs the whole repo. The README carries the cutover runbook and the distinction that is easiest to get wrong — lexicon.atcr.io is the host the Worker serves on and is created once by wrangler, while the six _lexicon.* TXT records are the authority pointers and are flipped separately. Cutover completed 2026-08-04. All six authority domains name did:web:lexicon.atcr.io. Verified by corpora verify (101 checks), goat, @atproto/lexicon-resolver returning our exact record CIDs, and a cold OAuth PAR against two unrelated Auth Servers. Two lexicons resolve for the first time: io.atcr.hold.image.getConfig and io.atcr.hold.stats.daily. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
25 lines
1.1 KiB
JSON
25 lines
1.1 KiB
JSON
{
|
|
"name": "atcr-lexicon-authority",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Serves io.atcr.* lexicons as a signed, static did:web authority. Source of truth is ../lexicons.",
|
|
"scripts": {
|
|
"build": "corpora build --lexicons ../lexicons --out dist --did did:web:lexicon.atcr.io",
|
|
"build:cutover": "corpora build --lexicons ../lexicons --out dist --did did:web:lexicon.atcr.io --dns-check cutover",
|
|
"domains": "corpora build --lexicons ../lexicons --out /tmp/corpora-domains --did did:web:lexicon.atcr.io --dns-check off --force",
|
|
"serve": "corpora serve --dist dist --port 2583",
|
|
"verify:local": "corpora verify --origin http://127.0.0.1:2583 --source ../lexicons --no-dns",
|
|
"verify:pre": "corpora verify --origin https://lexicon.atcr.io --source ../lexicons --no-dns",
|
|
"verify": "corpora verify --origin https://lexicon.atcr.io --source ../lexicons",
|
|
"deploy": "wrangler deploy",
|
|
"size": "wrangler deploy --dry-run --outdir .wrangler/bundled"
|
|
},
|
|
"dependencies": {
|
|
"corpora": "file:../../corpora"
|
|
},
|
|
"devDependencies": {
|
|
"wrangler": "^4.118.0"
|
|
}
|
|
}
|