···11# Test Audit Status
2233-As of 2026-03-11, the focused test-correctness and reference-audit pass is complete on rewritten history through `c51228e`.
33+As of 2026-03-12, the focused test-correctness and reference-audit pass is complete on rewritten history through `50447c9`.
4455That does not mean every test has been manually revalidated against every other PDS implementation line by line. It means:
66···1313The current baseline for saying "the audited suite is green" is:
14141515- `prove -lr t`
1616- - last green result in the realigned Meridian worktree: `Files=36, Tests=1847`
1616+ - last green result in the realigned Meridian worktree: `Files=40, Tests=2258`
1717- `prove -lv t/server-auth.t`
1818- `perl -c script/differential-validate`
1919- `PERLSKY_RUN_REFERENCE_DIFF=1 prove -lv t/reference-differential.t`
2020- `PERLSKY_RUN_REFERENCE_DIFF=1 prove -lv t/reference-differential-plc.t`
21212222-Focused suites were also rerun during individual fixes, especially around labels, firehose, repo writes, moderation, missing blobs, and service-auth behavior.
2222+Focused suites were also rerun during individual fixes, especially around labels, firehose, repo writes, moderation, missing blobs, service-auth behavior, local appview fallbacks, preference validation, handle resolution, and blob download headers.
23232424## Reference Hierarchy
2525···4545- Firehose tests must not assume the smallest possible CAR diff. The reference runtime guarantees normalized behavior, not a minimal encoding.
4646- Label replay and cursor handling need exclusive replay semantics, proper future-cursor rejection, and forward progress across unhandled backlog events.
4747- `com.atproto.repo.listMissingBlobs` needed a real implementation rather than an always-empty placeholder.
4848+- Deactivated accounts should still be able to establish and refresh sessions, but those responses must stay marked `active=false` with `status=deactivated`.
4949+- Local `app.bsky.*` emulation must be conservative: only synthesize owner-local feed/thread data when the PDS can answer authoritatively, and proxy upstream instead of inventing partial global state.
5050+- `app.bsky.actor.putPreferences` and `app.bsky.notification.putPreferencesV2` need shape validation; unvalidated merges are not a critical exploit here, but they are a real correctness and hardening issue.
5151+- `com.atproto.identity.resolveHandle` should reject malformed handles with `400 InvalidHandle`, not quietly treat them as misses.
5252+- `com.atproto.sync.getBlob` should ship the same download-hardening headers as the reference PDS (`X-Content-Type-Options`, `Content-Disposition`, `Content-Security-Policy`).
48534954## Known Intentional Divergences
5055···7075| --- | --- | --- |
7176| `t/api-util.t` | audited local regression | helper semantics, cursor validation, service-auth helper behavior |
7277| `t/app-routes.t` | local correctness/infrastructure | app route exposure and startup wiring smoke |
7373-| `t/app.t` | local correctness/infrastructure | application bootstrap and core route smoke |
7878+| `t/app.t` | audited local regression | application bootstrap plus malformed-handle rejection and startup hardening |
7479| `t/auth-jwt.t` | local correctness/infrastructure | JWT signing and validation behavior |
7580| `t/browser-smoke.t` | local correctness/infrastructure | optional browser-driven end-to-end wrapper |
7681| `t/catalog.t` | local correctness/infrastructure | lexicon/catalog exposure smoke |
···8893| `t/ipld-canonical.t` | local correctness/infrastructure | canonical IPLD encoding invariants |
8994| `t/ipld-codecs.t` | local correctness/infrastructure | DAG-CBOR and codec coverage |
9095| `t/labels.t` | audited local regression | label persistence, replay, negation, and cursor behavior |
9191-| `t/metrics.t` | local correctness/infrastructure | metrics endpoint and token-gating smoke |
9696+| `t/metrics.t` | audited local regression | metrics endpoint, token-gating smoke, and instrumentation contract for local appview behavior |
9297| `t/moderation.t` | audited local regression | takedown visibility and moderation behavior |
9398| `t/pds_smoke.t` | local correctness/infrastructure | broad local PDS smoke |
9499| `t/plc-identity.t` | direct reference differential | PLC mock driven by official library semantics |
95100| `t/reference-differential-plc.t` | direct reference differential | official runtime comparison in PLC mode |
96101| `t/reference-differential.t` | direct reference differential | official runtime comparison in baseline mode |
9797-| `t/remote-handle-resolution.t` | local correctness/infrastructure | remote handle resolution behavior |
102102+| `t/remote-handle-resolution.t` | audited local regression | remote handle resolution behavior and invalid-handle rejection |
98103| `t/repo-api.t` | audited local regression | record mutation and read semantics |
99104| `t/repo-firehose-car.t` | audited local regression | repo commit CAR shape and firehose interactions |
100105| `t/repo_formats.t` | audited local regression | direct repo wire-format and CAR expectations |
101106| `t/server-auth.t` | direct reference differential | auth/session/service-auth behavior repeatedly compared to official runtime |
102107| `t/service-proxy-local.t` | audited local regression | local appview fallback behavior |
103103-| `t/service-proxy.t` | local correctness/infrastructure | upstream service-proxy behavior |
108108+| `t/service-proxy.t` | audited local regression | upstream proxy behavior plus conservative local appview fallback and preference semantics |
104109| `t/sqlite-binary.t` | local correctness/infrastructure | SQLite binary round-trip correctness |
105110| `t/store-sqlite.t` | audited local regression | store-level session, invite, label, and repo persistence behavior |
106111| `t/tid-repair.t` | local correctness/infrastructure | TID repair and recovery helpers |
···1241293. add a written mapping from each local-only suite to the protocol or product invariant it is meant to protect
1251304. decide whether to tighten admin auth to reference semantics or document the bearer shortcut as a permanent extension
1261315. move the testing-friendly email confirmation path behind an explicit smoke/dev switch instead of ambient behavior
132132+6. keep narrowing the local `ServiceProxy` surface until every locally answered `app.bsky.*` field is either authoritative or explicitly documented as a local-only extension
127133128134## Practical Reading Of The Current Status
129135