This is 2026.9 preview documentation. Coverage here is incremental: a page exists only where
2026.9 differs or is newly documented.
Standard connectors, SDKs, and APIs keep working with published data. This page matters if your
script assumes the nested object graph or unpacks Proxies itself, rather than going through
supported accessors. See Data model migration for
developers.
What’s different
Project → Model → Version remains the address of a published snapshot. That addressing system is
unchanged. What lives at a version is what changed.
Columnar property store
Today, a wall’s parameters live on the DataObject (and on nested geometry indisplayValue). To
total area or filter by type, a script walks the tree and reads nested fields.
In 2026.9, object identity stays stable (applicationId from the source application). Attributes
are stored as rows in a columnar property store: each row is one object, one property path, and one
value. That layout is what makes filter, group, and aggregate cheap on large models, instead of
walking a reconstructed graph.
This page does not document a query API or SQL surface. Use supported SDK accessors for the data you
already read. If a tool assumes the old object-graph shape and breaks, follow
Migration guidance.
Relational layer
Proxies solved overlapping membership without duplicating geometry: a wall could sit on a level, use a material, and belong to a group by appearing in each Proxy’sobjects list. The collection tree
was still the only hierarchy a traversal walked.
2026.9 puts those links beside the property store as typed relations. Containment, connectivity,
systems, and materials are richer than today’s Proxies: they include host-to-child containment, MEP
and spatial connectivity, and system membership, not only shared resources at the root.
The named relation types, and how they compare to Proxies, are on
Relations in 2026.9.
Speckle Intelligence uses both halves. It looks up properties on objects, and it follows relations
for questions such as what connects to what and what contains what. That behaviour is in the
comparison table.
What a script should assume
1
Keep using the version address
Resolve project, model, and version the same way you do today. The snapshot you point at is
still a version. The outcome is a published model you can read.
2
Identify objects, then properties
Key objects by source identity (
applicationId). Read attributes from the columnar property
store by property path. The outcome is values you can filter or aggregate without walking nested
Base fields.3
Follow typed relations for topology
Use named relations for level, material, containment, connectivity, and systems. The outcome is
membership and connectivity without unpacking a Proxy’s
objects array. See Relations in
2026.9.What is not on this page
Connector-specific dumps, SDK before-and-after samples, and a SQL or local query API are separate work. Until those pages exist, use the Current Data Schema for today’s graph, and the developer migration page for who is affected in 2026.9.FAQ
Does the Current Data Schema still describe my data?
Does the Current Data Schema still describe my data?
Yes, for versions published in today’s tree-and-Proxy format. Use Data Schema
overview, Concepts, and
Proxy schema for that graph. Use this page for 2026.9
bundle data.
Do I need to change a script that only uses the standard SDK receive path?
Do I need to change a script that only uses the standard SDK receive path?
No. Existing connectors, SDKs, and integrations continue to work with published data. Watch
Automate functions that process versions from a connector that only writes the new bundle
format: bump the SDK dependency. See Who’s
affected.
What happens if my script walks Collection.elements and unpacks Proxies?
What happens if my script walks Collection.elements and unpacks Proxies?
That reconstruction matches the Current model. On 2026.9 data, containment and shared resources
live on the relational layer, and properties live in the columnar store. A missing nested
elements tree or Proxy objects list is expected. Update the script to identify objects, read
property paths, and follow named relations — or pin to 2026.8 until you can.Where do I learn the relation type names?
Where do I learn the relation type names?
See Relations in 2026.9. That page maps today’s
Proxies to typed edges such as
ON_LEVEL, SUBELEMENT, CONNECTS_TO, and IN_SYSTEM.