···11# roadmap
2233-`zat` is a grab bag of **AT Protocol building blocks** in Zig: parsers, validators, resolvers, and small protocol helpers.
33+zat started as a small set of string primitives for AT Protocol - the types everyone reimplements (`Tid`, `Did`, `Handle`, `Nsid`, `Rkey`, `AtUri`). the scope grew based on real usage.
4455-This roadmap is intentionally short. If it doesn’t fit into one file, it probably belongs in issues.
55+## history
6677-## now
77+**initial scope** - string primitives with parsing and validation. the philosophy: primitives not frameworks, layered design, zig idioms, minimal scope.
8899-- use zat in real projects and let usage drive what's next
1010-- keep current APIs stable (0.x semver)
1111-- tighten docs/examples as real apps discover sharp edges
1212-- keep the "primitives, not framework" ethos
99+**what grew from usage:**
1010+- DID resolution was originally "out of scope" - real projects needed it, so `DidResolver` and `DidDocument` got added
1111+- XRPC client and JSON helpers - same story
1212+- JWT verification for service auth
1313+- handle resolution via HTTP well-known
1414+- handle resolution via DNS-over-HTTP (community contribution)
1515+- sync types for firehose consumption (`CommitAction`, `EventKind`, `AccountStatus`)
13161414-## next
1717+this pattern - start minimal, expand based on real pain - continues.
15181616-### polish
1919+## now
17201818-- improve docs around common workflows:
1919- - ~~resolving handle → DID → PDS~~ done: `HandleResolver` (HTTP + DoH), `DidResolver`, `DidDocument`
2020- - ~~making XRPC calls + parsing JSON~~ done: `Xrpc`, `json` helpers
2121- - verifying JWTs from DID documents (`Jwt` exists, docs could be better)
2222-- add more integration tests that hit real-world edge cases (without becoming flaky)
2121+use zat in real projects. let usage drive what's next.
23222424-### primitives
2323+the primitives are reasonably complete. what's missing will show up when people build things. until then, no speculative features.
25242626-- fill gaps that show up repeatedly in other atproto projects:
2727- - ~~CIDs and common multiformats plumbing~~ done: `multibase`, `multicodec`
2828- - ~~richer `AtUri` helpers~~ done: `AtUri` with parsing, formatting
2929- - ~~more ergonomic JSON navigation patterns~~ done: `json` module (still optional, no forced codegen)
3030- - sync types for firehose consumption (`CommitAction`, `EventKind`, `AccountStatus`)
2525+## maybe later
31263232-## later (maybe)
2727+these stay out of scope unless real demand emerges:
33283434-- lexicon codegen is still “probably a separate project”
3535-- higher-level clients/frameworks stay out of scope
2929+- lexicon codegen - probably a separate project
3030+- higher-level clients/frameworks - too opinionated
3131+- token refresh/session management - app-specific
3232+- feed generator scaffolding - each feed is unique
36333734## non-goals
38353939-- token refresh/session frameworks
4040-- opinionated app scaffolding
4141-- “one true SDK” that tries to do everything
3636+zat is not trying to be:
42373838+- a "one true SDK" that does everything
3939+- an opinionated app framework
4040+- a replacement for understanding the protocol