Static DOM integrity checks — duplicate ids and dead OOB fragment producers.
Complements browser smoke (#234) with cheaper startup signals for two silent UI bug classes: invalid duplicate element ids in a template and OOB fragment blocks that nothing ever renders (#238).
contracts.rules_static_dom
| 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
Return(confident, value)for a positional string argument.
Walk an AST subtree collecting literal Fragment(template, block) pairs.
Infer literalFragment(template, block)pairs and block names from handler.
Infer fragment block names from a handler and its same-module callees.
Infer literal fragment block names produced by a handler.
Collect fragment block names produced by routes and signal render callbacks.
Return fragment block names whose body carrieshx-swap-oob.
Return static ids repeated in non-fragment markup or within one fragment.
Warn when a template repeats the same staticid="..."value.
Warn when an OOB fragment block has no route/signal handler that renders it.
_string_arg
function
def _string_arg(node: ast.Call, index: int) -> tuple[bool, str | None]
Return(confident, value)for a positional string argument.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
node
|
ast.Call
|
— | |
index
|
int
|
— |
_collect_fragment_calls
function
def _collect_fragment_calls(node: ast.AST, out: set[tuple[str, str]], blocks: set[str]) -> None
Walk an AST subtree collecting literal Fragment(template, block) pairs.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
node
|
ast.AST
|
— | |
out
|
set[tuple[str, str]]
|
— | |
blocks
|
set[str]
|
— |
infer_fragment_producers
function
def infer_fragment_producers(handler: Any) -> tuple[set[tuple[str, str]], set[str]]
Infer literalFragment(template, block)pairs and block names from handler.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
handler
|
Any
|
— |
infer_handler_fragment_blocks
function
def infer_handler_fragment_blocks(handler: Any) -> set[str]
Infer fragment block names from a handler and its same-module callees.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
handler
|
Any
|
— |
infer_fragment_block_names
function
def infer_fragment_block_names(handler: Any) -> set[str]
Infer literal fragment block names produced by a handler.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
handler
|
Any
|
— |
collect_fragment_block_producers
function
def collect_fragment_block_producers(router: Router, signal_registry: Any | None = None) -> set[str]
Collect fragment block names produced by routes and signal render callbacks.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
router
|
Router
|
— | |
signal_registry
|
Any | None
|
None
|
_extract_oob_fragment_blocks
function
def _extract_oob_fragment_blocks(source: str) -> list[str]
Return fragment block names whose body carrieshx-swap-oob.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
source
|
str
|
— |
_duplicate_ids_in_source
function
def _duplicate_ids_in_source(source: str) -> list[tuple[str, int]]
Return static ids repeated in non-fragment markup or within one fragment.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
source
|
str
|
— |
check_duplicate_static_ids
function
def check_duplicate_static_ids(template_sources: dict[str, str]) -> list[ContractIssue]
Warn when a template repeats the same staticid="..."value.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
template_sources
|
dict[str, str]
|
— |
check_oob_fragment_producers
function
def check_oob_fragment_producers(template_sources: dict[str, str], router: Router, signal_registry: Any | None = None) -> list[ContractIssue]
Warn when an OOB fragment block has no route/signal handler that renders it.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
template_sources
|
dict[str, str]
|
— | |
router
|
Router
|
— | |
signal_registry
|
Any | None
|
None
|
View source · /home/runner/work/chirp/chirp/site/../src/chirp/contracts/rules_static_dom.py:1