Repository navigation
Cycle 3 research gate: rank evidence-backed AI and gaming opportunities #16
Description
Goal
Run the next evidence-led AI and gaming improvement cycle for OpenController. End with a reviewed, bounded change merged to main (or a documented no-build decision if evidence does not justify implementation), an updated opportunity record, and a concrete next-cycle goal. Issue creation is a research backlog, not build approval. The gate selected #14 for implementation, merged in PR #19 at f2baa6b. PR #24 records roadmap closeout and closes this issue after Cycle 4 gate #23 existed. Candidate #15 remains deferred outside the active milestone.
Starting state and duplicate check
Reviewed the roadmap docs/roadmap/ai-gaming-opportunities.md and issues #5, #7, #8, #9, and #10. Cycle 2 implementation PRs #12 and #13 have merged; the updated status and merge commits are recorded below.
Cycle 2 issues #8 and #9 were implemented and merged as PR #12 and PR #13. Issue #10 remains deferred. Cycle 3 must avoid duplicating the merged slices and rank candidates against current code.
Initial evidence log (2026-10-04 review)
These are dated public reports and a targeted sample, not a survey or prevalence estimate. Separate reports within a single project/ecosystem are not independent replications. Engagement counts and repeated examples do not estimate the number of affected users.
| Source and date | Direct observation and workaround | Initial interpretation and limits |
|---|---|---|
| SDL #13177, opened 2025-06-05; useful reply 2026-08-07 | An Arch Linux user reports an Xbox Series controller over Bluetooth/xpadneo stops producing SDL input after reconnect. A commenter confirms an additional Xbox Elite 2/PCSX2 case. The reply suggests SDL_JOYSTICK_HIDAPI=0 (or narrower Xbox HIDAPI disable) to use evdev; reboot was otherwise required. |
Concrete reconnect diagnostic and workaround, but the reported failure is in SDL HIDAPI/udev and physical-device ingestion, which OpenController does not own. Keep upstream reconnect repair out of build scope unless a bounded adapter-side gap is demonstrated. |
| Steam for Linux #13665, opened 2026-09-29 | A Steam Machine reporter says Steam Input destroys and recreates a virtual Xbox pad whenever an app launches; an already-running app loses its opened device. The workaround is to quit and relaunch the affected app. | Detailed single-host report about Steam Input/host lifecycle. OpenController's Linux helper lifecycle is distinct; the SDK cannot repair Steam's shared virtual-device lifecycle. Do not treat as an OpenController defect. |
| Valve Steam Input request #8746, opened 2022-08-17; follow-up 2026-09-15 | A user requests emulation in several console-style virtual profiles rather than Xbox only, citing Windows tools and wired-only game constraints; later comments mention third-party tools. | Demonstrates an enduring expressed desire for virtual profile choice, but it is a Steam Input feature request. OpenController already has multiple output profiles; Cycle 2 #9 covers its encoder conformance. Avoid duplicating this as a new build claim. |
| Factorio Learning Environment #418, opened 2026-09-15 | A reporter says four documented API examples fail against a live headless server and proposes correcting signatures. No working workaround is recorded. | One external project's concrete docs/example failure. Candidate #14 tests a narrower behavior OpenController owns; this does not show OpenController has stale examples. |
| OpenAI developer forum demo thread, 2026-02-16 | A player could not move with arrows because that demo mapped only WASD; the author added arrow and space bindings. | One report about another demo, with a source-edit workaround. Candidate #15 is a low-confidence, demo-only exploration. OpenController Agent Fighter already gives its second player arrow-key movement. |
| Steam Deck discussion, missing rumble, 2026-08-04; controller order, 2026-09-26 | A user reports lost rumble on SteamOS; another reports unusable device ordering while docked and says a restart did not fix it. | Individual Steam Community reports already logged in the Cycle 1 roadmap. They concern host/device behavior and do not establish an OpenController-owned root cause. |
| Factorio Learning Environment PR #413, 2026-09-07 | A long evaluation rollout surfaced a generic observation error without its underlying exception; replaying the same actions worked on fresh servers. The PR added retained exception details and retry logging. | Already informed Cycle 2 issue #8. Do not duplicate that selected replay-error work. |
| Hacker News FLE launch, 2025-03-11 | Launch discussion showed interest in game-agent benchmarking and long-horizon automation. | Attention to a launch is not evidence of a particular OpenController pain or implementation priority. |
| Accessible-Chess issue #5, opened 2026-08-14 | Requests app-owned remappable shortcuts and command aliases, conflict warnings, and keyboard-only recovery/reset. | Accessibility-focused evidence from another product. Its 20 comments include many owner status/implementation updates, not independent confirmations; it does not show Agent Fighter demand. |
| Hacker News comment #48624304, 2026-06-22, on an OpenAssistiveTech article dated 2026-06-18 | A commenter recounts a friend with a broken arm being banned for third-party keyboard-remapping software while trying to play one-handed. The article fetch returned HTTP 403; the comment was accessible. | One indirect anecdote about third-party remapping policy, not a request for app-owned controls and not evidence about Agent Fighter. |
Coverage limits
- Reddit search and DuckDuckGo returned HTTP 403 on 2026-10-04; no Reddit posts were reviewed. Steam Community search returned a generic page without a useful verifiable dated result.
- An accessibility-focused GitHub issue was reviewed, but it concerns another product. An assistive-gaming article returned HTTP 403; only a Hacker News comment was accessible. No accessibility evidence specific to Agent Fighter was found.
- The examples above are self-reports and feature requests. No thread count is a prevalence estimate. External pain signals remain limited; Keep key SDK documentation examples runnable #14 was selected because a repository-owned documentation-coverage gap was verified, not because community prevalence was established.
- Issue Explore host-side physical gamepad input for OBS overlays #10's macOS physical-input idea and the Agent Fighter regression baseline work remain deferred from Cycle 2. Re-open them only if refreshed evidence and repository feasibility materially improve.
Initial candidate backlog and provisional ranking before the gate
| Rank for research attention | Candidate | Fit/evidence assessment | Current state |
|---|---|---|---|
| 1 | #14 — Keep key SDK documentation examples runnable | High repository ownership and bounded dry-run validation; an internal CI coverage gap is verified, while the FLE failure is adjacent evidence only. | Selected for the Cycle 3 build. |
| 2 | #15 — Make Agent Fighter keyboard bindings configurable | No Agent Fighter complaint; player two arrows cover the reported mismatch and fresh accessibility evidence concerns other products. | Deferred outside the active Cycle 3 milestone. |
The initial backlog was intentionally small because most reports concerned upstream behavior, overlapped Cycle 2, or lacked repository fit. The gate selected #14 as a preventive, repository-owned CI improvement and deferred #15; it did not treat external reports as prevalence evidence.
Cycle 3 gate decision (2026-10-04)
The repository audit inspected main at ba0529e, onboarding docs, example entry points, root scripts, and CI:
- The Getting Started dry-run flow and AI Agent Integration action-map/state-patch snippets are not executed by tests.
- Root tests cover package suites, not docs snippets or example packages. examples/basic-dry-run/index.ts is runnable but has no test or build script.
- Agent Fighter has a Playwright headless match runner and quality gates, but those do not execute SDK docs or validate keyboard remapping. Player two already has arrow-key movement; R resets and F toggles fullscreen.
- The gap is lack of executable documentation coverage, not a verified stale OpenController snippet.
Selection: #14, a preventive CI slice. Repository ownership and dry-run validation are direct. FLE #418 is an adjacent concrete docs failure, not evidence that OpenController examples are defective. Keep tested sources shared with docs to prevent fixture drift. Cover the standalone Getting Started dry-run path, one AI action-map/state-patch path, and the basic dry-run example; assert observable state/action or replay behavior; require no key, device, permission, or live game. Exclude live native, OBS, game, and hardware claims. Estimated effort: low-to-medium, 1–2 days.
Defer #15. Accessible-Chess issue #5 supports app-owned remapping as a broader accessibility concern but is from another product and its comments include owner status updates. The HN remapping anecdote is indirect. Neither identifies an Agent Fighter problem; player two already has arrow movement. A configurable UI also requires persistence, conflict handling, recovery, and browser testing (estimated 2–4 days), while browser/OS shortcut detection is incomplete. Revisit only with stronger fit or direct evidence.
Cycle DAG and checklist
flowchart TD
A[Refresh public-source evidence] --> B[Audit current OpenController behavior and ownership]
B --> C[Rank opportunities and record limits]
C --> D[Select, revise, or defer candidates #14/#15]
D --> E[Define bounded build/review task DAG and acceptance criteria]
E --> F[Implement selected work in coherent reviewable commits]
F --> G[Independent review and focused/integrated checks]
G --> H[Open stacked PRs against declared parent branches]
H --> I[Merge in dependency order after review and checks]
I --> J[Update roadmap/backlog and open the next cycle goal]
Research and rank
- Refresh sources in relevant public AI/gaming communities: GitHub issues/discussions (including SDL, Steam, game-agent projects), Steam Community, developer forums, Hacker News, Reddit if reachable, and a relevant accessibility source if discoverable.
- For every cited item, record direct URL, post date, user/workflow, reported failure or request, stated workaround/current alternative, recurrence evidence, and confidence. Mark interpretation separately; do not infer prevalence from a few reports, replies, reactions, or search rank.
- Record failed searches/access limits and distinguish upstream host/game bugs from behavior OpenController controls.
- Audit current code, docs, merged PRs, and open Cycle 2 PRs before ranking; update each candidate's fit, cost, risk, dependencies, acceptance scope, and deferred/selected status.
- Select only a bounded issue with direct-enough evidence and repository ownership, or document a no-build decision. Do not begin candidate implementation until this gate is complete.
Issue DAG and implementation
- Use native GitHub blocked-by links to represent the current dependency. After selecting Keep key SDK documentation examples runnable #14, remove its candidate-to-gate blocker, make this cycle goal wait on the selected implementation, and remove deferred Make Agent Fighter keyboard bindings configurable #15 from the active milestone.
- Define the selected Keep key SDK documentation examples runnable #14 build scope, shared-source requirement, acceptance criteria, and non-goals before implementation starts.
- Make one coherent implementation change at a time; PR test: run documented dry-run examples in CI #19 documents the dry-run boundary and distinguishes fixtures from host/game/hardware claims.
- Run focused checks and the integrated release checks. Record exact outcomes and leave unsupported host/hardware claims pending in the roadmap.
Independent review, stacked PRs, and merge
- Obtain an independent review for scope fit, correctness, regressions, security, and consistency with the source evidence; resolve the replay-directory and TypeScript-project findings before merge.
- Open PR test: run documented dry-run examples in CI #19 against main with acceptance criteria and validation results in the description.
- PR test: run documented dry-run examples in CI #19 targeted main after the research PR merged; there were no child implementation PRs, and CI passed on the final head.
- Merge PR test: run documented dry-run examples in CI #19 after independent review and required checks passed; there were no child PR dependencies.
Close and next cycle
- Record merge commit f2baa6b, deferred Make Agent Fighter keyboard bindings configurable #15, updated coverage limits, and Cycle 4 candidates in the roadmap via PR docs: close Cycle 3 and open Cycle 4 gate #24.
- Open Cycle 4 goal Cycle 4 research gate: rank evidence-backed AI and gaming opportunities #23 from the refreshed backlog; PR docs: close Cycle 3 and open Cycle 4 gate #24 records the closeout and closes this issue.
Acceptance
- Sources and coverage limits are dated, directly linked, and distinguish observed claims from interpretation.
- The final rank is tied to current repository behavior and names upstream boundaries; there are no unsupported prevalence claims.
- Any selected build issue is scoped, dependency-linked, measurable, independently reviewed, and merged only after its required checks pass; otherwise the no-build decision is explicit.
- A next-cycle goal is opened from the updated backlog.
Activity