Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for gdharness

Pod holds 22 of 66 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to gdharness.

Most discussed

script_diagnostics reports a method as missing after it is added to an existing class_name, until the editor restarts

What was asked

A method was added to an existing class_name script (scripts/game.gd, class_name Game), and script_diagnostics was run over the files that call it.

What came back

Every caller reported the same thing, as an error, because this project treats every GDScript warning as one:

The method "is_finished()" is not present on the inferred type "Game" (but may be present on a subtype). (Warning treated as error.)

Three files, three identical reports, against a…

Read the thread · 2026-09-19 · closed · 14 comments

editor_output describes a different run after a reconnect, and carries no output from an editor-played one

Version: gdharness server 0.12.18, addon 0.12.4, Godot 4.7.2.stable, Windows 11.

What happens

With an editor connected, editor_run start plays the scene through the editor: the answer carries "through": "editor", pid: null, and no transcript. That mode is fine in itself. Two things go wrong around it.

1. After a server reconnect, editor_output describes a different run and does not say so

The editor-played run is held by the editor, so it survives a reconnect of the…

Read the thread · 2026-09-19 · closed · 7 comments

The installed skill still says to change the declaring script, in the paragraph #415 did not reach

What happened

The skill 0.13.36 installs still sends a caller to edit source that is already correct. In SKILL.md, under Editing, the paragraph about Could not find type ends:

editor_rescan asks it to scan and names any class it still cannot resolve under unseenByEditor: its walk skips a file a headless engine has already imported, so the declaration and the cache can both be right while the editor stays blind to it. Change the declaring script, or restart the editor.…

Read the thread · 2026-09-20 · closed · 4 comments

playingInEditor answers null under a version gap, for a run the same server started and still reports as running

#447 was left open for the mechanism behind playingInEditor: null, and closed before it was established. This is a reading that separates the two candidates that comment says could not be told apart from the reporting end.

The reading, 2026-09-20, Godot 4.7.2, Ostinato:

Read the thread · 2026-09-20 · closed · 4 comments

An editor-played run advertises a transcript it never writes to

Version: gdharness server 0.13.10, addon 0.13.10, Godot 4.7.2.stable, Windows 11, in ostinato.

Follow-up to the second half of #358, which is closed. That half was an editor-played run carries no output. It now carries a transcript path as well, and never writes to it, which is a worse failure than the one it replaced.

What happens

With an editor connected, editor_run start still plays the scene through the editor:

"through": "editor", "pid": null,
"transcript":…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/376) · 2026-09-19 · closed · 4 comments

### project_dependencies reverse counts a doc-comment link as a use, so a dead class reads as a live one

## What was asked

Whether `SweepTally` is still used by anything, which is what `CLAUDE.md` in the project using this sends a reverse walk to answer.

project_dependencies projectPath=C:\Users\Aurelio\fantasy-guild-manager resourcePath=res://scripts/sim/sweep_tally.gd direction=reverse


## What came back (gdharness 0.13.31, server and addon both)

```json
"summary": { "by_kind": { "class_name": 4 }, "files_with_usages": 2, "total": 4 }

Two…

Read the thread · 2026-09-20 · closed · 3 comments

editor_rescan starts a second reimport over one the editor is already running

What was asked. editor_rescan on fantasy-guild-manager right after setup.py assets wrote 194 new files (36 PNGs) under addons/, with the editor open and focused elsewhere.

What came back. The call answered {ok: true, stillWorking: false, waitedMs: 1283}, and the editor's console (editor_output op: editor) then held three errors:

Task 'reimport' already exists.            at: add_task (editor/gui/progress_dialog.cpp:200)
Condition "!tasks.has(p_task)" is true. Returning:…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/689) · 2026-09-25 · closed · 2 comments

### editor_run stop cannot end a run the previous server started, after a reconnect

**Asked:** `editor_run stop` (no arguments) after an MCP reconnect from 1.0.29 to 1.0.30, to end a game the 1.0.29 server had started with `editor_run start` and `savesIn` (pid 22520; its runtime announced on port 55611).

**Answer:**

> A game is running for C:/Users/Aurelio/fantasy-guild-manager and has announced its runtime on port 55611, pid 22520, but this server did not start it and cannot reach it through the editor, so editor_run and editor_output have nothing to answer about.…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/677) · 2026-09-24 · closed · 2 comments

## Most recent

### click on an OptionButton picks the item its popup opens under the pointer

## What was asked

`runtime_input click` on an OptionButton near the bottom of the window (fantasy-guild-manager, 1.1.11, window 1920x1080, canvas 1280x800). The button's canvas rect is y 744 to 778; its two-item popup (50 tall) cannot open below it inside 800, so the engine opens it at y 750, over the button.

## What came back

The click chose the popup's first item: the answer said `control_afterwards: "freed"`, because the game rebuilt the screen for the setting the item changed. Nothing…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/749) · 2026-09-27 · closed · 1 comment

### choose answers {} and errors when the pick frees the menu

## What was asked

`runtime_input choose` on a settings OptionButton (fantasy-guild-manager, 1.1.11), `index: 1`. The game answers `item_selected` by changing a setting, and the game redraws the whole screen for that setting, so the OptionButton and its PopupMenu are freed during the pick.

## What came back

```json
{}

