Skip to content

Cycle 5 research gate: select the next evidence-backed improvement #29

Description

@SYMBaiEX

Goal

Complete Cycle 5 as a bounded, evidence-led cycle: refresh AI and gaming workflow reports, audit current OpenController ownership and gaps, rank candidates, then select one measurable improvement or record a no-build decision. End with independent review, required checks, merge, roadmap closeout, and a Cycle 6 research gate.

Cycle 4 implementation and closeout are complete: issue #22 merged in PR #25 at 8eb744c, and PR #30 closed gate #23. This gate is active.

Fresh source log (2026-10-04)

Source/date Direct observation Relevance and limit
Clash Royale agent report on HN #46297477, 2025-12-17 Builder reports about 7 seconds per screenshot/vision/decision/tool cycle; staggered three agents produced a move every 2–3 seconds and an automatic opening action established tempo. Timed game agents may benefit from reusable low-overhead actions, but controller plumbing cannot speed model reasoning. One self-reported project.
T-Rex Runner attempt on HN #43963570, 2025-05-12 Author says a Claude/Playwright attempt failed because latency was too high. One attempt, no timing breakdown; cannot distinguish model, tool, browser, or input latency.
OpenAI Developer Community: Pokémon Silver with Computer Use, 2026-09-26 User says setup, navigation, repeated dialogue, and simple movement consume Computer Use allowance and asks for a lower-cost control mode. One product request; may not transfer to other agents or controller SDKs.
Steam for Linux #13665, 2026-09-29 Steam Machine reporter says Steam recreates its virtual pad on app launch, leaving already-running apps with stale handles until restart. Detailed upstream Steam lifecycle report; no OpenController ownership.
Steam for Linux #13418, 2026-07-15 Steam Deck user says returning from Discord leaves a game without controller input until the game restarts. One host lifecycle report, not an SDK defect.
Jellyfin Web #8379, 2026-08-19 Two DS4 devices overwrite one shared gamepad state, making TV navigation erratic. Independent application-level state ownership example.
Cockpit #3088, 2026-09-22 ROV operators ask that a current primary joystick retain control when another gamepad connects; current code forwards all devices. Adjacent non-gaming multi-input ownership request.
Selkies #431, 2026-09-29; ROMM #46, 2026-09-17 Same reporter cross-posted a browser/virtual-slot conflict and said reinitializing Game Mode restored input; reproducibility was uncertain. Counted as one report, not two. Host/browser ownership remains outside this SDK.
PortareOS #436, 2026-09-29; DuelBox-Web #133, 2026-08-19; Chrome proposal #1313, 2026-08-14 One hardware report estimates a polling contribution, one project requests a browser/input-family latency harness, and one Chrome proposal describes event-driven input. Sparse adjacent evidence; no OpenController-specific latency failure or adoption proof.

These are dated public reports and requests, not prevalence estimates. External host and application failures are not evidence of defects in OpenController.

Coverage limits

  • HN Algolia and OpenAI Discourse JSON were reachable for targeted searches. Reddit, Google search, and SDL Discourse search returned HTTP 403.
  • Steam Community search worked, but the relevant results found were old and low value for this decision.
  • GitHub issue/API searches covered Steam for Linux, SDL-related candidates, Selkies/ROMM, Jellyfin Web, Cockpit, Tanks, and latency seeds. Search was targeted, not exhaustive.
  • No clear current recurring AI-agent-specific controller problem was found. No result count, comments, or reactions are used as a prevalence estimate. Accessibility-community coverage remains open.

Repository audit and ranking

Audit target: integrated main at 62e8b95, including the core ControllerHub, browser exports, native bridge identity, tests, latency fields, and current README. The ControllerHub README called hub.createController, which the public class does not implement; it exposes add/get/has/list/states/disconnectAll. Existing tests covered two dry-run controllers with distinct IDs and profile entries but did not assert separate state, duplicate-ID rejection, or reuse after disconnectAll. The SDK does not discover physical devices or own browser/OS slot identity.

Rank/decision Candidate User value and repository fit Cost/risk and confidence
Selected #27 ControllerHub logical ID contract Direct first-party docs/API mismatch plus missing duplicate-ID and lifecycle tests. External reports show a related ownership-conflict category but do not prove prevalence or an OpenController defect. Low/medium, about 1–2 days. High confidence in the repository mismatch; low confidence in prevalence.
Deferred #26 browser hardware routing check A real-browser routing guide may help, but current-main audit found no validated host/browser/hardware path. Medium/high; one adjacent project QA report and manual device requirements.
Deferred #28 input latency at explicit SDK boundaries Some status latency is supplied rather than measured; no end-to-end SDK boundary was established. Medium; sparse adjacent evidence and clock/overclaim risk.

Decision and implementation DAG

Selection: issue #27 corrected the README API example, added a typed runnable counterpart, made duplicate rejection cover concurrent additions and failed construction cleanup, explicitly asserted per-controller state isolation, tested ID reuse after disconnectAll, and documented caller-owned IDs plus the requirement to await additions before disconnectAll. It does not add physical discovery, automatic mapping, native adapter sharing, or host/browser reconnect claims.

Issues #26 and #28 remain deferred. Issue #27 closed when PR #32 merged; PR #31 records the decision. This gate now awaits its roadmap closeout. Cycle 6 gate #35 is open and blocked by both #29 and selected implementation #20.

flowchart TD
  A[Cycle 4 closeout PR #30; gate #23 closed] --> B[Refresh public evidence]
  B --> C[Audit main 62e8b95]
  C --> D[Select #27; defer #26 and #28]
  D --> E[Correct ControllerHub docs and test logical ID lifecycle]
  E --> F[Independent review and required checks]
  F --> G[Merge implementation PR stack]
  G --> H[Roadmap closeout and Cycle 6 gate]
  H --> I[Close Cycle 5 gate #29]
Loading

Checklist

Acceptance

Metadata

Metadata

Assignees

No one assigned

    Labels

    cycle-5Tracked work for OpenController AI and Gaming Improvement Cycle 5

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions