···215215| official Bluesky PDS | `bench/official-pds-records.bench.ts` copied into `packages/pds` | best match for actor-store record CID/get/list/write paths |
216216| Pegasus | `pegasus/bench/bench_repository.ml`, `mist/bench/bench_mst.ml` | best match for repository block/MST internals; not a full HTTP/PDS route comparison yet |
217217218218+## stage checklist
219219+220220+For each protocol-parity or storage-behavior stage, do this before calling the
221221+stage complete:
222222+223223+- Re-read the relevant atproto spec or lexicon, then cross-check the official
224224+ PDS implementation and Tranquil.
225225+- Decide whether any new parser, codec, verifier, resolver, repository
226226+ primitive, OAuth helper, or JSON-path helper belongs in `zat`; keep it local
227227+ unless the reusable boundary is clear.
228228+- Add or update a focused ZDS benchmark for the changed surface.
229229+- Run the comparable Tranquil benchmark when Tranquil has the same seam.
230230+- Run the comparable official PDS probe when the official PDS has the same
231231+ seam.
232232+- Record any mismatch as either fixed, intentionally local with rationale, or a
233233+ concrete follow-up issue. Do not leave “close enough” behavior unnamed.
234234+218235Run Tranquil's metastore benchmark:
219236220237```sh
+5
docs/operations.md
···176176just docker-publish-release vX.Y.Z
177177```
178178179179+For protocol-parity or storage-behavior releases, also complete the
180180+[benchmark stage checklist](../bench/README.md#stage-checklist): revisit the
181181+Zat boundary, run matching Tranquil and official PDS probes where comparable,
182182+and document any remaining mismatch as an explicit decision or follow-up.
183183+179184## migration
180185181186ZDS supports browser-based account migration flows such as PDS Moover:
+8-5
docs/permissioned-data.md
···11# permissioned data
2233-Permissioned data support is experimental and operator gated. ZDS only exposes
44-`com.atproto.space.*` when explicitly enabled:
33+Permissioned data support is experimental and operator gated. ZDS documents the
44+`com.atproto.space.*` surface as experimental, and only enables the handlers
55+when explicitly configured:
5667```sh
78ZDS_PERMISSIONED_DATA=true
89```
9101010-When the flag is off, permissioned-data routes stay dark and should not create
1111-or mutate permissioned-space rows. When the flag is on, the API reference marks
1212-the space routes with `x-zds-experimental: true`.
1111+When the flag is off, permissioned-data routes return a structured
1212+`MethodNotImplemented` response and do not create or mutate permissioned-space
1313+rows. The API reference marks the space routes with
1414+`x-zds-experimental: true` so clients can treat the namespace as experimental
1515+even when an operator has not enabled it.
13161417## references
1518