You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(artifacts): source is the whole file; scope and gate every Bolt delete (#174)
Two contract fixes on the Neo4j/artifact surface.
fix(neo4j): the per-module Bolt purge matched `MATCH (x {_module: $m})` with no
label. `_module` is a shared convention -- codeanalyzer-java and
codeanalyzer-typescript set it on their nodes too -- so wherever a python module
and a sibling analyzer's module shared a file key, a python push detach-deleted
that sibling's nodes and their relationships, silently. Both statements are now
anchored on the python-owned labels, derived from the schema catalog
(`MODULE_OWNED_LABELS`) so a new module-scoped label is covered automatically.
A push also no longer deletes anything by default: the per-module purge and the
full-run orphan prune both run under `--eager` only, so a default `--lazy` push
is purely additive. Adds an `_module` index per module-owned label, the purge
having been an unindexed scan once per changed module.
BREAKING (released as a minor by maintainer decision -- see CHANGELOG):
`PyArtifact.text_truncated`, `--artifact-text-max-bytes`, and the Neo4j
`:Artifact.text_truncated` property are removed. An artifact's `source` is the
whole file, or `""` because the file is binary or `--no-artifact-text` was
passed -- never a prefix. A truncated `source` read exactly like a complete
small file, and the flag meant to distinguish them conflated "whole file" with
"capture off"; measured on microsoft/vscode the cap fired on 32 of 4,953
artifacts (0.6%). python's `dependency-manifest` exemption goes with the cap.
Matches codeanalyzer-typescript, which removed both in its #117.
Migration: drop any `text_truncated` check (`source` is trustworthy whenever
non-empty); drop `--artifact-text-max-bytes` (use `--no-artifact-text` to omit
the payload); pass `--eager` if you relied on a push removing stale nodes.
Specs: codellm-devkit/.github docs/design/specs/2026-09-02-artifact-source-whole-file.md
Epic: codellm-devkit/.github#51Closes#171Closes#172
0 commit comments