Skip to content

neo4j-projection.md: mandate language-prefixed labels/rel types (CanNode carve-out, dual-label staging) #32

Description

@rahlk

PROBLEM

skills/codeanalyzer-backend/references/neo4j-projection.md documents the label-namespacing convention as: "Java prefixes relationship types (J_HAS_UNIT, J_CALLS); Python uses PY_; TypeScript (and a new bare-namespaced language) uses unprefixed names. Pick one convention and hold it." That blessing of bare namespacing is what produced the TS divergence now being fixed (see the epic). The convention must become prescriptive.

SCOPE BOUNDARY

Doc change only, but covering EVERY copy of the reference in this repo (the plugin and sdd skill trees both carry it) — grep for other statements of the old convention (e.g. skill prose citing TS as unprefixed) and update them in the same PR. Note: this repo was formerly codellm-devkit/cldk-forge; stale clones may point at the old remote.

GOALS

  1. Rewrite the namespacing section to mandate, for every analyzer: a CamelCase language tag on every specific node label (JCallable, PyCallable, TSCallable) and an UPPER_SNAKE tag on every relationship type (J_CALLS, PY_CALLS, TS_CALLS). Remove the bare-namespaced option.
  2. Document the two carve-outs: the shared canonical merge label (CanNode, keyed on can:// ids that embed the language) is unprefixed by design; and dual-labeling (bare + prefixed twin at a MINOR, drop bare at the next MAJOR) is the sanctioned migration path for an already-shipped unprefixed projection.
  3. Update the TypeScript examples/rows in the same file to the prefixed forms, noting the staged versions (1.1.0 dual, 2.0.0 prefixed-only).

CAVEATS AND KNOWN RISKS

  • The doc also records per-language merge keys and schema versions ("Python is at 1.1.0 over Java's 1.0.0") — refresh those lines while touching the file so the reference doesn't ship half-updated.

DEFINITION OF DONE

  • No sentence in the reference permits an unprefixed specific label or relationship type for a new analyzer.
  • The carve-outs and the dual-label staging pattern are documented with the TS migration as the worked example.

Part of codellm-devkit/codeanalyzer-typescript#64

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions