Skip to content

node_versions

node_versions

Read the shipped record of which Houdini versions have been sampled.

data/sampled_versions.json is generated by tools/gen_node_versions.py from the Houdini builds contributors have sampled. Only the version list ships; the full per-node evidence stays in tools/node_versions.json, which is a megabyte nothing at runtime needs. The instructions in prompts/markdown/server_instructions.md carry version markers derived from it, e.g. colorcorrect (21.0+).

Those markers cannot know about a Houdini nobody has sampled yet. Read literally (21.0+) includes a future 23.0, so if SideFX drops a node there the way they dropped the LOP layout in 22.0, the instructions would keep advertising it. This module exists so the server can notice that case and say so, rather than letting a stale marker pass silently. It is a staleness signal, not a correctness mechanism: build_network(dry_run=True) validates node types against the running Houdini and cannot go out of date.

Functions:

Name Description
load_table

Return the shipped table, or empty structures when it is unreadable.

sampled_series

Minor series the table has evidence for, oldest first.

series_of

Reduce "22.0.368" to its minor series "22.0".

staleness_warning

Return a warning when version is outside what has been sampled.

Functions:

load_table cached

load_table() -> dict

Return the shipped table, or empty structures when it is unreadable.

Never raises: a missing or corrupt table degrades this to "no opinion", which is the right outcome for a diagnostic that must not break a session.

sampled_series

sampled_series() -> list[str]

Minor series the table has evidence for, oldest first.

series_of

series_of(version: str | None) -> str | None

Reduce "22.0.368" to its minor series "22.0".

Returns None for anything that does not start with two integer components, which is what the health endpoint reports when it cannot determine a version.

staleness_warning

staleness_warning(version: str | None) -> str | None

Return a warning when version is outside what has been sampled.

None means the version is covered and the markers can be trusted. Callers should treat any string as advisory, not as an error.