No elements found matching pattern 'What tests exist for the extractor module and what do they cover?'
warning: private item shadows public glob re-export
 --> src/db/mod.rs:9:5
  |
9 | use crate::db::schema::CozoDb;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
  |
note: the name `CozoDb` in the type namespace is supposed to be publicly re-exported here
 --> src/db/mod.rs:7:9
  |
7 | pub use schema::*;
  |         ^^^^^^^^^
note: but the private item here shadows it
 --> src/db/mod.rs:9:5
  |
9 | use crate::db::schema::CozoDb;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
  = note: `#[warn(hidden_glob_reexports)]` on by default

warning: unused imports: `ServerCapabilities` and `ServerInfo`
  --> src/mcp/server.rs:9:70
   |
 9 |     CallToolRequestParams, CallToolResult, Content, ListToolsResult, ServerCapabilities,
   |                                                                      ^^^^^^^^^^^^^^^^^^
10 |     ServerInfo, Tool,
   |     ^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

warning: unused import: `AsyncFileWatcher`
  --> src/mcp/watcher.rs:57:39
   |
57 |     use crate::watcher::{FileWatcher, AsyncFileWatcher};
   |                                       ^^^^^^^^^^^^^^^^

warning: unused variable: `incremental`
   --> src/mcp/handler.rs:210:13
    |
210 |         let incremental = args["incremental"].as_bool().unwrap_or(false);
    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_incremental`
    |
    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default

warning: unused variable: `headings`
   --> src/doc_indexer/mod.rs:120:13
    |
120 |         let headings = self.extract_headings(&content);
    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_headings`

warning: unused variable: `context`
   --> src/doc_indexer/mod.rs:141:22
    |
141 |         for (target, context) in code_refs {
    |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`

warning: unused variable: `relationships`
   --> src/indexer/extractor.rs:510:9
    |
510 |         relationships: &mut Vec<Relationship>,
    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_relationships`

warning: unused variable: `job_idx`
   --> src/indexer/cicd.rs:320:18
    |
320 |             for (job_idx, job) in jobs.iter().enumerate() {
    |                  ^^^^^^^
    |
help: if this is intentional, prefix it with an underscore
    |
320 |             for (_job_idx, job) in jobs.iter().enumerate() {
    |                  +
help: you might have meant to pattern match on the similarly named constant `CHARS_PER_TOKEN`
    |
320 -             for (job_idx, job) in jobs.iter().enumerate() {
320 +             for (graph::context::CHARS_PER_TOKEN, job) in jobs.iter().enumerate() {
    |

warning: variable `output_tokens` is assigned to, but never used
   --> src/benchmark/runner.rs:137:17
    |
137 |         let mut output_tokens = 0u32;
    |                 ^^^^^^^^^^^^^
    |
    = note: consider using `_output_tokens` instead
help: you might have meant to pattern match on the similarly named constant `BRANCHES`
    |
137 -         let mut output_tokens = 0u32;
137 +         let mut mcp::watcher::start_watcher::{closure#0}::BRANCHES = 0u32;
    |

warning: value assigned to `output_tokens` is never read
   --> src/benchmark/runner.rs:148:25
    |
148 |                         output_tokens =
    |                         ^^^^^^^^^^^^^
    |
    = help: maybe it is overwritten before being read?
    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default

warning: unused variable: `stdout`
   --> src/benchmark/runner.rs:245:37
    |
245 |     fn parse_opencode_output(&self, stdout: &str, stderr: &str) -> BenchmarkResult {
    |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stdout`

warning: unused variable: `stderr`
   --> src/benchmark/runner.rs:245:51
    |
245 |     fn parse_opencode_output(&self, stdout: &str, stderr: &str) -> BenchmarkResult {
    |                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stderr`

warning: field `db` is never read
  --> src/doc_indexer/mod.rs:16:5
   |
15 | pub struct DocIndexer {
   |            ---------- field in this struct
16 |     db: CozoDb,
   |     ^^
   |
   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: method `get_child_elements` is never used
   --> src/graph/context.rs:158:8
    |
 69 | impl<'a> ContextProvider<'a> {
    | ---------------------------- method in this implementation
...
158 |     fn get_child_elements(
    |        ^^^^^^^^^^^^^^^^^^

warning: method `save_result` is never used
   --> src/benchmark/runner.rs:256:12
    |
 54 | impl BenchmarkRunner {
    | -------------------- method in this implementation
...
256 |     pub fn save_result(&self, result: &BenchmarkResult, name: &str) -> Result<(), Box<dyn Error>> {
    |            ^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: function `delete_business_logic` is never used
   --> src/db/mod.rs:100:8
    |
100 | pub fn delete_business_logic(
    |        ^^^^^^^^^^^^^^^^^^^^^

warning: struct `FeatureTraceEntry` is never constructed
   --> src/db/mod.rs:232:12
    |
232 | pub struct FeatureTraceEntry {
    |            ^^^^^^^^^^^^^^^^^

warning: struct `FeatureTraceability` is never constructed
   --> src/db/mod.rs:239:12
    |
239 | pub struct FeatureTraceability {
    |            ^^^^^^^^^^^^^^^^^^^

warning: struct `UserStoryTraceEntry` is never constructed
   --> src/db/mod.rs:246:12
    |
246 | pub struct UserStoryTraceEntry {
    |            ^^^^^^^^^^^^^^^^^^^

warning: struct `UserStoryTraceability` is never constructed
   --> src/db/mod.rs:253:12
    |
253 | pub struct UserStoryTraceability {
    |            ^^^^^^^^^^^^^^^^^^^^^

warning: function `get_feature_traceability` is never used
   --> src/db/mod.rs:259:8
    |
259 | pub fn get_feature_traceability(
    |        ^^^^^^^^^^^^^^^^^^^^^^^^

warning: function `get_user_story_traceability` is never used
   --> src/db/mod.rs:280:8
    |
280 | pub fn get_user_story_traceability(
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: function `all_feature_traceability` is never used
   --> src/db/mod.rs:301:8
    |
301 | pub fn all_feature_traceability(
    |        ^^^^^^^^^^^^^^^^^^^^^^^^

warning: function `all_user_story_traceability` is never used
   --> src/db/mod.rs:333:8
    |
333 | pub fn all_user_story_traceability(
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: function `find_by_business_domain` is never used
   --> src/db/mod.rs:365:8
    |
365 | pub fn find_by_business_domain(
    |        ^^^^^^^^^^^^^^^^^^^^^^^

warning: function `get_documented_by` is never used
   --> src/db/mod.rs:372:8
    |
372 | pub fn get_documented_by(
    |        ^^^^^^^^^^^^^^^^^

warning: function `get_traceability_report` is never used
   --> src/db/mod.rs:413:8
    |
413 | pub fn get_traceability_report(
    |        ^^^^^^^^^^^^^^^^^^^^^^^

warning: function `get_code_for_requirement` is never used
   --> src/db/mod.rs:438:8
    |
438 | pub fn get_code_for_requirement(
    |        ^^^^^^^^^^^^^^^^^^^^^^^^

warning: enum `RelationshipType` is never used
 --> src/db/models.rs:4:10
  |
4 | pub enum RelationshipType {
  |          ^^^^^^^^^^^^^^^^

warning: associated items `as_str` and `from_str` are never used
  --> src/db/models.rs:18:12
   |
17 | impl RelationshipType {
   | --------------------- associated items in this implementation
18 |     pub fn as_str(&self) -> &'static str {
   |            ^^^^^^
...
33 |     pub fn from_str(s: &str) -> Option<Self> {
   |            ^^^^^^^^

warning: field `id` is never read
  --> src/db/models.rs:72:9
   |
70 | pub struct Relationship {
   |            ------------ field in this struct
71 |     #[serde(skip)]
72 |     pub id: Option<String>,
   |         ^^
   |
   = note: `Relationship` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: field `id` is never read
  --> src/db/models.rs:82:9
   |
80 | pub struct BusinessLogic {
   |            ------------- field in this struct
81 |     #[serde(skip)]
82 |     pub id: Option<String>,
   |         ^^
   |
   = note: `BusinessLogic` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: struct `BusinessLogicWithDoc` is never constructed
  --> src/db/models.rs:90:12
   |
90 | pub struct BusinessLogicWithDoc {
   |            ^^^^^^^^^^^^^^^^^^^^

warning: struct `Document` is never constructed
   --> src/db/models.rs:119:12
    |
119 | pub struct Document {
    |            ^^^^^^^^

warning: variants `NotFound` and `Template` are never constructed
  --> src/doc/generator.rs:9:5
   |
 7 | pub enum DocError {
   |          -------- variants in this enum
 8 |     #[error("Element not found: {0}")]
 9 |     NotFound(String),
   |     ^^^^^^^^
...
15 |     Template(String),
   |     ^^^^^^^^
   |
   = note: `DocError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `templates_path` is never read
  --> src/doc/generator.rs:22:5
   |
18 | pub struct DocGenerator {
   |            ------------ field in this struct
...
22 |     templates_path: PathBuf,
   |     ^^^^^^^^^^^^^^

warning: multiple methods are never used
   --> src/doc/generator.rs:34:12
    |
 25 | impl DocGenerator {
    | ----------------- methods in this implementation
...
 34 |     pub fn with_templates_path(mut self, templates_path: PathBuf) -> Self {
    |            ^^^^^^^^^^^^^^^^^^^
...
 39 |     pub fn generate_for_element(&self, qualified_name: &str) -> Result<String, DocError> {
    |            ^^^^^^^^^^^^^^^^^^^^
...
 81 |     pub fn generate_for_element_with_annotation(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
101 |     pub fn generate_for_element_with_template(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
136 |     pub fn regenerate_for_file(&self, file_path: &str) -> Result<Vec<String>, DocError> {
    |            ^^^^^^^^^^^^^^^^^^^
...
268 |     pub fn generate_claude_md(&self) -> Result<String, DocError> {
    |            ^^^^^^^^^^^^^^^^^^
...
384 |     pub fn sync_docs_for_file(&self, file_path: &str) -> Result<DocSyncResult, DocError> {
    |            ^^^^^^^^^^^^^^^^^^
...
412 |     pub fn get_doc_tracking_info(
    |            ^^^^^^^^^^^^^^^^^^^^^

warning: struct `DocSyncResult` is never constructed
   --> src/doc/generator.rs:445:12
    |
445 | pub struct DocSyncResult {
    |            ^^^^^^^^^^^^^

warning: struct `DocTrackingInfo` is never constructed
   --> src/doc/generator.rs:453:12
    |
453 | pub struct DocTrackingInfo {
    |            ^^^^^^^^^^^^^^^

warning: enum `TemplateError` is never used
 --> src/doc/templates.rs:6:10
  |
6 | pub enum TemplateError {
  |          ^^^^^^^^^^^^^

warning: struct `TemplateEngine` is never constructed
  --> src/doc/templates.rs:15:12
   |
15 | pub struct TemplateEngine {
   |            ^^^^^^^^^^^^^^

warning: multiple associated items are never used
   --> src/doc/templates.rs:20:12
    |
 19 | impl TemplateEngine {
    | ------------------- associated items in this implementation
 20 |     pub fn new(templates_dir: PathBuf) -> Self {
    |            ^^^
...
 24 |     pub fn load_template(&self, name: &str) -> Result<String, TemplateError> {
    |            ^^^^^^^^^^^^^
...
 37 |     pub fn render_template(template: &str, variables: &HashMap<String, String>) -> String {
    |            ^^^^^^^^^^^^^^^
...
 46 |     pub fn render_element_template(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
...
 69 |     pub fn render_agents_template(elements: &[String]) -> String {
    |            ^^^^^^^^^^^^^^^^^^^^^^
...
 82 |     pub fn render_claude_template(context: &str) -> String {
    |            ^^^^^^^^^^^^^^^^^^^^^^
...
 90 |     pub fn render_file_summary(
    |            ^^^^^^^^^^^^^^^^^^^
...
108 |     pub fn save_template(&self, name: &str, content: &str) -> Result<(), TemplateError> {
    |            ^^^^^^^^^^^^^
...
115 |     pub fn list_templates(&self) -> Result<Vec<String>, TemplateError> {
    |            ^^^^^^^^^^^^^^
...
131 |     pub fn render_custom_template(
    |            ^^^^^^^^^^^^^^^^^^^^^^
...
140 |     pub fn get_default_agents_template() -> &'static str {
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
193 |     pub fn get_default_claude_template() -> &'static str {
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: field `db` is never read
  --> src/doc_indexer/mod.rs:16:5
   |
15 | pub struct DocIndexer {
   |            ---------- field in this struct
16 |     db: CozoDb,
   |     ^^

warning: method `get_doc_structure` is never used
   --> src/doc_indexer/mod.rs:303:12
    |
 19 | impl DocIndexer {
    | --------------- method in this implementation
...
303 |     pub fn get_doc_structure(
    |            ^^^^^^^^^^^^^^^^^

warning: struct `DocTreeNode` is never constructed
   --> src/doc_indexer/mod.rs:358:12
    |
358 | pub struct DocTreeNode {
    |            ^^^^^^^^^^^

warning: associated items `new` and `add_path` are never used
   --> src/doc_indexer/mod.rs:365:12
    |
364 | impl DocTreeNode {
    | ---------------- associated items in this implementation
365 |     pub fn new(name: String, node_type: String) -> Self {
    |            ^^^
...
373 |     pub fn add_path(&mut self, parts: &[&str]) {
    |            ^^^^^^^^

warning: field `value` is never read
 --> src/graph/cache.rs:9:9
  |
8 | pub struct CacheEntry<T> {
  |            ---------- field in this struct
9 |     pub value: T,
  |         ^^^^^
  |
  = note: `CacheEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: methods `get`, `invalidate`, `clear`, `len`, and `is_empty` are never used
  --> src/graph/cache.rs:28:12
   |
19 | impl<K: Eq + Hash + Clone, V: Clone> TimedCache<K, V> {
   | ----------------------------------------------------- methods in this implementation
...
28 |     pub fn get(&self, key: &K) -> Option<V> {
   |            ^^^
...
61 |     pub fn invalidate(&mut self, key: &K) {
   |            ^^^^^^^^^^
...
77 |     pub fn clear(&mut self) {
   |            ^^^^^
...
81 |     pub fn len(&self) -> usize {
   |            ^^^
...
85 |     pub fn is_empty(&self) -> bool {
   |            ^^^^^^^^

warning: methods `get_dependencies`, `set_dependencies`, `get_dependents`, and `clear` are never used
   --> src/graph/cache.rs:104:18
    |
 96 | impl QueryCache {
    | --------------- methods in this implementation
...
104 |     pub async fn get_dependencies(&self, key: &str) -> Option<Vec<String>> {
    |                  ^^^^^^^^^^^^^^^^
...
108 |     pub async fn set_dependencies(&self, key: String, value: Vec<String>) {
    |                  ^^^^^^^^^^^^^^^^
...
112 |     pub async fn get_dependents(&self, key: &str) -> Option<Vec<String>> {
    |                  ^^^^^^^^^^^^^^
...
125 |     pub async fn clear(&self) {
    |                  ^^^^^

warning: constant `DEFAULT_MAX_TOKENS` is never used
 --> src/graph/context.rs:5:7
  |
5 | const DEFAULT_MAX_TOKENS: usize = 4000;
  |       ^^^^^^^^^^^^^^^^^^

warning: associated items `new` and `get_child_elements` are never used
   --> src/graph/context.rs:70:12
    |
 69 | impl<'a> ContextProvider<'a> {
    | ---------------------------- associated items in this implementation
 70 |     pub fn new(graph: &'a GraphEngine) -> Self {
    |            ^^^
...
158 |     fn get_child_elements(
    |        ^^^^^^^^^^^^^^^^^^

warning: associated items `with_cache`, `find_element_by_name`, `get_dependencies`, `get_children`, `search_annotations`, and `find_elements_by_name_exact` are never used
   --> src/graph/query.rs:25:12
    |
 17 | impl GraphEngine {
    | ---------------- associated items in this implementation
...
 25 |     pub fn with_cache(db: CozoDb, cache: QueryCache) -> Self {
    |            ^^^^^^^^^^
...
 69 |     pub fn find_element_by_name(
    |            ^^^^^^^^^^^^^^^^^^^^
...
102 |     pub fn get_dependencies(
    |            ^^^^^^^^^^^^^^^^
...
271 |     pub fn get_children(
    |            ^^^^^^^^^^^^
...
331 |     pub fn search_annotations(
    |            ^^^^^^^^^^^^^^^^^^
...
953 |     pub fn find_elements_by_name_exact(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: associated functions `get_changed_files` and `get_staged_files` are never used
  --> src/indexer/git.rs:14:12
   |
13 | impl GitAnalyzer {
   | ---------------- associated functions in this implementation
14 |     pub fn get_changed_files(since: &str) -> Result<GitChangedFiles, Box<dyn std::error::Error>> {
   |            ^^^^^^^^^^^^^^^^^
...
61 |     pub fn get_staged_files() -> Result<Vec<String>, Box<dyn std::error::Error>> {
   |            ^^^^^^^^^^^^^^^^

warning: methods `add_token` and `validate_token` are never used
  --> src/mcp/auth.rs:22:12
   |
 9 | impl AuthConfig {
   | --------------- methods in this implementation
...
22 |     pub fn add_token(&mut self, token: String, client_id: String) {
   |            ^^^^^^^^^
...
26 |     pub fn validate_token(&self, token: &str) -> Option<&String> {
   |            ^^^^^^^^^^^^^^

warning: function `hash_token` is never used
  --> src/mcp/auth.rs:50:8
   |
50 | pub fn hash_token(token: &str) -> String {
   |        ^^^^^^^^^^

warning: methods `db_path` and `auth_config_read` are never used
  --> src/mcp/server.rs:64:12
   |
45 | impl MCPServer {
   | -------------- methods in this implementation
...
64 |     pub fn db_path(&self) -> std::sync::Arc<parking_lot::RwLock<std::path::PathBuf>> {
   |            ^^^^^^^
...
72 |     pub async fn auth_config_read(&self) -> tokio::sync::RwLockReadGuard<'_, AuthConfig> {
   |                  ^^^^^^^^^^^^^^^^

warning: methods `watch_path` and `try_recv_event` are never used
  --> src/watcher/notify_handler.rs:60:12
   |
37 | impl FileWatcher {
   | ---------------- methods in this implementation
...
60 |     pub fn watch_path(&self) -> &Path {
   |            ^^^^^^^^^^
...
64 |     pub fn try_recv_event(&self) -> Option<Event> {
   |            ^^^^^^^^^^^^^^

warning: function `is_test_element` is never used
  --> src/web/handlers.rs:66:4
   |
66 | fn is_test_element(element: &crate::db::models::CodeElement) -> bool {
   |    ^^^^^^^^^^^^^^^

