Skip to content

docs(spec): correct appium-service premise + pull the direction question forward#512

Open
goosewobbler wants to merge 8 commits into
mainfrom
docs/mobile-service-appium-boundary
Open

docs(spec): correct appium-service premise + pull the direction question forward#512
goosewobbler wants to merge 8 commits into
mainfrom
docs/mobile-service-appium-boundary

Conversation

@goosewobbler

Copy link
Copy Markdown
Contributor

Follow-up to the mobile-service convergence spec (merged in #507). Investigation into whether shifting features upstream to @wdio/appium-service could negate the mobile-service found:

  • The spec's premise was stale: @wdio/appium-service v9.27 is no longer strictly server-lifecycle — it ships a worker-side SelectorPerformanceService (selector-perf telemetry via overwriteCommand). Still zero feature overlap with the mobile-service (verified: 0 hits for driver-install / device-mgmt / deeplink / logs / doctor / contexts), but the "it can't grow into our space" assumption is gone.
  • The real risk is narrow: the convergence refactor (RN/Flutter onto the native-mobile-core base) is safe regardless — a library concern. Only the standalone @wdio/mobile-service publish is at risk: if setup-automation upstreams (and core already ships the raw mobile commands), its unique surface thins.
  • Fix: bring the appium-service direction question forward — settle it with the maintainer before committing to the standalone publish (gate Sequencing step 3 on it), while keeping the implementation in native-mobile-core meanwhile.

🤖 Generated with Claude Code

…uestion forward

Investigation found @wdio/appium-service (v9.27) is no longer "strictly
server-lifecycle": it added a worker-side SelectorPerformanceService. It
still has ZERO feature overlap with the mobile-service (verified 0 hits for
driver-install/device-mgmt/deeplink/logs/doctor/contexts), but the
"architecturally can't grow into our space" assumption no longer holds.

So the strategic risk (upstreaming could hollow out the standalone service)
is real, and the DIRECTION question must be settled early:
- Correct the stale "strictly server-lifecycle" premise (v9.27 has a worker).
- Decouple the two deliverables: the convergence refactor (native-mobile-core
  base for RN/Flutter) is safe regardless; only the standalone publish is at
  risk.
- Bring the appium-service direction conversation FORWARD (before the publish,
  not after ship) and gate the publish on it; keep the implementation in
  native-mobile-core meanwhile.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR corrects the @wdio/appium-service description in the convergence spec (v9.27 ships a SelectorPerformanceService worker, so the "strictly server-lifecycle" premise was stale) and restructures the sequencing so the upstream direction question is settled before the standalone @wdio/mobile-service publish is committed to — rather than after.

  • Appium-service premise corrected: Background updated to document the v9.27 selector-perf worker and conclude zero feature overlap today while explicitly retiring the "architecturally can't grow into our space" assumption.
  • Direction question moved forward: Relationship section and Sequencing step 3 now gate the standalone publish on a Wim/maintainer coordination call; the convergence refactor (RN/Flutter onto the native-mobile-core base) is explicitly safe regardless of that outcome.
  • Downstream steps updated: Goal, Scope, Step 4 skill-update guidance, and Open Questions all branched on the two outcomes; status line updated with today's change description.

Confidence Score: 5/5

Documentation-only change to a spec file — safe to merge.

The change is a spec update with no code execution impact. The corrected appium-service description, the conditional publish framing, and the updated sequencing are internally consistent across Goal, Scope, Relationship, Sequencing, and Open Questions. Two minor inconsistencies were introduced: the architecture diagram still names @wdio/mobile-service as a definite package layer, and one Scope phrase still says "retargeted onto @wdio/mobile-service" rather than "the MobileService base" — neither affects the plan's correctness.

The Architecture diagram block (lines 105–111) and the In-Scope "retargeted" phrase (line 86) in spec.md use the package name unconditionally and are worth a quick pass before this is treated as a finalised spec.

Important Files Changed

Filename Overview
agent-os/specs/20260618-mobile-service-convergence/spec.md Spec updated to correct the appium-service v9.27 description (selector-perf worker) and re-gate the upstream direction question before the standalone publish; Goal, Scope, Sequencing, and Open Questions all updated consistently — Architecture diagram and one Scope phrase still name @wdio/mobile-service unconditionally, creating minor inconsistencies with the new conditional framing.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Step 1: Setup-automation lands\nin native-mobile-core] --> B
    B[Step 2: Extract MobileService base\nConverge RN + Flutter onto it\nConvergence ships EITHER WAY] --> C
    C{Step 3: Settle appium-service\ndirection question with Wim}
    C -->|stays narrow| D[Publish standalone\n@wdio/mobile-service]
    C -->|wants it upstream| E[Skip standalone publish\nUpstream setup-automation\nto @wdio/appium-service]
    D --> F[Step 4: Update add-native-service skill\nExtension target = @wdio/mobile-service]
    E --> G[Step 4: Update add-native-service skill\nExtension target = @wdio/native-mobile-core]
    style B fill:#d4edda,stroke:#28a745
    style C fill:#fff3cd,stroke:#ffc107
    style D fill:#cce5ff,stroke:#004085
    style E fill:#f8d7da,stroke:#721c24
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[Step 1: Setup-automation lands\nin native-mobile-core] --> B
    B[Step 2: Extract MobileService base\nConverge RN + Flutter onto it\nConvergence ships EITHER WAY] --> C
    C{Step 3: Settle appium-service\ndirection question with Wim}
    C -->|stays narrow| D[Publish standalone\n@wdio/mobile-service]
    C -->|wants it upstream| E[Skip standalone publish\nUpstream setup-automation\nto @wdio/appium-service]
    D --> F[Step 4: Update add-native-service skill\nExtension target = @wdio/mobile-service]
    E --> G[Step 4: Update add-native-service skill\nExtension target = @wdio/native-mobile-core]
    style B fill:#d4edda,stroke:#28a745
    style C fill:#fff3cd,stroke:#ffc107
    style D fill:#cce5ff,stroke:#004085
    style E fill:#f8d7da,stroke:#721c24
