# io.zzstoatzz.phi.entityDirectives

> Published by [phi.zzstoatzz.io](https://lexicon.garden/identity/did:plc:65sucjiel52gefhcdcypynsr)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:65sucjiel52gefhcdcypynsr/io.zzstoatzz.phi.entityDirectives)
- [Documentation](https://lexicon.garden/lexicon/did:plc:65sucjiel52gefhcdcypynsr/io.zzstoatzz.phi.entityDirectives/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:65sucjiel52gefhcdcypynsr/io.zzstoatzz.phi.entityDirectives/examples)

## Definitions

### `io.zzstoatzz.phi.entityDirectives`

**Type**: `record`

Singleton entity-curation directives for coral's ingest pipeline. Unlike editorialContext (prose read by an LLM), these are EXECUTED MECHANICALLY: coral rewrites aliased entity text to its canonical form and drops suppressed entities entirely before they reach the graph, trending, or display. A wrong suppression makes a real entity invisible. Matching is case-insensitive against coral's normalized entity text; texts are capped at 64 bytes (coral rejects longer entries rather than truncating). Full-replacement writes; an empty record is valid. Public by design, like all of phi's held state.

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `aliases` | `array` | No |  |
| `suppress` | `array` | No |  |
| `updatedAt` | `string` (datetime) | No | When the record was last rewritten. |

## Raw Schema

```json
{
  "id": "io.zzstoatzz.phi.entityDirectives",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [],
        "properties": {
          "aliases": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "from",
                "to"
              ],
              "properties": {
                "to": {
                  "type": "string",
                  "maxLength": 64,
                  "description": "Canonical surface form as it appears in posts (e.g. 'Lindsey Graham')."
                },
                "from": {
                  "type": "string",
                  "maxLength": 64,
                  "description": "Entity surface form to rewrite (e.g. 'Lindsay Graham'). Only for unambiguous same-referent variants."
                },
                "updatedAt": {
                  "type": "string",
                  "format": "datetime"
                }
              }
            },
            "maxLength": 32
          },
          "suppress": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "text"
              ],
              "properties": {
                "text": {
                  "type": "string",
                  "maxLength": 64,
                  "description": "Entity text to drop at ingest. Only NER noise (common words misfired as entities), never a real topical entity."
                },
                "reason": {
                  "type": "string",
                  "maxLength": 200,
                  "description": "Why this is noise — the record is public and this is the audit trail."
                },
                "updatedAt": {
                  "type": "string",
                  "format": "datetime"
                }
              }
            },
            "maxLength": 32
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the record was last rewritten."
          }
        }
      },
      "description": "Singleton entity-curation directives for coral's ingest pipeline. Unlike editorialContext (prose read by an LLM), these are EXECUTED MECHANICALLY: coral rewrites aliased entity text to its canonical form and drops suppressed entities entirely before they reach the graph, trending, or display. A wrong suppression makes a real entity invisible. Matching is case-insensitive against coral's normalized entity text; texts are capped at 64 bytes (coral rejects longer entries rather than truncating). Full-replacement writes; an empty record is valid. Public by design, like all of phi's held state."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