and the run's output carried, once per pick:

Invalid type in function 'item_says' in base 'GDScript'. The Object-derived class of argument 1 (previously freed) is not…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/748) · 2026-09-27 · closed · 0 comments

### runtime_wait until reads a says glob as literal words and waits out the whole timeout, where find and click read it as a glob

**What happened.** On gdharness 1.1.11, driving a game whose cast line reads `you cast Parry, Parry, Twin, Goadlance, Parry  ·  hurts 10, wards 0, mends 0`:

- `runtime_wait op:until says:"you cast Parry*" timeoutMs:15000` answered `met: false` after 15000 ms and 2150 looks, with the label on screen the whole time.
- Again with the line certainly present: `met: false`, 3002 ms, 435 looks.
- `runtime_inspect op:find says:"you cast Parry*"` in the same minute found…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/744) · 2026-09-27 · closed · 0 comments

### runtime_input click says: a plain word matches every label containing it, pressable or not

**Asked:** on a game showing its Log page over the hall, press the page's Back button: `runtime_input click` with `says: "Back"` and no `nodePath`.

**Answer:** refused, 11 matches:

11 controls on screen say "Back", so which to click is not clear; pass index, counting from 0: 0 .../Tray/.../Reading/Line0 ("Calls it B+ work. “I need a quarter's rent in coin taken ...") ... 4 /root/Main/@Control@19/Log/.../Head/Back ("Back") 5 /root/Main/@Control@19/Log/.../Head/@Label@1432 ("Word back") 6…

Read the thread · 2026-09-27 · closed · 0 comments

runtime_inspect find with a says glob that matches nothing gives no hint, where namePattern does

Asked. runtime_inspect find with says: "Taken together*" and property: text, to read a label whose text contains that sentence (fantasy-guild-manager, 2026-09-25).

Answer. {"count": 0, "nodes": []} and nothing else. The label existed: its text begins "Calls themselves E+. ..." and the words are in the middle, so the glob (anchored to the whole text) could not match. A bare says: "travelled a good distance" found it at once.

Expected. What namePattern already does on a…

Read the thread · 2026-09-25 · closed · 1 comment

runtime_invoke: say how long the call took inside the engine

Asked. How long opening a drawer on a year-ten guild costs in the running game: one frame's work behind a click (fantasy-guild-manager, 2026-09-25, Drawer.open("roster")).

Answer. Nothing gdharness has can say. runtime_invoke call returns the result only, and the bridge round trip is 1 to 3.5 s, so timing the call from outside measures the bridge, not the call. runtime_inspect metrics reads the last frame's process time, which is whichever frame happens to be last when it is…

Read the thread · 2026-09-25 · closed · 0 comments

runtime_inspect text leaves a titled separator out of an open menu

Asked: runtime_inspect text on an OptionButton whose popup is open, in Fantasy Guild Manager's log filter. The button holds 42 items: "Everything", then five titled separators (add_separator("The work") and so on) each over a run of items.

Answer: 38 lines: the button's own "Everything", then the 37 selectable items. None of the five separator titles appear, though the popup draws each one as a line of text.

Expected: the separators' titles in their places, since the tool…

Read the thread · 2026-09-25 · closed · 0 comments

editor_run stop reports a run ended when another project's server overwrote the shared run.json, and signals nothing

