# CountLine

object type

One resolved count line: a StockRecord shard (binId present, lotCode per the shard) or the derived un-binned POOL line (binId absent; whole-LF scope only). BLIND-BY-SHAPE: while the doc is counting, snapshotQty/expectedAtCapture/variance read null — the counter sees WHAT to count, never the expected; the full detail projects once the doc leaves counting (the store + archive always carry it).

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `lineNo` | [Int](/types/#scalars) `Int!` | 1-based position (resolution order at start) — the capture addressing key. |
| `inventoryItemId` | [ID](/types/#scalars) `ID!` | The counted InventoryItem (the (variant x LF) junction). |
| `binId` | [ID](/types/#scalars) | The record shard's bin — ABSENT = the un-binned POOL line. |
| `lotCode` | [String](/types/#scalars) | The record shard's lot (lot-controlled shards ride the records for free). |
| `snapshotQty` | [String](/types/#scalars) | The line's on_hand at START (the audit/blind baseline; NOT the variance base). Null while counting (blind-by-shape). |
| `countedQty` | [String](/types/#scalars) | The captured physical quantity (>= 0 — zeros are explicit captures; overwritable while counting). Null until captured. |
| `expectedAtCapture` | [String](/types/#scalars) | The line's live on_hand POINT-READ at capture. Null while counting (blind-by-shape). |
| `capturedAt` | [String](/types/#scalars) | When the capture landed (UTC ISO-8601; re-captures overwrite). Null until captured. |
| `variance` | [String](/types/#scalars) | DERIVED: countedQty − expectedAtCapture; null while counting and on uncaptured lines. |
