Skip to content

Preserve cleanup and failure context in native test #20

Description

@SYMBaiEX

Candidate status

Selected by Cycle 6 research gate #35. This issue is in milestone 5. It blocks #35 until the implementation is independently reviewed, passes required checks, and merges.

Opportunity

Harden opencontroller native test so a helper failure during the command sequence still attempts neutralization and disconnect, and preserves the original failure if cleanup also fails. The current command creates a controller, sends press/move/trigger/neutral commands, and calls disconnect only after all four succeed.

Repository evidence

  • Audit baseline: current main e6d576987c9085a3377ce0e10791f56ce1994ada.
  • packages/cli/src/commands/native.ts:nativeTestCommand has no finally around the connected controller's command sequence. If an action throws, the command exits without a CLI-level disconnect attempt.
  • The native process adapter's disconnect sends a bridge disconnect, closes helper stdin, and waits for helper exit (packages/core/src/adapters/native-process.ts).
  • Existing CLI tests cover test-plan construction, not action or cleanup failures after connection.

External evidence and limits

  • Codex #44074, observed 2026-09-09, requests release of held inputs on failure, cancellation, navigation, or session teardown after reporting short key holds that a game did not observe.
  • Codex #35510, opened 2026-07-26, reports a Pygame target missing an input event despite a successful tool result.

These are adjacent Computer Use reports. They support careful cleanup and failure reporting but do not establish an OpenController incident or prevalence.

Acceptance

  • Factor or inject the native test controller/action runner so tests can fail an action after a successful connection and fail cleanup independently.
  • Always attempt controller disconnect after successful controller creation, including when press, move, trigger, or neutral fails.
  • Preserve the primary action error when cleanup also fails and make the cleanup failure visible.
  • On the normal path, preserve the press/move/trigger/neutral sequence, then disconnect; report success only after cleanup succeeds.
  • Add focused tests for action failure, disconnect failure, and combined action/cleanup failure.
  • Keep CLI output scoped to SDK/helper bridge results; do not claim physical host or game compatibility.

Non-goals

Do not change native driver setup, run hardware compatibility tests, or expand the CLI into an OS/game diagnostics matrix.

Estimate: low to medium, roughly 1–2 days; the main risk is reporting both failures without masking the original action error.

Activity

  1. added
    cycle-4-deferredConsidered but deferred from the active Cycle 4 build scope
    cycle-6Tracked work for OpenController AI and Gaming Improvement Cycle 6
    cycle-6-selectedSelected implementation work for Cycle 6
    and removed
    cycle-4-candidateResearch candidate awaiting Cycle 4 gate ranking
    cycle-4-deferredConsidered but deferred from the active Cycle 4 build scope
    on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cycle-6Tracked work for OpenController AI and Gaming Improvement Cycle 6cycle-6-selectedSelected implementation work for Cycle 6

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions