Fix inventory layout integration and qualify ordinary UI and radio guidance

This commit is contained in:
2026-09-19 18:17:51 +02:00
parent 5c7719c19c
commit 67de3752fb
125 changed files with 18310 additions and 42 deletions
+9 -3
View File
@@ -19,7 +19,7 @@ Before child launch it snapshots existing session directories. It accepts exactl
Each event requires the existing Gamescope/Xwayland listener and PID/start binding, native game executable/prefix/display and XRes/client PID agreement, exact original game window, mapped InputOutput geometry and existing same-game keyboard focus. It never focuses, raises, moves, resizes or points at a window, and never uses a host DISPLAY fallback or an input portal. The original explicit X11 connection is retained throughout. No key mapping/settings are changed; default unmodified `w` and Tab keysyms must resolve exactly. An already held private key refuses the experiment.
After fresh READY, the fixed request is W down/up, Tab down/up, wait for native INVENTORY_OPEN, retain a 500 ms checked open interval for native rendering/capture, then Tab down/up and wait for INVENTORY_CLOSED. Requested hold delays are 300 ms and 50 ms respectively, but ownership checks take time: **recorded per-event monotonic timestamps determine actual request duration**, not the requested sleeps. Native click filtering may reject a slow Tab; the helper preserves that failure. After each key-up, a bounded read-only XQueryKeymap poll must show all keys released. A busy state can be checked again at 25 ms intervals for at most 350 ms with fresh ownership/focus checks before each query; no additional input is sent during polling. Failed native queries and lost ownership/focus abort immediately. Release observations retain attempt counts and times. The unchanged 1.5-second supervisor covers the entire pending press. A final native key-state check is still required before completion. XTest request return/XFlush alone is insufficient.
After fresh READY, the fixed request is W down/up, Tab down/up, wait for native INVENTORY_OPEN, retain a three-second checked open interval for native rendering/capture, then Tab down/up and wait for INVENTORY_CLOSED. Requested hold delays are 300 ms and 50 ms respectively, but ownership checks take time: **recorded per-event monotonic timestamps determine actual request duration**, not the requested sleeps. Native click filtering may reject a slow Tab; the helper preserves that failure. After each key-up, a bounded read-only XQueryKeymap poll must show all keys released. A busy state can be checked again at 25 ms intervals for at most 350 ms with fresh ownership/focus checks before each query; no additional input is sent during polling. Failed native queries and lost ownership/focus abort immediately. Release observations retain attempt counts and times. The unchanged 1.5-second supervisor covers the entire pending press. A final native key-state check is still required before completion. XTest request return/XFlush alone is insufficient.
A separate process supervises the worker before any Xlib connection is opened. A pending press may remain unconfirmed for at most 1.5 seconds before the supervisor interrupts the worker, allows one second for its guarded finally release, stops the exact created display-wrapper child and kills an unresponsive worker. The whole worker is bounded to 190 seconds. Native I/O can hang, so a finally release cannot be guaranteed: the supervisor records `supervision_failed`, `unconfirmed_held_key`, and false `all_attempted_presses_released` when appropriate. It does not open another connection or retry input after lost ownership/focus. The parent runner must immediately perform its existing whole private process-group/prefix cleanup on helper exit/failure; the helper never claims to have cleaned that entire group.
@@ -32,7 +32,7 @@ Installed primary API evidence is `/usr/include/X11/extensions/XTest.h` (`XTestQ
The initial report overwrote the worker refusal with a generic unsuccessful-exit error. Later reports retain the original `error` and record the supervisor reason separately as `supervision_error`, preserving any earlier unconfirmed release. Delayed Xwayland state propagation is a diagnosis to test, not a proven explanation of that first failure; the historical failed report is unchanged.
## Native observations and current failure
## Native observations and remaining limits
[First attempt](evidence/game-2026-09-19-164944-input-release-refusal/report.json) delivered W and physical movement, but stopped after release-state confirmation refused. Its first supervisor implementation overwrote the underlying error; the archive is retained unchanged, so delayed key-state settlement remains an inference for that run. The corrected helper preserves both worker and supervisor diagnostics, polls read-only key state briefly, and retains all ownership and timeout checks.
@@ -40,4 +40,10 @@ The initial report overwrote the worker refusal with a generic unsuccessful-exit
[The 10-second failure-grace diagnostic](evidence/game-2026-09-19-165832-input-inventory-errors/report.json) completes all six key events, confirms server key release, observes 2.62 m native movement plus exact inventory open/close transitions and later neutral native input. Actual W hold is 0.64995 s; Tab holds are 0.23264 s and 0.23491 s, close to the installed 250 ms click limit. These measured values include guard overhead. The sequence is a bounded mechanism observation, not robust general input automation. Native inventory produces two `OverlayWidget Frame0 ... GridWidgetSlot ... expected: LayoutSlot` errors; the run stays failed, and its 45-second sampler is intentionally cut short by the existing 10-second diagnostic grace. No errors are suppressed and the helper's completed sequence does not override the failed native result.
All three runs confirm owned-prefix cleanup and unchanged 192-file addon sources. Baseline/open/closed native BMPs are archived for the third run. The open-labelled image still shows the prior world frame; the request marker and UI-state observation do not prove visible inventory presentation. A delayed capture must revalidate the exact menu before that visual claim. Stock inventory source diagnosis and a separate vanilla control are the next steps.
All three runs confirm owned-prefix cleanup and unchanged 192-file addon sources. Baseline/open/closed native BMPs are archived for the third run. The open-labelled image still shows the prior world frame; the request marker and UI-state observation do not prove visible inventory presentation. A delayed capture must revalidate the exact menu before that visual claim. The subsequent [stock control and source diagnosis](inventory-slot-diagnosis.md) independently reproduce the target pair while preserving the control’s separate nine-error failure.
The [180423 ordinary Chat run](evidence/game-2026-09-19-180423-inventory-ready/runner.json.txt), using the storage-list adapter and settled capture, completes the bounded keyboard experiment with no captured engine/script errors: all six events and releases are verified, the independent native observer records 401 samples and 2.62 m maximum horizontal displacement, and exact inventory open/close plus later neutral input are observed. Private-window ownership and cleanup are verified, with unchanged 193-file addon sources. [Raw input evidence](evidence/game-2026-09-19-180423-inventory-ready/input-proof.json.txt) retains event times and ownership rather than inferring success from the key requests alone.
Native initialization advances from stage 6/five hit-zone points to stage 7/seven points with the loading overlay absent. The settled [open screenshot](evidence/game-2026-09-19-180423-inventory-ready/err-input-a75280fda4494a0ca7b14a693cf310e9-open.bmp) shows the character, vicinity and clothing slots without the overlay. This is first-open presentation evidence, not a finding that the entire interface is readable or every interaction works. The clean 175333 image still had a spinner; the clean 175938 run produced no open image, with no established cause. Those records are not rewritten by this later success.
Storage refresh, reopen cycles, item transfer and multiplayer remain pending. The completed experiment is a short ordinary keyboard movement/open/close path; it does not qualify a full escape route, broad input automation, authenticated multiplayer, FPS improvement or release acceptance.