Skip to content

feat(resolve): optional Godot resource DSL hook + Godot docs (L5)#58

Merged
sunerpy merged 2 commits into
mainfrom
feat/godot-l5-dsl
Jun 25, 2026
Merged

feat(resolve): optional Godot resource DSL hook + Godot docs (L5)#58
sunerpy merged 2 commits into
mainfrom
feat/godot-l5-dsl

Conversation

@sunerpy

@sunerpy sunerpy commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Summary

Final Godot static-analysis layer: the opt-in resource DSL hook (L5 / T9) plus the Godot documentation (T10).

T9 — optional detection-gated Godot resource DSL edges

  • New godot_dsl_config.rs: reads godot.dsl.resourceFields (a string array) from the nearest .codegraph/codegraph.json, mirroring the ext_config walk-up + mtime-cache + tolerant-parse pattern.
  • .tres [resource] key = "value" lines whose key is in the configured list emit a References edge to the literal value.
  • Off by default: no config → empty field list → zero DSL edges. Field list is entirely project-supplied (nothing hardcoded). Reuses EdgeKind::References (no new kind). ExtResource(…) handles still resolve via the existing T5 path regardless of config.
  • 6 tests: with-config literal, without-config (zero), non-matching field (zero), ExtResource value resolution, malformed config tolerance, determinism.

T10 — Godot docs

  • New docs/godot.md: full extraction inventory, static-vs-runtime boundary (CodeGraph = static structure/impact; runtime tools like godot-mcp = run/compile/screenshot), "no static caller ≠ dead" honesty signals, and the opt-in DSL hook (documented to match the actual resourceFields shape).
  • Cross-linked from README (+ zh-CN mirror) and docs/languages.md (Tier 3 now lists the 3 Godot file types; GDScript notes the dynamic edges).

Verification

  • cargo test --workspace: 0 failures (incl. 6 new godot_dsl tests)
  • cargo clippy --workspace --all-targets -- -D warnings: exit 0
  • cargo fmt --all --check: exit 0
  • bash scripts/guardrail.sh: exit 0 (no-AI)
  • git status --porcelain reference/golden/: clean (no corpus drift)
  • oxfmt --check on touched docs: clean

Scope

  • No new EdgeKind/NodeKind; no hand version bump (release-please owns it); changes confined to codegraph-resolve + docs.
  • Completes Godot plan T1–T10; T11 (E2E QA) + Final Wave F1–F4 follow.

sunerpy added 2 commits June 25, 2026 19:11
Add an opt-in DSL layer (L5) that reads godot.dsl.resourceFields from the
nearest .codegraph/codegraph.json and emits a References edge from a .tres
[resource] property to its string-literal value, for each listed field name.

Off by default: with no config the field list is empty and zero DSL edges are
produced. The field list is entirely project-supplied (nothing hardcoded), the
config reader mirrors ext_config (walk-up + mtime cache + tolerant parse), and
the edge reuses EdgeKind::References (no new kind). ExtResource handle values
continue to resolve via the existing T5 path regardless of config.
Add docs/godot.md: the full Godot extraction inventory (project.godot autoload/
input/plugins, .tscn node tree/script binding/signals/groups/instances, .tres
references, GDScript dynamic-dispatch edges), the static-vs-runtime division of
labor (CodeGraph = static structure/impact; a runtime tool like godot-mcp =
run/compile/screenshot), the no-static-caller-not-dead honesty signals, and the
opt-in resource DSL hook (godot.dsl.resourceFields).

Cross-link from README (Supported Languages + Godot note), docs/languages.md
(Tier 3 now lists GodotScene/GodotResource/GodotProject; GDScript notes the
dynamic edges), and the zh-CN README mirror. Docs state only static abilities;
no runtime/compile/screenshot claims.
@sunerpy sunerpy merged commit de7e5f6 into main Jun 25, 2026
4 checks passed
@sunerpy sunerpy deleted the feat/godot-l5-dsl branch June 25, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant