Probes run with NO Godot import cache on the Linux gating VM — every texture fails to load, and nothing says so nf-anuc ← Beads

closed priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/619 by tools/beads/import_github.py's reconcile pass.

Found while working #572 on the Linux gating VM (nf/devs/probe-divergence). Filing rather than fixing: the repo-side fix is a design choice, and the machine-side fix is one command that will silently rot again.

What is true

.godot/ on this box contained only mono/. No imported/, no uid cache — i.e. godot --headless --import . had never been run here. Every probe therefore ran against a project with zero imported resources, and every .png load failed:

``` ERROR: Error loading resource: 'res://shared/pad_glyphs/triangle.png'. at: load (core/core_bind.cpp:82) [4] Godot.Texture2D Ninefold.Shared.PadGlyphs+GlyphBadge.TextureFor(...) (shared/PadGlyphs.cs:118) [5] void Ninefold.Shared.PadGlyphs+GlyphBadge._Draw() (shared/PadGlyphs.cs:125) ```

Running the import produced 896 imported resources where there were 0. Re-running focus-ring before and after, on an otherwise identical tree, changed 1995 pixels — 0.096% of the frame (the glyph badges that had been failing to draw).

Why it matters

probe.py's own docstring already contains the argument, for the other artifact:

> *"The probe runs whatever DLL dotnet build last produced, and a stale one is indistinguishable from a genuine regression in the log. It has already caused a wrong root-cause call... and a wrong probe baseline (#371)."*

A missing or stale import cache is indistinguishable from a genuine visual regression in exactly the same way — and unlike the DLL, nothing builds it, nothing stamps it, and nothing checks it. The provenance line ([probe] build: dll <mtime> · git <sha>) vouches for the DLL and says nothing about the resources actually rendered. A visual gate whose renderer is missing its textures is the #389 shape: it runs, it reports, and it is measuring less than the reader assumes.

It also matters for cross-host comparison specifically, which is #572's whole subject: design 003 §2.2 measurement #2 ran godot --headless --import . on its box, so that box and this one were not rendering the same thing.

What it did NOT explain

Worth recording so nobody re-runs it: this is not the cause of focus-ring's 1px shift. Measured at x=180, before and after the import, the ring's top stroke is amber at y=124-125 in both, with y=126 pennant fill in both. The Linux-vs-Windows 1px difference in #572/#615 is real and survives the import. The two are independent.

Directions, not a decision

Related: #572, #615, #380/#382 (the stale-DLL precedent this mirrors), #389, design 003 (#547) S9/S11.

Unclaimed.

Dependencies

None.

Comments

No comments.

Add a comment