Skip to content

Record codeanalyzer-python 1.4.1: id on body nodes and parameters, Neo4j contract without _module #4

Description

@rahlk

Problem

codeanalyzer-python 1.4.1 (https://github.com/codellm-devkit/codeanalyzer-python/releases/tag/v1.4.1) changed what it emits and this repo's copies are behind:

  • analysis.json: every body node carries id (the global ordinal <callable-id>@<local>) and every parameter carries id (<callable-id>@formal_in:<i>). Spec: codellm-devkit/.github docs/design/specs/2026-09-05-body-node-id-in-analysis-json.md, epic Epic: body nodes and parameters carry their id in analysis.json .github#56. The spine BodyNode lists kind, span, callee, of, parent only, and the language schemas close with unevaluatedProperties: false, so the python samples fail validation against the current files once regenerated.
  • Neo4j: _module is gone from every node, :PyCanNode marks every can://python/ node, PyApplication gained entrypoint_frameworks and entrypoint_report_json, PyAttribute/PyVariable ids changed shape, the _module indexes are replaced by one on PyCanNode.id. Contract version stays 2.0.0 (ruled: no released consumer pins it).

Scope boundary

Python's files, plus the spine field. Java and typescript get id under their own children of epic .github#56; their schema files change when they ship.

Goals

  • Spine analysis.schema.json: BodyNode.id and Parameter.id as required string fields
  • v2/json/python/analysis.schema.json closes with both
  • The three python samples regenerated from 1.4.1
  • v2/neo4j/python/schema.neo4j.json replaced byte-for-byte with 1.4.1's schema.neo4j.json (release asset schema.json)
  • README sources line: codeanalyzer-python v1.4.1
  • scripts/check.py green

Caveats and known risks

  • Making id required on the spine will fail the java and typescript samples until those analyzers emit it. Either mark it required per language and optional on the spine for now, and record the divergence under x-cldk.divergences, or hold the spine change until the first sibling ships. Decide in the PR; the spec says required.

Definition of done

  • python3 scripts/check.py passes on every schema and sample.
  • A python 1.4.1 analysis.json validates; a 1.4.0 one fails on the missing id (proves the closure is real).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions