--- epic: 5 story: 5.2 title: "Line References" status: draft --- ## Epic 5 — Variables, Line References & Aggregators **Goal:** Transform the notepad into a lightweight computational document. ### Story 5.2: Line References As a **CalcPad user**, I want to reference the result of a specific line by its line number, So that I can build calculations that depend on intermediate results without naming every value. **Acceptance Criteria:** **Given** line 1 evaluates to `100` **When** the user writes `line1 * 2` on any subsequent line **Then** the engine resolves `line1` to `100` and the result is `200` **Given** line 1 evaluates to `100` **When** the user writes `#1 * 2` on any subsequent line **Then** the engine resolves `#1` to `100` and the result is `200` **Given** line 3 contains `line1 * 2` referencing line 1 **When** the user inserts a new line above line 1 (shifting the original line 1 to line 2) **Then** the reference updates so it still points to the original line (now line 2) **And** the expression on the shifted line becomes `line2 * 2` or the reference is internally resolved correctly **Given** line 1 contains `#2 * 2` and line 2 contains `#1 + 3` **When** the engine evaluates the sheet **Then** a circular reference error is detected and reported on both lines **And** neither line produces a numeric result (both show an error indicator) **Given** a line references `#99` but only 10 lines exist **When** the engine evaluates the sheet **Then** the line displays an error such as "invalid line reference" **Given** line 5 is a comment or empty line with no numeric result **When** another line references `#5` **Then** the engine reports an error or returns `0` with a clear indication that the referenced line has no value