mirror of
https://github.com/safishamsi/graphify.git
synced 2026-10-13 23:49:14 +00:00
build._is_ast_tier reads _origin when present and otherwise guesses the tier from the shape of source_location (L<line> means AST). extract() stamps its AST items _origin:"ast", but nothing stamped the semantic side, so a semantic node whose location happened to look like "L12" read as AST — and the next `graphify update` deleted it along with the re-extracted code file it seemed to belong to. Part C, extract_corpus_parallel, and the CLI merge now setdefault _origin:"semantic" on every semantic node/edge before the merge, so a semantic item is never mistaken for an AST one. AST items (stamped "ast") are untouched; setdefault preserves any existing stamp. Landed from PR #3110. Skill artifacts regenerated fresh from the updated fragments (not the PR's stale committed blobs); all five skillgen validators pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>