# Task identity and operonId

A task needs to stay itself while its shape changes. That is the entire job of the `operonId`. It is the durable identity Operon gives every task, so the same work stays recognizable when it moves, gets renamed, changes status, or switches between inline and file form.

## Why identity exists

Without a stable id, a task system has to guess. Is this checkbox the same work as that card? Did you move a task or make a new one? Title, file path, and line position all change constantly, so none of them can be the anchor. The `operonId` is the one thing that does not change, which is what lets Operon connect a task across the index, Task Editor, filters, Calendar, Kanban, recurrence, pinning, parent links, and time tracking without ever treating it as a new task.

## What an operonId looks like

It is a 7-character lowercase code made of letters and digits (`a` to `z`, `0` to `9`):

```md
- [ ] Draft release notes {{operonId:: abc1234}}
```

In a file task it sits in frontmatter instead:

```yaml
---
operonId: abc1234
---
```

The id is visible because Operon keeps tasks in Markdown, not in a hidden database. Seeing it is normal. Operon generates it for you and checks it against existing ids so two tasks do not collide. The `abc1234` above just shows the **shape** of an id; do not type or copy a literal id when making a task.

## How many ids are possible

The id space is large enough that you can mint a fresh random id whenever you need one. Each of the 7 positions holds one of 36 characters (`a` to `z` and `0` to `9`), so the number of possible ids is:

```text
36^7 = 78,364,164,096
```

That is about **78.3 billion** ids. A random id is therefore extremely unlikely to repeat, which is why Operon can simply generate one on demand and only needs to check against existing ids for the rare collision. To create one, let Operon mint it: use the [Task Creator](/docs/docs-020-task-creator/), or in a copyable example write the `{{operonId}}` template variable, which becomes a real id on paste. See [operonId template variables](/docs/docs-061-operonid-template-variables/).

## Identity survives change

A task keeps its `operonId`, and therefore its identity, through almost everything you do: editing the title, changing fields, moving through statuses, scheduling, pinning, tracking time, and opening it in any view. It also survives conversion between inline and file form **when Operon performs the conversion**, because Operon carries the id forward. See [Converting inline and file tasks](/docs/docs-019-converting-inline-and-file-tasks/).

The practical rule: use Operon actions for structural changes. The plain text is yours to edit freely; the identity is system memory.

## What not to do by hand

Treat `operonId` as read-only in normal use:

- **Do not edit it.** Changing it makes Operon see a different task.
- **Do not delete it.** Removing it strips the task of its durable identity.

Copying is the interesting case. If you copy a task line, you copy its id too, and now two lines claim one identity. You are allowed to do this; it is not a trap. The moment it happens, Operon detects the clash and the **Operon ID Conflict** manager steps in so the duplication never quietly corrupts your data. From the manager you give one copy a fresh id (or delete it), and the conflict is resolved. So if you simply want a second task, let Operon create it and it starts with its own id; if you deliberately copy one, expect the manager and use it to split the two apart. See [Duplicate IDs](/docs/docs-055-duplicate-ids/).

## FAQ

**Is the operonId private or telemetry?** No. It is local identity inside your vault. It implies no account and no remote tracking.

**Why not hide it completely?** Because the task lives in Markdown. Showing the id keeps the file self-contained and inspectable.

**Can I reuse an id on purpose?** Only in template workflows that intentionally repeat one id to wire relationships. See [Templater and QuickAdd workflows](/docs/docs-051-templater-and-quickadd-workflows/).

## Related

- [Operon Docs MOC](/docs/docs-001-operon-docs-moc/)
- [Inline tasks](/docs/docs-011-inline-tasks/)
- [File tasks](/docs/docs-013-file-tasks/)
