← not-real.

BASE ANATOMY

CollectionSTALE · id null
name"Project Root"
@elementsdyn@detach[2 × DataObject]
DataObjectSTALE · id null
name"Wall Panel A"
units"mm"
heightdyn3000
materialdyn"Concrete"
@displayValuedyn@detach{Mesh}
applicationId: revit-id-1001
DataObjectSTALE · id null
name"Wall Panel B"
units"mm"
heightdyn3000
materialdyn"Concrete"
@displayValuedyn@detach{Mesh}
applicationId: revit-id-1002
MeshSTALE · id null
verticesdynchunk 12[36 numbers]
facesdyn[7 numbers]
applicationId: rhino-guid-44a1
Baseabstract · inherited by all
id : stringcontent hash
speckle_type : stringtype tag
applicationId? : stringsource id
totalChildrenCount : intclosure size
+ typed & dynamic props

[ Fig. 1 ] Base DAG — id = FNV-1a stand-in for Speckle's content hash

ai-assisted
Controls
● stale — ids invalid, press Serialize
Detachment → references
Root · @elements detached
Wall A · @displayValue detached
Wall B · @displayValue detached

Detached children are stored separately + referenced by id. Both walls point at one Mesh → stored once (dedup).

Chunking → DataChunks
Mesh · vertices chunkable
chunk size12
436

36 vertices ÷ chunk size = N DataChunk objects, each hashed + referenced.

Serialization → id & staleness
Wall A · height3000
10006000

Editing a value invalidates that object's id AND every ancestor's — staleness climbs past the detach boundary to the Root. Mutating the shared Mesh staleness-marks BOTH walls.

Decomposed objects
Not serialized — press Serialize
__closure (Root Collection)
Not serialized