# Graph Report - my-homelab-configs (2026-09-18) ## Corpus Check - cluster-only mode — file stats not available ## Summary - 1332 nodes · 2793 edges · 118 communities (73 shown, 45 thin omitted) - Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS · INFERRED: 11 edges (avg confidence: 0.8) - Token cost: 0 input · 0 output ## Graph Freshness - Built from commit: `e8d39e55` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). ## Community Hubs (Navigation) - provisioning/variables.tf - jeannie - jeannie script - platform/main.tf - main.go - edge/variables.tf - truthy - apps - cluster/variables.tf - jeannie-unit - pimox_ssh - main.py - heal - security-scan - pathlib - disabled_value - workers - render-service-catalog - capacity-report - translation.js - incident-commander - media-cruncher.js - build-homelab-ai-index - run_tofu_stack - seed-heimdall.py - prompt-injection-lab - configure-arr.py - ai-evals - translate.php - exporter.py - seed-uptime-kuma.js - validate-homelab - apps/variables.tf - rpi-services/bootstrap.sh - run_step - model-observe - restore-drill - ai-scheduler - renovate.json - access-audit - query-homelab-ai-index - ideas_helper.php - explain - resource-budget - safety-case - validate-tailnet-policy - cert-check - promote - security-attack-path - security-logs - synthetic-checks - theme.js - cv-theme.js - prepare_cluster_worker_var_file - red-blue-loop - architecture-simulator.js - dev-toolbelt.js - network-quality.js - sentiment-sandbox.js - secrets_init - backup-status - control-plane - recover-plan - release-snapshot - render-docs - scorecard - model-drift.js - privacy-redactor.js - lang_helper.php - blockchain-wallet - change-journal - grafana-dashboards - kubeconfig-readonly - platform/.terraform.lock.hcl - blockchain-devnet - capacity-limits - recover-power - route-inventory - render-static-pages.sh - addIdeaText - cluster/.terraform.lock.hcl - matrix-server/bootstrap.sh - ask - blockchain-test - capacity-advisor - homelab-map - impact - jeannie-core - report-render - review-last-change - sw.js - homelab-tree.php - translation_ui.php - start-website.sh - apps/.terraform.lock.hcl - edge/.terraform.lock.hcl - provisioning/.terraform.lock.hcl - arr-stack/bootstrap.sh - omniroute/bootstrap.sh - backup-youtube.sh - artifact-cache - gitops-status - golden-ledger - validate-homelab-inventory - my-homelab-configs ## God Nodes (most connected - your core abstractions) 1. `null_resource.edge_services` - 24 edges 2. `null_resource.pimox_template_vm_create` - 19 edges 3. `null_resource.provisioning_host` - 19 edges 4. `null_resource.kubeadm_worker` - 18 edges 5. `null_resource.pimox_template_vm_seal` - 18 edges 6. `local.preseed_cfg` - 17 edges 7. `local.default_conf` - 14 edges 8. `null_resource.calico_ready` - 14 edges 9. `local.config_hash` - 13 edges 10. `null_resource.kubeadm_control_plane` - 12 edges ## Surprising Connections (you probably didn't know these) - `local.application_sources` --references--> `var.website_image_ref` [EXTRACTED] bootstrap/apps/main.tf → bootstrap/apps/variables.tf - `local.application_sources` --references--> `var.gitops_repo_url` [EXTRACTED] bootstrap/apps/main.tf → bootstrap/apps/variables.tf - `output.kubeconfig_path` --references--> `var.kubeconfig_path` [EXTRACTED] bootstrap/cluster/main.tf → bootstrap/cluster/variables.tf - `null_resource.kubeadm_control_plane` --references--> `var.control_plane_advertise_address` [EXTRACTED] bootstrap/cluster/main.tf → bootstrap/cluster/variables.tf - `null_resource.kubeadm_control_plane` --references--> `var.kubeconfig_owner` [EXTRACTED] bootstrap/cluster/main.tf → bootstrap/cluster/variables.tf ## Import Cycles - None detected. ## Communities (118 total, 45 thin omitted) ### Community 0 - "provisioning/variables.tf" Cohesion: 0.05 Nodes (88): Terraform module: bootstrap/provisioning, local.config_hash, local.debian_netboot_base_url, local.dnsmasq_conf, local.golden_node_prepare, local.grub_cfg, local.http_root, local.kernel_cgroup_boot_options (+80 more) ### Community 1 - "jeannie" Cohesion: 0.04 Nodes (52): ai_index(), backup_tofu_state(), bootstrap_gitea_repo(), cleanup_calico_links(), cleanup_calico_runtime_files(), cleanup_iptables(), cleanup_mounts(), cleanup_node() (+44 more) ### Community 2 - "jeannie script" Cohesion: 0.04 Nodes (78): jeannie script, access_audit(), agent_sandbox(), ai_evals(), ai_memory(), ai_scheduler(), artifact_cache(), ask_homelab() (+70 more) ### Community 3 - "platform/main.tf" Cohesion: 0.07 Nodes (74): Terraform module: bootstrap/platform, helm_release.argocd, helm_release.calico, helm_release.calico_crds, helm_release.extra_tools, helm_release.kyverno, helm_release.kyverno_policies, helm_release.loki (+66 more) ### Community 4 - "main.go" Cohesion: 0.08 Nodes (45): envDefault(), executeDAG(), filterReportRows(), includeReportRow(), main(), normalizeStatus(), orderedReportAreas(), parseReportRows() (+37 more) ### Community 5 - "edge/variables.tf" Cohesion: 0.11 Nodes (42): Terraform module: bootstrap/edge, local.compose_file, local.config_hash, local.default_conf, local.default_conf_matrix, local.default_vcl, local.haproxy_cfg, local.heimdall_backend_host (+34 more) ### Community 6 - "truthy" Cohesion: 0.15 Nodes (33): ai_check(), backstage_brain_enabled(), backstage_brain_note(), doctor_cluster(), doctor_edge(), doctor_gitea(), doctor_rpi(), doctor_versions() (+25 more) ### Community 7 - "apps" Cohesion: 0.08 Nodes (34): apps(), apps_registry_endpoint(), demos_image_is_current(), demos_registry_endpoint(), demos_source_hash(), dump_argocd_debug(), dump_namespace_debug(), ensure_cosign_available() (+26 more) ### Community 8 - "cluster/variables.tf" Cohesion: 0.14 Nodes (31): Terraform module: bootstrap/cluster, local.control_plane_node_label_pairs, local.node_label_pairs, local.worker_node_label_pairs, null_resource.kube_system_resource_policy, null_resource.kubeadm_control_plane, null_resource.kubeadm_worker, null_resource.node_labels (+23 more) ### Community 9 - "jeannie-unit" Cohesion: 0.20 Nodes (26): jeannie-unit script, assert_command_failure_contains(), assert_command_success(), assert_contains(), assert_eq(), fail(), JEANNIE_LIBRARY_MODE, pass() (+18 more) ### Community 10 - "pimox_ssh" Cohesion: 0.13 Nodes (27): cpuset_cpu_count(), destroy_pimox_worker_vms(), detect_route_interface(), ensure_pimox_worker_node(), ensure_static_pimox_worker_spec_file(), pimox_generated_mac(), pimox_guest_cpu_count(), pimox_guest_exec_exitcode() (+19 more) ### Community 11 - "main.py" Cohesion: 0.13 Nodes (23): Any, BaseModel, fastapi, fastapi_middleware_cors, get, drift_score(), healthz(), load_model() (+15 more) ### Community 12 - "heal" Cohesion: 0.19 Nodes (23): apply_plan(), build_plan(), clear_failed_action(), command_for(), HealRule, highest_impact(), impact_sort_key(), load_heal_state() (+15 more) ### Community 13 - "security-scan" Cohesion: 0.26 Nodes (19): security-scan script, ensure_report_dir(), lynis_findings(), prepare_security_scans(), print_lynis_fallback_focus(), print_lynis_focus(), print_lynis_llm_focus(), require_docker() (+11 more) ### Community 14 - "pathlib" Cohesion: 0.13 Nodes (17): argparse, json, numpy, pathlib, classify(), load_policy(), main(), print_result() (+9 more) ### Community 15 - "disabled_value" Cohesion: 0.16 Nodes (21): check_edge_ssh(), check_pimox_storage(), configure_pimox_worker_forwarding(), configure_pimox_worker_guest_network(), deploy_heimdall(), deploy_hermes(), deploy_matrix(), deploy_omniroute() (+13 more) ### Community 16 - "workers" Cohesion: 0.26 Nodes (19): workers script, drain_node(), have(), is_skipped(), kubectl_cmd(), list_workers(), node_for_index(), pimox_ssh() (+11 more) ### Community 17 - "render-service-catalog" Cohesion: 0.25 Nodes (17): html, check_file(), host_ip(), host_label(), host_rows(), html_link(), main(), markdown_table() (+9 more) ### Community 18 - "capacity-report" Cohesion: 0.27 Nodes (17): capacity-report script, compact_guidance(), compact_host_capacity(), compact_kubernetes_capacity(), compact_main(), compact_pimox_capacity(), compact_rpi_capacity(), emit() (+9 more) ### Community 19 - "translation.js" Cohesion: 0.18 Nodes (15): actionSpan, badge, browserLang, btn, collectPageTranslations(), detectedSpan, doTranslation(), hidePrompt() (+7 more) ### Community 20 - "incident-commander" Cohesion: 0.28 Nodes (15): Namespace, classify(), first_evidence_lines(), fixture_text(), Incident, incident_for_class(), load_incidents(), main() (+7 more) ### Community 21 - "media-cruncher.js" Cohesion: 0.18 Nodes (14): appendStatus(), createCanvas(), crunchImage(), dropZone, extensionByType, formatBytes(), handleFiles(), maxEdge (+6 more) ### Community 22 - "build-homelab-ai-index" Cohesion: 0.26 Nodes (14): collections, fnmatch, math, build_index(), candidate_files(), chunk_file(), load_patterns(), main() (+6 more) ### Community 23 - "run_tofu_stack" Cohesion: 0.16 Nodes (15): adopt_apps_existing_resources(), adopt_platform_existing_resources(), adopt_tofu_helm_release(), adopt_tofu_kubernetes_manifest(), adopt_tofu_kubernetes_resource(), cluster_control_plane_tracked(), delete_prometheus_stack_storage(), edge_apply() (+7 more) ### Community 24 - "seed-heimdall.py" Cohesion: 0.27 Nodes (11): datetime, columns(), ensure_dashboard_tag(), ensure_public_dashboard(), home_dashboard_tag_id(), quote_identifier(), table_exists(), upsert_links() (+3 more) ### Community 25 - "prompt-injection-lab" Cohesion: 0.33 Nodes (12): dataclasses, Case, defense_response(), fixture_text(), load_cases(), main(), print_list(), print_run() (+4 more) ### Community 26 - "configure-arr.py" Cohesion: 0.32 Nodes (12): apply_import_lists(), ensure_qbittorrent(), ensure_root_folder(), fill_fields(), load_env(), main(), Path, Configure safe baseline ARR app settings from local environment values. (+4 more) ### Community 27 - "ai-evals" Cohesion: 0.38 Nodes (12): Case, fixture_text(), load_cases(), main(), print_list(), print_run(), print_show(), Deterministic eval harness for Jeannie and homelab RAG behavior. (+4 more) ### Community 28 - "translate.php" Cohesion: 0.29 Nodes (7): clean_translate_text(), redis_connect(), redis_encode_command(), redis_read_line(), redis_read_response(), translation_cache_read(), translation_cache_write() ### Community 29 - "exporter.py" Cohesion: 0.21 Nodes (9): BaseHTTPRequestHandler, http_server, collect_metrics(), hex_to_int(), MetricsHandler, rpc(), time, urllib_error (+1 more) ### Community 30 - "seed-uptime-kuma.js" Cohesion: 0.27 Nodes (11): defaultForColumn(), findModuleDirectory(), fs, loadDatabaseModule(), main(), monitorValues(), nowSql(), path (+3 more) ### Community 31 - "validate-homelab" Cohesion: 0.20 Nodes (3): validate-homelab script, main(), run_step() ### Community 32 - "apps/variables.tf" Cohesion: 0.31 Nodes (9): Terraform module: bootstrap/apps, kubernetes_manifest.argocd_application, local.application_sources, provider.kubernetes, var.applications, var.argocd_namespace, var.gitops_repo_url, var.kubeconfig_path (+1 more) ### Community 33 - "rpi-services/bootstrap.sh" Cohesion: 0.33 Nodes (9): configure_docker_root(), install_missing_packages(), resolve_pihole_webpassword(), seed_uptime_kuma_monitors(), bootstrap.sh script, stop_legacy_pihole(), sync_pihole_adlists(), sync_pihole_managed_dns() (+1 more) ### Community 34 - "run_step" Cohesion: 0.24 Nodes (11): jeannie_compact_text(), jeannie_log_start(), jeannie_step_latest_progress_line(), jeannie_step_plan(), jeannie_step_prefix(), jeannie_step_progress(), jeannie_verbose_enabled(), rebuild_cluster() (+3 more) ### Community 35 - "model-observe" Cohesion: 0.35 Nodes (10): ask_ollama(), grade(), main(), offline_answer(), print_prompts(), prompts(), Track local model behavior with stable homelab prompts., report() (+2 more) ### Community 36 - "restore-drill" Cohesion: 0.42 Nodes (10): restore-drill script, check_file(), drill_gitea(), drill_gitops(), drill_pihole(), drill_state(), latest_file(), main() (+2 more) ### Community 37 - "ai-scheduler" Cohesion: 0.36 Nodes (9): csv, as_bool(), main(), Path, Simulate placement for AI-ish homelab workloads., read_tsv(), recommend(), score_node() (+1 more) ### Community 38 - "renovate.json" Cohesion: 0.20 Nodes (9): config:recommended, customManagers, dependencyDashboard, extends, labels, packageRules, prConcurrentLimit, $schema (+1 more) ### Community 39 - "access-audit" Cohesion: 0.47 Nodes (9): access-audit script, git_access(), kubernetes_access(), main(), runner_access(), section(), ssh_inventory(), tailnet_access() (+1 more) ### Community 40 - "query-homelab-ai-index" Cohesion: 0.33 Nodes (9): ask_ollama(), load_index(), main(), Path, Query the local homelab retrieval index and optionally ask Ollama., render_citations(), render_context(), score_chunks() (+1 more) ### Community 41 - "ideas_helper.php" Cohesion: 0.47 Nodes (8): visitor_idea_clean(), visitor_ideas_append(), visitor_ideas_dir(), visitor_ideas_ensure_dir(), visitor_ideas_file(), visitor_ideas_rate_file(), visitor_ideas_read(), visitor_ideas_recently_submitted() ### Community 42 - "explain" Cohesion: 0.39 Nodes (7): explain script, explain_output(), is_read_only_command(), is_read_only_subcommand(), main(), run_target(), usage() ### Community 43 - "resource-budget" Cohesion: 0.53 Nodes (8): resource-budget script, fail(), have(), host_budget(), kubernetes_budget(), section(), usage(), warn() ### Community 44 - "safety-case" Cohesion: 0.39 Nodes (8): changed_files(), git_lines(), load_rules(), main(), matched_rules(), print_safety_case(), Generate a read-only safety case for homelab changes., risk_order() ### Community 45 - "validate-tailnet-policy" Cohesion: 0.36 Nodes (7): re, main(), parse_simple_inventory(), Path, Validate the repo-managed Tailscale policy without contacting Tailscale., require(), strip_hujson() ### Community 46 - "cert-check" Cohesion: 0.50 Nodes (6): cert-check script, have(), inventory_hosts(), inventory_scalar(), mark_fail(), section() ### Community 47 - "promote" Cohesion: 0.43 Nodes (7): checks(), main(), plan(), Plan and validate canary promotion gates., rollback(), validate(), subprocess ### Community 48 - "security-attack-path" Cohesion: 0.50 Nodes (7): security-attack-path script, jsonpath_or_unknown(), kubectl_ro(), main(), require_kubectl(), section(), usage() ### Community 49 - "security-logs" Cohesion: 0.46 Nodes (7): security-logs script, collect_gitea_logs(), collect_traefik_logs(), ensure_report_dir(), main(), print_matches(), timestamp() ### Community 50 - "synthetic-checks" Cohesion: 0.39 Nodes (5): synthetic-checks script, check(), kubectl_ok(), section(), warn_check() ### Community 51 - "theme.js" Cohesion: 0.48 Nodes (4): getDemoThemeButtons(), normalizeDemoTheme(), setDemoTheme(), storeDemoTheme() ### Community 52 - "cv-theme.js" Cohesion: 0.48 Nodes (5): cvPortrait, getSiteThemeButtons(), normalizeSiteTheme(), setSiteTheme(), storeSiteTheme() ### Community 53 - "prepare_cluster_worker_var_file" Cohesion: 0.33 Nodes (7): cluster_worker_var_file_has_workers(), ensure_cluster_worker_var_file(), plan_homelab(), prepare_cluster_worker_var_file(), run_tofu_plan_stack(), tofu_stack_from_plan_target(), write_cluster_worker_var_file() ### Community 54 - "red-blue-loop" Cohesion: 0.52 Nodes (6): checks(), ledger(), main(), plan(), Run or plan the homelab red-team/blue-team loop., run() ### Community 55 - "architecture-simulator.js" Cohesion: 0.40 Nodes (5): box(), canvas, ctx, draw(), state ### Community 56 - "dev-toolbelt.js" Cohesion: 0.33 Nodes (3): input, logFilter, output ### Community 57 - "network-quality.js" Cohesion: 0.40 Nodes (5): canvas, ctx, draw(), measure(), samples ### Community 58 - "sentiment-sandbox.js" Cohesion: 0.33 Nodes (4): input, negative, output, positive ### Community 59 - "secrets_init" Cohesion: 0.40 Nodes (6): ensure_sops_age_tools(), secrets_check(), secrets_check_file(), secrets_init(), sops_age_key_file(), sops_age_recipient() ### Community 60 - "backup-status" Cohesion: 0.60 Nodes (5): backup-status script, check_latest(), file_age_hours(), latest_file(), section() ### Community 61 - "control-plane" Cohesion: 0.60 Nodes (5): control-plane script, require_kubectl(), show_non_system_pods(), show_taints(), usage() ### Community 62 - "recover-plan" Cohesion: 0.47 Nodes (3): recover-plan script, check(), main() ### Community 63 - "release-snapshot" Cohesion: 0.67 Nodes (5): release-snapshot script, have(), latest_file(), run_optional(), section() ### Community 64 - "render-docs" Cohesion: 0.60 Nodes (5): render-docs script, main(), read_inventory_value(), render_template(), usage() ### Community 66 - "model-drift.js" Cohesion: 0.40 Nodes (3): accuracy, canvas, ctx ### Community 69 - "blockchain-wallet" Cohesion: 0.70 Nodes (4): blockchain-wallet script, require_private_key(), run_cast(), usage() ### Community 70 - "change-journal" Cohesion: 0.70 Nodes (4): change-journal script, append_entry(), latest_entries(), timestamp() ### Community 71 - "grafana-dashboards" Cohesion: 0.70 Nodes (4): grafana-dashboards script, apply_dashboards(), list_dashboards(), usage() ### Community 72 - "kubeconfig-readonly" Cohesion: 0.70 Nodes (4): kubeconfig-readonly script, main(), require_kubectl(), usage() ### Community 73 - "platform/.terraform.lock.hcl" Cohesion: 0.50 Nodes (3): provider.registry.opentofu.org/hashicorp/helm, provider.registry.opentofu.org/hashicorp/kubernetes, provider.registry.opentofu.org/hashicorp/null ### Community 74 - "blockchain-devnet" Cohesion: 0.83 Nodes (3): blockchain-devnet script, rpc_call(), usage() ### Community 76 - "recover-power" Cohesion: 0.83 Nodes (3): recover-power script, run_optional(), run_step() ## Knowledge Gaps - **61 isolated node(s):** `provider.registry.opentofu.org/hashicorp/kubernetes`, `provider.registry.opentofu.org/hashicorp/external`, `provider.registry.opentofu.org/hashicorp/null`, `provider.registry.opentofu.org/hashicorp/null`, `provider.registry.opentofu.org/hashicorp/helm` (+56 more) These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 227 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) - **45 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **What connects `provider.registry.opentofu.org/hashicorp/kubernetes`, `provider.registry.opentofu.org/hashicorp/external`, `provider.registry.opentofu.org/hashicorp/null` to the rest of the system?** _61 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `provisioning/variables.tf` be split into smaller, more focused modules?** _Cohesion score 0.054212454212454214 - nodes in this community are weakly interconnected._ - **Should `jeannie` be split into smaller, more focused modules?** _Cohesion score 0.038542607648298706 - nodes in this community are weakly interconnected._ - **Should `jeannie script` be split into smaller, more focused modules?** _Cohesion score 0.04229104229104229 - nodes in this community are weakly interconnected._ - **Should `platform/main.tf` be split into smaller, more focused modules?** _Cohesion score 0.07017543859649122 - nodes in this community are weakly interconnected._ - **Should `main.go` be split into smaller, more focused modules?** _Cohesion score 0.0841813135985199 - nodes in this community are weakly interconnected._ - **Should `edge/variables.tf` be split into smaller, more focused modules?** _Cohesion score 0.113107822410148 - nodes in this community are weakly interconnected._