What stays the same
Checks, thresholds, plan caps, BCF export, and result history follow the current guides: Authoring still uses a scope and a check. In 2026.9 the editor shows those as short sentences. A rule can also include a related object.Project standards
2026.9 does not include Project standards. The Data Validation sidebar shows Run check and Checks only. You cannot create, import, or spawn checks from a project standard. Reuse across the workspace is planned later as a rollup from Checks into workspace standards. That flow is not available yet. Until it is, author and save checks.Default object scope
In the current product, a new check starts with a global filter that keeps connector BIM objects and drops proxy and geometry noise. In 2026.9, a new check starts with an empty global scope. The version already contains user-facing objects only, so that starting filter is not needed. Do not follow the current Default scope guidance on a 2026.9 version. Leave the global scope empty, then narrow with category, type, or parameter filters inWHERE when you need a tighter rule.
Unsaved drafts that still carry the old default are cleared when you reopen the editor. Saved
checks keep their stored rules. After save, you can edit name and description only.
Checks against related objects
In the current product, a rule looks at properties on one object. In 2026.9 you can also check that object against something it is related to, because those relationships are in the published version. Use Add related object on the rule. The editor adds a binding row. The name on the left (@host, @room, @connected) is how later conditions address that object. Pick a
relationship from the list the version actually carries. Friendly labels include Host
element, Sub-elements, Room, Bounded room, Assembly, and Connected
element.
Then choose a property on that related object from the path picker. Related paths show as
@host · Fire Rating in the sentence pills.
Add condition adds a scope filter above the check. It does not turn the existing check into a
filter.
Rules display as short sentences, for example category is Doors. Select a sentence to edit
it.
Direction, all versus any, and narrowing
The arrow on the binding follows the relation forward (for example a door toward its host wall) or backward (a wall toward the elements hosted on it). Click the arrow to reverse it. all (default) means every related object must satisfy the check. any means one related object is enough. That setting applies to the check only. A scope filter on a related path still keeps a subject when at least one related object matches, regardless of all or any. Open where and select Narrow related objects to keep only some related objects, for example hosts whose category is Walls. Those filters run on the related object. They do not use@ prefixes.
When there is no related object
A subject with no related object fails a check that reads that binding. If a door with no host should be not applicable instead of a fail, add a scope condition that the related path exists (for example@host is present) before the check.
Examples you can author:
- A door’s fire rating must match the wall that hosts it
- If the host wall is fire-rated, the door must be rated. Unrated walls are not applicable, not a fail (scope on the host rating, then check the door)
- Every door must be hosted on a wall
- Every wall that bounds a room carries a rating (all), or at least one of them does (any)
- A door can be checked against a room reached through the host wall: add a second related
object, set of to
@hostinstead of this element, and pick Bounded room or Room
@name, or while a later binding
chains from it. Update those references first.
Map labels before you compare
When a check compares two properties (Equals property), 2026.9 can map each side’s raw labels onto shared values before it compares them. This is how60 MIN and 1 HR become the
same rating, and how a 2 HR wall can require a door of at least 90 MIN.
Select Equals property, pick the other path, then open the comparison control beside it. The
control shows = until you add a mapping or change the comparison.
Set Compare to = equals, ≥ at least, or ≤ at most. Under This value maps and
Other value maps, select Add mapping, pick a raw value from the list, and set what it
maps to. Unmapped values stay as they are.
Map both sides to the same numbers when the labels should count as equal. Map the other side to a
required minimum and use ≥ at least when one side must be stricter than the other.
The same mapping works when the other path is on a related object, such as a host wall.
Match a property wherever it sits
A Fire Rating parameter is not always on the same path. Click the path-matching control next to the path to cycle modes:- Exact (
=) — the full path from the picker - Suffix (
*.x) — every property whose path ends with that segment, for example Fire Rating. Every matching value must pass - Regex (
.*) — a regular expression over the full path
Check a calculated value
Some rules test a number no single property holds, such as a beam’s span-to-depth ratio: its length divided by the depth parsed from a section name like300x600. In 2026.9 a rule’s scope or check can
test a computed value calculated from each object’s properties. The usual comparisons apply,
so the threshold stays a value you can edit.
Describe the calculation
Review the value range
Save the rule
Change the calculation
Select the Σ subject, then Edit with AI to describe the change to the assistant, or Edit SQL to change it yourself. When you edit by hand, you can change the description, the unit, and the SQL. Select Preview to run the edited SQL in its rule. The preview shows the range of values, how many objects it checked, and how many have no value. Apply stays disabled until the preview has run on exactly the current SQL, no object has more than one value, and you confirm the description and unit still match.22.5, expected ≤ 20.
When there is no value or more than one
An object whose inputs are missing, or do not parse (a type name likeCustom beam), has no value. A
scope condition on the computed value drops it, and the check fails it. The object table shows
no value, expected ≤ 20. To treat those objects as not applicable, ask the assistant to check
only objects where the value can be calculated.
The calculation must give one value per object. When it gives more than one for any object the rule
checks, the rule shows ERROR with a message such as 3 objects have more than one computed value, instead of pass or fail. Ask the assistant to fix the calculation.
Computed values work in a rule’s scope and check only, not in the global scope or on a related
object. Each one reads the properties of the model the check runs on.
Property paths
Always pick property paths from the path picker after a preview model loads. Paths in the current Checks examples, such asparameters.Width.value and baseline.length, come from the previous data format and may not
exist on a 2026.9 version.
Typical Revit parameters now sit under properties.Parameters (for example type Width under
properties.Parameters.Type Parameters.Dimensions.Width). Use the picker for the paths that
exist on your model.
Versions you can run against
Data Validation preview and saved-check runs need a version in the 2026.9 data format. If preview does not load, publish a new version after the project has moved to 2026.9. See Speckle’s data model is changing.FAQ
Where did Project standards go?
Where did Project standards go?
Why does my existing check show 0 objects after the project moves to 2026.9?
Why does my existing check show 0 objects after the project moves to 2026.9?
Should I still drop DataObject to widen scope?
Should I still drop DataObject to widen scope?
WHERE when you need a tighter rule.What is the difference between all and any?
What is the difference between all and any?
How do I check a door against the wall that hosts it?
How do I check a door against the wall that hosts it?
How do I treat 60 MIN and 1 HR as the same rating?
How do I treat 60 MIN and 1 HR as the same rating?
60. Unmapped values stay as they are. See Map labels before you
compare.How do I match Fire Rating on every path it appears?
How do I match Fire Rating on every path it appears?
*.x), and set the path to Fire
Rating. Every matching value must pass. Click again for regex over the full path. Path
matching is not available on Equals property. See Match a property wherever it
sits.Why does an object that has every input still show no value?
Why does an object that has every input still show no value?
Custom beam
that does not match the expected pattern. Fix the source data, or ask the assistant to handle
that format. See When there is no value or more than
one.Do I rewrite every property path in every check?
Do I rewrite every property path in every check?