# SnapshotDiff

**Kind:** Interface

**Source:** [`atloria-monorepo/apps/api/src/technical-docs/technical-docs-materializer.service.ts`](https://github.com/sherkety/atloria/blob/main/atloria-monorepo/apps/api/src/technical-docs/technical-docs-materializer.service.ts#L89)

S4 (code→docs delta): bucket the NEW snapshot's page-backed entities against the stored
per-entity signature baseline (`technicalSnapshot.signatureHashes`, stamped at the last
materialize — preserved across a re-parse because `upsertSnapshot` never writes it). This is
the techdocs analog of the screenshot pipeline's `screen_diff`: only entities whose PUBLIC
contract moved need their page regenerated. Description/comment-only edits don't change
`signatureHashOf`, so they don't churn a page. `pageEntities` must already be the junk-filtered
set that actually produces a document (derive it from the rendered docSet), so the diff aligns
exactly with what gets materialized.

## Properties

| Property | Type |
|---|---|
| `added` | `Set<string>` |
| `changed` | `Set<string>` |
| `removed` | `Set<string>` |
| `unchanged` | `Set<string>` |
