# page.cavu.forge.fact

> Something true about an entity for a stretch of the story's timeline: its name, an age, where someone lives, who they're married to — in whatever terms the project defines (page.cavu.forge.attribute). Entities are bare identities; every attribute, the name included, is a fact. Nothing is assumed static. Time is the timeline's order, not dates: a fact holds from its `from` event (inclusive; absent = from the start) until its `until` event (exclusive; absent = onward). Unless the attribute is defined as multi-valued, the holding fact with the latest start wins, so a later fact supersedes an earlier one without either being edited. Ages are stated, never computed — there is no calendar to compute them from.

- Kind: record
- Record key: tid
- Authority: forge.cavu.page
- Lexicon: 1
- Published by [cavu.page](https://lexicon.garden/identity/did:plc:citulkqjdzbnf7wd5xb6lled), not the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:citulkqjdzbnf7wd5xb6lled/page.cavu.forge.fact)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:citulkqjdzbnf7wd5xb6lled/page.cavu.forge.fact/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:citulkqjdzbnf7wd5xb6lled/page.cavu.forge.fact/analytics)

## Record (`page.cavu.forge.fact`)

Type: record · key tid

### Properties

- `attribute` (string, required): What this fact sets, in the project's own vocabulary (page.cavu.forge.attribute): "species", "age", "allegiance". Nothing is predefined except `name`, which is what an entity is called. Whether later facts replace earlier ones or accumulate comes from the attribute's definition; undefined attributes replace.
  - Constraints: maxLength: 640, maxGraphemes: 64
- `createdAt` (string · datetime, required)
- `during` (ref): An epoch the fact holds for: true at every event in it, wherever those fall in story order ("aged 11 during Year 412", "called Lucy during Book One"). Used instead of from/until.
  - Reference: `page.cavu.forge.defs#ref`
- `from` (ref): The event this starts at (inclusive), or an epoch — starts at its earliest event in story order. Absent: true from the beginning of the timeline.
  - Reference: `page.cavu.forge.defs#ref`
- `note` (string)
  - Constraints: maxLength: 10000, maxGraphemes: 2000
- `subject` (ref, required): The entity this is true of.
  - Reference: `page.cavu.forge.defs#ref`
- `target` (ref): The record the value points at: where they are (location), who the relationship is with, a place's parent or owner.
  - Reference: `page.cavu.forge.defs#ref`
- `until` (ref): The event this stops at (exclusive), or an epoch — stops at its earliest event in story order. Absent: true onward, until a later fact supersedes it.
  - Reference: `page.cavu.forge.defs#ref`
- `updatedAt` (string · datetime)
- `value` (string): The value as text: a name, "11", "dead", "blacksmith"; for a relationship, what the subject is to the target ("wife").
  - Constraints: maxLength: 20000, maxGraphemes: 4000

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Something true about an entity for a stretch of the story's timeline: its name, an age, where someone lives, who they're married to — in whatever terms the project defines (page.cavu.forge.attribute). Entities are bare identities; every attribute, the name included, is a fact. Nothing is assumed static. Time is the timeline's order, not dates: a fact holds from its `from` event (inclusive; absent = from the start) until its `until` event (exclusive; absent = onward). Unless the attribute is defined as multi-valued, the holding fact with the latest start wins, so a later fact supersedes an earlier one without either being edited. Ages are stated, never computed — there is no calendar to compute them from.",
      "key": "tid",
      "record": {
        "properties": {
          "attribute": {
            "description": "What this fact sets, in the project's own vocabulary (page.cavu.forge.attribute): \"species\", \"age\", \"allegiance\". Nothing is predefined except `name`, which is what an entity is called. Whether later facts replace earlier ones or accumulate comes from the attribute's definition; undefined attributes replace.",
            "maxGraphemes": 64,
            "maxLength": 640,
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "during": {
            "description": "An epoch the fact holds for: true at every event in it, wherever those fall in story order (\"aged 11 during Year 412\", \"called Lucy during Book One\"). Used instead of from/until.",
            "ref": "page.cavu.forge.defs#ref",
            "type": "ref"
          },
          "from": {
            "description": "The event this starts at (inclusive), or an epoch — starts at its earliest event in story order. Absent: true from the beginning of the timeline.",
            "ref": "page.cavu.forge.defs#ref",
            "type": "ref"
          },
          "note": {
            "maxGraphemes": 2000,
            "maxLength": 10000,
            "type": "string"
          },
          "subject": {
            "description": "The entity this is true of.",
            "ref": "page.cavu.forge.defs#ref",
            "type": "ref"
          },
          "target": {
            "description": "The record the value points at: where they are (location), who the relationship is with, a place's parent or owner.",
            "ref": "page.cavu.forge.defs#ref",
            "type": "ref"
          },
          "until": {
            "description": "The event this stops at (exclusive), or an epoch — stops at its earliest event in story order. Absent: true onward, until a later fact supersedes it.",
            "ref": "page.cavu.forge.defs#ref",
            "type": "ref"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          },
          "value": {
            "description": "The value as text: a name, \"11\", \"dead\", \"blacksmith\"; for a relationship, what the subject is to the target (\"wife\").",
            "maxGraphemes": 4000,
            "maxLength": 20000,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "attribute",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "page.cavu.forge.fact",
  "lexicon": 1
}
```
