Rules
Worker Proximity (Critical)
redpriority 100Two workers within the red threshold in the same enclosure on the same building level, overlapping in time, belonging to different contractors. Same-contractor pairs self-coordinate. same_enclosure makes the rule wall-aware — a worker inside a building does not clash through the wall with one outside. Both sides filter on physical_worker.
tokenphysical_worker
↔tokenphysical_worker
ALL of
overlaps_time
same_level
same_enclosure
different_contractor
within_distance: $site.default_red_distance_m
message{{a.label}} within {{distance}}m of {{b.label}}
Worker Proximity (Warning)
amberpriority 90Detects when two workers are within the amber warning threshold. Only triggers when workers are in the same enclosure on the same building level, their time ranges overlap, and they belong to different contractors. same_enclosure makes the rule wall-aware (a worker inside a building does not clash through the wall with one outside). Workers from the same contractor are assumed to self-coordinate. Both sides filter on physical_worker category — see Worker Proximity (Critical).
tokenphysical_worker
↔tokenphysical_worker
ALL of
overlaps_time
same_level
same_enclosure
different_contractor
within_distance: $site.default_amber_distance_m
message{{a.label}} within {{distance}}m of {{b.label}}
Worker in Crane Drop Zone
redpriority 200Worker's position intersects a crane's drop zone (critical safety hazard). Same-contractor pairs self-coordinate. Workers under a poured slab (building_level < top_concrete_level) are protected. Filters on physical_worker.
tokenphysical_worker
↔tokencraneconcrete_pump
ALL of
intersects
overlaps_time
different_contractor
exposed_to_crane
message{{a.label}} in drop zone of {{b.label}}
Crane Drop Zone Overlap
redpriority 190Detects when two crane drop zones overlap, which could lead to conflicting lift operations and potential collisions.
tokencraneconcrete_pump
↔tokencraneconcrete_pump
ALL of
intersects
overlaps_time
message{{a.label}} drop zone overlaps with {{b.label}} drop zone
Worker in Exclusion Zone
redpriority 80Detects when a worker enters a designated exclusion zone. Exclusion zones are areas where workers should not be present. Filters on physical_worker category.
tokenphysical_worker
↔tokenexclusion
ALL of
intersects
overlaps_time
same_level
message{{a.label}} in zone '{{b.label}}'
Worker on Road
redpriority 85Detects when a worker is positioned on a road. Workers on roads are at risk from vehicle traffic. Filters on physical_worker category.
tokenphysical_worker
↔tokenroad
ALL of
intersects
overlaps_time
message{{a.label}} on road '{{b.label}}'
Crane Drop Zone on Road
redpriority 180Detects when a crane's drop zone intersects a road. Crane operations over roads create hazards for vehicle traffic.
tokencraneconcrete_pump
↔tokenroad
ALL of
intersects
overlaps_time
message{{a.label}} drop zone intersects road '{{b.label}}'
Worker in Different Contractor Laydown
amberpriority 70Detects when a worker enters a laydown area belonging to a different contractor. Workers should coordinate with the laydown owner before entering their staging areas. Filters on physical_worker category.
tokenphysical_worker
↔tokenlaydown
ALL of
intersects
overlaps_time
same_level
different_contractor
message{{a.label}} in {{b.label}} (different contractor)
Crane Drop Zone in Laydown Area
amberpriority 75Detects when a crane's drop zone intersects a laydown area belonging to a different contractor. Crane operations over another contractor's staging area create coordination risks and potential material damage.
tokencraneconcrete_pump
↔tokenlaydown
ALL of
intersects
overlaps_time
different_contractor
message{{a.label}} drop zone overlaps {{b.label}} (different contractor)
Crane Drop Zone in Work Area
amberpriority 76Detects when a crane's drop zone intersects an active work area belonging to a different contractor. Crane operations over another contractor's work area create safety risks and require coordination.
tokencraneconcrete_pump
↔tokenwork_area
ALL of
intersects
overlaps_time
different_contractor
message{{a.label}} drop zone overlaps {{b.label}} (different contractor)
Worker in Different Contractor Work Area
amberpriority 71Detects when a worker enters an active work area belonging to a different contractor. Workers operating in another contractor's work area create coordination issues and potential safety hazards. Filters on physical_worker category.
tokenphysical_worker
↔tokenwork_area
ALL of
intersects
overlaps_time
same_level
different_contractor
message{{a.label}} in {{b.label}} (different contractor)
Work Area Overlap (Different Contractors)
amberpriority 65Detects when two work areas from different contractors overlap spatially and temporally on the same building floor. Overlapping work areas indicate potential coordination conflicts that require resolution.
tokenwork_area
↔tokenwork_area
ALL of
intersects
overlaps_time
same_level
different_contractor
message{{a.label}} overlaps {{b.label}} (different contractors)
Laydown Overlap (Different Contractors)
amberpriority 64Detects when two laydown areas from different contractors overlap spatially and temporally on the same building floor. Overlapping staging areas create material handling conflicts and require coordination.
tokenlaydown
↔tokenlaydown
ALL of
intersects
overlaps_time
same_level
different_contractor
message{{a.label}} overlaps {{b.label}} (different contractors)
Work Area in Exclusion Zone
redpriority 66Detects when a work area overlaps an exclusion zone on the same building floor. Active work should not take place in areas marked as no-go zones.
tokenwork_area
↔tokenexclusion
ALL of
intersects
overlaps_time
same_level
message{{a.label}} overlaps exclusion zone '{{b.label}}'
Laydown in Exclusion Zone
redpriority 67Detects when a laydown area overlaps an exclusion zone on the same building floor. Staging materials in no-go zones creates safety hazards.
tokenlaydown
↔tokenexclusion
ALL of
intersects
overlaps_time
same_level
message{{a.label}} overlaps exclusion zone '{{b.label}}'
Entity inside high-risk commissioning area
redpriority 250Any clashable entity's footprint intersects a feature with clash_category=live_hazard (currently the high_risk_commissioning_area variant). HV / high-risk exposure is universal — applies to workers, plant (active or parked), active areas (work_area, laydown, exclusion), and any other clashable shape; no same_contractor exemption. Side A is unfiltered; side B is category-driven on live_hazard.
tokenany type
↔tokenlive_hazard
ALL of
intersects
overlaps_time
same_level
message{{a.label}} inside high-risk commissioning area '{{b.label}}'
Worker Near Parked Crane
amberpriority 50Detects when a worker is within the physical footprint of a parked/inactive crane belonging to a different contractor. Even when not operating, cranes are large obstacles that pose risks to workers in close proximity. Workers from the same contractor are assumed to be aware of their own equipment. Filters on physical_worker category.
tokenphysical_worker
↔tokeninactive_craneinactive_concrete_pump
ALL of
intersects
overlaps_time
different_contractor
message{{a.label}} near parked crane {{b.label}}
Active Crane Over Parked Crane
amberpriority 55Detects when an active crane's drop zone intersects the footprint of a parked/inactive crane belonging to a different contractor. Operating over parked equipment creates collision risks and coordination issues. Same- contractor cranes are assumed to self-coordinate.
tokencraneconcrete_pump
↔tokeninactive_craneinactive_concrete_pump
ALL of
intersects
overlaps_time
different_contractor
message{{a.label}} drop zone over parked crane {{b.label}}
Inactive Crane on Road
redpriority 52Detects when an inactive crane's physical footprint intersects a road. Even when not operating, inactive cranes on roads obstruct traffic.
tokeninactive_craneinactive_concrete_pump
↔tokenroad
ALL of
intersects
overlaps_time
messageInactive crane {{a.label}} on road '{{b.label}}'
Inactive Crane in Exclusion Zone
redpriority 53Detects when an inactive crane's physical footprint intersects an exclusion zone. Inactive cranes should not be in exclusion areas.
tokeninactive_craneinactive_concrete_pump
↔tokenexclusion
ALL of
intersects
overlaps_time
messageInactive crane {{a.label}} in exclusion zone '{{b.label}}'
Inactive Crane in Different Contractor Laydown
amberpriority 48Detects when an inactive crane's physical footprint intersects a laydown area belonging to a different contractor. Inactive cranes in another contractor's staging area create coordination conflicts.
tokeninactive_craneinactive_concrete_pump
↔tokenlaydown
ALL of
intersects
overlaps_time
different_contractor
messageInactive crane {{a.label}} in {{b.label}} (different contractor)
Inactive Crane in Different Contractor Work Area
amberpriority 49Detects when an inactive crane's physical footprint intersects a work area belonging to a different contractor. Inactive cranes in another contractor's work zone create coordination issues.
tokeninactive_craneinactive_concrete_pump
↔tokenwork_area
ALL of
intersects
overlaps_time
different_contractor
messageInactive crane {{a.label}} in {{b.label}} (different contractor)
Permit-to-work proximity
redpriority 220Two entities whose linked permits form an incompatible pair, within the relevant threshold, on the same floor, overlapping in time. The permit x permit matrix below decides which combinations fire and at what severity; contractor-agnostic (an incompatible-permit hazard is physical, not a coordination gap one contractor can self-manage).
tokenany type
↔tokenany type
ALL of
different_family
overlaps_time
same_level
within_distance: $site.default_amber_distance_m
messageConflicting permitted activities '{{a.label}}' and '{{b.label}}' within {{distance}}m
Predicate reference
- intersects
- Predicate that checks if two geometries intersect.
- contains
- Predicate that checks if geometry A contains geometry B.
- touches
- Predicate that checks if two geometries touch (share boundary but don't overlap interior).
- overlaps_time
- Predicate that checks if two entities physically coexist in time.
- same_level
- Predicate that checks if two entities are on the same building level.
- adjacent_level
- Predicate that checks if entities are on adjacent levels (within 1 floor).
- same_enclosure
- Predicate that checks if two entities share the same enclosure.
- different_contractor
- Predicate that checks if two entities belong to different contractors.
- same_contractor
- Predicate that checks if two entities belong to the same contractor.
- different_family
- True when two entities belong to DIFFERENT permit families (#429).
- exposed_to_crane
- Predicate that checks if entity A is exposed to overhead crane hazards.
- within_distance
- Create a predicate that checks if entities are within threshold distance.
- kinds
- Create predicate matching specific entity kinds.
- types
- Create predicate matching specific entity types (None = any type).
- category_in_a
- Match entities whose A-side clash_category is in the given set.
- category_in_b
- Match entities whose B-side clash_category is in the given set.
- permit_type_in_a
- Match entities whose A-side linked-permit type code is in the set.
- permit_type_in_b
- Match entities whose B-side linked-permit type code is in the set.
- all
- Composed predicate: all sub-predicates must return True (AND).
- any
- Composed predicate: any sub-predicate must return True (OR).
- not
- Negated predicate.