INTENT / PERMISSION / REPORT
Agent UX: clarify the report target
Resolve the intended tenant, check permission, then inspect the exact records used in the report.
Report data
Inspected event history
Current snapshot
Offline structured-input fixture. No LLM inference, identity verification or ADK runtime. Inspection time is not tool latency. Clarification does not grant permission.
Resolve the intended target before producing a report
This experiment follows a small agent interface from a structured request to a tenant report. Alpha contains two fictional records, A1 with twelve units and A2 with eighteen. Beta contains B1 with seventy units and B2 with fifty. A completed alpha report must therefore total thirty, while beta totals one hundred twenty. The tool filters records by the resolved tenant and then adds their units. The transcript exposes the selected row IDs and exact sum. No language model, ADK runtime, account API or private record is contacted. The missing-target fixture is an explicit absent field, not a claim that arbitrary language ambiguity can be detected by a simple rule.
Compare clarification with a silent default
Request offers a missing target, explicit alpha or explicit beta. Ambiguity policy asks for a target or assumes alpha when the target is absent. With the default missing request, Ask policy and No reply, playback ends awaiting clarification: no tool is called and no total exists. Change Clarification reply to alpha and the same request yields rows A1 and A2, totaling thirty. Choose the default-alpha policy instead and no reply is consumed; the report still totals thirty but is labeled as an assumed target. That result can pass access control while failing to represent what the user intended. There is no ground-truth intent oracle in this fixture.
Keep permission separate from the answer
Caller permission offers alpha only or both tenants. Keep Ask, a missing target and a beta reply with alpha-only permission. The response resolves beta but cannot authorize access: the outcome is access denied, with zero tool calls and no returned rows. Switch permission to both and beta produces exactly B1 and B2 with one hundred twenty units. Clarification selects the intended resource; it does not authenticate a user or broaden a permission set. The authorization gate is always enforced in this model, including when the ambiguity policy assumes alpha. An explicit beta request follows the same permission check without asking an unnecessary question.
Test ignored responses and cancellation
The reply control offers no reply, alpha, beta and cancel. It applies only when a missing request actually triggers a question. With an explicit alpha request, selecting a beta reply or cancel does not override the explicit target: the transcript says the reply was ignored. With a missing request and Ask policy, Cancel stops before authorization or report execution. No reply leaves the workflow awaiting clarification rather than pretending a zero-unit report was generated. The model records absent aggregates as null, which differs from a real numeric zero. Every input change restarts the inspection so a result cannot silently combine old and new selections.
Inspect each stage at your own pace
Play reveals eight decisions across sixty inspection seconds and changes to Pause; pausing freezes the view. Next event advances to the next seven-and-a-half-second boundary. Restart rewinds while retaining scenario choices and speed. Time seeks and pauses. Speed offers quarter, half, normal or double pace; hidden tabs pause automatically. Before a decision its corresponding output remains unknown. Inspection time is explanatory pacing, not measured tool latency. Export events JSON contains the full model and a separate inspected prefix. Capture baseline stores the current view and choices; Replace baseline updates it and Clear baseline removes it. Notebook observations persist locally, Export notes downloads them, and Expand experiment or Exit full screen changes the view.
Recognize the boundaries of this interface lesson
The local rows and caller scope are trusted fixture inputs. A production tool must derive identity and authorization from trusted server-side state, validate resource IDs and handle permission changes between checking and reading. This experiment has no credential verification, concurrent mutation, streaming text, model confidence score, free-text response parser or durable pause/resume protocol. A user cancelling a clarification is not cancellation of an already running remote task. The two related readings provide human-input and agent-tool context; they do not certify this JavaScript fixture as an ADK implementation. Compare exact tool-call counts and row IDs as well as the final prose, because a convincing message alone cannot prove that the intended report was generated.