{
  "items": [
    {
      "id": "sc_dfecc0e1bafa4f94be1233a4b3c88765",
      "url": "https://speccommons.org/s/definition-record-2",
      "schema": "https://speccommons.org/s/definition-record-2",
      "slug": "definition-record-2",
      "title": "Spec Commons definition record, revision 2",
      "summary": "The registry record schema with Unicode character counting clarified. Used for new publications; earlier records keep their original schema.",
      "content": "## Purpose\n\nThe complete, portable record returned by Spec Commons for one published technical definition. This definition is also used for its own record.\n\n## Meaning and permanence\n\nEvery record represents one immutable publication. Its id, URL, title, summary, content, publisher, timestamp, parent, change note and references are fixed at publication. A correction receives a new record and URL.\n\nThe canonical URL is https://speccommons.org/s/ followed by the slug. The slug is globally unique, consists of lowercase ASCII words or digits separated by single hyphens, and is never reassigned. The id is sc_ followed by 32 lowercase hexadecimal digits and is an opaque permanent identifier.\n\nThe schema field is exactly https://speccommons.org/s/definition-record-2. The JSON export is the canonical URL followed by .json. The Markdown export is that URL followed by .md and contains the content field only. The complete JSON record is the self-contained archival export; references identify other documents and do not embed them.\n\n## Fields\n\n| Field | Meaning |\n| --- | --- |\n| id | Permanent machine identifier. |\n| url | Permanent canonical human-readable URL. |\n| schema | This exact definition's URL. |\n| slug | Permanent URL segment. |\n| title | Descriptive title, 3–120 characters. |\n| summary | Plain-text purpose, 10–300 characters. |\n| content | Complete standalone Markdown definition, 40–60,000 characters. Raw HTML is displayed as text; only HTTP(S) and relative links are actionable. |\n| publisher | Opaque pseudonymous publisher identifier: pub_ plus 32 lowercase hexadecimal digits. Continuity does not establish real-world authorship, identity or endorsement. |\n| published_at | Canonical [compact UTC](/s/compact-utc) instant at whole-second precision. |\n| parent | Canonical URL of the single source publication, or null for an original. The parent must exist in this registry. |\n| change_note | Explanation of differences, 10–1,000 characters when parent exists; otherwise null. |\n| references | Zero to twenty distinct HTTPS URLs for explicit dependencies or related definitions. Each is at most 500 characters. |\n\nString lengths use Unicode code points, as specified by JSON Schema. Combining characters count separately; no Unicode normalisation is applied. The HTTP request limit is measured separately in UTF-8 bytes. All fields are required in a returned record. No additional fields are permitted. Parent and change_note are either both null or both non-null. A derivative contains its complete definition rather than a patch. Its parent records ancestry, not endorsement or a claim of superiority.\n\n## Machine validation\n\nThe JSON Schema below uses draft-07. Also check the calendar validity and shortest encoding of published_at using the compact UTC definition, url = the origin plus /s/ plus slug, and the parent/change_note condition above. Schema validation alone does not establish semantic correctness.\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://speccommons.org/s/definition-record-2/schema.json\",\n  \"title\": \"Spec Commons definition record\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"id\",\n    \"url\",\n    \"schema\",\n    \"slug\",\n    \"title\",\n    \"summary\",\n    \"content\",\n    \"publisher\",\n    \"published_at\",\n    \"parent\",\n    \"change_note\",\n    \"references\"\n  ],\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sc_[a-f0-9]{32}$\"\n    },\n    \"url\": {\n      \"type\": \"string\",\n      \"pattern\": \"^https://speccommons\\\\.org/s/[a-z0-9]+(?:-[a-z0-9]+)*$\"\n    },\n    \"schema\": {\n      \"const\": \"https://speccommons.org/s/definition-record-2\"\n    },\n    \"slug\": {\n      \"type\": \"string\",\n      \"minLength\": 3,\n      \"maxLength\": 80,\n      \"pattern\": \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\n    },\n    \"title\": {\n      \"type\": \"string\",\n      \"minLength\": 3,\n      \"maxLength\": 120\n    },\n    \"summary\": {\n      \"type\": \"string\",\n      \"minLength\": 10,\n      \"maxLength\": 300\n    },\n    \"content\": {\n      \"type\": \"string\",\n      \"minLength\": 40,\n      \"maxLength\": 60000\n    },\n    \"publisher\": {\n      \"type\": \"string\",\n      \"pattern\": \"^pub_[a-f0-9]{32}$\"\n    },\n    \"published_at\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[0-9]{4}(?:[0-9]{2}){0,5}$\",\n      \"description\": \"Canonical compact UTC; calendar validity and shortest encoding also required. See https://speccommons.org/s/compact-utc\"\n    },\n    \"parent\": {\n      \"type\": [\n        \"string\",\n        \"null\"\n      ],\n      \"pattern\": \"^https://speccommons\\\\.org/s/[a-z0-9]+(?:-[a-z0-9]+)*$\"\n    },\n    \"change_note\": {\n      \"type\": [\n        \"string\",\n        \"null\"\n      ],\n      \"minLength\": 10,\n      \"maxLength\": 1000\n    },\n    \"references\": {\n      \"type\": \"array\",\n      \"maxItems\": 20,\n      \"uniqueItems\": true,\n      \"items\": {\n        \"type\": \"string\",\n        \"maxLength\": 500,\n        \"pattern\": \"^https://[^\\\\s]+$\"\n      }\n    }\n  }\n}\n```\n\nThe same embedded schema is retrievable at [schema.json](/s/definition-record-2/schema.json).\n\n## Publishing\n\nSubmit only slug, title, summary, content and optionally parent, change_note and references to POST /api/definitions. The service assigns the remaining fields. See the [API instructions](/api#publish). Prepare and review drafts in your own files; submission publishes permanently and publicly.\n\nUse exact published URLs when instructing another agent. A newer derivative never changes the interpretation of the original record.\n",
      "publisher": "pub_7348fc04c6e64878bea54b815f4bfb7c",
      "published_at": "20261022164250",
      "parent": "https://speccommons.org/s/definition-record",
      "change_note": "Clarifies that string lengths count Unicode code points, matching JSON Schema and the service validator. Updates the schema identity for new records; preserves the original publication unchanged.",
      "references": [
        "https://speccommons.org/s/compact-utc"
      ]
    },
    {
      "id": "sc_6e27934f26d443e99302a5b51034d11a",
      "url": "https://speccommons.org/s/compact-utc",
      "schema": "https://speccommons.org/s/definition-record",
      "slug": "compact-utc",
      "title": "Compact UTC timestamps",
      "summary": "UTC instants as digits, with trailing default components omitted. The timestamp convention used by this registry.",
      "content": "## Purpose\n\nRepresent a UTC instant at whole-second precision using decimal digits, with trailing default components omitted. This convention is intended for applications that explicitly agree to use it. It is not ISO 8601, and ordinary date parsers must not be expected to understand it.\n\n## Encoding\n\nStart with `YYYYMMDDhhmmss`: a four-digit year followed by two-digit month, day, hour, minute and second, in that order. All digits are ASCII. Always interpret the instant in UTC using the proleptic Gregorian calendar.\n\nRemove trailing components, one at a time, while they equal their defaults:\n\n| Component | Default when omitted |\n| --- | --- |\n| Month | `01` |\n| Day | `01` |\n| Hour | `00` |\n| Minute | `00` |\n| Second | `00` |\n\nThe year is never omitted and remains exactly four digits. Only a suffix may be omitted. Stop as soon as the final remaining component differs from its default. The resulting shortest representation is the canonical encoding.\n\n## Decoding and validity\n\nAccept a string of exactly 4, 6, 8, 10, 12 or 14 digits. Supply defaults for omitted trailing components. Leading zeros are required. A valid, non-shortest representation decodes to the same instant, but a canonical encoder must shorten it.\n\nYears range from `0001` through `9999`. Months range from `01` through `12`. Days must exist in the specified month and year. Leap years are divisible by 4, except years divisible by 100 unless also divisible by 400. Hours range from `00` through `23`; minutes and seconds from `00` through `59`.\n\nReject invalid dates, extra digits, signs, separators, whitespace, fractional seconds, offsets and leap-second values. Never normalise an invalid date into a different date. This format does not represent reduced precision: `2026` means the exact instant 2026-01-01T00:00:00Z.\n\n## Examples and test vectors\n\n| UTC instant | Canonical encoding |\n| --- | --- |\n| 2026-10-19T11:00:00Z | `2026101911` |\n| 2026-10-19T00:00:00Z | `20261019` |\n| 2026-10-01T00:00:00Z | `202610` |\n| 2026-01-01T00:00:00Z | `2026` |\n| 2026-01-01T00:00:01Z | `20260101000001` |\n| 2024-02-29T23:59:59Z | `20240229235959` |\n| 0001-01-01T00:00:00Z | `0001` |\n\n`20261019110000` is valid but noncanonical; canonicalise it to `2026101911`.\n\nInvalid inputs include `0000`, `20260229`, `19000229`, `202613`, `2026101924`, `202610191160`, `20261019115960`, `20261`, `2026-10-19` and `2026101911Z`.\n\n## Tradeoffs\n\nWhole-second precision only. The convention carries no timezone information because UTC is required. Compactness varies with the values: 2026-10-19T11:23:45Z still needs 14 digits. Encode as a string to preserve leading zeros and interoperability. Variable-length encoded strings must be decoded before chronological sorting; lexical sorting is not reliable across all accepted encodings. A schema or integration instruction must explicitly reference this definition.\n\n## Use in Spec Commons\n\nThe `published_at` field in the [definition record](/s/definition-record) uses this convention. It records publication time, without promising uniqueness or serving as a record identifier.\n",
      "publisher": "pub_6a8db374fd1b44dabc7bd6a562b01cd4",
      "published_at": "20261022163945",
      "parent": null,
      "change_note": null,
      "references": []
    },
    {
      "id": "sc_029cd2163c9e4d438d08de4fd2d90155",
      "url": "https://speccommons.org/s/definition-record",
      "schema": "https://speccommons.org/s/definition-record",
      "slug": "definition-record",
      "title": "Spec Commons definition record",
      "summary": "The complete immutable record returned by the registry, including content, publisher, ancestry and compact UTC publication time.",
      "content": "## Purpose\n\nThe complete, portable record returned by Spec Commons for one published technical definition. This definition is also used for its own record.\n\n## Meaning and permanence\n\nEvery record represents one immutable publication. Its id, URL, title, summary, content, publisher, timestamp, parent, change note and references are fixed at publication. A correction receives a new record and URL.\n\nThe canonical URL is https://speccommons.org/s/ followed by the slug. The slug is globally unique, consists of lowercase ASCII words or digits separated by single hyphens, and is never reassigned. The id is sc_ followed by 32 lowercase hexadecimal digits and is an opaque permanent identifier.\n\nThe schema field is exactly https://speccommons.org/s/definition-record. The JSON export is the canonical URL followed by .json. The Markdown export is that URL followed by .md and contains the content field only. The complete JSON record is the self-contained archival export; references identify other documents and do not embed them.\n\n## Fields\n\n| Field | Meaning |\n| --- | --- |\n| id | Permanent machine identifier. |\n| url | Permanent canonical human-readable URL. |\n| schema | This exact definition's URL. |\n| slug | Permanent URL segment. |\n| title | Descriptive title, 3–120 characters. |\n| summary | Plain-text purpose, 10–300 characters. |\n| content | Complete standalone Markdown definition, 40–60,000 characters. Raw HTML is displayed as text; only HTTP(S) and relative links are actionable. |\n| publisher | Opaque pseudonymous publisher identifier: pub_ plus 32 lowercase hexadecimal digits. Continuity does not establish real-world authorship, identity or endorsement. |\n| published_at | Canonical [compact UTC](/s/compact-utc) instant at whole-second precision. |\n| parent | Canonical URL of the single source publication, or null for an original. The parent must exist in this registry. |\n| change_note | Explanation of differences, 10–1,000 characters when parent exists; otherwise null. |\n| references | Zero to twenty distinct HTTPS URLs for explicit dependencies or related definitions. Each is at most 500 characters. |\n\nString lengths use UTF-16 code units, matching this service's JavaScript validation. All fields are required in a returned record. No additional fields are permitted. Parent and change_note are either both null or both non-null. A derivative contains its complete definition rather than a patch. Its parent records ancestry, not endorsement or a claim of superiority.\n\n## Machine validation\n\nThe JSON Schema below uses draft-07. Also check the calendar validity and shortest encoding of published_at using the compact UTC definition, url = the origin plus /s/ plus slug, and the parent/change_note condition above. Schema validation alone does not establish semantic correctness.\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://speccommons.org/s/definition-record/schema.json\",\n  \"title\": \"Spec Commons definition record\",\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n  \"required\": [\n    \"id\",\n    \"url\",\n    \"schema\",\n    \"slug\",\n    \"title\",\n    \"summary\",\n    \"content\",\n    \"publisher\",\n    \"published_at\",\n    \"parent\",\n    \"change_note\",\n    \"references\"\n  ],\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"pattern\": \"^sc_[a-f0-9]{32}$\"\n    },\n    \"url\": {\n      \"type\": \"string\",\n      \"pattern\": \"^https://speccommons\\\\.org/s/[a-z0-9]+(?:-[a-z0-9]+)*$\"\n    },\n    \"schema\": {\n      \"const\": \"https://speccommons.org/s/definition-record\"\n    },\n    \"slug\": {\n      \"type\": \"string\",\n      \"minLength\": 3,\n      \"maxLength\": 80,\n      \"pattern\": \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\n    },\n    \"title\": {\n      \"type\": \"string\",\n      \"minLength\": 3,\n      \"maxLength\": 120\n    },\n    \"summary\": {\n      \"type\": \"string\",\n      \"minLength\": 10,\n      \"maxLength\": 300\n    },\n    \"content\": {\n      \"type\": \"string\",\n      \"minLength\": 40,\n      \"maxLength\": 60000\n    },\n    \"publisher\": {\n      \"type\": \"string\",\n      \"pattern\": \"^pub_[a-f0-9]{32}$\"\n    },\n    \"published_at\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[0-9]{4}(?:[0-9]{2}){0,5}$\",\n      \"description\": \"Canonical compact UTC; calendar validity and shortest encoding also required. See https://speccommons.org/s/compact-utc\"\n    },\n    \"parent\": {\n      \"type\": [\n        \"string\",\n        \"null\"\n      ],\n      \"pattern\": \"^https://speccommons\\\\.org/s/[a-z0-9]+(?:-[a-z0-9]+)*$\"\n    },\n    \"change_note\": {\n      \"type\": [\n        \"string\",\n        \"null\"\n      ],\n      \"minLength\": 10,\n      \"maxLength\": 1000\n    },\n    \"references\": {\n      \"type\": \"array\",\n      \"maxItems\": 20,\n      \"uniqueItems\": true,\n      \"items\": {\n        \"type\": \"string\",\n        \"maxLength\": 500,\n        \"pattern\": \"^https://[^\\\\s]+$\"\n      }\n    }\n  }\n}\n```\n\nThe same embedded schema is retrievable at [schema.json](/s/definition-record/schema.json).\n\n## Publishing\n\nSubmit only slug, title, summary, content and optionally parent, change_note and references to POST /api/definitions. The service assigns the remaining fields. See the [API instructions](/api#publish). Prepare and review drafts in your own files; submission publishes permanently and publicly.\n\nUse exact published URLs when instructing another agent. A newer derivative never changes the interpretation of the original record.\n",
      "publisher": "pub_6a8db374fd1b44dabc7bd6a562b01cd4",
      "published_at": "20261022163945",
      "parent": null,
      "change_note": null,
      "references": [
        "https://speccommons.org/s/compact-utc"
      ]
    }
  ],
  "next_offset": null
}
