docs: explain what the agent misses inside an off-site iframe
Merged
KR
5d ago+53+53+01234567890123456789-16-16-01234567890123456789
An iframe from another site, such as a hosted card field, shows in the agent's semantic tree as an empty iframe node. The docs never told test authors what that means for them:
- A tree-only judgment (
agent.assert,waitFor,extract) about the frame's content works without that content (#1270). - An
agent.actwhose only change is inside the frame never records a replay. The cache sees no change, writesno-change, and the step calls the model on every run, strict cache included (#1271).
Both come from the same deliberate boundary: isOnSiteFrame in packages/web/src/observation.ts:189-193, with the replay result coming from the no-change check in packages/e2e/src/agent/step-cache.ts:610. The boundary itself was documented only in the security reference's site check.
What changed:
docs/browser.mdx, "Reach into an iframe": one paragraph. It states the boundary and says the agent reaches that content only through screenshots. It points toframeLocatorfor steps,visionfor judgments, and the cache consequence.docs/cache.mdx: theno-changerow covers the frame case and says the step runs live on every run. Theno-entryrow gets that exception. The old "a step that took no action records nothing" sentence moves out of theno-changerow: such a step stages asskipped(step-cache.ts:601) and reports nowriteat all.docs/reference/agent.mdx, "Vision": one sentence linking to the iframe section.skills/e2e/(plus the synced plugin copy): the same facts inagent.md,writing-tests.md, anddebugging.md(ASSERTION_INCONCLUSIVE), and a patch changeset since the skill ships ine2e.
No runtime change.
Fixes #1270
Fixes #1271
Linear: ENG-1054
Verified
Ran it locally: yes
- Docs site,
mint devon the branch: the three edited sections render, and both links resolve.
| Reach into an iframe | step.cache.write table | Vision |
|---|---|---|
- I checked every claim against the source. I didn't rerun the reporter's model-backed repro; the issues include its report output.
Made by Claude Opus 5.5 (claude-opus-5-5) in Claude Code, running in T3 Code.