Observation
main (currently v1.2.0-13-g977198e) carries schema-affecting changes that are not in the 1.2.0 release — #169 connects the L4 port lattice to the statement DDG, #165 stamps id on body nodes and parameters, #166 retires _module from the Neo4j graph and scopes destructive statements on the can:// prefix, plus the entrypoints tiers — yet a graph emitted from main still stamps
analyzer_version: '1.2.0'
on :Application and in analysis.json's analyzer.version.
Why it matters
A consumer that gates on analyzer_version (the Python SDK's Neo4j backend refuses graphs below a floor and adapts to what a generation carries — it did exactly this for codeanalyzer-python 1.4.0 vs 1.4.1, where _module disappeared) cannot distinguish a 1.2.0 graph (has _module, no body-node ids, disconnected lattice) from a main graph (none of those) — they carry the same version string. Any consumer built against main's shape will silently mis-serve real 1.2.0 graphs, and vice versa.
Suggested fix
- Bump
package.json (and whatever feeds analyzer.version) on main ahead of the next cut, or stamp a dev suffix (1.3.0-dev.<sha>) on unreleased builds so a graph is never mislabelled.
- Cut 1.3.0 when ready: the changes above are the ones downstream is waiting on (python-sdk leg 2.5 pins the release, not
main, by the SDK's lockstep rule).
Definition of done
Found while emitting a reference graph for python-sdk leg 2.5 from source.
Observation
main(currentlyv1.2.0-13-g977198e) carries schema-affecting changes that are not in the 1.2.0 release — #169 connects the L4 port lattice to the statement DDG, #165 stampsidon body nodes and parameters, #166 retires_modulefrom the Neo4j graph and scopes destructive statements on thecan://prefix, plus the entrypoints tiers — yet a graph emitted frommainstill stampson
:Applicationand inanalysis.json'sanalyzer.version.Why it matters
A consumer that gates on
analyzer_version(the Python SDK's Neo4j backend refuses graphs below a floor and adapts to what a generation carries — it did exactly this for codeanalyzer-python 1.4.0 vs 1.4.1, where_moduledisappeared) cannot distinguish a 1.2.0 graph (has_module, no body-node ids, disconnected lattice) from amaingraph (none of those) — they carry the same version string. Any consumer built againstmain's shape will silently mis-serve real 1.2.0 graphs, and vice versa.Suggested fix
package.json(and whatever feedsanalyzer.version) onmainahead of the next cut, or stamp a dev suffix (1.3.0-dev.<sha>) on unreleased builds so a graph is never mislabelled.main, by the SDK's lockstep rule).Definition of done
maincarries ananalyzer_versionthat is not equal to any released version.Found while emitting a reference graph for python-sdk leg 2.5 from source.