agent-desktop/docs
Lahfir 41fc178e5e
feat: uia element wrapper & tree walk (sub-phase 2.2) (#114)
Fills crates/windows/src/tree/ with the four things every later observation sub-phase consumes: an element wrapper with delegated refcounting, a timeout-bounded UIA client and window-root resolver, a tree walk with a cycle guard and honest completeness, and provider-class-conditional CacheRequest batching. Ships the secure-field gate, an out-of-process fixture, committed COM censuses as dev-box evidence, and corrections to docs/phases.md.

Measurement changed the design repeatedly, and each result is a ledger row rather than a silent correction:

- A14-3: the end-of-list discriminator is not inverted - code() 0 with result() None, on both builds.
- A14-4/A14-9: a dead provider is invisible on both the sibling and property axes, so neither carries liveness. Recorded for 2.4, which owns the snapshot path.
- A14-8: IsOffscreen disagrees with itself inside one minimized window, contradicting A1-2 off the managed stack.
- A14-10: 2.1's owned-process COM bootstrap is thread-local behind a process-wide guard.
- A14-11/A14-12: ElementFromHandle against a non-dispatching window hangs rather than timing out, and the bound that stops it is reachable only from CUIAutomation8. There is no fallback to an unbounded client.
- A14-13: UI Automation's client core initialises lazily and not re-entrantly, so concurrent first touches fail with E_FAIL. The accessor serialises that first touch.

Every control was observed failing before being claimed: the cycle guard, the discriminator, the secure-field gate, error redaction, capture normalisation, fixture teardown and both hang bounds.

ObservationOps::observe_tree still returns PLATFORM_NOT_SUPPORTED; no ref is allocated anywhere in crates/windows.
2026-07-28 19:37:28 -07:00
..
brainstorms chore: track planning artifacts with secret and privacy scanning (#109) 2026-07-26 01:41:55 -07:00
plans feat: uia element wrapper & tree walk (sub-phase 2.2) (#114) 2026-07-28 19:37:28 -07:00
solutions refactor!: remove speculative Win32 private-file layer from core, add real Windows/Linux test lanes (#106) 2026-07-25 23:25:28 -07:00
architecture.excalidraw docs: add architecture diagram to README 2026-02-24 06:22:52 -08:00
architecture.html refactor!: unify command execution contracts 2026-05-19 18:27:08 -07:00
architecture.png refactor!: unify command execution contracts 2026-05-19 18:27:08 -07:00
example.html refactor!: unify command execution contracts 2026-05-19 18:27:08 -07:00
example.png refactor!: unify command execution contracts 2026-05-19 18:27:08 -07:00
faq.md feat!: implement Playwright-grade foundation contract 2026-07-20 00:21:38 -07:00
json-output.md feat!: implement Playwright-grade foundation contract 2026-07-20 00:21:38 -07:00
phases.md feat: uia element wrapper & tree walk (sub-phase 2.2) (#114) 2026-07-28 19:37:28 -07:00