You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(permissions): add org.hyperboards.authWrite; mark design implemented
The repo has a third first-class record namespace — org.hyperboards (board,
displayProfile, described in AGENTS.md as the "Hyperboards visual layer") — that
had no permission set, so a user's Hyperboards data was not grantable via any
published set. Add org.hyperboards.authWrite granting create/update/delete over
both org.hyperboards.* record collections, matching the other two namespaces.
Verified it enumerates exactly the type:"record" defs on disk and expands to one
combined repo: scope.
Also update the surrounding docs that the new set and the now-shipped state make
stale:
- docs/design/permission-sets.md: Status "Proposed" -> "Implemented" (the sets
are published lexicon files in this PR, not a proposal); "two sets" -> three
throughout, with a new org.hyperboards.authWrite subsection and the three
distinct authorities (hypercerts.org, hyperboards.org, certified.app) spelled
out; corrected a stray claim that hypercerts/hyperboards "share a domain".
- SKILL.md: third table row; "two sets, never one" -> "one set per namespace".
- .changeset/permission-sets-crud.md: two -> three sets.
- AGENTS.md: the add-a-lexicon permission-set step now lists all three
namespaces.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .changeset/permission-sets-crud.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,11 +2,11 @@
2
2
"@hypercerts-org/lexicon": minor
3
3
---
4
4
5
-
Add two permission-set lexicons — `org.hypercerts.authWrite` and `app.certified.authWrite` — each granting create/update/delete over every record collection in its namespace.
5
+
Add three permission-set lexicons — `org.hypercerts.authWrite`, `org.hyperboards.authWrite`, and `app.certified.authWrite` — each granting create/update/delete over every record collection in its namespace.
6
6
7
7
A [permission set](https://atproto.com/specs/permission#permission-sets) lets any AT Protocol app request a whole bundle of `repo:` scopes with a single `include:<nsid>` OAuth scope, instead of enumerating each collection by hand. The user's PDS resolves and expands the set during the OAuth grant; the same published set can also be consumed by services (e.g. the Certified group service) when expanding API-key scopes.
8
8
9
-
There are **two** sets rather than one because the spec requires it: a permission set "is limited to expressing permissions that reference resources under the same NSID namespace as the set itself" and "can not address 'sibling groups' or 'parents'". `org.hypercerts`and `app.certified` are separate namespace authorities, so they cannot be combined in a single set — an app needing both requests both`include:`scopes.
9
+
There are **three** sets rather than one because the spec requires it: a permission set "is limited to expressing permissions that reference resources under the same NSID namespace as the set itself" and "can not address 'sibling groups' or 'parents'". `org.hypercerts`, `org.hyperboards`, and `app.certified` are separate namespace authorities, so they cannot be combined in a single set — an app needing more than one requests each`include:`scope.
10
10
11
11
Permission sets are published as-is (they are the source of truth for what gets published to AT Protocol) but have no TypeScript shape — `lex gen-api` cannot generate code for `permission-set` defs. They are therefore excluded from the codegen globs (`gen-api`/`gen-md`/`gen-ts`) and from `generated/exports.ts`, while still shipping as raw lexicon JSON.
Copy file name to clipboardExpand all lines: SCHEMAS.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,12 @@
7
7
8
8
Hypercerts-specific lexicons for tracking impact work and claims.
9
9
10
+
### `org.hypercerts.authWrite`
11
+
12
+
**Description:** Permission set granting create, update, and delete on every Hypercerts (org.hypercerts) record collection.
13
+
14
+
---
15
+
10
16
### `org.hypercerts.claim.activity`
11
17
12
18
**Description:** A hypercert record tracking impact work.
@@ -299,12 +305,6 @@ A free-text string value (e.g. a display name, wallet address, or other identifi
299
305
300
306
---
301
307
302
-
### `org.hypercerts.permissions.crud`
303
-
304
-
**Description:** Permission set granting create, update, and delete on every Hypercerts (org.hypercerts) record collection.
305
-
306
-
---
307
-
308
308
### `org.hypercerts.workscope.cel`
309
309
310
310
**Description:** A structured, machine-evaluable work scope definition using CEL (Common Expression Language). Tags referenced in the expression correspond to org.hypercerts.workscope.tag keys. See https://github.com/google/cel-spec. Note: this is intentionally type 'object' (not 'record') so it can be directly embedded inline in union types (e.g., activity.workScope) without requiring a separate collection or strongRef indirection.
@@ -490,6 +490,12 @@ A labeled URL reference.
490
490
491
491
---
492
492
493
+
### `app.certified.authWrite`
494
+
495
+
**Description:** Permission set granting create, update, and delete on every Certified (app.certified) record collection.
496
+
497
+
---
498
+
493
499
### `app.certified.graph.follow`
494
500
495
501
**Description:** Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.
@@ -547,12 +553,6 @@ The EIP-712 typed data message that was signed by the wallet. Contains the field
547
553
548
554
---
549
555
550
-
### `app.certified.permissions.crud`
551
-
552
-
**Description:** Permission set granting create, update, and delete on every Certified (app.certified) record collection.
553
-
554
-
---
555
-
556
556
### `app.certified.signature.defs`
557
557
558
558
**Description:** Common type definitions for cryptographic signatures attached to records, per the ATProtocol Attestation Specification.
0 commit comments