Loading

Reviews (8): Last reviewed commit: "docs(spec): carry the conditional-publis..." | Re-trigger Greptile

Comment thread agent-os/specs/20260618-mobile-service-convergence/spec.md Outdated
…not a package

Sharpen the 'we want it upstream' outcome: native-mobile-core stays as CODE
(RN/Flutter subclass it), but the generic-native story — no framework realm,
appium-service + core cover the mechanics — thins to helper patterns + config,
so it likely ships as docs/examples/boilerplate contributed to the ecosystem
(Wim's Mobile docs / appium-boilerplate), not a package. Turns outreach ask #1
from competing with the docs into improving them.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Standing release PR: #456 · 14 packages queued · open 208h 14m · ✅ ready to merge

Release Preview — 16 packages

Note: Labels on this PR are advisory in standing-pr mode. Bumps come from conventional commits in the standing PR; override by editing labels on the standing PR itself. Add release:immediate to bypass the standing PR and release this PR directly.

These changes will be added to the release PR (#456) when merged:

Changelog

@wdio/dioxus-bridge 1.0.0-next.3 → 1.0.0-next.4

Changed

  • Update version to 1.0.0-next.4
@wdio/dioxus-service 1.0.0-next.3 → 1.0.0-next.4

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
wdio-dioxus-driver 1.0.0-next.3 → 1.0.0-next.4

Changed

  • Update version to 1.0.0-next.4
wdio-dioxus-embedded-driver 1.0.0-next.3 → 1.0.0-next.4

Changed

  • Update version to 1.0.0-next.4
@wdio/tauri-service 1.2.0 → 1.3.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
tauri-plugin-wdio-webdriver 1.2.0 → 1.3.0

Changed

  • Update version to 1.3.0
@wdio/flutter-service 1.0.0-next.1 → 1.0.0-next.2

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
wdio_flutter N/A → 0.2.0

Changed

  • Update version to 0.2.0
@wdio/electrobun-service 0.1.0 → 0.2.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
@wdio/electron-service 10.1.0 → 10.2.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
@wdio/native-cdp-bridge 1.0.0 → 1.1.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
@wdio/native-core 1.0.0 → 1.1.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
  • DevServerProcess + startManagedDevServer for browser mode (#417) (native-core) (PR #503)
@wdio/native-mobile-core 1.0.0 → 1.1.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
@wdio/native-spy 1.1.0 → 1.2.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
@wdio/native-types 2.4.0 → 2.5.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)
  • DevServerProcess + startManagedDevServer for browser mode (#417) (native-core) (PR #503)
@wdio/native-utils 2.5.0 → 2.6.0

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)

Fixed

  • don't false-flag Windows binaries as non-executable (native-utils) (PR #514 · closes #513)
@wdio/react-native-service 1.0.0-next.0 → 1.0.0-next.1

Added

  • wire devServer auto-start into the four launchers (#417) (browser-mode) (PR #505)

After merge — predicted release

No version escalation — this PR's changes will be included in the queued release without affecting the projected versions.

Package Standing PR This PR After merge
@wdio/dioxus-bridge 1.0.0-next.4 1.0.0-next.4 1.0.0-next.4
@wdio/dioxus-service 1.0.0-next.4 1.0.0-next.4 1.0.0-next.4
@wdio/electrobun-service 0.2.0 0.2.0 0.2.0
@wdio/electron-service 10.2.0 10.2.0 10.2.0
@wdio/native-cdp-bridge 1.1.0 1.1.0 1.1.0
@wdio/native-core 1.1.0 1.1.0 1.1.0
@wdio/native-spy 1.2.0 1.2.0 1.2.0
@wdio/native-types 2.5.0 2.5.0 2.5.0
@wdio/native-utils 2.6.0 2.6.0 2.6.0
@wdio/tauri-service 1.3.0 1.3.0 1.3.0
tauri-plugin-wdio-webdriver 1.3.0 1.3.0 1.3.0
wdio_flutter 0.2.0 0.2.0 0.2.0
wdio-dioxus-driver 1.0.0-next.4 1.0.0-next.4 1.0.0-next.4
wdio-dioxus-embedded-driver 1.0.0-next.4 1.0.0-next.4 1.0.0-next.4

Updated automatically by ReleaseKit

goosewobbler and others added 6 commits July 2, 2026 01:01
…atus)

- P1: Step 4 now branches on the step-3 outcome — extend @wdio/mobile-service
  if published, else @wdio/native-mobile-core if the standalone publish was
  skipped (was unconditionally @wdio/mobile-service).
- P1: drop the dangling 'see the outreach draft' ref (the draft is a local
  gitignored scratch, not in the repo) — replace with the inline
  peer-coordination framing.
- P2: status line now records this PR's changes (appium-service premise +
  direction-question gate).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Addresses Greptile's remaining note on #512: the user stories read as if the
standalone @wdio/mobile-service will exist, but Sequencing step 3 may skip the
publish. Add a note that delivery (published service vs native-mobile-core +
docs/boilerplate) depends on the direction call; the stories' goals hold either
way. (The two P1s + P2 from the prior review were already fixed in cc90fa6.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eptile)

The 'Out of scope' line read as excluding all appium-service changes, which
contradicted the Relationship section treating upstreaming setup-automation to
appium-service as a live outcome. Clarify: this spec doesn't modify
appium-service; upstreaming is a possible LATER outcome of the direction
question, pursued separately — not in this spec's build scope.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ptile)

The prose referenced 'the outreach's ask #1', but the outreach draft is a
local (gitignored) scratch file not in the repo, so a spec reader can't resolve
it. Replace with the substance inline (the mobile layer lightens the boilerplate
the Mobile docs teach). Same class as the earlier dangling-ref fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…blish (Greptile)

The heading read 'settle the direction question, then publish' — implying the
publish always happens — while the body describes it as conditional (skip +
upstream, or publish). Reword to 'then either publish or skip it' so the heading
matches the two outcomes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ope (Greptile)

Match the User-Stories callout: the Goal now leads with the concrete
MobileService base (built regardless) and notes the *standalone publish* is
conditional on the step-3 direction outcome; the In-scope bullet does the same.
Removes the last spots implying the publish always happens.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant