Reactive bus contract checks.
Validates DependencyIndex configuration at app.check() time:
- Block references point to real template blocks
- Derivation graph is a DAG (no cycles)
- Declared emitted paths are registered in the dependency index
- Audience-filtered scopes have connection-aware subscribers
contracts.rules_reactive
| Name | Type | Default | Description |
|---|---|---|---|
type
|
|
— | |
qualified_name
|
|
— | |
element_type
|
|
— | |
description
|
|
— | |
source_file
|
|
— | |
line_number
|
|
— | |
is_autodoc
|
|
— | |
autodoc_element
|
|
— | |
_autodoc_template
|
|
— | |
_autodoc_url_path
|
|
— | |
_autodoc_page_type
|
|
— | |
title
|
|
— | |
doc_content_hash
|
|
— |
Symbols on this page
Verify every BlockRef in the index references a real template block.
Detect cycles in the derivation graph.
Cycles are handled safely at runtime (BFS visited set), but always indicate a configuration error. Surfacing at check…
Warn when declared ChangeEvent paths are not registered in the index.
Warn when audience-filtered events target scopes without ConnectionInfo.
check_reactive_block_existence
function
def check_reactive_block_existence(dep_index: DependencyIndex, env: Environment) -> list[ContractIssue]
Verify every BlockRef in the index references a real template block.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
dep_index
|
DependencyIndex
|
— | |
env
|
Environment
|
— |
check_reactive_derivation_dag
function
def check_reactive_derivation_dag(dep_index: DependencyIndex) -> list[ContractIssue]
Detect cycles in the derivation graph.
Cycles are handled safely at runtime (BFS visited set), but always indicate a configuration error. Surfacing at check time is better than silent infinite-expansion prevention at runtime.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
dep_index
|
DependencyIndex
|
— |
check_reactive_emitted_paths
function
def check_reactive_emitted_paths(dep_index: DependencyIndex, emitted_paths: object) -> list[ContractIssue]
Warn when declared ChangeEvent paths are not registered in the index.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
dep_index
|
DependencyIndex
|
— | |
emitted_paths
|
object
|
— |
check_reactive_audience_scopes
function
def check_reactive_audience_scopes(audience_scopes: object, connection_scopes: object) -> list[ContractIssue]
Warn when audience-filtered events target scopes without ConnectionInfo.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
audience_scopes
|
object
|
— | |
connection_scopes
|
object
|
— |
View source · /home/runner/work/chirp/chirp/site/../src/chirp/contracts/rules_reactive.py:1