# Data Model
## Canonical issue graph identity
An issue's 8-character `id:` is the canonical identity for local graph data. It
must be unique across the active and archived issue sets. The `number:` field
remains a human-facing convenience alias and may be reused by another clone, so
it is never written as a parent or relationship endpoint.
Current frontmatter stores canonical ids:
```yaml
parent: A1B2C3D4
relationships:
- id: rel_01M...
from: B2C3D4E5
to: A1B2C3D4
kind: blocks
display: blocks #42 Parent issue
```
Command inputs accept a number, an id, a filename fragment, or a unique title
fragment. All four spellings reach the same issue:
```sh
tix view 42
tix view '#42'
tix view A1B2C3D4
tix view 2026-10-28-A1B2C3D4-parent.md
tix view "Parent issue"
```
A numeric alias resolves only when exactly one issue carries that number. When
two merged files both claim `number: 42`, `tix view 42` is refused and names both
canonical ids; `tix view <id>` still selects one. No selector or graph operation
guesses between collisions.
Legacy files with numeric graph endpoints are readable only for migration. See
[issue-graph-migration.md](issue-graph-migration.md).
Raw frontmatter is a machine interface. Consumers must read `id:` values from
`parent:`, `relationships.from`, and `relationships.to`; CLI and MCP rendered
payloads retain `number` as a display alias beside the canonical identity.