mobile-debug-mcp 0.34.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/.agents/skills/mcp-builder/SKILL.md +44 -64
  2. package/.agents/skills/mcp-builder/references/build-flags.md +44 -43
  3. package/.agents/skills/mcp-builder/references/diagnostics-schema.md +4 -1
  4. package/.agents/skills/mcp-builder/references/toolchain-details.md +49 -62
  5. package/.agents/skills/spec-review/references/spec-review-checklist.md +7 -0
  6. package/.agents/skills/test-authoring/SKILL.md +7 -6
  7. package/.agents/skills/test-authoring/references/repo-test-layout.md +3 -1
  8. package/.agents/skills/test-authoring/references/test-authoring-workflow.md +16 -7
  9. package/.agents/skills/test-authoring/references/test-quality-checklist.md +2 -1
  10. package/.cursor-plugin/marketplace.json +1 -1
  11. package/.github/copilot-instructions.md +14 -36
  12. package/.github/workflows/ci.yml +4 -4
  13. package/AGENTS.md +12 -3
  14. package/CONTRIBUTING.md +79 -0
  15. package/README.md +218 -129
  16. package/agent-plugin/.antigravity-plugin/README.md +48 -0
  17. package/agent-plugin/.antigravity-plugin/plugin.json +18 -0
  18. package/agent-plugin/.claude-plugin/plugin.json +2 -2
  19. package/agent-plugin/.codex-plugin/plugin.json +1 -1
  20. package/agent-plugin/.cursor-plugin/plugin.json +2 -2
  21. package/agent-plugin/.mcp.json +1 -1
  22. package/agent-plugin/README.md +50 -11
  23. package/agent-plugin/cursor/.cursor-plugin/plugin.json +23 -0
  24. package/agent-plugin/cursor/LICENSE +201 -0
  25. package/agent-plugin/cursor/README.md +9 -0
  26. package/agent-plugin/cursor/skills/mobile-debug-mcp/SKILL.md +253 -0
  27. package/agent-plugin/mcp.json +1 -1
  28. package/agent-plugin/mcp_config.json +13 -0
  29. package/agent-plugin/plugin.json +1 -1
  30. package/agent-plugin/skills/mobile-debug-mcp/SKILL.md +62 -17
  31. package/dist/contracts/execution-controls.js +24 -0
  32. package/dist/contracts/selector.js +8 -0
  33. package/dist/contracts/target.js +15 -0
  34. package/dist/contracts/ui.js +1 -0
  35. package/dist/debugger/android.js +2 -1
  36. package/dist/debugger/diagnostics.js +54 -0
  37. package/dist/debugger/guard.js +4 -4
  38. package/dist/debugger/ios-worker.js +62 -0
  39. package/dist/debugger/ios.js +57 -0
  40. package/dist/debugger/protocol.js +33 -0
  41. package/dist/debugger/sessions.js +133 -74
  42. package/dist/debugger/worker.js +59 -46
  43. package/dist/interact/adjustment/adjustment-context.js +41 -0
  44. package/dist/interact/adjustment/adjustment-gestures.js +55 -0
  45. package/dist/interact/adjustment/adjustment-plan.js +18 -0
  46. package/dist/interact/adjustment/adjustment-resolution.js +127 -0
  47. package/dist/interact/adjustment/adjustment-result.js +19 -0
  48. package/dist/interact/adjustment/adjustment-semantic.js +64 -0
  49. package/dist/interact/adjustment/adjustment-verification.js +35 -0
  50. package/dist/interact/adjustment/adjustment.js +52 -0
  51. package/dist/interact/adjustment/control-geometry.js +87 -0
  52. package/dist/interact/adjustment/control-values.js +136 -0
  53. package/dist/interact/adjustment/slider-labels.js +84 -0
  54. package/dist/interact/assertions/screen-assertion.js +37 -0
  55. package/dist/interact/assertions/state-assertion-context.js +35 -0
  56. package/dist/interact/assertions/state-assertion.js +76 -0
  57. package/dist/interact/assertions/state-comparison.js +141 -0
  58. package/dist/interact/assertions/visibility-assertion.js +34 -0
  59. package/dist/interact/conditional-action.js +12 -7
  60. package/dist/interact/index.js +77 -3092
  61. package/dist/interact/input-service.js +1 -0
  62. package/dist/interact/interaction-trace.js +21 -0
  63. package/dist/interact/model.js +1 -0
  64. package/dist/interact/observation.js +1 -0
  65. package/dist/interact/targeting/candidate-ancestor.js +58 -0
  66. package/dist/interact/targeting/candidate-result.js +23 -0
  67. package/dist/interact/targeting/candidate-scoring.js +50 -0
  68. package/dist/interact/targeting/element-helpers.js +216 -0
  69. package/dist/interact/targeting/find-element.js +65 -0
  70. package/dist/interact/targeting/nearby-control.js +56 -0
  71. package/dist/interact/targeting/resolved-elements.js +21 -0
  72. package/dist/interact/targeting/tap-target.js +17 -0
  73. package/dist/interact/targeting/target-scope.js +104 -0
  74. package/dist/interact/waits/legacy-log-wait.js +38 -0
  75. package/dist/interact/waits/legacy-wait-observations.js +103 -0
  76. package/dist/interact/waits/legacy-wait-state.js +34 -0
  77. package/dist/interact/waits/legacy-wait.js +48 -0
  78. package/dist/interact/waits/screen-wait.js +49 -0
  79. package/dist/interact/waits/ui-change-helpers.js +157 -0
  80. package/dist/interact/waits/ui-change-state.js +18 -0
  81. package/dist/interact/waits/ui-change-wait.js +77 -0
  82. package/dist/interact/waits/ui-wait-condition.js +56 -0
  83. package/dist/interact/waits/ui-wait-state.js +38 -0
  84. package/dist/interact/waits/ui-wait.js +106 -0
  85. package/dist/manage/android.js +55 -51
  86. package/dist/manage/index.js +38 -75
  87. package/dist/manage/ios/build-types.js +1 -0
  88. package/dist/manage/ios/build.js +210 -0
  89. package/dist/manage/ios/project-discovery.js +29 -0
  90. package/dist/manage/ios/scheme.js +18 -0
  91. package/dist/manage/ios.js +44 -256
  92. package/dist/observe/android/context.js +1 -0
  93. package/dist/observe/android/current-screen.js +55 -0
  94. package/dist/observe/android/fingerprint.js +13 -0
  95. package/dist/observe/android/log-stream.js +132 -0
  96. package/dist/observe/android/logs.js +107 -0
  97. package/dist/observe/android/screenshot.js +70 -0
  98. package/dist/observe/android/ui-tree.js +107 -0
  99. package/dist/observe/android.js +16 -520
  100. package/dist/observe/evidence.js +114 -75
  101. package/dist/observe/index.js +16 -263
  102. package/dist/observe/ios/context.js +16 -0
  103. package/dist/observe/ios/fingerprint.js +12 -0
  104. package/dist/observe/ios/log-stream.js +105 -0
  105. package/dist/observe/ios/logs.js +168 -0
  106. package/dist/observe/ios/screenshot.js +22 -0
  107. package/dist/observe/ios/ui-elements.js +241 -0
  108. package/dist/observe/ios/ui-tree.js +137 -0
  109. package/dist/observe/ios-trace/artifact.js +63 -0
  110. package/dist/observe/ios-trace/capabilities.js +86 -0
  111. package/dist/observe/ios-trace/native.js +93 -0
  112. package/dist/observe/ios-trace/notification.js +35 -0
  113. package/dist/observe/ios-trace/process.js +98 -0
  114. package/dist/observe/ios-trace/sessions.js +244 -0
  115. package/dist/observe/ios.js +17 -715
  116. package/dist/observe/logs/model.js +1 -0
  117. package/dist/{network → observe/network}/index.js +2 -2
  118. package/dist/observe/readiness-service.js +5 -3
  119. package/dist/observe/readiness.js +33 -14
  120. package/dist/observe/screenshot-encoding.js +41 -0
  121. package/dist/observe/snapshot-collection.js +79 -0
  122. package/dist/observe/snapshot-logs.js +30 -0
  123. package/dist/observe/snapshot-metadata.js +43 -31
  124. package/dist/observe/snapshot-semantic.js +115 -0
  125. package/dist/observe/system-trace-error.js +7 -0
  126. package/dist/observe/system-trace-router.js +81 -0
  127. package/dist/observe/system-trace.js +26 -21
  128. package/dist/runtime/action-results.js +270 -0
  129. package/dist/runtime/clock.js +4 -0
  130. package/dist/server/common.js +1 -256
  131. package/dist/server/definitions/assert.js +162 -0
  132. package/dist/server/definitions/diagnostic.js +118 -0
  133. package/dist/server/definitions/input.js +274 -0
  134. package/dist/server/definitions/manage.js +194 -0
  135. package/dist/server/definitions/observe.js +149 -0
  136. package/dist/server/definitions/target.js +138 -0
  137. package/dist/server/definitions/wait.js +105 -0
  138. package/dist/server/handlers/action-execution.js +163 -0
  139. package/dist/server/handlers/correlation.js +23 -0
  140. package/dist/server/handlers/debugger-handlers.js +67 -0
  141. package/dist/server/handlers/debugger-response.js +9 -0
  142. package/dist/server/handlers/diagnostic.js +77 -0
  143. package/dist/server/handlers/handler-types.js +1 -0
  144. package/dist/server/handlers/input.js +154 -0
  145. package/dist/server/handlers/interact.js +113 -0
  146. package/dist/server/handlers/journey-assertions.js +35 -0
  147. package/dist/server/handlers/journey.js +147 -0
  148. package/dist/server/handlers/manage.js +119 -0
  149. package/dist/server/handlers/observe.js +95 -0
  150. package/dist/server/handlers/payload.js +4 -0
  151. package/dist/server/handlers/tool-handlers.js +170 -0
  152. package/dist/server/schemas/condition-schema.js +2 -0
  153. package/dist/server/{debugger-schema.js → schemas/debugger-schema.js} +20 -12
  154. package/dist/server/{journey-schema.js → schemas/journey-schema.js} +7 -22
  155. package/dist/server/schemas/system-trace-schema.js +22 -0
  156. package/dist/server/tool-definitions.js +58 -1135
  157. package/dist/server-core.js +2 -2
  158. package/dist/server.js +4 -4
  159. package/dist/system/android-status.js +101 -0
  160. package/dist/system/android.js +37 -27
  161. package/dist/system/index.js +13 -439
  162. package/dist/system/ios-status.js +132 -0
  163. package/dist/system/ios.js +11 -8
  164. package/dist/system/model.js +1 -0
  165. package/dist/system/probes.js +105 -0
  166. package/dist/system/status-summary.js +43 -0
  167. package/dist/system/unsupported-status.js +52 -0
  168. package/dist/utils/android/commands.js +89 -0
  169. package/dist/utils/android/gradle.js +139 -0
  170. package/dist/utils/android/logs.js +103 -0
  171. package/dist/utils/android/ui-tree.js +233 -0
  172. package/dist/utils/android/utils.js +6 -564
  173. package/dist/utils/cli/idb/idb-helper.js +4 -6
  174. package/dist/utils/cli/idb/install-idb.js +13 -9
  175. package/dist/utils/cli/ios/preflight-ios.js +42 -38
  176. package/dist/utils/ios/utils.js +48 -46
  177. package/dist/utils/java.js +65 -49
  178. package/dist/utils/resolve-device.js +4 -2
  179. package/dist/utils/ui/index.js +26 -26
  180. package/docs/CHANGELOG.md +67 -1
  181. package/docs/README.md +38 -0
  182. package/docs/agent-plugin-installation-verification.md +39 -0
  183. package/docs/benchmarks/README.md +18 -0
  184. package/docs/benchmarks/interaction-latency/README.md +14 -0
  185. package/docs/benchmarks/interaction-latency/final.md +4 -1
  186. package/docs/benchmarks/interaction-latency/ios-validation.md +2 -0
  187. package/docs/benchmarks/ui-tree-performance/README.md +24 -16
  188. package/docs/benchmarks/ui-tree-performance/comparison.md +11 -10
  189. package/docs/code-structure.md +120 -0
  190. package/docs/specs/001-state-verification/spec.md +16 -14
  191. package/docs/specs/002-richer-element-identity/spec.md +12 -10
  192. package/docs/specs/003-wait-and-synchronization-reliability/spec.md +12 -10
  193. package/docs/specs/004-action-verification-routing/spec.md +3 -3
  194. package/docs/specs/005-unified-action-execution-and-verification-model/spec.md +2 -0
  195. package/docs/specs/006-runtime-action-instrumentation-and-binding-layer/spec.md +2 -0
  196. package/docs/specs/007-actionability-resolution-and-executable-target-selection/spec.md +3 -1
  197. package/docs/specs/008-adjustable-control-support-and-semantic-value-manipulation/spec.md +3 -4
  198. package/docs/specs/009-semantic-control-modeling-for-custom-and-composite-controls/spec.md +2 -0
  199. package/docs/specs/010-verification-stabilization-and-temporal-convergence/spec.md +2 -2
  200. package/docs/specs/011-recovery-and-replanning-for-failed-or-ambiguous-interaction-flows/spec.md +2 -2
  201. package/docs/specs/011.1-recovery-contract-types-and-runtime-wiring-spec/spec.md +2 -0
  202. package/docs/specs/012-action-trace-and-xecution-observability/spec.md +2 -3
  203. package/docs/specs/013-wait-and-synchronization-reliability/spec.md +19 -19
  204. package/docs/specs/014-actionability-resolution/spec.md +20 -18
  205. package/docs/specs/015-adjustable-control-support/spec.md +17 -15
  206. package/docs/specs/016-environment-tools/spec.md +20 -20
  207. package/docs/specs/018-interaction-latency-and-batched-journeys/spec.md +2 -0
  208. package/docs/specs/019-ui-tree-observation-performance/spec.md +3 -1
  209. package/docs/specs/020-conditional-actions/intent.md +5 -3
  210. package/docs/specs/020-conditional-actions/plan.md +8 -9
  211. package/docs/specs/020-conditional-actions/spec.md +4 -2
  212. package/docs/specs/021-app-readiness-signals/intent.md +4 -2
  213. package/docs/specs/021-app-readiness-signals/plan.md +7 -6
  214. package/docs/specs/021-app-readiness-signals/spec.md +3 -1
  215. package/docs/specs/022-correlated-evidence/intent.md +4 -4
  216. package/docs/specs/022-correlated-evidence/plan.md +10 -11
  217. package/docs/specs/022-correlated-evidence/spec.md +3 -1
  218. package/docs/specs/023-android-system-traces/intent.md +3 -2
  219. package/docs/specs/023-android-system-traces/plan.md +5 -7
  220. package/docs/specs/023-android-system-traces/spec.md +3 -1
  221. package/docs/specs/024-android-heap-dump-capture/intent.md +3 -1
  222. package/docs/specs/025-android-runtime-debugger/intent.md +4 -3
  223. package/docs/specs/025-android-runtime-debugger/plan.md +3 -1
  224. package/docs/specs/025-android-runtime-debugger/spec.md +4 -3
  225. package/docs/specs/026-code-structure-and-quality-gates/health-plan.md +88 -0
  226. package/docs/specs/026-code-structure-and-quality-gates/intent.md +47 -0
  227. package/docs/specs/026-code-structure-and-quality-gates/plan.md +191 -0
  228. package/docs/specs/026-code-structure-and-quality-gates/spec.md +138 -0
  229. package/docs/specs/026-code-structure-and-quality-gates/verification-final.json +200 -0
  230. package/docs/specs/026-code-structure-and-quality-gates/verification-thin-facade.json +154 -0
  231. package/docs/specs/026-code-structure-and-quality-gates/verification.json +136 -0
  232. package/docs/specs/027-debugger-failure-diagnostics/intent.md +43 -0
  233. package/docs/specs/027-debugger-failure-diagnostics/plan.md +86 -0
  234. package/docs/specs/027-debugger-failure-diagnostics/spec.md +133 -0
  235. package/docs/specs/028-compact-debugger-responses/intent.md +41 -0
  236. package/docs/specs/028-compact-debugger-responses/plan.md +112 -0
  237. package/docs/specs/028-compact-debugger-responses/spec.md +108 -0
  238. package/docs/specs/029-kotlin-locals-validation/report.md +119 -0
  239. package/docs/specs/030-android-coroutine-validation/evidence.json +475 -0
  240. package/docs/specs/030-android-coroutine-validation/intent.md +47 -0
  241. package/docs/specs/030-android-coroutine-validation/plan.md +147 -0
  242. package/docs/specs/030-android-coroutine-validation/report.md +240 -0
  243. package/docs/specs/030-android-coroutine-validation/spec.md +107 -0
  244. package/docs/specs/031-ios-system-traces/intent.md +38 -0
  245. package/docs/specs/031-ios-system-traces/investigation.md +92 -0
  246. package/docs/specs/031-ios-system-traces/late-run-failure-evidence.json +32 -0
  247. package/docs/specs/031-ios-system-traces/plan.md +138 -0
  248. package/docs/specs/031-ios-system-traces/pr102-monitor-evidence.json +22 -0
  249. package/docs/specs/031-ios-system-traces/simulator-evidence.json +47 -0
  250. package/docs/specs/031-ios-system-traces/spec.md +135 -0
  251. package/docs/specs/032-ios-runtime-debugger/evidence.json +176 -0
  252. package/docs/specs/032-ios-runtime-debugger/intent.md +38 -0
  253. package/docs/specs/032-ios-runtime-debugger/plan.md +95 -0
  254. package/docs/specs/032-ios-runtime-debugger/report.md +205 -0
  255. package/docs/specs/032-ios-runtime-debugger/spec.md +153 -0
  256. package/docs/tools/TOOLS.md +31 -18
  257. package/docs/tools/{evidence.md → correlated-evidence.md} +9 -1
  258. package/docs/tools/debugger.md +120 -4
  259. package/docs/tools/interact.md +42 -20
  260. package/docs/tools/manage.md +25 -44
  261. package/docs/tools/observe.md +55 -23
  262. package/docs/tools/system-traces.md +89 -14
  263. package/docs/tools/system.md +12 -5
  264. package/package.json +12 -8
  265. package/scripts/agent-plugin.mjs +55 -5
  266. package/scripts/architecture-graph.mjs +69 -0
  267. package/scripts/check-architecture.mjs +47 -0
  268. package/scripts/code-quality-baseline.json +1 -0
  269. package/scripts/code-quality.mjs +161 -0
  270. package/src/contracts/execution-controls.ts +26 -0
  271. package/src/contracts/selector.ts +17 -0
  272. package/src/contracts/target.ts +19 -0
  273. package/src/contracts/ui.ts +94 -0
  274. package/src/debugger/android.ts +3 -2
  275. package/src/debugger/diagnostics.ts +43 -0
  276. package/src/debugger/guard.ts +10 -5
  277. package/src/debugger/ios-worker.ts +49 -0
  278. package/src/debugger/ios.ts +45 -0
  279. package/{worker → src/debugger/java}/DebuggerWorker.java +9 -3
  280. package/src/debugger/lldb/breakpoints.py +51 -0
  281. package/src/debugger/lldb/inspection.py +109 -0
  282. package/src/debugger/lldb/worker.py +203 -0
  283. package/src/debugger/protocol.ts +37 -0
  284. package/src/debugger/sessions.ts +326 -155
  285. package/src/debugger/worker.ts +57 -41
  286. package/src/interact/adjustment/adjustment-context.ts +83 -0
  287. package/src/interact/adjustment/adjustment-gestures.ts +48 -0
  288. package/src/interact/adjustment/adjustment-plan.ts +23 -0
  289. package/src/interact/adjustment/adjustment-resolution.ts +104 -0
  290. package/src/interact/adjustment/adjustment-result.ts +34 -0
  291. package/src/interact/adjustment/adjustment-semantic.ts +53 -0
  292. package/src/interact/adjustment/adjustment-verification.ts +60 -0
  293. package/src/interact/adjustment/adjustment.ts +49 -0
  294. package/src/interact/adjustment/control-geometry.ts +120 -0
  295. package/src/interact/adjustment/control-values.ts +141 -0
  296. package/src/interact/adjustment/slider-labels.ts +84 -0
  297. package/src/interact/assertions/screen-assertion.ts +39 -0
  298. package/src/interact/assertions/state-assertion-context.ts +48 -0
  299. package/src/interact/assertions/state-assertion.ts +64 -0
  300. package/src/interact/assertions/state-comparison.ts +168 -0
  301. package/src/interact/assertions/visibility-assertion.ts +41 -0
  302. package/src/interact/conditional-action.ts +18 -12
  303. package/src/interact/index.ts +89 -3494
  304. package/src/interact/input-service.ts +11 -0
  305. package/src/interact/interaction-trace.ts +36 -0
  306. package/src/interact/model.ts +109 -0
  307. package/src/interact/observation.ts +7 -0
  308. package/src/interact/targeting/candidate-ancestor.ts +49 -0
  309. package/src/interact/targeting/candidate-result.ts +24 -0
  310. package/src/interact/targeting/candidate-scoring.ts +42 -0
  311. package/src/interact/targeting/element-helpers.ts +243 -0
  312. package/src/interact/targeting/find-element.ts +47 -0
  313. package/src/interact/targeting/nearby-control.ts +46 -0
  314. package/src/interact/targeting/resolved-elements.ts +20 -0
  315. package/src/interact/targeting/tap-target.ts +22 -0
  316. package/src/interact/targeting/target-scope.ts +121 -0
  317. package/src/interact/waits/legacy-log-wait.ts +30 -0
  318. package/src/interact/waits/legacy-wait-observations.ts +55 -0
  319. package/src/interact/waits/legacy-wait-state.ts +48 -0
  320. package/src/interact/waits/legacy-wait.ts +34 -0
  321. package/src/interact/waits/screen-wait.ts +37 -0
  322. package/src/interact/waits/ui-change-helpers.ts +184 -0
  323. package/src/interact/waits/ui-change-state.ts +26 -0
  324. package/src/interact/waits/ui-change-wait.ts +59 -0
  325. package/src/interact/waits/ui-wait-condition.ts +52 -0
  326. package/src/interact/waits/ui-wait-state.ts +55 -0
  327. package/src/interact/waits/ui-wait.ts +84 -0
  328. package/src/manage/android.ts +56 -50
  329. package/src/manage/index.ts +63 -93
  330. package/src/manage/ios/build-types.ts +14 -0
  331. package/src/manage/ios/build.ts +230 -0
  332. package/src/manage/ios/project-discovery.ts +26 -0
  333. package/src/manage/ios/scheme.ts +16 -0
  334. package/src/manage/ios.ts +67 -298
  335. package/src/observe/android/context.ts +1 -0
  336. package/src/observe/android/current-screen.ts +63 -0
  337. package/src/observe/android/fingerprint.ts +13 -0
  338. package/src/observe/android/log-stream.ts +127 -0
  339. package/src/observe/android/logs.ts +110 -0
  340. package/src/observe/android/screenshot.ts +79 -0
  341. package/src/observe/android/ui-tree.ts +113 -0
  342. package/src/observe/android.ts +17 -531
  343. package/src/observe/evidence.ts +122 -70
  344. package/src/observe/index.ts +24 -286
  345. package/src/observe/ios/context.ts +22 -0
  346. package/src/observe/ios/fingerprint.ts +12 -0
  347. package/src/observe/ios/log-stream.ts +103 -0
  348. package/src/observe/ios/logs.ts +179 -0
  349. package/src/observe/ios/screenshot.ts +26 -0
  350. package/src/observe/ios/ui-elements.ts +266 -0
  351. package/src/observe/ios/ui-tree.ts +143 -0
  352. package/src/observe/ios-trace/artifact.ts +55 -0
  353. package/src/observe/ios-trace/capabilities.ts +74 -0
  354. package/src/observe/ios-trace/native.ts +72 -0
  355. package/src/observe/ios-trace/notification.ts +30 -0
  356. package/src/observe/ios-trace/process.ts +82 -0
  357. package/src/observe/ios-trace/sessions.ts +204 -0
  358. package/src/observe/ios.ts +18 -749
  359. package/src/observe/logs/model.ts +11 -0
  360. package/src/{network → observe/network}/index.ts +2 -2
  361. package/src/observe/readiness-service.ts +6 -4
  362. package/src/observe/readiness.ts +42 -21
  363. package/src/observe/screenshot-encoding.ts +32 -0
  364. package/src/observe/snapshot-collection.ts +69 -0
  365. package/src/observe/snapshot-logs.ts +26 -0
  366. package/src/observe/snapshot-metadata.ts +51 -31
  367. package/src/observe/snapshot-semantic.ts +153 -0
  368. package/src/observe/system-trace-error.ts +3 -0
  369. package/src/observe/system-trace-router.ts +61 -0
  370. package/src/observe/system-trace.ts +28 -19
  371. package/src/runtime/action-results.ts +376 -0
  372. package/src/runtime/clock.ts +9 -0
  373. package/src/server/common.ts +9 -359
  374. package/src/server/definitions/assert.ts +164 -0
  375. package/src/server/definitions/diagnostic.ts +120 -0
  376. package/src/server/definitions/input.ts +276 -0
  377. package/src/server/definitions/manage.ts +196 -0
  378. package/src/server/definitions/observe.ts +151 -0
  379. package/src/server/definitions/target.ts +140 -0
  380. package/src/server/definitions/wait.ts +107 -0
  381. package/src/server/handlers/action-execution.ts +164 -0
  382. package/src/server/handlers/correlation.ts +20 -0
  383. package/src/server/handlers/debugger-handlers.ts +58 -0
  384. package/src/server/handlers/debugger-response.ts +7 -0
  385. package/src/server/handlers/diagnostic.ts +86 -0
  386. package/src/server/handlers/handler-types.ts +7 -0
  387. package/src/server/handlers/input.ts +173 -0
  388. package/src/server/handlers/interact.ts +135 -0
  389. package/src/server/handlers/journey-assertions.ts +39 -0
  390. package/src/server/handlers/journey.ts +132 -0
  391. package/src/server/handlers/manage.ts +141 -0
  392. package/src/server/handlers/observe.ts +116 -0
  393. package/src/server/handlers/payload.ts +36 -0
  394. package/src/server/handlers/tool-handlers.ts +170 -0
  395. package/src/server/schemas/condition-schema.ts +2 -0
  396. package/src/server/schemas/debugger-schema.ts +46 -0
  397. package/src/server/{journey-schema.ts → schemas/journey-schema.ts} +7 -22
  398. package/src/server/schemas/system-trace-schema.ts +23 -0
  399. package/src/server/tool-definitions.ts +67 -1143
  400. package/src/server-core.ts +2 -2
  401. package/src/server.ts +4 -4
  402. package/src/system/android-status.ts +124 -0
  403. package/src/system/android.ts +33 -21
  404. package/src/system/index.ts +21 -525
  405. package/src/system/ios-status.ts +147 -0
  406. package/src/system/ios.ts +14 -10
  407. package/src/system/model.ts +41 -0
  408. package/src/system/probes.ts +114 -0
  409. package/src/system/status-summary.ts +47 -0
  410. package/src/system/unsupported-status.ts +55 -0
  411. package/src/types.ts +16 -106
  412. package/src/utils/android/commands.ts +81 -0
  413. package/src/utils/android/gradle.ts +132 -0
  414. package/src/utils/android/logs.ts +103 -0
  415. package/src/utils/android/ui-tree.ts +239 -0
  416. package/src/utils/android/utils.ts +16 -556
  417. package/src/utils/cli/idb/check-idb.ts +4 -4
  418. package/src/utils/cli/idb/idb-helper.ts +6 -8
  419. package/src/utils/cli/idb/install-idb.ts +15 -9
  420. package/src/utils/cli/ios/preflight-ios.ts +39 -31
  421. package/src/utils/cli/ios/run-ios-ui-tree-tap.ts +4 -4
  422. package/src/utils/ios/utils.ts +60 -61
  423. package/src/utils/java.ts +62 -43
  424. package/src/utils/resolve-device.ts +9 -6
  425. package/src/utils/ui/index.ts +28 -28
  426. package/test/device/automated/debugger/coroutine-lifecycle.ts +27 -0
  427. package/test/device/automated/debugger/coroutine-support.ts +140 -0
  428. package/test/device/automated/debugger/coroutine.android.test.ts +169 -0
  429. package/test/device/automated/debugger/kotlin.android.test.ts +127 -0
  430. package/test/device/automated/debugger/runtime.android.test.ts +19 -3
  431. package/test/device/automated/debugger/runtime.ios.test.ts +221 -0
  432. package/test/device/automated/interact/interaction.android.test.ts +56 -0
  433. package/test/device/automated/observe/ios-system-trace.smoke.ts +119 -0
  434. package/test/device/automated/observe/system-trace.smoke.ts +1 -1
  435. package/test/device/manual/interact/modul8_selector_tap.manual.ts +1 -1
  436. package/test/fixtures/contracts/tool-definitions.json +3696 -0
  437. package/test/fixtures/coroutine-app/MainActivity.kt +100 -0
  438. package/test/fixtures/coroutine-app/README.md +48 -0
  439. package/test/fixtures/coroutine-app/build.ts +35 -0
  440. package/test/fixtures/debugger-app/MainActivity.java +21 -0
  441. package/test/fixtures/debugger-app/MainActivity.kt +32 -0
  442. package/test/fixtures/debugger-app/README.md +52 -0
  443. package/test/fixtures/debugger-app/build.ts +25 -15
  444. package/test/fixtures/ios-debugger-app/Main.swift +95 -0
  445. package/test/fixtures/ios-debugger-app/README.md +27 -0
  446. package/test/fixtures/ios-debugger-app/build.ts +21 -0
  447. package/test/fixtures/latency-journey-app/README.md +2 -0
  448. package/test/fixtures/readiness-app/README.md +2 -0
  449. package/test/helpers/ios-trace-shutdown.ts +29 -0
  450. package/test/unit/debugger/coroutine-lifecycle.test.ts +43 -0
  451. package/test/unit/debugger/diagnostic-sessions.test.ts +67 -0
  452. package/test/unit/debugger/diagnostics.test.ts +80 -0
  453. package/test/unit/debugger/guards.test.ts +4 -0
  454. package/test/unit/debugger/handle-guards.test.ts +88 -0
  455. package/test/unit/debugger/ios-preparation.test.ts +57 -0
  456. package/test/unit/debugger/ios.test.ts +104 -0
  457. package/test/unit/debugger/lldb-worker.py +166 -0
  458. package/test/unit/debugger/lldb-worker.test.ts +10 -0
  459. package/test/unit/debugger/preparation.test.ts +32 -0
  460. package/test/unit/debugger/protocol.test.ts +15 -0
  461. package/test/unit/debugger/sessions.test.ts +1 -1
  462. package/test/unit/interact/adjustment_service.test.ts +42 -0
  463. package/test/unit/interact/adjustment_verification.test.ts +35 -0
  464. package/test/unit/interact/clock_dependencies.test.ts +63 -0
  465. package/test/unit/interact/element_helpers.test.ts +19 -0
  466. package/test/unit/interact/legacy_wait_service.test.ts +17 -0
  467. package/test/unit/interact/state_comparison.test.ts +20 -0
  468. package/test/unit/interact/target_scope.test.ts +35 -0
  469. package/test/unit/network/get_network_activity.test.ts +1 -1
  470. package/test/unit/observe/ios-trace-native.test.ts +90 -0
  471. package/test/unit/observe/ios-trace-sessions.test.ts +131 -0
  472. package/test/unit/observe/readiness.test.ts +1 -1
  473. package/test/unit/observe/screenshot-encoding.test.ts +30 -0
  474. package/test/unit/observe/snapshot-logs.test.ts +14 -0
  475. package/test/unit/observe/system-trace-router.test.ts +49 -0
  476. package/test/unit/quality/agent-plugin-export.test.ts +38 -0
  477. package/test/unit/quality/architecture.test.ts +60 -0
  478. package/test/unit/quality/code-quality.test.ts +58 -0
  479. package/test/unit/quality/interaction_boundaries.test.ts +24 -0
  480. package/test/unit/server/conditional_actions.test.ts +1 -1
  481. package/test/unit/server/conditional_schema.test.ts +2 -2
  482. package/test/unit/server/debugger-response.test.ts +63 -0
  483. package/test/unit/server/system-trace.test.ts +12 -3
  484. package/test/unit/server/tool_definitions_parity.test.ts +8 -0
  485. package/dist/server/debugger-handlers.js +0 -38
  486. package/dist/server/system-trace-schema.js +0 -17
  487. package/dist/server/tool-handlers.js +0 -1000
  488. package/docs/ROADMAP.md +0 -646
  489. package/docs/benchmarks/ui-tree-performance/bridge-probe.json +0 -29
  490. package/docs/benchmarks/ui-tree-performance/initial-baseline.json +0 -59560
  491. package/docs/specs/baseline-spec-v0.md +0 -312
  492. package/docs/specs/mcp-tooling-spec-v1.md +0 -446
  493. package/src/server/debugger-handlers.ts +0 -29
  494. package/src/server/debugger-schema.ts +0 -37
  495. package/src/server/system-trace-schema.ts +0 -17
  496. package/src/server/tool-handlers.ts +0 -1008
  497. /package/dist/{server/condition-schema.js → contracts/condition.js} +0 -0
  498. /package/dist/server/{readiness-schema.js → schemas/readiness-schema.js} +0 -0
  499. /package/src/{server/condition-schema.ts → contracts/condition.ts} +0 -0
  500. /package/src/server/{readiness-schema.ts → schemas/readiness-schema.ts} +0 -0
