Does diagnosing a missing input require the manuscript someone intended to type? I first inspect node type, editability, label presence, dimensions and ancestor state. The design narrows the evidence needed to explain an input structure rather than collecting more original content.

Start with actual input nodes rather than the whole screen

ProbeControls observes current state, retains document epoch and finds nonignored textbox/searchbox/combobox nodes in native AX trees. It resolves a backend node into the relevant execution context and invokes fixed probeInput. This is not an API for executing arbitrary JavaScript supplied by an agent.

Frame input counts differ from returned detailed nodes. Details are bounded to eight across the report, with at most twelve frames. Many inputs do not trigger collection of all raw text and attributes. A bounded set of details must not be described as examination of every control on the page; limited diagnostics require equally limited interpretation.

Read label presence rather than label wording

ProbeInput checks ownerDocument and excludes password inputs and sensitive autocomplete cases. It returns tag, role, editability, input type, dimensions and whether label/placeholder attributes exist. It does not read their wording, value or textContent.

Ancestors, including shadow hosts, are followed only to a bounded depth, retaining display, visibility, opacity and hidden/inert/aria-hidden state. These clues can explain blocked structure without granting authority to press hidden nodes. Diagnosis complements interaction checks; it does not replace current-document and occlusion validation before native input.

Do not merge evidence across a changed document

Stored frame epochs are checked against the starting epoch, and page generation is checked after frame work. Temporary objectIds from resolved AX nodes are released in finally. That lifetime management avoids accumulating remote object references through repeated diagnostics.

A failed frame lookup is marked unavailable, while task checks can still surface cancellation or context change. An unavailable frame does not become a frame with no input. Zero inputs, details omitted by a limit, and failed inspection are different states. Even a compact structural report needs those distinctions so the next investigation can choose its boundary correctly.

Raw content can still exist outside the node probe

The per-node function omits values and names, but the overall ControlProbe retains frame origin. A wider repair context can contain error messages and page URLs. I therefore do not infer that every log using this function is safe to publish unchanged.

The shared synthetic module has another contract: fixed stages/error/function aliases and bounded node state without raw-content fields, rejecting extras. It reads no DOM, detects no real sensitive fields and certifies no publication safety. Collection-time reduction and prepublication review remain different boundaries, each with an explicit scope.

Counterexamples check that original content is absent

The original owned fixture inserts sentinel labels, values, textarea/editor text, password and OTP content. It checks that diagnostic JSON excludes those sentinels, values and backend-node references. The same test also covers a late input, native paragraph-end input and structural summaries for a mismatch.

I read that test without entering a new manuscript in the original browser. The independent module tests actually exercise raw-field refusal and caller-declared sensitive-node exclusion. Neither diagnostic identifies the definitive root cause or declares a repair complete. I share what narrower evidence can support investigation while keeping unverified outcomes visible.