A document symbol extracted from a tree-sitter tags.scm query.
Symbols are flat parser facts: name, kind, and source range. Presentation layers can derive hierarchy from range containment when they need breadcrumbs or outlines.
Summary
Types
@type kind() :: :function | :module | :method | :interface | :test
Symbol kind normalized from @definition.* captures.
@type range() :: {non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer()}
Zero-based source range {start_row, start_col, end_row, end_col}.