@@ -1,5 +1,7 @@
1
1
  # Interaction latency benchmark
2
2
 
3
+ [Benchmark index](../README.md) · [Documentation](../../README.md)
4
+
3
5
  Run after `npm run verify`:
4
6
 
5
7
  ```sh
@@ -24,3 +26,15 @@ See [iOS simulator validation](ios-validation.md) for the interaction checks.
24
26
  The process exits unsuccessfully on >10% full p95 regression or <30% light p50
25
27
  improvement. A failed run is reported and excluded from percentiles as the spec
26
28
  requires; inspect its selector and tool or step before accepting the result.
29
+
30
+ ## Recorded results
31
+
32
+ - [Android measurements](final.md): latency summaries and acceptance gates.
33
+ - [Raw Android report](final.json): requests, timing components, and per-run outcomes.
34
+ - [iOS interaction validation](ios-validation.md): correctness checks, separate
35
+ from the Android latency measurements.
36
+
37
+ The harness overwrites `final.md` and `final.json` when run. These checked-in
38
+ results describe the recorded build and environment; they do not establish the
39
+ performance of the current checkout. Review generated reports and preserve any
40
+ unresolved limitations when recording a new run.
@@ -1,5 +1,7 @@
1
1
  # Interaction latency benchmark
2
2
 
3
+ [Benchmark index](../README.md) · [Documentation](../../README.md)
4
+
3
5
  Commit: d3e6ae720db1ad1da294795790689df5a80b56b0 (working tree candidate). Fixture: 1.0, SHA-256 98244deeeba0a21da7d99a3e4b43c97806d6f8a8787ad7fe38249e5d311a6fb6.
4
6
 
5
7
  Environment: Pixel_9_Pro, Android 16, API 36. Three warm-ups and ten measured runs per mode. Failed runs excluded.
@@ -14,4 +16,5 @@ First failure by mode: baseline: none; full: none; light: none.
14
16
 
15
17
  Full p95 gate: true. Light p50 gate: true.
16
18
 
17
- See final.json for requests, timing components, and failure selectors.
19
+ See the [raw report](final.json) for requests, timing components, and failure selectors.
20
+ See the [benchmark instructions](README.md) to run a new measurement.
@@ -1,5 +1,7 @@
1
1
  # Spec 018 iOS device validation
2
2
 
3
+ [Benchmark index](../README.md) · [Documentation](../../README.md)
4
+
3
5
  Validated on 27 September 2026 with the booted iPhone Air simulator (iOS 26.4.1).
4
6
 
5
7
  - `npm run test:device` passed all six Android and iOS screenshot, log, and UI-tree smoke checks.
@@ -1,5 +1,7 @@
1
1
  # UI tree observation performance benchmark
2
2
 
3
+ [Benchmark index](../README.md) · [Documentation](../../README.md)
4
+
3
5
  This paired Android benchmark compares a clean, built instrumentation baseline
4
6
  with a clean, built candidate. It runs the Spec 018 static journey and a local
5
7
  network-backed loading-to-ready flow against the same fixture APK and emulator.
@@ -41,19 +43,25 @@ not gain timing fields. Events contain timings, platform, generated journey step
41
43
  IDs, and opaque acquisition IDs. They omit UI contents, app identifiers,
42
44
  screenshots, logs, payloads, and device serials. iOS latency remains unmeasured.
43
45
 
44
- The checked-in `initial-baseline.json` is the standalone capture taken before
45
- the optimization. The checked-in `baseline.json` is the baseline side of the
46
- paired run, so it shares the fixture APK hash with `candidate.json`.
47
- `comparison-attempt-1.json` retains an earlier paired run with two visible
48
- network failures; see `comparison.md` for the outcome and limitation.
49
- The report commit SHAs are available locally as `codex/spec-019-baseline` and
50
- `codex/spec-019-candidate`; create clean, built checkouts of those refs to
51
- reproduce the paired measurement.
52
-
53
- The historical `bridge-probe.json` compares ten bridge and legacy reads, checks a network
54
- update, and checks a timer that changes visually without emitting an
55
- accessibility event. The timer check catches a stale accessibility cache even
56
- when every bridge request calls `getRootInActiveWindow()`.
57
- The bridge APK source, generator, and build/install probe have been removed;
58
- this report is retained as historical evidence, not a runnable benchmark in
59
- the current checkout.
46
+ ## Recorded results
47
+
48
+ Read the [comparison report](comparison.md) for measurements and limitations.
49
+ The checked-in reports describe a historical run, not the current checkout's
50
+ performance.
51
+
52
+ | File | Purpose |
53
+ | --- | --- |
54
+ | [comparison.md](comparison.md) | Human-readable results and interpretation. |
55
+ | [comparison.json](comparison.json) | Complete paired report, including both modes and per-attempt data. |
56
+ | [baseline.json](baseline.json) | Baseline-only view of the paired run. |
57
+ | [candidate.json](candidate.json) | Candidate-only view of the paired run. |
58
+ | [comparison-attempt-1.json](comparison-attempt-1.json) | Earlier failed comparison, retained because the unexplained stalls remain a limitation. |
59
+
60
+ The paired baseline and candidate use the same fixture APK hash. The separate
61
+ views are generated outputs; use the complete comparison for the full record.
62
+ Baseline-only runs also write `baseline.json`, so keep paired reports together
63
+ when recording a new comparison.
64
+
65
+ Use the commit identifiers in the JSON reports to identify the measured source.
66
+ Reproducing the run requires clean, built checkouts of those commits and the
67
+ fixture prerequisites described above.
@@ -1,5 +1,7 @@
1
1
  # UI tree observation performance
2
2
 
3
+ [Benchmark index](../README.md) · [Documentation](../../README.md)
4
+
3
5
  Fixture SHA-256: be322549a4ba154c0b1c85876559157bb21a911673906d270a7ec26dc2fcfa89. Android 16, API 36. Three warm-ups and ten measured attempts per flow and mode. Failed attempts are visible in the JSON reports and excluded from percentiles.
4
6
 
5
7
  | Mode | Flow | p50 ms | p95 ms | Failures |
@@ -29,13 +31,12 @@ visible in the acquisition records. The candidate also lowers network p95 at
29
31
  both response delays. The fixture recorded no `VERIFICATION_UNAVAILABLE` in
30
32
  either mode, so this result does not establish its rate in other apps.
31
33
 
32
- `initial-baseline.json` preserves the standalone instrumentation-only capture
33
- made before the acquisition change. The paired `baseline.json`,
34
- `candidate.json`, and `comparison.json` use one APK SHA-256 and the same
35
- emulator settings. An earlier paired attempt is retained as
36
- `comparison-attempt-1.json`: one measured baseline 100 ms network read failed
37
- after a 181.97 s physical acquisition, and one candidate 1,500 ms warm-up
38
- failed before an observation event. That attempt failed the zero-failure gate.
39
- The unchanged repeat above had no failures. The cause of the first attempt's
40
- stalls was not established, so the repeat supports the latency result but does
41
- not prove the stall cannot recur. iOS latency was not measured.
34
+ The paired [baseline](baseline.json), [candidate](candidate.json), and
35
+ [complete comparison](comparison.json) use one APK SHA-256 and the same emulator
36
+ settings. An [earlier paired attempt](comparison-attempt-1.json) recorded one
37
+ measured baseline 100 ms network read failing after a 181.97 s physical
38
+ acquisition and one candidate 1,500 ms warm-up failing before an observation
39
+ event. That attempt failed the zero-failure gate. The unchanged repeat above had
40
+ no failures. The cause of the first attempt's stalls was not established, so the
41
+ repeat supports the latency result but does not prove the stall cannot recur.
42
+ iOS latency was not measured.
@@ -0,0 +1,120 @@
1
+ # Code structure and quality checks
2
+
3
+ [Documentation](README.md) · [Contributing](../CONTRIBUTING.md)
4
+
5
+ Run `npm run lint` before submitting a change. It runs the existing ESLint rules
6
+ and `npm run check:quality` plus `npm run check:architecture`. These checks also run in `npm run verify` and the
7
+ unit CI job; quality failures exit nonzero even with ESLint's `--quiet` option.
8
+
9
+ ## Limits
10
+
11
+ Production TypeScript is checked against these defaults:
12
+
13
+ | Metric | Limit |
14
+ | --- | ---: |
15
+ | File length | 500 lines |
16
+ | Class length | 300 lines |
17
+ | Function or method length | 80 lines |
18
+ | Cyclomatic complexity | 20 |
19
+ | Control-flow nesting | 4 |
20
+ | New explicit `any` | 0 |
21
+
22
+ Line counts exclude blank and comment-only lines. Java source has the file-length
23
+ limit; TypeScript class/function/type metrics do not apply to Java. Existing
24
+ ESLint rules still apply to tests, but the production size gates do not apply to
25
+ fixture tables or self-running test scripts.
26
+
27
+ Prefer cohesive responsibilities and typed boundaries. Avoid compressing code,
28
+ adding trivial wrappers, or disabling rules to meet a number. The checks help
29
+ identify risk; passing them does not replace a design or correctness review.
30
+
31
+ ## Architecture checks
32
+
33
+ `npm run check:architecture` uses pinned ArchUnitTS (`archunit`) to enforce four
34
+ rules over the production dependency graph:
35
+
36
+ - Shared contracts cannot import application implementations outside `contracts/`.
37
+ - Capability and shared modules cannot import the MCP server layer.
38
+ - The listed pure interaction calculations cannot import native I/O or service
39
+ facades. Their exact scope is defined in
40
+ [the rules](../scripts/check-architecture.mjs).
41
+ - Production runtime dependencies must be cycle-free. Type-only dependencies
42
+ count for boundary rules, but type-only cycles do not count as runtime cycles.
43
+
44
+ ArchUnitTS 2.5.4 extracts static imports. A small
45
+ [TypeScript resolution adapter](../scripts/architecture-graph.mjs) adds re-exports,
46
+ import types, literal dynamic imports, `require` calls and Node builtins. It uses
47
+ the repository's `tsconfig.json`, including NodeNext `.js` imports. Nonliteral
48
+ loads and unresolved dependencies fail the check instead of silently disappearing.
49
+ Boundary rules check direct dependencies; cycle detection checks the internal
50
+ runtime graph. This does not analyse Java worker dependencies or reflective loads.
51
+
52
+ [Negative-control tests](../test/unit/quality/architecture.test.ts) prove that
53
+ broken boundaries, cycles, aliases, and dynamic/re-export dependencies are caught,
54
+ and empty or incomplete graphs fail. The current graph needs no cycle exceptions.
55
+ Keep new rules aligned with the module ownership below; changing architecture
56
+ requires reviewing the rule alongside the implementation.
57
+
58
+ ## Baseline policy
59
+
60
+ The [reviewed baseline](../scripts/code-quality-baseline.json) is empty: all
61
+ production source currently meets the default limits, including zero explicit
62
+ `any` occurrences. If an exception is explicitly approved, its entry records the
63
+ file, rule and symbol. Each entry is a ceiling, not a target.
64
+ An existing exception cannot grow, and an improvement must lower or remove its
65
+ entry. New files and renamed symbols do not inherit exceptions. Unrelated
66
+ improvements cannot compensate for a regression elsewhere.
67
+
68
+ Lint and CI never regenerate the baseline. When reducing debt, edit the affected
69
+ entries explicitly and include that diff in review. New debt or raised ceilings
70
+ require a design decision and review; there is no blanket suppression mechanism.
71
+ Inline suppression of these gates is rejected. Anonymous callbacks have identities
72
+ based on their enclosing scope and body, so changing an exceptional callback
73
+ requires reviewing its exception rather than silently transferring it.
74
+
75
+ ## Module ownership
76
+
77
+ - `src/server/` is the MCP boundary: `definitions/` publishes tools,
78
+ `schemas/` validates MCP requests, and `handlers/` dispatches them.
79
+ `tool-definitions.ts` assembles the public definitions; `common.ts` provides
80
+ argument readers and response serialization. Capability handlers live in
81
+ `manage.ts`, `observe.ts`, `interact.ts`, `input.ts`, `journey.ts`, and
82
+ `diagnostic.ts`. `action-execution.ts` owns dispatch, condition handling,
83
+ verification and response phases; the central handler retains registration,
84
+ timing and debugger guards.
85
+ - `src/contracts/` holds shared input shapes and validation used across
86
+ capabilities. These contracts do not depend on MCP dispatch.
87
+ - `src/runtime/` currently holds action-result and trace construction shared by
88
+ dispatch and interactions, plus a small injectable wall-clock/delay interface
89
+ for polling services. Production clocks retain existing timer and readiness
90
+ budget semantics. It is separate from MCP response serialization;
91
+ interaction and runtime modules cannot import server-layer code.
92
+ - `src/interact/` owns actions and their supporting services. `index.ts` is the
93
+ composition facade; `android.ts` and `ios.ts` implement native input.
94
+ `adjustment/` contains adjustable-control strategies and calculations;
95
+ `targeting/` contains candidate ranking, element handles and target resolution;
96
+ `waits/` contains synchronization and legacy waits; `assertions/` contains
97
+ screen, visibility and state checks. Shared observation and input interfaces
98
+ remain at the interaction root. `ToolsInteract` must meet the 300-line class
99
+ budget without exceptions.
100
+ - `src/observe/` owns evidence acquisition and snapshots. Android and iOS facades
101
+ delegate to platform folders for trees, logs, screenshots, fingerprints and log
102
+ streams. Snapshot collection, log normalization and semantic summaries are
103
+ separate modules; screenshot encoding retains platform-specific alpha policies.
104
+ - `src/manage/ios/` owns Xcode project and scheme discovery, build preparation,
105
+ execution, watchdogs and diagnostics behind the existing iOS facade.
106
+ - `src/system/` separates probes, platform capability policies and status summaries.
107
+ `src/utils/android/` separates commands, Gradle preparation, logs and UI parsing;
108
+ `utils.ts` retains compatibility exports and device discovery.
109
+ - `src/observe/network/` infers HTTP activity from Android logcat and iOS
110
+ simulator logs. It supports `get_network_activity` and action classification;
111
+ it is not packet capture or a proxy. Results depend on the app logging requests,
112
+ and the current implementation does not measure request duration.
113
+ - `src/debugger/protocol.ts` validates worker messages. The session manager owns
114
+ serialized transitions and cleanup; the Java worker owns Android JDI operations.
115
+ The optional `lldb/` Python worker owns iOS simulator LLDB operations and static
116
+ inspection; `ios.ts` verifies simulator/app/process membership before attach.
117
+
118
+ The [refactoring plan](specs/026-code-structure-and-quality-gates/plan.md) records
119
+ progress and verification. The [follow-on health cleanup](specs/026-code-structure-and-quality-gates/health-plan.md)
120
+ records removal of the legacy baseline and the Node 22 dependency updates.
@@ -1,12 +1,14 @@
1
1
  # RFC-001: Stronger State Verification
2
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
3
5
  Priority: 1
4
6
  Depends on: Snapshot v1
5
7
  Related Roadmap Item: Priority 1 — Stronger State Verification
6
8
 
7
9
  ---
8
10
 
9
- # 1. Problem
11
+ ## 1. Problem
10
12
 
11
13
  Agents currently infer UI control state too often from surrounding text or visual clues instead of reading authoritative control state.
12
14
 
@@ -35,7 +37,7 @@ Shift from visual inference to explicit state introspection.
35
37
 
36
38
  ---
37
39
 
38
- # 2. Goals
40
+ ## 2. Goals
39
41
 
40
42
  This RFC introduces:
41
43
 
@@ -52,7 +54,7 @@ Success goals:
52
54
 
53
55
  ---
54
56
 
55
- # 3. Non-Goals
57
+ ## 3. Non-Goals
56
58
 
57
59
  This RFC does not:
58
60
 
@@ -64,7 +66,7 @@ This RFC does not:
64
66
 
65
67
  ---
66
68
 
67
- # 4. Proposed Model
69
+ ## 4. Proposed Model
68
70
 
69
71
  ## 4.1 State Model Additions
70
72
 
@@ -209,7 +211,7 @@ Rules:
209
211
 
210
212
  ---
211
213
 
212
- # 5. Guardrails and Conflict Semantics
214
+ ## 5. Guardrails and Conflict Semantics
213
215
 
214
216
  Required invariants:
215
217
 
@@ -242,7 +244,7 @@ Observation and verification stay distinct.
242
244
 
243
245
  ---
244
246
 
245
- # 6. Protocol Delta (Draft)
247
+ ## 6. Protocol Delta (Draft)
246
248
 
247
249
  Snapshot schema extension:
248
250
 
@@ -278,7 +280,7 @@ capabilities: {
278
280
 
279
281
  ---
280
282
 
281
- # 7. Failure Modes
283
+ ## 7. Failure Modes
282
284
 
283
285
  Must define behavior for:
284
286
 
@@ -310,7 +312,7 @@ If snapshot freshness is uncertain, no assumptions of real-time synchronization.
310
312
 
311
313
  ---
312
314
 
313
- # 8. Acceptance Test Vectors
315
+ ## 8. Acceptance Test Vectors
314
316
 
315
317
  Representative benchmark flows:
316
318
 
@@ -366,7 +368,7 @@ Then:
366
368
 
367
369
  ---
368
370
 
369
- # 9. Acceptance Criteria
371
+ ## 9. Acceptance Criteria
370
372
 
371
373
  RFC considered complete when:
372
374
 
@@ -378,7 +380,7 @@ RFC considered complete when:
378
380
 
379
381
  ---
380
382
 
381
- # 10. Success Metrics
383
+ ## 10. Success Metrics
382
384
 
383
385
  Target outcomes:
384
386
 
@@ -390,7 +392,7 @@ Measured against roadmap KPIs.
390
392
 
391
393
  ---
392
394
 
393
- # 11. Normative Requirements (v1)
395
+ ## 11. Normative Requirements (v1)
394
396
 
395
397
  Implementations conforming to RFC-001:
396
398
 
@@ -415,7 +417,7 @@ MAY:
415
417
 
416
418
  ---
417
419
 
418
- # 12. Resolved Design Decisions
420
+ ## 12. Resolved Design Decisions
419
421
 
420
422
  Former open questions resolved for RFC-001:
421
423
 
@@ -441,7 +443,7 @@ No unresolved design blockers remain for RFC-001 draft scope.
441
443
 
442
444
  ---
443
445
 
444
- # 13. Deferred To Later RFCs
446
+ ## 13. Deferred To Later RFCs
445
447
 
446
448
  Deferred to later RFCs:
447
449
 
@@ -449,4 +451,4 @@ Deferred to later RFCs:
449
451
  - Compose semantic enrichment extensions
450
452
  - Wait/synchronization improvements
451
453
  - Action trace correlation
452
- - Gesture support
454
+ - Gesture support
@@ -1,11 +1,13 @@
1
1
  # RFC-002: Platform-Native Element Metadata and Resolution Hints
2
2
 
3
- Priority: 2
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
5
+ Priority: 2
4
6
  Depends on: RFC-001 (Stronger State Verification)
5
7
 
6
8
  ---
7
9
 
8
- # 1. Problem
10
+ ## 1. Problem
9
11
 
10
12
  Agents currently rely on brittle or inconsistent selectors when identifying UI elements.
11
13
 
@@ -28,7 +30,7 @@ This RFC does not assume that a universal or guaranteed stable_id exists across
28
30
 
29
31
  ---
30
32
 
31
- # 2. Goals
33
+ ## 2. Goals
32
34
 
33
35
  This RFC introduces:
34
36
 
@@ -45,7 +47,7 @@ Success goals:
45
47
 
46
48
  ---
47
49
 
48
- # 3. Non-Goals
50
+ ## 3. Non-Goals
49
51
 
50
52
  This RFC does not:
51
53
 
@@ -56,7 +58,7 @@ This RFC does not:
56
58
 
57
59
  ---
58
60
 
59
- # 4. Proposed Model
61
+ ## 4. Proposed Model
60
62
 
61
63
  ## 4.1 Stable Element Identity
62
64
 
@@ -336,7 +338,7 @@ Notes:
336
338
 
337
339
  ---
338
340
 
339
- # 5. Failure Modes
341
+ ## 5. Failure Modes
340
342
 
341
343
  ## 5.1 Ambiguous match
342
344
 
@@ -369,7 +371,7 @@ If UI structure changes:
369
371
 
370
372
  ---
371
373
 
372
- # 6. Acceptance Criteria
374
+ ## 6. Acceptance Criteria
373
375
 
374
376
  RFC-002 is complete when:
375
377
 
@@ -381,7 +383,7 @@ RFC-002 is complete when:
381
383
 
382
384
  ---
383
385
 
384
- # 7. Success Metrics
386
+ ## 7. Success Metrics
385
387
 
386
388
  - Higher element resolution match rate using platform-native metadata + confidence hints
387
389
  - Reduced selector retries
@@ -390,11 +392,11 @@ RFC-002 is complete when:
390
392
 
391
393
  ---
392
394
 
393
- # 8. Out of Scope
395
+ ## 8. Out of Scope
394
396
 
395
397
  - State verification (RFC-001)
396
398
  - Wait/synchronization (RFC-003)
397
399
  - Gestures (future RFCs)
398
400
  - Action tracing
399
401
 
400
- This RFC is scoped as a metadata and resolution hint layer. It does not guarantee stable identity across all platforms, but standardises how identity signals are exposed and consumed.
402
+ This RFC is scoped as a metadata and resolution hint layer. It does not guarantee stable identity across all platforms, but standardises how identity signals are exposed and consumed.
@@ -1,11 +1,13 @@
1
1
  # RFC-003: Wait and Synchronization Reliability
2
2
 
3
- Priority: 3
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
5
+ Priority: 3
4
6
  Depends on: RFC-001 (Stronger State Verification), RFC-002 (Platform-Native Element Metadata and Resolution Hints)
5
7
 
6
8
  ---
7
9
 
8
- # 1. Problem
10
+ ## 1. Problem
9
11
 
10
12
  Agents can often identify the right element (RFC-002) and verify the right state (RFC-001), but still fail because they act before the UI has reached the intended post-action state.
11
13
 
@@ -26,7 +28,7 @@ Current system limitations:
26
28
 
27
29
  ---
28
30
 
29
- # 2. Goals
31
+ ## 2. Goals
30
32
 
31
33
  This RFC introduces:
32
34
 
@@ -45,7 +47,7 @@ Success goals:
45
47
 
46
48
  ---
47
49
 
48
- # 3. Non-Goals
50
+ ## 3. Non-Goals
49
51
 
50
52
  This RFC does not:
51
53
 
@@ -56,7 +58,7 @@ This RFC does not:
56
58
 
57
59
  ---
58
60
 
59
- # 4. Proposed Model
61
+ ## 4. Proposed Model
60
62
 
61
63
  ## 4.1 UI-First Synchronization Contract (v1)
62
64
 
@@ -219,7 +221,7 @@ These are synchronization hints layered on top of standard wait behaviour.
219
221
 
220
222
  ---
221
223
 
222
- # 5. Failure Modes
224
+ ## 5. Failure Modes
223
225
 
224
226
  ## 5.1 Premature Action Progression
225
227
 
@@ -257,7 +259,7 @@ If unrelated UI churn triggers early wait completion:
257
259
 
258
260
  ---
259
261
 
260
- # 6. Acceptance Criteria
262
+ ## 6. Acceptance Criteria
261
263
 
262
264
  RFC-003 specification is complete when:
263
265
 
@@ -275,7 +277,7 @@ Implementation readiness success is measured when:
275
277
 
276
278
  ---
277
279
 
278
- # 7. Success Metrics
280
+ ## 7. Success Metrics
279
281
 
280
282
  - Fewer retries caused by timing/synchronization errors
281
283
  - Higher post-action verification success rate
@@ -284,7 +286,7 @@ Implementation readiness success is measured when:
284
286
 
285
287
  ---
286
288
 
287
- # 8. Deferred To Later RFCs
289
+ ## 8. Deferred To Later RFCs
288
290
 
289
291
  - Advanced subscriptions / notify-when-element-appears APIs
290
292
  - Full action-to-ui trace correlation (Priority 7)
@@ -293,4 +295,4 @@ Implementation readiness success is measured when:
293
295
 
294
296
  ---
295
297
 
296
- This RFC standardises temporal reliability and synchronization signals layered on top of state verification and element identity guarantees from RFC-001 and RFC-002.
298
+ This RFC standardises temporal reliability and synchronization signals layered on top of state verification and element identity guarantees from RFC-001 and RFC-002.
@@ -1,7 +1,7 @@
1
-
2
-
3
1
  # RFC 004: Verification Routing for Local and Side-Effect Actions
4
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
5
5
  ## Status
6
6
  Draft
7
7
 
@@ -339,4 +339,4 @@ Questions for review:
339
339
 
340
340
  ## Decision Requested
341
341
 
342
- Adopt verification routing based on action type and remove implicit default escalation from missing UI diffs to network inspection.
342
+ Adopt verification routing based on action type and remove implicit default escalation from missing UI diffs to network inspection.
@@ -1,5 +1,7 @@
1
1
  # RFC 005 — Unified Action Execution and Verification Model
2
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
3
5
  ## 1. Summary
4
6
 
5
7
  This RFC defines a unified execution and verification model for all agent-driven UI actions.
@@ -1,5 +1,7 @@
1
1
  # RFC 006 — Runtime Action Instrumentation & Binding Layer
2
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
3
5
  ## 1. Summary
4
6
 
5
7
  This RFC defines how the execution model in RFC 005 is mapped onto the current runtime behaviour of the system.
@@ -1,5 +1,7 @@
1
1
  # RFC 007 — Actionability Resolution and Executable Target Selection
2
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
3
5
  ## 1. Summary
4
6
 
5
7
  This RFC defines how the system resolves which discovered UI element should receive an action before dispatch.
@@ -274,4 +276,4 @@ It improves:
274
276
  - Compose interaction robustness
275
277
  - agent success with fewer retries
276
278
 
277
- It addresses one of the largest remaining sources of interaction brittleness.
279
+ It addresses one of the largest remaining sources of interaction brittleness.
@@ -1,8 +1,7 @@
1
-
2
-
3
-
4
1
  # RFC 008 — Adjustable Control Support and Semantic Value Manipulation
5
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
6
5
  ## 1. Summary
7
6
 
8
7
  This RFC defines semantic interaction support for adjustable controls whose primary interaction changes a value rather than triggering a discrete action.
@@ -270,4 +269,4 @@ It does not commit in this RFC to:
270
269
  - arbitrary drag or canvas manipulation
271
270
  - pinch-to-zoom or broader gesture semantics
272
271
 
273
- This RFC specifies the behavioral model adjustable-control support should satisfy as implementations mature.
272
+ This RFC specifies the behavioral model adjustable-control support should satisfy as implementations mature.
@@ -1,5 +1,7 @@
1
1
  # RFC 009 — Semantic Control Modeling for Custom and Composite Controls
2
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
3
5
  ## 1. Summary
4
6
 
5
7
  This RFC defines a semantic control model for identifying, exposing, and interacting with custom and composite controls that are poorly represented through raw accessibility or platform UI trees.
@@ -1,7 +1,7 @@
1
-
2
-
3
1
  # RFC 010 — Verification Stabilization and Temporal Convergence
4
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
5
5
  ## 1. Summary
6
6
 
7
7
  This RFC defines a verification stabilization layer that ensures UI state transitions are not misclassified due to timing instability, transient UI states, or stale snapshots.
@@ -1,7 +1,7 @@
1
-
2
-
3
1
  # RFC 011 — Recovery and Replanning for Failed or Ambiguous Interaction Flows
4
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
5
5
  ## 1. Summary
6
6
 
7
7
  This RFC defines a structured recovery and replanning model for UI interaction failures, enabling the system to respond to execution uncertainty with bounded, deterministic recovery strategies.
@@ -1,5 +1,7 @@
1
1
  # RFC 011.1 — Recovery Contract Types & Runtime Wiring Spec
2
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
3
5
  ## 1. Purpose
4
6
 
5
7
  This document defines the typed runtime contract required to implement RFC 011 safely and consistently across:
@@ -1,8 +1,7 @@
1
-
2
-
3
-
4
1
  # RFC 012 — Action Trace and Execution Observability
5
2
 
3
+ [Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
4
+
6
5
  ## 1. Summary
7
6
 
8
7
  This RFC defines a structured execution trace model for all actions within the MCP runtime. It provides visibility into resolution, execution, verification, stabilization, and recovery stages.