Shared types for the dev.idiolect.* lexicon family. Two kinds of
content live here:
Cross-cutting reference shapes — lens, schema, encounter,
vocab, and strong-record references; tool identity; visibility.
Content-theory types — purpose, lens property, evidence,
caveat, basis. Shared across multiple records.
Record-specific combinator trees (condition, eligibility,
constraint, convention) live in their respective record lexicons,
not here.
Source: lexicons/dev/idiolect/defs.json
· Rust: idiolect_records::generated::defs
· TS: @idiolect-dev/schema/defs
Reference to a schema. Either an at-uri or a content hash; at
least one must be present.
Subfield Type Notes
uriat-uri AT-URI pointing to a schema record.
cidcid-link Content hash of the schema.
languagestring Schema-language identifier (atproto-lexicon, postgres-sql, protobuf, graphql, json-schema).
Subfield Type Notes
uriat-uri AT-URI of a lens record.
cidcid-link Content hash of the lens.
directionenum unidirectional / bidirectional.
Subfield Type Notes
uriat-uri (required) AT-URI of the encounter.
cidcid-link Optional CID for revision pinning.
Subfield Type Notes
uriat-uri AT-URI of a vocab record.
cidcid-link Content hash pinning a specific vocab revision.
Subfield Type Required Notes
uriat-uri yes AT-URI of the referenced record.
cidcid-link yes Content hash.
Parallel to com.atproto.repo.strongRef. Repeated here so the
defs tree is self-contained.
Subfield Type Required Notes
namestring yes Canonical tool name (panproto, coq, tlaplus, z3, nextest).
versionstring yes Version string.
commitstring no Optional source commit or build identifier.
A closed-enum string. Five values:
Value Meaning
public-detailedFull record body published.
public-minimalRecord published with elided detail (e.g. omits source instance).
public-aggregate-onlyRecord consumed only by aggregators; individual reads suppressed.
community-scopedReserved for v1 substrate enforcement; should not be served to parties outside the named community once enforcement lands.
privateShould not be published at all.
The substrate does not enforce these today; they are policy
hints.
The compound "what was done, on what material, for what end, by
which actor" tuple, reused across records whose subject is an
action performed, desired, endorsed, or prohibited.
Subfield Type Required Notes
actionstring (≤256) yes Action identifier, resolved against actionVocabulary.
materialmaterialSpecno What is being acted on.
purposestring (≤256) no The end the action serves.
actorstring (≤256) no Who performs or benefits.
actionVocabularyvocabRefno Vocab the action slug resolves against.
purposeVocabularyvocabRefno Vocab the purpose slug resolves against.
Subfield Type Notes
scopestring (≤256) Community-defined scope (classroom_materials, production_logs, scraped_corpus).
uriuri Optional pointer to a specific dataset.
A union covering the seven verification kinds. Each verification
record carries one of these as its property field.
Variant Used by
lpRoundtripkind: roundtrip-test
lpGeneratorkind: property-test
lpTheoremkind: formal-proof
lpConformancekind: conformance-test
lpCheckerkind: static-check
lpConvergencekind: convergence-preserving
lpCoercionLawkind: coercion-law
Subfield Type Required Notes
domainstring (≤512) yes Symbolic description of the input set.
generatoruri no Optional pointer to a generator that enumerates the domain.
Subfield Type Required Notes
specstring (≤2000) yes Generator specification (proptest Strategy reference, Hypothesis strategy, QuickCheck Arbitrary).
runnerstring no Name of the PBT runtime.
seedinteger no Optional seed for reproducibility.
Subfield Type Required Notes
statementstring (≤4000) yes The theorem, in the declared system syntax.
systemstring no Proof system (coq, lean4, agda, tlaplus, z3).
freeVariablesarray of strings no Names of free variables.
Subfield Type Required Notes
standardstring yes Standard identifier (iso-8601, rfc-3339, en-pos-v2.1).
versionstring yes Standard version.
clausesarray of strings no Optional subset of the standard's clauses.
Subfield Type Required Notes
checkerstring yes Static-checker identifier (panproto-check, clippy, tsc-strict).
rulesetstring no Named ruleset or configuration preset.
versionstring no Checker version.
Subfield Type Required Notes
propertystring (≤1000) yes Symbolic name or description of the preserved property.
boundStepsinteger no Optional bound on steps to fixpoint.
Subfield Type Required Notes
standardstring (≤256) yes Identifier of the coercion-law standard.
versionstring (≤64) no Optional version.
violationThresholdinteger no Cap on the violations a runner may report before falsifying.
A union of structured witnesses for retrospection findings.
Variant Used when finding kind is
evidenceDivergencemerge-divergence
evidenceLossdata-loss
evidenceMismatchreconciliation-mismatch
Subfield Type Required Notes
pathAarray of lensRef yes Lenses composed in path A.
pathBarray of lensRef yes Lenses composed in path B.
witnessInputcid-link no Optional CID where the two paths diverge.
Subfield Type Required Notes
sourceFieldstring yes Dotted path identifying the lost field.
targetSchemaschemaRefno Target schema where the loss was observed.
witnessInputcid-link no Witness input.
Subfield Type Required Notes
leftRecordcid-link no Left record.
rightRecordcid-link no Right record.
expectedEqualityOnstring no Dotted path or projection under which equality was expected.
Subfield Type Required Notes
modestring yes Short failure-mode identifier.
affectsarray of strings no Dotted paths or field names.
severityenum no info / warn / error.
A union of structured grounds for an attitudinal claim.
Variant Use when
basisSelfAssertedThe holder asserts directly. The default when basis is omitted.
basisCommunityPolicyGrounded in a community's published policy. Carries community (at-uri) and optional policyUri.
basisExternalSignalGrounded in something outside ATProto. Carries url, optional signalType, optional description.
basisDerivedFromRecordGrounded in another ATProto record. Carries source (strongRecordRef) and optional inferenceRule.
basisSelfAsserted has no fields; the variant tag itself is the
content. basisDerivedFromRecord.inferenceRule is the canonical
hook for declaring how this record derives from another
(classifier:purpose-v1, lens:v1-to-v2, aggregation:byte-mean,
...).