post
Every canonical field of a post record, how one is keyed tier by tier, and the relations its fields mint, generated from spec/fields/post.json
What you'll learn
You're mapping a column or a vendor field to a post field and need the exact name, its tier, and its normalization rule.
- every canonical field of a post, with its tier and type
- how a post is keyed, tier by tier
- which fields mint a relation to another type
Canonical field registry for post records (SPEC.md §4a, ADR-054): a signal type — something a pipeline finds and traverses from, never delivers to. Keyed on the platform-public URL and nothing else: a post without a URL is not a post the ledger can hold, so a signal declares no hash tier. Seeded with the first traverse binding; grows by demand under the rule of two.
Identity
A post is keyed by the first of these tiers the record has, strongest first.
| Tier | From | Key |
|---|---|---|
| 1 | url | the normalized value |
As the type file states it:
[
{
"field": "url"
}
]
Fields
| Field | Tier | Type | Normalization | Description |
|---|---|---|---|---|
url | identity | string (uri) | url | The post's platform-public URL — the one key tier (SPEC.md §4, the url rule: scheme and host lowercased, fragment and trailing slash dropped, path and query kept). |
platform | core | string | lower | The platform the post lives on, lowercased. No locked value domain yet (rule of two). |
text | core | string | trim | The post's body text, as published. |
published_at | core | string (date-time) | trim | When the post was published, RFC3339. |
likes | core | integer | none | Reaction count at read time. |
comments | core | integer | none | Comment count at read time. |
reposts | core | integer | none | Repost/share count at read time. |
Examples
| Field | Example value |
|---|---|
url | https://www.linkedin.com/posts/jane-doe_outbound-activity-7123456789 |
platform | |
text | We just shipped … |
published_at | 2026-09-01T14:30:00Z |
likes | 42 |
comments | 7 |
reposts | 3 |