Skip to content

[Bug]: 3.17.0: Terraform/HCL files are indexed but no HCL symbols are extracted (variables, locals, resources, data, outputs unresolvable) #2662

Description

@carlos-alm

Description

Terraform/HCL indexing regressed to file-level only. On 3.17.0 (native and wasm) stats counts the .tf files and brief <file.tf> works, but no HCL symbol is extracted: variable, locals entries, resource, data and output blocks are all unaddressable with where/context/fn-impact, and roles --role dead -T returns zero Terraform symbols. Earlier builds did extract them: optave/core-orchestrator-svc/.codegraph/basics.md, written against a 2026-08-09 build, records 592 Terraform symbols in the dead list (with the separate, already-documented caveat that <resource>.<name>.<attribute> references were not wired). So the symbol extractor for HCL went from "definitions indexed, references missing" to "nothing indexed".

Observed while validating an infrastructure change (interface VPC endpoint, IAM policy document, six variables across two Terraform roots) in optave/core-orchestrator-svc: codegraph contributed nothing to the Terraform review because none of the new symbols existed in the graph, in either root.

Additionally, the locally installed 3.9.4-dev.8 native engine indexes 0 of the 75 .tf files (Files: 327 (3 languages)), while --engine wasm on the same version indexes all 75. 3.17.0 native indexes the files again, so that part is already fixed; the missing symbols are not.

Steps to Reproduce

On optave/core-orchestrator-svc at commit ca32aee92 (branch claude/opus-sonnet-orchestration-94be94), or any repo with Terraform:

npx -y @optave/codegraph@3.17.0 build --no-incremental
npx -y @optave/codegraph@3.17.0 stats | grep -E 'Files|hcl'
npx -y @optave/codegraph@3.17.0 where data_plane_read_api_id          # variable "data_plane_read_api_id" in infra/terraform/module-oco/variables.tf (83 variable blocks in that file)
npx -y @optave/codegraph@3.17.0 where data_plane_environment          # entry in locals { } in infra/terraform/module-oco/locals.tf
npx -y @optave/codegraph@3.17.0 where workflow_steps_library          # locals entry
npx -y @optave/codegraph@3.17.0 where execute_api                     # resource "aws_vpc_endpoint" "execute_api" in infra/terraform/module-oco/network_vpce-execute-api.tf
npx -y @optave/codegraph@3.17.0 where aws_vpc_endpoint.execute_api
npx -y @optave/codegraph@3.17.0 where data_plane_read_invoke          # data "aws_iam_policy_document" "data_plane_read_invoke" in infra/terraform/module-oco/lambda.tf
npx -y @optave/codegraph@3.17.0 roles --role dead -T | grep -c infra/terraform
npx -y @optave/codegraph@3.17.0 brief infra/terraform/module-oco/network_vpce-execute-api.tf

Expected Behavior

  • where data_plane_read_api_id resolves to the variable blocks in infra/terraform/module-oco/variables.tf, infra/terraform/stacks/owo/variables.tf and root infra/terraform/variables.tf.
  • resource, data, output and locals entries are addressable symbols (execute_api, data_plane_read_invoke, data_plane_vpce_id, data_plane_environment, workflow_steps_library).
  • roles classifies Terraform symbols again (the 2026-08-09 baseline listed 592 of them), and brief on a .tf file lists its symbols rather than only a risk tier.

Actual Behavior

stats:  Files: 402 (4 languages)   javascript 291   hcl 75   typescript 25   bash 11
where data_plane_read_api_id          No symbol matching "data_plane_read_api_id" in graph
where data_plane_environment          No symbol matching "data_plane_environment" in graph
where workflow_steps_library          No symbol matching "workflow_steps_library" in graph
where execute_api                     No symbol matching "execute_api" in graph
where aws_vpc_endpoint.execute_api    No symbol matching "aws_vpc_endpoint.execute_api" in graph
where data_plane_read_invoke          No symbol matching "data_plane_read_invoke" in graph
roles --role dead -T | grep -c infra/terraform   ->  0
brief infra/terraform/module-oco/network_vpce-execute-api.tf   ->  "[LOW RISK]" and no symbols

On 3.9.4-dev.8 (native): Files: 327 (3 languages), no hcl row at all; deps infra/terraform/main.tf -> No file matching ... in graph. Same version with --engine wasm: 403 files, hcl 75, but still no HCL symbols.

Codegraph Version

3.17.0 (npx -y @optave/codegraph@3.17.0), plus 3.9.4-dev.8 for the file-count regression noted above.

Node.js Version

v22.18.0

Operating System

Windows 11 Pro 10.0.26200 (x64), Git Bash shell

Parser Engine

native (Active engine : native (v3.17.0)); the missing-symbol behaviour also reproduces with --engine wasm.

Additional Context

  • The repo has 73 to 75 .tf files across three Terraform roots (infra/terraform, infra/terraform/module-oco, infra/terraform/stacks/owo), so it is a convenient regression fixture; the two roots are kept in sync by hand and where <name> returning both definitions is the main thing a reviewer wants from the tool there.
  • Related JavaScript caller-resolution findings from the same validation pass are filed separately.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdogfoodFound during dogfooding

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions