# ThreadProvenance

Where a thread came from when it was not woven in this loom: given by another agent, or inherited when the loom was seeded from another. An agent is always told it knows such a thread second-hand. Knowing something because you were told it is honest; believing you lived it would not be.

**Kind:** an object, used in responses.

## Fields

Every field is present in a response; empty ones are `null`.

| Field | Type | Description |
|---|---|---|
| `kind` | [`ThreadProvenanceKind`](https://docs.maitento.com/reference/types/thread-provenance-kind.md) | Whether it was a gift or an inheritance. |
| `sourceLoomId` | `uuid` | The loom it came from. |
| `sourceLoomName` | `string` | The source loom's name. |
| `sourceThreadId` | `uuid` | The thread in the source loom it was copied from. |
| `givenBy` | `string \| null` | Who gave it, for a gift: the agent's name, or "a person" / "an app" for a gift made outside a conversation. |
| `note` | `string \| null` | What the giver said with it, if anything. |
| `date` | `datetime` | When it arrived (UTC). |
| `ownedAt` | `datetime \| null` | When the knowledge became the holder's own (UTC): the agent built on it (reframed it, or wove the same thing itself), or used it often enough. From then on the tapestry no longer marks it second-hand, though this record stays. Null while it is still second-hand. |
| `isOwned` | `boolean` | True once the knowledge has become the holder's own (`ownedAt` is set). Set by Maitento. |

## Example

```json
{
  "kind": "Gift",
  "sourceLoomId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "sourceLoomName": "...",
  "sourceThreadId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "givenBy": "...",
  "note": "...",
  "date": "2026-10-26T12:00:00.0000000Z",
  "ownedAt": "2026-10-26T12:00:00.0000000Z",
  "isOwned": false
}
```

## Where it's used

- Inside [`LoomThread`](https://docs.maitento.com/reference/types/loom-thread.md)
