1.6 KiB
epic, story, title, status
| epic | story | title | status |
|---|---|---|---|
| 13 | 13.2 | Dependency Graph & Lazy Evaluation | draft |
Epic 13 — Performance & Reliability
Goal: Instant evaluation, never lose work.
Story 13.2: Dependency Graph & Lazy Evaluation
As a CalcPad user, I want only the lines affected by a change to re-evaluate, So that editing a variable on line 5 of a 500-line sheet does not re-evaluate unrelated lines.
Acceptance Criteria:
Given the engine maintains a directed acyclic graph (DAG) of variable dependencies across all lines When a variable's value changes on a specific line Then only lines that directly or transitively depend on that variable are marked dirty and re-evaluated And lines with no dependency on the changed variable are not re-evaluated
Given a sheet where line 3 defines tax = 0.08 and lines 10, 25, and 40 reference tax
When the user changes tax to 0.10 on line 3
Then only lines 3, 10, 25, 40 (and any lines that depend on those) are re-evaluated
And all other lines retain their cached results without recomputation
Given a circular dependency is introduced (e.g., a = b + 1 and b = a + 1)
When the engine builds or updates the DAG
Then the circular dependency is detected before evaluation
And an error is displayed on the offending lines indicating a circular reference
And the rest of the sheet continues to evaluate normally
Given a line is deleted that other lines depend on When the DAG is updated Then all lines that referenced the deleted variable are marked dirty And those lines display an "undefined variable" error on next evaluation