Asked: editor_run stop on 1.0.30, for a kept headless run this same server had started 52 seconds earlier (editor_run start, headless: true, savesIn, project C:\Users\Aurelio\ostinato, pid 25264, started 2026-09-24T19:05:22Z). The server had been listening since 18:59:39Z, so no reconnect happened between the start and the stop; this is not #677's state.

Answer: stopped: true, endedPid: 25264, and the note "The process named under endedPid was ended." Beside it, the…

Read the thread · 2026-09-24 · closed · 1 comment

An editor or run the server started dies when the harness ends the server

What happens. An editor opened with editor_launch and a run started with editor_run start (spawned, not editor-played) both die when the harness ends the server that started them. Claude Code ends a gdharness server by killing its process tree: its log says "Terminating MCP server process tree", dozens of times in fantasy-guild-manager's logs, once per reconnect, and at every session end. Both processes are spawned detached, which on Windows keeps them out of the server's own job…

Read the thread · 2026-09-24 · closed · 0 comments

editor_run start can boot a game while the editor is rewriting the class cache

What was asked. editor_run start with savesIn on fantasy-guild-manager (server 1.0.26, addon 1.0.27), a few seconds after gdformat had rewritten a handful of .gd files on disk and the editor (with auto_reload) was scanning them.

What came back. started: true, runtime listening, and a game that could resolve no global class at all: 95 errors, beginning

SCRIPT ERROR: Parse Error: Could not find type "ModHost" in the current scope.
   at: GDScript::reload…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/669) · 2026-09-24 · closed · 0 comments

### runtime_inspect text reads a RichTextLabel's markup rather than its words

**What was asked.** `runtime_inspect` op `text` on a page holding a `RichTextLabel` with `bbcode_enabled`, to read what the page says (fantasy-guild-manager, the dossier page, gdharness 1.0.26 server).

**What came back.** The label's `text` property, markup and all:

"[b][color=#4fc2d4]Mollum Telken[/color], [/b][color=#c2ae92]a thief-taker[/color][b][/b]"


**What was expected.** What the player reads: `Mollum Telken, a thief-taker`, which is `RichTextLabel.get_parsed_text()`. The op's…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/667) · 2026-09-24 · closed · 0 comments

### runtime_inspect tree: depth 0 walks the whole subtree instead of answering the root alone

Seen from fantasy-guild-manager on server and runtime addon 1.0.26, 2026-09-24.

**Asked:** `runtime_inspect op tree nodePath /root/Main/@Control@16 depth 0`, meaning the router node alone, to read a few `properties` off it.

**Answered:** the entire subtree, 4,070,237 characters across 99,553 lines, which the harness could not take and wrote to a file. On `/root/Main/SoundBoard` with `depth 0` the answer lists its eight children. On `/root/Main` with `depth 0` and a `properties` list the day…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/661) · 2026-09-24 · closed · 0 comments

### runtime_invoke: advertised schema has no op result, requestId or timeoutMs, and requires nodePath

Seen from fantasy-guild-manager on server 1.0.26 (editor addon 1.0.26), 2026-09-24.

**Asked:** `runtime_invoke op call` on `_game:skip` with `[1400]`, a call that runs about 17.7 s.

**Answered (correctly):** `pending: true, requestId: 19, waitedMs: 10000`, with a note saying "runtime_invoke op result with requestId 19 answers with its reply once it comes, and timeoutMs waits longer next time". `runtime_invoke op result requestId 19` then answered `method_result`, `answeredAfterMs: 17728`. So…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/660) · 2026-09-24 · closed · 0 comments

### runtime_wait until with says slows the game it is watching: 11 fps against 60, and the game's clock loses three quarters of its time

**Asked.** `runtime_wait until` with `says` (no `nodePath`, so `/root`) on a running game, fantasy-guild-manager's hall: about 3,500 nodes (`object_node_count` 3510), 60 fps otherwise. The words were ones that never appear, so the wait ran its whole `timeoutMs` of 10000.

**Measured.**

| | frames (`get_tree():get_frame()` before and after) | game days elapsed (clock at 3x: 90 s a day at 1x) |
|---|---|---|
| `runtime_wait frames` 600 | 600 in 10.0 s (60 fps) | 0.337, as 3x should give over ~12…

[Read the thread](https://github.com/Aureliolo/gdharness/issues/655) · 2026-09-23 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/Aureliolo/gdharness/issues).