7ba84e3754
CREATE TABLE / CREATE VIEW / CREATE MATERIALIZED VIEW now produce Table and View nodes (previously generic Variable), CREATE PROCEDURE produces a Function, and schema-qualified DDL names (schema.table) are named by the table identifier instead of the schema. A view's FROM/JOIN relations are emitted as usages and resolve into view -> table USAGE lineage edges. Relations join the cross-file name registry so lineage can resolve, with two structural safeguards: - Registry membership is defined once by cbm_label_is_registry_symbol (helpers.c); the full, parallel and incremental seed sites all call it, ending the KEEP-IN-SYNC copies the old label lists required. - The default cbm_registry_resolve vetoes relation-labeled results: common table names (users, orders, config) collide with code identifiers in every language, and no CALLS/USAGE/READS/WRITES/THROWS/ handler/decorator consumer may bind them. The SQL lineage path opts in through the new cbm_registry_resolve_lineage. Table/View also join the registry-only per-file LSP surface labels so a table rename invalidates dependent SQL files on incremental (no stale lineage edges), rank with the type tier in BM25 search, and appear in the architecture boundary/package/cluster queries via the pinned CBM_SQL_RELATION_LABELS fragment. Tests: extraction trio (labels, lineage usages, schema-qualified names), grammar golden + probe updates, relation-label contract pin, and two pipeline tests: cross-language isolation (binding: fails without the veto) and incremental table-rename stale-lineage. Closes #574. Co-authored-by: alexisperinger-ux <alexis.peringer@iss-stoxx.com> Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>