Is your feature request related to a problem? Please describe.
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.
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.
Describe the solution you'd like
- 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).
Describe alternatives you've considered
Not stated in the original issue.
Additional context
Definition of done
Found while emitting a reference graph for python-sdk leg 2.5 from source.
Is your feature request related to a problem? Please describe.
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.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.Describe the solution you'd like
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).Describe alternatives you've considered
Not stated in the original issue.
Additional context
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.