Skip to content

fix(omo-senpi): skip drvfs config watchers - #7476

Merged
code-yeongyu merged 1 commit into
devfrom
fix/drvfs-config-watch-sb
Aug 29, 2026
Merged

fix(omo-senpi): skip drvfs config watchers#7476
code-yeongyu merged 1 commit into
devfrom
fix/drvfs-config-watch-sb

Conversation

@code-yeongyu

@code-yeongyu code-yeongyu commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Fixes #6450

Supersedes stale community PR #7368.

Root cause

On WSL, Windows drives are Plan 9/v9fs mounts (statfs().type === 0x01021997). Senpi expands dir config-watch targets into recursive watches, so project and ancestor targets can block while traversing a drvfs tree. Current dev had no filesystem-type guard.

Changes

  • Add a Linux-only statfsSync filesystem-type probe with an injectable seam for deterministic tests.
  • Skip project .omo config targets and ancestor creation targets when the project cwd is on Plan 9.
  • Skip user-config targets only when the user-config path itself is on Plan 9; native user-config targets remain watched even when the project is on drvfs.
  • Preserve startup config loading and all non-Plan-9 behavior.
  • Regenerate the committed Senpi omo.js extension bundle.

Test evidence

  • TDD RED: focused paths suite failed 1 assertion (14 passed, 1 failed) because the simulated Plan 9 project still emitted an ancestor target.
  • GREEN: bun test packages/omo-senpi/src/components/config-watch: 39 passed, 0 failed.
  • Typecheck: bunx tsgo --noEmit -p packages/omo-senpi/tsconfig.json passed.
  • Bundle freshness: node packages/omo-senpi/plugin/scripts/build-extension.mjs --check passed.
  • Live isolated Senpi QA: node packages/omo-senpi/scripts/qa/drive.mjs returned PASS, with realSenpiUntouched: true.
  • Evidence: .omo/evidence/omo-senpi-adapter/20260829-drvfs-config-watch/README.md

Residual risk

This macOS runner cannot provide an actual WSL Plan 9 mount, so the drvfs branch is tested via the injected filesystem identity seam and exact magic value. The live adapter driver uses an isolated Senpi agent directory and does not exercise a real drvfs mount.


Summary by cubic

Fixes #6450 by skipping config-watch targets on WSL's Plan 9 (drvfs) filesystem so recursive watches no longer block while traversing those trees.

Changes

  • Adds a Linux-only statfsSync filesystem-type probe with an injectable seam for deterministic tests.
  • Skips project .omo targets and ancestor creation targets when the project cwd is on Plan 9.
  • Skips user-config targets only when the user-config path itself is on Plan 9; native user-config targets remain watched.
  • Preserves startup config loading and all non-Plan-9 behavior, and refreshes the committed omo.js extension bundle.

Written for commit 2c926a5. Summary will update on new commits.

Review in cubic

@github-actions github-actions Bot added the omo-senpi Changes under packages/omo-senpi label Aug 29, 2026
@code-yeongyu
code-yeongyu force-pushed the fix/drvfs-config-watch-sb branch from 043f02f to 2c926a5 Compare August 29, 2026 12:06
@code-yeongyu
code-yeongyu merged commit 817c4e0 into dev Aug 29, 2026
24 checks passed
@code-yeongyu
code-yeongyu deleted the fix/drvfs-config-watch-sb branch August 29, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

omo-senpi Changes under packages/omo-senpi

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Senpi][WSL] Config watcher hangs on drvfs projects after updates

1 participant