Skip to content

bug: WSL receiver cannot read active native Windows Codex SQLite state #156

Closed

Description

@abruption

RC1 validation blocker from #150

The documented WSL2 receiver for a native Windows Codex session cannot discover the active native thread on this host. Managed enrollment, public WSS attachment and pinned pairing succeed, but list returns discovery_failed and no targets.

The receiver uses the documented fixed codexHome=/mnt/c/Users/<USER>/.codex and native mounted codexBin=.../codex.exe. Reproducing locally inside WSL with the installed RC1 CLI identifies the cause:

session-peer list --agent codex --codex-home /mnt/c/Users/<USER>/.codex --json
state_db_read_failed: Cannot read Codex state DB .../state_5.sqlite: disk I/O error

Native Windows RC1 list against the same home succeeds and discovers the live user-activated test session. Environment: WSL2 Ubuntu 24.04, Python 3.12.3, session-peer[relay] 1.0.0rc1, websockets 17.1, cryptography 50.0.1; native Windows Python 3.10.0. No database contents/credentials attached, and no DB mutation or live DB copy was attempted.

Investigate Linux SQLite access to the active Windows database across the mounted filesystem and ensure the advertised WSL-to-native adapter has a supported discovery path (for example a bounded native-side query, if appropriate after design review). Do not disable locking, use immutable=1 against a changing live DB, or report empty discovery as success.

Acceptance: live native Windows writer stays active; WSL receiver lists the configured native target, dry-run resolves it, and one authorized relay send produces an actual ACK. Keep fixed executable/home policy restrictions and regression tests. This is independent of #153's Windows-local writer-lock probe. The WSL native-target gate remains failed until fixed and revalidated in RC2.

Activity

  1. added this to the v1.0.0-rc.2 milestone on Sep 22, 2026
  2. abruption commented on Sep 22, 2026

    @abruption
    OwnerAuthor

    Additional RC1 evidence: one authorized public-relay send to the fixed native Codex alias returned native_outcome_unknown. A subsequent read-only status query preserved the same durable unknown outcome. The message was not retried and no actual ACK was observed. Pairing/enrollment success is therefore not evidence of native delivery; preserve this unknown request journal during the RC2 investigation.

  3. abruption commented on Sep 22, 2026

    @abruption
    OwnerAuthor

    Candidate validation now passes through the public Relay → WSL receiver → native Windows Codex path. Fixed operator-owned native Python reads Windows SQLite/WAL and performs strict native writer checks; no Linux SQLite access or inactive-writer bypass. Live list and dry-run succeeded, one fresh request 3599c4c1-a6c4-43e0-b228-a29d13e47d21 queued, and the user independently confirmed exact ACK WIN-RELAY-156-a29d13e4. Existing unknown request was not replayed and the receiver identity/journal were preserved. Default installed RC1 was not replaced; validation used isolated candidate source. PR and CI are in preparation; issue remains open.

  4. abruption commented on Sep 24, 2026

    @abruption
    OwnerAuthor

    RC4 five-host rerun rc4-rerun-02 completed 14,436.65 s. The WSL receiver to native Windows Codex path was exercised at T0/T120/T240 with exact TUI ACKs; relay probes were 147/147 overall and Windows relay probes 49/49. The configured native home/executable policy remained fixed. Closing the RC1 mounted-SQLite regression; this is not a claim about arbitrary Windows SSH shells (#151).

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

    bugSomething isn't working

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions