# Index

| File | Purpose | Subsystem | Symbols | Used by |
|------|---------|-----------|---------|---------|
| `.scratchpad/gb_shots.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_bridge.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_click.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_data.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_debug.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_dom.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_func.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_raw.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_shots.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_step.py` | - | .scratchpad | 0 | 0 |
| `.scratchpad/gfv2_time.py` | - | .scratchpad | 0 | 0 |
| `_multi_test.sh` | - | root | 0 | 0 |
| `app.py` | Deprecated entry point. | root | 0 | 0 |
| `estorides_cli.py` | estorides CLI. | root | 31 | 1 |
| `estorides_core/__init__.py` | estorides_core.__init__ | estorides_core | 0 | 13 |
| `estorides_core/active_recon.py` | - | estorides_core | 25 | 1 |
| `estorides_core/alerter.py` | estorides_core.alerter | estorides_core | 15 | 4 |
| `estorides_core/async_client.py` | estorides_core.async_client | estorides_core | 21 | 2 |
| `estorides_core/audit.py` | estorides_core.audit | estorides_core | 11 | 3 |
| `estorides_core/case_crypto.py` | estorides_core.case_crypto | estorides_core | 4 | 2 |
| `estorides_core/cases.py` | estorides_core.cases | estorides_core | 21 | 7 |
| `estorides_core/change_detection.py` | estorides_core.change_detection | estorides_core | 20 | 2 |
| `estorides_core/cloud_asset_discovery.py` | - | estorides_core | 7 | 2 |
| `estorides_core/code_exposure.py` | - | estorides_core | 10 | 2 |
| `estorides_core/config.py` | estorides.config | estorides_core | 29 | 43 |
| `estorides_core/discoverer.py` | Background subdomain/domain discoverer. | estorides_core | 21 | 3 |
| `estorides_core/entity_extraction.py` | estorides_core.entity_extraction | estorides_core | 21 | 13 |
| `estorides_core/entity_resolution.py` | estorides_core.entity_resolution | estorides_core | 35 | 4 |
| `estorides_core/entity_store.py` | estorides_core.entity_store | estorides_core | 5 | 2 |
| `estorides_core/event_bus.py` | estorides_core.event_bus | estorides_core | 9 | 2 |
| `estorides_core/feeds.py` | estorides_core.feeds | estorides_core | 16 | 1 |
| `estorides_core/fusion_analytics.py` | estorides_core.fusion_analytics | estorides_core | 14 | 2 |
| `estorides_core/fusion_store.py` | estorides_core.fusion_store | estorides_core | 18 | 5 |
| `estorides_core/graph_bundle.py` | graph_bundle: payload circle 2D + sphere 3D estilo ReadMenator. | estorides_core | 18 | 2 |
| `estorides_core/graph_force.py` | graph_force3d: payload force-graph estilo ReadMenator + contexto IA. | estorides_core | 12 | 4 |
| `estorides_core/graph_kuzu.py` | estorides_core.graph_kuzu | estorides_core | 11 | 3 |
| `estorides_core/graph_rag_search.py` | graph_rag_search: GraphRAG local/global para la IA local (sin LLM). | estorides_core | 44 | 2 |
| `estorides_core/hypothesis_engine.py` | estorides_core.hypothesis_engine | estorides_core | 23 | 2 |
| `estorides_core/ids.py` | estorides_core.ids | estorides_core | 1 | 6 |
| `estorides_core/intel_resolver.py` | estorides_core.intel_resolver | estorides_core | 26 | 4 |
| `estorides_core/job_registry.py` | estorides_core.job_registry | estorides_core | 10 | 3 |
| `estorides_core/knowledge_graph.py` | estorides_core.knowledge_graph | estorides_core | 18 | 7 |
| `estorides_core/lan_bundle.py` | estorides_core.lan_bundle | estorides_core | 8 | 0 |
| `estorides_core/lan_inventory.py` | estorides_core.lan_inventory | estorides_core | 12 | 1 |
| `estorides_core/lan_policy.py` | estorides_core.lan_policy | estorides_core | 9 | 0 |
| `estorides_core/lan_runner.py` | estorides_core.lan_runner | estorides_core | 8 | 0 |
| `estorides_core/lan_scope.py` | estorides_core.lan_scope | estorides_core | 5 | 0 |
| `estorides_core/lan_web.py` | estorides_core.lan_web | estorides_core | 6 | 1 |
| `estorides_core/mitre_attack.py` | estorides_core.mitre_attack | estorides_core | 4 | 1 |
| `estorides_core/monitoring.py` | estorides_core.monitoring | estorides_core | 26 | 4 |
| `estorides_core/observation_models.py` | estorides_core.observation_models | estorides_core | 14 | 2 |
| `estorides_core/ontology.py` | estorides_core.ontology | estorides_core | 25 | 2 |
| `estorides_core/openapi.py` | estorides_core.openapi | estorides_core | 1 | 1 |
| `estorides_core/ops_observability.py` | estorides_core.ops_observability | estorides_core | 10 | 2 |
| `estorides_core/orchestrator.py` | estorides_core.orchestrator | estorides_core | 18 | 8 |
| `estorides_core/osiris_sources.py` | estorides_core.osiris_sources | estorides_core | 8 | 0 |
| `estorides_core/pagination.py` | estorides_core.pagination | estorides_core | 7 | 2 |
| `estorides_core/parsers.py` | estorides_core.parsers | estorides_core | 65 | 6 |
| `estorides_core/pdns_monitor.py` | - | estorides_core | 11 | 2 |
| `estorides_core/people_intel.py` | - | estorides_core | 13 | 2 |
| `estorides_core/pivot_engine.py` | estorides_core.pivot_engine | estorides_core | 25 | 3 |
| `estorides_core/recon_fusion.py` | estorides_core.recon_fusion | estorides_core | 19 | 4 |
| `estorides_core/recon_pipeline.py` | - | estorides_core | 1 | 0 |
| `estorides_core/relationship_inference.py` | estorides_core.relationship_inference | estorides_core | 16 | 1 |
| `estorides_core/reliability_scoring.py` | estorides_core.reliability_scoring | estorides_core | 16 | 8 |
| `estorides_core/scope.py` | estorides_core.scope | estorides_core | 39 | 3 |
| `estorides_core/search_telemetry.py` | estorides.search_telemetry. | estorides_core | 22 | 5 |
| `estorides_core/socmint.py` | estorides_core.socmint | estorides_core | 12 | 2 |
| `estorides_core/source_health_monitoring.py` | estorides_core.source_health_monitoring | estorides_core | 14 | 2 |
| `estorides_core/source_loader.py` | estorides_core.source_loader | estorides_core | 20 | 6 |
| `estorides_core/sqlite_store.py` | estorides_core.sqlite_store | estorides_core | 8 | 5 |
| `estorides_core/ssrf_guard.py` | estorides_core.ssrf_guard | estorides_core | 12 | 7 |
| `estorides_core/supply_chain.py` | - | estorides_core | 13 | 2 |
| `estorides_core/system_app_sources.py` | estorides_core.system_app_sources | estorides_core | 32 | 3 |
| `estorides_core/tech_fingerprint.py` | - | estorides_core | 6 | 2 |
| `estorides_core/tool_install.py` | estorides_core.tool_install | estorides_core | 27 | 4 |
| `estorides_core/tool_runner.py` | - | estorides_core | 15 | 10 |
| `estorides_core/transforms.py` | estorides_core.transforms | estorides_core | 24 | 2 |
| `estorides_core/transliteration.py` | estorides_core.transliteration | estorides_core | 4 | 2 |
| `estorides_core/validation.py` | estorides_core.validation | estorides_core | 6 | 3 |
| `estorides_core/vuln_correlation.py` | - | estorides_core | 11 | 2 |
| `estorides_core/web_security.py` | estorides_core.web_security | estorides_core | 22 | 9 |
| `estorides_export/__init__.py` | estorides_export | estorides_export | 0 | 3 |
| `estorides_export/encryption.py` | estorides_export.encryption | estorides_export | 4 | 3 |
| `estorides_export/misp.py` | estorides_export.misp | estorides_export | 3 | 1 |
| `estorides_export/recon_report.py` | - | estorides_export | 11 | 2 |
| `estorides_export/report.py` | estorides_export.report | estorides_export | 6 | 4 |
| `estorides_export/stix.py` | estorides_export.stix | estorides_export | 4 | 1 |
| `estorides_llm/__init__.py` | estorides_llm | estorides_llm | 0 | 1 |
| `estorides_llm/intelligence_prompts.py` | estorides_llm.intelligence_prompts | estorides_llm | 1 | 1 |
| `estorides_llm/manager.py` | estorides_llm.manager | estorides_llm | 22 | 1 |
| `estorides_web.py` | estorides.web | root | 97 | 8 |
| `estorides_web_tools.py` | estorides_web_tools | root | 5 | 1 |
| `install.sh` | Bootstrap a venv and install the runtime + optional test dependencies. | root | 2 | 0 |
| `static/js/estorides.js` | Estorides front-end controller | js | 180 | 0 |
| `static/js/graph_bundle.js` | Estorides Bundles — circle 2D + sphere 3D hierarchical edge bundling. | js | 62 | 0 |
| `static/js/graph_force.js` | Estorides force-graph module (spec/graph_force3d.md). | js | 109 | 0 |
| `static/js/source_manager.js` | Estorides Source Manager — form-based YAML editor | js | 18 | 0 |
| `tests/conftest.py` | Pytest configuration and shared fixtures for the estorides test suite. | tests | 0 | 0 |
| `tests/properties/conftest.py` | Directory guard for property-based (hypothesis) tests. | properties | 0 | 0 |
| `tests/properties/test_change_detection_properties.py` | Property-based invariants for estorides_core.change_detection. | properties | 8 | 0 |
| `tests/properties/test_csp_safe_styles_properties.py` | Property-based fuzz for `csp_safe_styles`. | properties | 3 | 0 |
| `tests/properties/test_graph_bundle_properties.py` | Property-based invariants for estorides_core.graph_bundle. | properties | 6 | 0 |
| `tests/properties/test_hypothesis_engine_properties.py` | Property-based invariants for estorides_core.hypothesis_engine. | properties | 9 | 0 |
| `tests/properties/test_observation_models_properties.py` | Property-based invariants for estorides_core.observation_models. | properties | 7 | 0 |
| `tests/properties/test_parsers_properties.py` | Property-based fuzzing for the parser totality contract (doctrine §6). | properties | 1 | 0 |
| `tests/properties/test_recon_fusion_properties.py` | Property-based fuzzing for recon_fusion module (doctrine section 6). | properties | 17 | 0 |
| `tests/properties/test_reliability_scoring_properties.py` | Property-based invariants for estorides_core.reliability_scoring. | properties | 12 | 0 |
| `tests/properties/test_search_telemetry_properties.py` | Property-based fuzzing for `search_telemetry` (spec S12 + predicate laws). | properties | 6 | 0 |
| `tests/properties/test_source_health_monitoring_properties.py` | Property-based invariants for estorides_core.source_health_monitoring. | properties | 7 | 0 |
| `tests/properties/test_system_app_sources_properties.py` | Property-based invariants for estorides_core.system_app_sources. | properties | 6 | 0 |
| `tests/properties/test_target_management_properties.py` | - | properties | 10 | 0 |
| `tests/properties/test_tool_runner_properties.py` | Property-based invariants for estorides_core.tool_runner. | properties | 3 | 0 |
| `tests/test_active_recon.py` | ATDD + BDD tests for estorides_core.active_recon. | tests | 24 | 0 |
| `tests/test_async_client.py` | BDD tests for egress anonymisation wiring (`estorides_core.async_client`). | tests | 15 | 0 |
| `tests/test_audit_log.py` | AuditLog rotation: file size cap, in-place .N rotation (issue #48). | tests | 5 | 0 |
| `tests/test_auth_gate.py` | Auth gate: bearer-token protection for sensitive /api/* routes. | tests | 10 | 0 |
| `tests/test_case_crypto.py` | M4 case_crypto BDD red. | tests | 5 | 0 |
| `tests/test_central_config.py` | M6 RED tests: central config for orchestrator + tool_install. | tests | 3 | 0 |
| `tests/test_change_detection.py` | ATDD + BDD tests for estorides_core.change_detection. | tests | 43 | 0 |
| `tests/test_cli_watch.py` | BDD / regression tests for the `estorides watch add` CLI path. | tests | 16 | 0 |
| `tests/test_cloud_asset_discovery.py` | ATDD + BDD tests for estorides_core.cloud_asset_discovery. | tests | 18 | 0 |
| `tests/test_code_exposure.py` | ATDD + BDD tests for estorides_core.code_exposure. | tests | 21 | 0 |
| `tests/test_config_env.py` | BDD / regression tests for fault-tolerant configuration parsing. | tests | 13 | 0 |
| `tests/test_csp_safe_styles.py` | CSP-safe styles: regression tests for the inline-style bug introduced by the CSP tightening in... | tests | 11 | 0 |
| `tests/test_encrypted_export.py` | Encrypted export: plaintext must be removed after encryption. | tests | 9 | 0 |
| `tests/test_entity_extraction.py` | BDD / regression tests for entity extraction and fuzzy merge.  - EE1: `types=[]` extracts... | tests | 7 | 0 |
| `tests/test_entity_resolution.py` | BDD tests for estorides_core.entity_resolution. | tests | 68 | 0 |
| `tests/test_envutil.py` | BDD tests for the shared env readers (spec/envutil.md). | tests | 12 | 0 |
| `tests/test_event_bus.py` | M2a event_bus BDD red. | tests | 6 | 0 |
| `tests/test_fusion_analytics.py` | ATDD + BDD tests for estorides_core.fusion_analytics. | tests | 36 | 0 |
| `tests/test_graph_bundle.py` | graph_bundle: pestana Bundles circular 2D + esferica 3D estilo ReadMenator. | tests | 30 | 0 |
| `tests/test_graph_bundle_assets.py` | graph_bundle S6: assets frontend (fuera del sandbox mutmut). | tests | 1 | 0 |
| `tests/test_graph_force3d.py` | graph_force3d: port del sistema de grafos ReadMenator + contexto IA. | tests | 9 | 0 |
| `tests/test_graph_rag_search.py` | graph_rag_search: BM25 + PageRank/PPR + map-reduce global (contrato S1-S6). | tests | 11 | 0 |
| `tests/test_hardening.py` | BDD tests for the v1.3 hardening surface, case diff and report. | tests | 17 | 0 |
| `tests/test_hypothesis_engine.py` | ATDD + BDD tests for estorides_core.hypothesis_engine. | tests | 35 | 0 |
| `tests/test_ids.py` | BDD tests for the shared deterministic id helper (spec/ids.md).  - ID1: deterministic and... | tests | 7 | 0 |
| `tests/test_job_registry.py` | BoundedJobRegistry: size cap + TTL eviction (issues #14, #20, #50). | tests | 8 | 0 |
| `tests/test_keyless_sources.py` | M3 RED tests: keyless BGPView + CISA KEV sources and total parsers. | tests | 7 | 0 |
| `tests/test_lan_bundle.py` | BDD tests for lan_bundle (spec/lan_bundle.md). | tests | 9 | 0 |
| `tests/test_lan_inventory.py` | BDD tests for lan_inventory (spec/lan_inventory.md). | tests | 14 | 0 |
| `tests/test_lan_policy.py` | BDD tests for lan_policy (spec/lan_policy.md). | tests | 8 | 0 |
| `tests/test_lan_runner.py` | BDD tests for lan_runner (spec/lan_runner.md). | tests | 14 | 0 |
| `tests/test_lan_scope.py` | BDD tests for lan_scope (spec/lan_scope.md). | tests | 8 | 0 |
| `tests/test_lan_web.py` | BDD tests for lan_web (spec/lan_web.md). | tests | 12 | 0 |
| `tests/test_map_basemap.py` | BDD tests for spec/map_basemap.md (CARTO basemap, no direct OSM tiles). | tests | 5 | 0 |
| `tests/test_monitoring.py` | BDD tests for Monitoring & Advanced Recon modules. | tests | 35 | 0 |
| `tests/test_obs_fts.py` | Obs FTS BDD. | tests | 3 | 0 |
| `tests/test_observation_models.py` | estorides_core.observation_models — BDD/TDD contract tests. | tests | 28 | 0 |
| `tests/test_openapi.py` | OpenAPI BDD. | tests | 1 | 0 |
| `tests/test_ops_observability.py` | M1 ops_observability — BDD red. | tests | 6 | 0 |
| `tests/test_opsec_contact.py` | BDD tests for operator-OPSEC contact classification + passive-only filter. | tests | 14 | 0 |
| `tests/test_orchestrator_fanout.py` | M0 RED tests: fanout normalisation + callback parity + no duplicated methods. | tests | 9 | 0 |
| `tests/test_pagination.py` | BDD tests for estorides_core.pagination. | tests | 38 | 0 |
| `tests/test_parsers.py` | BDD / regression tests for the remote-JSON parser layer. | tests | 9 | 0 |
| `tests/test_pdns_monitor.py` | ATDD + BDD tests for estorides_core.pdns_monitor. | tests | 17 | 0 |
| `tests/test_people_intel.py` | ATDD + BDD tests for estorides_core.people_intel. | tests | 18 | 0 |
| `tests/test_probabilistic_fusion.py` | BDD + property tests for probabilistic fusion. | tests | 27 | 0 |
| `tests/test_query_intent.py` | M1 RED tests: query intent v2. | tests | 6 | 0 |
| `tests/test_recon_fusion.py` | BDD tests for the recon_fusion module (Modulo 2g). | tests | 33 | 0 |
| `tests/test_recon_report.py` | ATDD + BDD tests for estorides_export.recon_report. | tests | 19 | 0 |
| `tests/test_reliability_scoring.py` | ATDD + BDD tests for estorides_core.reliability_scoring. | tests | 70 | 0 |
| `tests/test_retry_policy.py` | Retry policy BDD. | tests | 2 | 0 |
| `tests/test_scope.py` | BDD tests for the bug-bounty scope classifier (`estorides_core.scope`). | tests | 15 | 0 |
| `tests/test_search_telemetry.py` | BDD/ATDD suite for the `search_telemetry` module (spec/search_telemetry.md). | tests | 19 | 0 |
| `tests/test_security_remediation.py` | TestSsrfLogSanitisation: BDD S1, S2: ssrf_guard._resolve log messages must not contain the... | tests | 67 | 0 |
| `tests/test_socmint.py` | BDD tests for SOCMINT sources and SocialMediaInferer. | tests | 72 | 0 |
| `tests/test_source_health_monitoring.py` | BDD tests for estorides_core.source_health_monitoring. | tests | 52 | 0 |
| `tests/test_source_loader.py` | BDD / regression tests for SourceRegistry loading.  - SL1: a multi-document YAML file loads... | tests | 12 | 0 |
| `tests/test_source_routing.py` | M2 RED tests: alias routing + phone/mac YAML backfill. | tests | 6 | 0 |
| `tests/test_sqlite_store.py` | BDD tests for the shared SQLite store base (spec/sqlite_store.md).  - SS1: schema applied... | tests | 14 | 0 |
| `tests/test_structured_extraction.py` | BDD tests for structured human-selector extraction + pivot leaf surfacing. | tests | 8 | 0 |
| `tests/test_supply_chain.py` | ATDD + BDD tests for estorides_core.supply_chain. | tests | 17 | 0 |
| `tests/test_system_app_sources.py` | BDD tests for estorides_core.system_app_sources. | tests | 42 | 0 |
| `tests/test_target_management.py` | - | tests | 86 | 0 |
| `tests/test_target_scoring.py` | ATDD + BDD tests for estorides_core.target_scoring. | tests | 18 | 0 |
| `tests/test_tech_fingerprint.py` | ATDD + BDD tests for estorides_core.tech_fingerprint. | tests | 16 | 0 |
| `tests/test_tool_doctor.py` | M4 RED tests: tool doctor. | tests | 4 | 0 |
| `tests/test_tool_install.py` | Tests for estorides_core.tool_install (lazyaddon-style tool installation). | tests | 28 | 0 |
| `tests/test_tool_runner.py` | ATDD + BDD tests for estorides_core.tool_runner. | tests | 29 | 0 |
| `tests/test_transforms.py` | BDD tests for spec/transforms.md — Maltego-style pivoting. | tests | 12 | 0 |
| `tests/test_ui_professional.py` | BDD tests for the ui_professional module (spec/ui_professional.md). | tests | 39 | 0 |
| `tests/test_ui_visibility.py` | Regression tests for the `hidden` attribute contract and output escaping. | tests | 9 | 0 |
| `tests/test_vuln_correlation.py` | ATDD + BDD tests for estorides_core.vuln_correlation. | tests | 17 | 0 |
| `tests/test_web_helpers.py` | BDD tests for the web-layer decorators/helpers extracted from `create_app`.  - WH1: `_provides`... | tests | 13 | 0 |
| `tests/test_web_tools_blueprint.py` | M5 RED tests: tools blueprint slice. | tests | 4 | 0 |
| `tools/split_sources.py` | Split legacy grouped source files into one addon per file. | tools | 1 | 0 |
| `tools/sync_docs.py` | tools.sync_docs | tools | 2 | 0 |
| `web.py` | Deprecated entry point. | root | 0 | 0 |
| `wsgi.py` | estorides.wsgi | root | 0 | 2 |
