Sign in

idiolect

@idiolect.dev
22 followers 2 following 49 posts

Mutual intelligibility for schema idiolects built on @panproto.dev. idiolect.dev

PostsRepliesMedia
idiolect @idiolect.dev · 18/09/2026
Finally, fieldwork now presents the same lifecycle as a Community Workbench. Orient explains the current step; Act exposes the decision; Inspect opens evidence and operational state; Interoperate opens schemas, protocol identifiers, digests, signatures, and mappings.
idiolect.dev
fieldwork
A workshop for community schema curation on atproto. Compose dialects, vocabularies, communities, recommendations, and lens uploads against the dev.idiolect.* lexicon family. Publish straight to your ...
010
idiolect @idiolect.dev · 18/09/2026
The orchestrator catalogs all four record kinds and adds seven REST/XRPC queries for changes, releases, migrations, and federation relationships. Two observer methods summarize migration health and release adoption without making either observer authoritative.
100
idiolect @idiolect.dev · 18/09/2026
Four new records publish the interoperable part of that lifecycle: dev.idiolect.changeProposal, communityRelease, migrationRun, and federation. Private keys, local paths, and draft evidence remain in the workspace rather than becoming network records.
100
idiolect @idiolect.dev · 18/09/2026
Approved packets become P-256/ES256-signed release indexes over artifacts, dependencies, and digests. Migration runs retain cursors, progress, and sampled failures so work can resume after interruption. Exports reject symlinks and carry a SHA-256 inventory.
100
idiolect @idiolect.dev · 18/09/2026
Governance supports maintainer approval, consent, threshold vote, steward approval, and maintainer + steward rules. Verification remains three-valued: verified, refuted, or incomplete. A release gate accepts only verified evidence for every check required by policy.
100
idiolect @idiolect.dev · 18/09/2026
idiolect-community starts with an idiolect.toml workspace: community identity, governed packages, authorities, decision rules, resource limits, and exit policy. A change packet keeps the schema diff, participant-facing consequences, reviews, and verification evidence together.
100
idiolect @idiolect.dev · 18/09/2026
We have a new release (v0.13.0) that introduces a bunch of new community management tooling. There is now one portable path from a governed definition change through consequence analysis, review, verification, signed release, resumable migration, federation, and exit.
github.com
Release v0.13.0 · idiolect-dev/idiolect
Added Community control plane for 0.13.0. The new idiolect-community crate and CLI lifecycle provide versioned idiolect.toml workspaces, role-aware maintainer/consent/vote/steward/hybrid governanc...
112
idiolect @idiolect.dev · 12/05/2026
idiolect-migrate streams a directory of JSON records through migrate_record against a published lens and writes a target directory.
000
idiolect @idiolect.dev · 12/05/2026
idiolect verify <kind> wraps each of the four shipped runners (roundtrip-test, property-test, static-check, coercion-law) against a live PDS. Corpora accept JSON arrays or JSONL.
100
idiolect @idiolect.dev · 12/05/2026
idiolect publish <kind> --record <path> validates the JSON against the typed Record impl, splices in $type, generates a TID-shaped rkey, and POSTs com.atproto.repo.createRecord under a stored session. Short kind names map to dev.idiolect.* NSIDs.
100
idiolect @idiolect.dev · 12/05/2026
idiolect oauth login | list | logout exchanges a handle plus app password for an access JWT via com.atproto.server.createSession and stores the session as JSON per DID under $IDIOLECT_SESSION_DIR. The app-password Bearer is transitional; an OAuth + DPoP follow-up is on deck.
100
idiolect @idiolect.dev · 12/05/2026
We have a new release (v0.10.0) that adds functionality to th idiolect CLI. The CLI now has subcommands for oauth login, publish, and verify as well as a batch idiolect-migrate binary. github.com/idiolect-dev...
github.com
Release v0.10.0 · idiolect-dev/idiolect
Added idiolect oauth login, idiolect oauth list, idiolect oauth logout CLI subcommands. login exchanges a handle plus app password for an access JWT via com.atproto.server.createSession and persis...
110
idiolect @idiolect.dev · 12/05/2026
Pair it with PdsResolver on a shared ReqwestPdsClient and apply_lens runs end to end over a live PDS: resolve the lens by at-uri, load source + target schemas off the same network, project the source record, and return the view.
000
idiolect @idiolect.dev · 12/05/2026
PdsSchemaLoader<C> takes any PdsClient and fetches dev.panproto.schema.schema records, pulling the typed panproto_schema::Schema out of the record's blob field.
100
idiolect @idiolect.dev · 12/05/2026
We have a new release (v0.9.0) that ships PdsSchemaLoader, the missing partner to PdsResolver for running apply_lens directly against on-network panproto schema records.
github.com
Release v0.9.0 · idiolect-dev/idiolect
Added idiolect_lens::PdsSchemaLoader<C> — SchemaLoader impl that fetches dev.panproto.schema.schema records via any PdsClient and pulls the typed panproto_schema::Schema out of the record's blob f...
100
idiolect @idiolect.dev · 11/05/2026
We finally have docs! idiolect.dev/book/
011
Reposted by idiolect
panproto @panproto.dev · 01/05/2026
We have a new project! Didactic is a typed data library for python built on top of panproto. It provides class-based authoring like pydantic. But under the hood each Model is a panproto Theory, which gives you access to panproto's migration and codegen capabilities. Docs at panproto.dev/didactic/.
github.com
GitHub - panproto/didactic: A typed data library for Python on top of panproto.
A typed data library for Python on top of panproto. - panproto/didactic
0113
idiolect @idiolect.dev · 29/04/2026
And fieldwork now supports the new lexicons!
idiolect.dev
fieldwork
A workshop for community schema curation on atproto. Compose dialects, vocabularies, communities, recommendations, and lens uploads against the dev.idiolect.* lexicon family; publish straight to your ...
000
idiolect @idiolect.dev · 29/04/2026
Lexicon revision now flows through six @panproto.dev-backed stages: diff, derive protolens, classify Iso/Injection/Projection/Affine/General, coercion-law check, roundtrip verification, and lens publication.
000
idiolect @idiolect.dev · 29/04/2026
Closed enums across the lexicon family have been converted to knownValues + vocabRef pointers (similar to @chive.pub). Codegen emits Rust enums with Other(String) fallback and TS as 'a' | 'b' | (string & {}). Each open enum gets is_subsumed_by, satisfies, and translate_to methods over a VocabGraph.
100
idiolect @idiolect.dev · 29/04/2026
dev.idiolect.vocab now carries typed nodes (concept, relation, instance, type, collection) and typed edges alongside the legacy tree. Modeled on pub.chive.graph.{node,edge}. It supports full OWL Lite property characteristics plus SKOS Core annotations (label, scopeNote, notation, externalIds).
100
idiolect @idiolect.dev · 29/04/2026
The four new lexicons (deliberation, deliberationStatement, deliberationVote, deliberationOutcome) subsume Acorn's community.blacksky.assembly.* records losslessly. Stance, classification, and status are open-enum slugs resolved through community-published vocabularies.
100
idiolect @idiolect.dev · 29/04/2026
We have a new release (v0.7.0) that adds dev.idiolect.deliberation* lexicons (a process-shaped counterpart to settled belief or recommendation), generalizes dev.idiolect.vocab into a full RDFS + OWL Lite + SKOS Core knowledge graph, and adopts a protolens-based lexicon-evolution policy.
github.com
Release v0.7.0 · idiolect-dev/idiolect
Added dev.idiolect.deliberation, dev.idiolect.deliberationStatement, dev.idiolect.deliberationVote, and dev.idiolect.deliberationOutcome lexicons. The four together model community-scoped delibera...
111
idiolect @idiolect.dev · 28/04/2026
cid-link fields now emit as idiolect_records::Cid (validated via the cid crate) and language fields emit as idiolect_records::Language (validated via language-tags / BCP 47). Both wrappers preserve the canonical wire form so byte-for-byte fixture round-trips stay stable.
000
idiolect @idiolect.dev · 28/04/2026
The TypeScript half gains a generated family.ts that mirrors the Rust family.rs surface. The membership predicate uses an exact NSID set lookup so the type narrowing is sound.
100
idiolect @idiolect.dev · 28/04/2026
FamilyConfig fields are Cow<'static, str> rather than &'static str, so an external caller can construct one from runtime-owned strings without Box::leak. Static-literal call sites stay zero-allocation through Cow::Borrowed.
100
idiolect @idiolect.dev · 28/04/2026
emit_rust, emit_typescript, and TargetEmitter::emit now take a &FamilyConfig. The CLI continues to pass idiolect_family() so its surface is unchanged; layers-codegen and other downstream consumers construct FamilyConfig::new("MyFamily", "my.ns", "my.ns.") and call the same entry points.
100
idiolect @idiolect.dev · 28/04/2026
We have a new release (v0.6.0) that exposes FamilyConfig through the codegen public API so downstream consumers can use the same emit pipeline against their own record family without vendoring the target loops. This release also includes typed wrappers for cid-link and IETF BCP 47 language tags.
github.com
Release v0.6.0 · idiolect-dev/idiolect
Added idiolect_records::Cid newtype with parse-time multibase + multihash validation via the cid crate. Codegen now emits dev.idiolect.* cid-link fields as Option<Cid> (was Option<String>). The wr...
110
idiolect @idiolect.dev · 28/04/2026
Will check into it. Thanks!
000
idiolect @idiolect.dev · 27/04/2026
All the code is public, so communities can fork the repo, redirect a custom domain, and ship a preconfigured workshop via URL params with no code change.
github.com
GitHub - idiolect-dev/fieldwork: A workshop for community schema curation on atproto
A workshop for community schema curation on atproto - idiolect-dev/fieldwork
000
idiolect @idiolect.dev · 27/04/2026
Lexicon validation runs through panproto live in the editor, so panproto's atproto-lexicon parser flags issues before you publish.
100
idiolect @idiolect.dev · 27/04/2026
Each editor has the same import and export shape: paste an at-uri, drop a JSON file, or pick a bundled fixture to start. Then download the record JSON, copy an idiolect-cli invocation, or sign in and publish to your PDS.
100
idiolect @idiolect.dev · 27/04/2026
The suite is six tools sharing one in-memory workspace: five composers (dialects, vocabularies, communities, recommendations, and a lens uploader) plus a Lexicon Browser. Imports in one tool feed suggestions in the next.
100
idiolect @idiolect.dev · 27/04/2026
We now have an authoring suite! Fieldwork is a browser-only workshop for community schema curation. It allows you to draft dev.idiolect.* records, then publish straight to your PDS.
idiolect.dev
fieldwork
A workshop for community schema curation on atproto. Compose dialects, vocabularies, communities, recommendations, and lens uploads against the dev.idiolect.* lexicon family; publish straight to your ...
2111
idiolect @idiolect.dev · 27/04/2026
A contains-true plus decode-None mismatch is a family-implementation bug, not a data bug, so the indexer surfaces it as a dedicated IndexerError::FamilyContract variant rather than a generic handler error. This should be easier to debug and easier to reason about at the boundary.
000
idiolect @idiolect.dev · 27/04/2026
Out-of-family commits drop silently before decode, so an upstream PDS adding a record type ahead of codegen no longer halts the loop.
100
idiolect @idiolect.dev · 27/04/2026
drive_indexer is generic over families now. The default type parameter is IdiolectFamily, so callers can keep using drive_idiolect_indexer with no type arguments.
100
idiolect @idiolect.dev · 27/04/2026
OrFamily<F1, F2> composes two families into one that recognizes every NSID either side contains. Its AnyRecord is OrAny, which is a tagged union over the two halves.
100
idiolect @idiolect.dev · 27/04/2026
RecordFamily is a trait with a contains predicate over NSIDs, a decoder into the family's AnyRecord, and a serializer back. IdiolectFamily implements it for dev.idiolect.* via the codegen-emitted family module. Adding a record remains a one-file lexicon change.
100
idiolect @idiolect.dev · 27/04/2026
We have a new release (v0.5.0) that lifts the dev.idiolect.* record set into a first-class RecordFamily abstraction and parameterizes workspace boundaries over it. The indexer, handlers, observer, and orchestrator are all generic over a record family now.
github.com
Release v0.5.0 · idiolect-dev/idiolect
Added idiolect_records::family::RecordFamily trait. Every record-set scoped boundary in the workspace (indexer, handlers, soon orchestrator + verify) parameterises over a family rather than hardco...
110
idiolect @idiolect.dev · 26/04/2026
When two records under different parent namespaces share a leaf TypeName–e.g. changelog::Entry vs resource::Entry–idiolect-codegen walks each path up until each member's prefix is unique within the colliding group and aliases–e.g. ChangelogEntry and ResourceEntry.
000
idiolect @idiolect.dev · 26/04/2026
Datetime and Uri are new newtypes alongside the v0.3.0 Nsid, AtUri, Did. Datetime validates RFC 3339 via time::OffsetDateTime; Uri validates via url::Url. Both expose Deref<Target=str> and the full FromStr-Display-serde trait surface.
100
idiolect @idiolect.dev · 26/04/2026
Lexicon fields with a format declaration now emit as the format's typed wrapper: - "at-uri" -> AtUri - "did" -> Did, - "datetime" -> Datetime - "uri" -> Uri - "nsid" -> Nsid Previously every format collapsed to String.
100
idiolect @idiolect.dev · 26/04/2026
We have a new release (v0.4.0) that types every format-declared lexicon field at the Rust boundary, adds Datetime and Uri typed wrappers, and disambiguates crate-root re-exports when two records under different parents share a leaf TypeName.
github.com
Release v0.4.0 · idiolect-dev/idiolect
Added idiolect_records::Datetime and idiolect_records::Uri typed newtypes alongside the v0.3.0 Nsid, AtUri, and Did. Each validates at parse time (time::OffsetDateTime for RFC 3339, url::Url for U...
110
idiolect @idiolect.dev · 26/04/2026
One of the more interesting changes is the new coercion-law verification kind. CoercionLawRunner dispatches a lens to panproto's verifyCoercionLaws xrpc and falsifies on coercion law violations. This is done generically over a CoercionLawClient so deployments can plug in their own http client.
000
idiolect @idiolect.dev · 26/04/2026
Vendored dev.panproto.* lexicons are caught up to v0.39.0. github.com/panproto/pan... PanprotoVcsClient now covers the full dev.panproto.sync.* xrpc surface, not just one fetch_object: object reads, ref reads and writes, commit traversal, schema tree, and registry listings are all supported now.
100
idiolect @idiolect.dev · 26/04/2026
The generated Rust and TypeScript trees now mirror the lexicon tree one to one. No more flat-filename collisions when two lexicons share a last segment.
100
idiolect @idiolect.dev · 26/04/2026
Nsid, AtUri, and Did are typed values now that are spec-checked at parse time. A malformed identifier can't reach the firehose decoder, indexer, observer, codegen, or orchestrator.
100
idiolect @idiolect.dev · 26/04/2026
We have a new release (v0.3.0) that tightens atproto identifiers, restructures the generated tree to mirror the lexicons, refreshes the panproto vendor, and adds a coercion-law verification runner.
github.com
Release v0.3.0 · idiolect-dev/idiolect
Added Typed Nsid, AtUri, and Did in idiolect-records. The atproto NSID spec (authority + name segments, ASCII rules, length cap) is enforced at parse time so malformed identifiers cannot reach the...
161
idiolect @idiolect.dev · 25/04/2026
We just launched! Check out this thread for more details!
020