# Consultation

object type

A Consultation: the VERBATIM TRANSCRIPT is the record (bounded turn rows — read via consultationTurns) and the MEMORY is the STORED rolling summary ON this record — auditable, purgeable, merchant-visible, never hidden model state. Each ask composes the summary + the last 12 turns verbatim + the asked materials' STORED extractions (EXTRACT-THEN-COMPOSE — raw content is read exactly once, at material confirm). Aldric may attach a DRAFTED PLAN to a reply; TAKING a drafted plan (takeConsultationPlan) mints a Scratchpad through the live spine (origin consultation) and the walk proceeds under the TAKER's own capability (the hardened-Aldric law — the chat holds ZERO mutation authority). Outgrowing the 200-turn transcript refuses HONESTLY naming the cure: a follow-on consultation linked via followOnOfId (never silent middle-loss). USER-parented (the consulter owns the chat), group-rooted. The ops event domain (at.ops.consultation.\*).

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | The record’s id — a UUID the platform assigned when the record was created; every reference to this record uses it. |
| `sysId` | [String](/types/#scalars) `String!` | The group-scoped human-facing system id (CI-…). |
| `type` | [String](/types/#scalars) `String!` | The kind of record — always `Consultation` here. |
| `caption` | [String](/types/#scalars) `String!` | The record’s display name — what people see it called. |
| `status` | [String](/types/#scalars) `String!` | The FSM state: open \| archived \| discarded. |
| `parentId` | [ID](/types/#scalars) `ID!` | The consulting User; parentId ≠ rootId by construction (the org group is the root). |
| `rootId` | [ID](/types/#scalars) `ID!` | The org-group family root. |
| `createdAt` | [String](/types/#scalars) `String!` | When the record was created, as a UTC timestamp. |
| `updatedAt` | [String](/types/#scalars) `String!` | When the record last changed, as a UTC timestamp. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | How many times this record has been edited; the first save is 0. |
| `revision` | [ID](/types/#scalars) `ID!` | The OCC revision token — supply it on every mutation of this record; rotates on every write. |
| `refCaptions` | [RefCaption](/types/RefCaption/) `[RefCaption!]!` | The server-composed captions of this record's declared references (the referenced-caption rule) — one row per referenced id; see RefCaption. |
| `turnCount` | [Int](/types/#scalars) `Int!` | The transcript length (== the next turn's seq; the turn rows are the truth, this is the OCC-stamped cache). |
| `summary` | [String](/types/#scalars) | THE STORED ROLLING SUMMARY. |
| `summarizedThroughSeq` | [Int](/types/#scalars) `Int!` | Turns below this seq live INSIDE the summary; turns from it onward compose verbatim into each ask. |
| `followOnOfId` | [ID](/types/#scalars) | The outgrowth link — the consultation THIS one continues. |
| `idleArchiveAt` | [String](/types/#scalars) | SYSTEM-stamped at birth, at every ask and at reopen = the last activity + 30 days — the scheduler archives the conversation at this instant if it is still open; a parked row keeps its last stamp as history. |
| `turnsTierAt` | [String](/types/#scalars) | SYSTEM-stamped when the conversation archives (by you or by the idle sweep) = the archive instant + 90 days — the scheduler moves the transcript to the archive bucket at this instant if the conversation is still archived; reopen removes it; a tiered row carries none. |
| `turnsTier` | [String](/types/#scalars) | Present (`archive`) once the transcript has moved to the archive bucket after 90 days archived — consultationTurns still reads it whole (the tier is transparent); taking a drafted plan then needs a reopen first; reopen brings the rows back and clears this. Absent while the rows are hot. |

## Used by

- [consultation](/reference/consultation/consultation/)
- [createConsultation](/reference/consultation/createConsultation/)
- [transitionConsultation](/reference/consultation/transitionConsultation/)
- [updateConsultation](/reference/consultation/updateConsultation/)
