full diff

org.anthers.work

anthers.org +7 −6
From
bafyreicvsjl4py76rzsavyjr35ly245lyue2uvhu4nlzmemdmvarplb26y indexed 2026-09-23 03:01 UTC View this version
To
bafyreihgsknfjzdptzwejhemr3d7hurzmazhu4fuiy5r6xvuqnxq2z3usu indexed 2026-10-17 00:07 UTC View this version

Compatibility

breaking 1 breaking change, 0 non-breaking changes.

Breaking changes (1)
  • ConstraintTightened ConstraintTightened { vertex_id: "org.anthers.work#credit.types:items", sort: "knownValues", old_value: "[\"created\",\"licensed\",\"ai\"]", new_value: "[\"created\",\"licensed\",\"ai\",\"generated\"]" }

Migration guidance

Constraint changes

  • ConstraintTightened ConstraintTightened { vertex_id: "org.anthers.work#credit.types:items", sort: "knownValues", old_value: "[\"created\",\"licensed\",\"ai\"]", new_value: "[\"created\",\"licensed\",\"ai\",\"generated\"]" }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "access": {
5 "description": "Whether reaching this work costs anything. ⚠️ A display hint and NEVER an authorization: it describes what a stranger would find, not what any particular viewer is entitled to, and a consumer that treats it as permission is wrong. An object rather than a bare string so that further context — such as where access is granted — can be added later without a breaking change.",
5 "description": "Whether reaching this work costs anything. ⚠️ A display hint and NEVER an authorization: it describes what a stranger would find, not what any particular user is entitled to, and a consumer that treats it as permission is wrong. An object rather than a bare string so that further context — such as where access is granted — can be added later without a breaking change.",
66 "properties": {
77 "state": {
88 "description": "`open` — anyone may reach the work at no cost. `gated` — reaching it requires supporting the creator or buying it, on terms shown on the work's own page. Terms themselves are deliberately absent: a price shown apart from the total a person actually pays is misleading, and this record cannot control how a consumer renders it.",
99 "knownValues": [
1010 "open",
1111 "gated"
1212 ],
1313 "maxLength": 32,
1414 "type": "string"
1515 }
1616 },
1717 "required": [
1818 "state"
1919 ],
2020 "type": "object"
2121 },
2222 "credit": {
2323 "description": "One credit on the work: a contribution, its kind, and where a person made it, who. The three parts answer different questions and are kept apart so each can be absent on its own terms. `types` is the only required one — a credit must assert something.",
2424 "properties": {
2525 "contributor": {
26 "description": "Who is credited. A DID names an on-network identity and is withheld until that identity accepts (see `org.anthers.creditAcceptance`); a name names an off-network contributor and is published as entered. A union rather than a bare string or a single object, so a third contributor kind can join later as a permitted addition. Optional: a credit with no `created` among its types may name nobody — a license or a machine makes nothing a person owns. Required whenever `created` is among the types, alone or in a blend — anything a human made must name who.",
26 "description": "Who is credited. A DID names an on-network identity and is withheld until that identity accepts (see `org.anthers.creditAcceptance`); a name names an off-network contributor and is published as entered. A union rather than a bare string or a single object, so a third contributor kind can join later as a permitted addition. Optional: a credit with no `created` among its types may name nobody — a machine makes nothing a person owns, and material brought in unnamed is not credited rather than credited anonymously. Required whenever `created` is among the types, alone or in a blend — anything a human made must name who.",
2727 "refs": [
2828 "#didContributor",
2929 "#namedContributor"
3030 ],
3131 "type": "union"
3232 },
3333 "role": {
34 "description": "The contribution this credit names, as a freeform title in the industry's own words — 'Written by', 'Cut by', 'Sound recording'. Freeform rather than a fixed list, because the useful roles differ by medium and a closed set would force every work into categories that fit none of them. Optional: a credit that is only a type assertion (a bare `ai` row, or an anonymous license) may leave the role unnamed.",
34 "description": "The contribution this credit names, as a freeform title in the industry's own words — 'Written by', 'Cut by', 'Sound recording'. Freeform rather than a fixed list, because the useful roles differ by medium and a closed set would force every work into categories that fit none of them. Optional: a credit that is only a type assertion (a bare `generated` row) may leave the role unnamed.",
3535 "maxGraphemes": 120,
3636 "maxLength": 1200,
3737 "type": "string"
3838 },
3939 "types": {
40 "description": "The kind(s) of contribution, published as entered. `created` — a person made this part. `licensed` — this part is pre-existing material used under a right (the source may be named or not, at the creator's choice; many licenses do not require attribution). `ai` — this part was machine-made: it records THAT it was, never which model, because a model owns nothing and can be granted nothing. An open set on purpose: a `created+ai` blend and the other non-empty subsets each mean what they say, and Anthers blesses no canonical 'counts as AI' reading of a blend — whether one clears a filter is the reader's own call, and two filters reading a blend opposite ways is a feature, not a defect.",
40 "description": "The kind(s) of contribution, published as entered. `created` — a person, or another entity capable of authorship in the copyright sense, made this part, and the part names them. Work-for-hire, licensed-in and public-domain source material all assert this one way, because the deal behind a credit is not the reader's question — who is responsible for the part is. `generated` — a machine not capable of authorship made this part: it records THAT it was, never which model, because a model owns nothing and can be granted nothing. ⚠️ First-edition values, which records published before October 2026 still carry: `ai` is what `generated` was called, with exactly its meaning, and `licensed` marked pre-existing material used under a right, its source named or not at the creator's choice — a named one reads as `created`, and an unnamed one has no successor, since material brought in unnamed is not credited rather than credited anonymously. An open set on purpose: a `created+generated` blend and the other non-empty subsets each mean what they say, and Anthers blesses no canonical 'counts as machine-made' reading of a blend — whether one clears a filter is the user's own call, and two filters reading a blend opposite ways is a feature, not a defect.",
4141 "items": {
4242 "knownValues": [
4343 "created",
4444 "licensed",
45 "ai"
45 "ai",
46 "generated"
4647 ],
4748 "maxLength": 16,
4849 "type": "string"
4950 },
5051 "minLength": 1,
5152 "type": "array"
5253 }
5354 },
5455 "required": [
5556 "types"
5657 ],
5758 "type": "object"
5859 },
5960 "didContributor": {
6061 "description": "A contributor identified by an on-network identity — their own DID. Naming one is a public claim about a third party, so it is withheld from the work record until that identity accepts it; an unconfirmed claim rendered as fact would travel somewhere a later correction cannot follow.",
6162 "properties": {
6263 "did": {
6364 "description": "The contributor's DID.",
6465 "format": "did",
6566 "type": "string"
6667 }
6768 },
6869 "required": [
6970 "did"
7071 ],
7172 "type": "object"
7273 },
7374 "main": {
7475 "description": "One entry in a creator's Catalog — a game, video, album, essay, or other work they have released. This record is the public LISTING for that work: it says what the work is and where to reach it, and it never carries the work itself. It exists only while the work is publicly listed, and whether a particular person may open the work is decided by the service hosting it, never by this record.",
7576 "key": "tid",
7677 "record": {
7778 "properties": {
7879 "access": {
7980 "ref": "#access",
8081 "type": "ref"
8182 },
8283 "credits": {
83 "description": "Who made this work and what of it they made — the creator's own liner notes. Optional and additive: a work with no credits simply lists none, which says nothing against it (credits are asserted, never assumed). A credit naming an on-network identity by DID is withheld until that identity accepts it (see `org.anthers.creditAcceptance`), because a public claim about a third party should not be made in their name without their consent. The `types` flags are published exactly as the creator entered them — including `ai` — so a stranger can build a real filter on machine-made work.",
84 "description": "Who made this work and what of it they made — the creator's own liner notes. Optional and additive: a work with no credits simply lists none, which says nothing against it (credits are asserted, never assumed). A credit naming an on-network identity by DID is withheld until that identity accepts it (see `org.anthers.creditAcceptance`), because a public claim about a third party should not be made in their name without their consent. The `types` flags are published exactly as the creator entered them — including `generated` — so a stranger can build a real filter on machine-made work.",
8485 "items": {
8586 "ref": "#credit",
8687 "type": "ref"
8788 },
8889 "maxLength": 100,
8990 "type": "array"
9091 },
9192 "description": {
9293 "description": "The creator's own summary of the work. Plain text, so that every consumer can render it safely without a sanitizer.",
9394 "maxGraphemes": 3000,
9495 "maxLength": 30000,
9596 "type": "string"
9697 },
9798 "kind": {
9899 "description": "What sort of work this is, in the sense of how it is handled — which player or reader opens it. Named `kind` rather than `type` because a record already carries `$type`, and two differently-scoped `type` fields in one object is a needless trap for anyone reading the JSON. `comic` and `music` are narrower than `ebook` and `audio`, which mean a book that is not a comic and audio that is not music. This is an open set: consumers must accept values not listed here, because new mediums are added over time.",
99100 "knownValues": [
100101 "text",
101102 "video",
102103 "music",
103104 "audio",
104105 "image",
105106 "comic",
106107 "ebook",
107108 "game",
108109 "software",
109110 "physical",
110111 "service"
111112 ],
112113 "maxLength": 64,
113114 "type": "string"
114115 },
115116 "releasedAt": {
116117 "description": "When the work was released to the public. This is the work's own date and the only one the record carries — record-creation time is already encoded in the record key, so a separate field for it would be a second, weaker answer to a question the key already answers.",
117118 "format": "datetime",
118119 "type": "string"
119120 },
120121 "title": {
121122 "description": "The work's name, as its creator wrote it. Plain text for the same reason the description is: every consumer should be able to render it without a sanitizer. Required and never empty — a listing that names nothing is worse than no listing, so a work without a title is not published rather than published anonymously.",
122123 "maxGraphemes": 300,
123124 "maxLength": 3000,
124125 "type": "string"
125126 },
126127 "url": {
127128 "description": "Where this work can be reached. Usually its page on the service hosting it; a creator hosting their own Catalog points at their own. Deliberately not assumed to be an anthers.org address, because a creator's work outliving any one host is the point.",
128129 "format": "uri",
129130 "type": "string"
130131 }
131132 },
132133 "required": [
133134 "kind",
134135 "title",
135136 "url",
136137 "releasedAt"
137138 ],
138139 "type": "object"
139140 },
140141 "type": "record"
141142 },
142143 "namedContributor": {
143144 "description": "A contributor with no network identity, named by the creator — an off-platform collaborator, or a source by title. Stays unconfirmed by construction: there is no actor who can accept.",
144145 "properties": {
145146 "name": {
146147 "description": "The contributor or source, as the creator entered it.",
147148 "maxGraphemes": 300,
148149 "maxLength": 3000,
149150 "type": "string"
150151 },
151152 "url": {
152153 "description": "A link giving context — a portfolio, a source page.",
153154 "format": "uri",
154155 "maxLength": 2048,
155156 "type": "string"
156157 }
157158 },
158159 "required": [
159160 "name"
160161 ],
161162 "type": "object"
162163 }
163164 },
164165 "id": "org.anthers.work",
165166 "lexicon": 1
166167}

Compare other versions