Explain the safe natural-language control loop and finish the Workshop
Confirm allowed and blocked history on the dashboard, then connect the original request to its audit evidence.
Question for this chapter
What is required to execute a request safely when the operator does not know the zone ID or coordinates?
Why this matters now
One command’s JSON does not show whether blocked requests were recorded or whether the team can review the complete activity. Confirm both paths in the operations view, then answer the opening question.
Try it
Open map_operations. In a fresh practice space with one batch run and two Agent requests, confirm these values.
| Widget | Expected value | Interpretation |
|---|---|---|
| Total Events | 10 | eight batch rows plus two runtime rows |
| Events by Intent Type | UI_CONTROL 9, DATA_QUERY 1 | both allowed and blocked requests are counted |
| Events by User | AGENT 8, OPR-WORKSHOP-01 2 | batch and operator requests remain distinguishable |
| Recent Events | the two latest allowed and blocked rows | original requests and outcomes are traceable |
Reruns or other users change the totals. In that case, find OPR-WORKSHOP-01 in Recent Events and
compare the two rows’ intent_type and action_log.
Success looks like this
The allowed Busan display command and blocked patrol-history question appear under different intents, while both rows carry the same user ID and an audit result. The dashboard does not make a new decision; it groups facts already recorded in the event dataset for an operations question.
Return to the opening problem
At the start, the operator knew the Busan port-control zone name but not its ID or coordinates. Sending natural language straight to the chart could execute a query or configuration change, while rejected requests could disappear without a record.
The previous six chapters built this solution.
| Initial problem | Applied solution | Evidence left behind | What changed |
|---|---|---|---|
| The operator knew a name but not an ID or coordinates. | Join zone definition and overlay through zone_id. | TZ-008, OV-008, WGS84 center | a name resolves to deterministic chart values |
| Permission between commands and questions was unclear. | Allow only UI_CONTROL under a reject-by-default gate. | intent_classification | unapproved actions never reach coordinate tools |
| The external UI could not safely consume arbitrary prose. | Emit fixed longitude, latitude, and scale JSON. | control_parameters | the parsing contract is explicit |
| A blocked request could disappear. | Send both branches through the event pipeline. | event_log.queued, om_event_history | rejection reasons remain auditable |
| Batch and runtime history looked mixed. | Separate them by producer and user across graph and dashboard. | eight batch rows, two runtime rows | reference values and live requests are explainable |
Explain the conclusion
Allow the Busan Port Entry/Exit Control Zone request as
UI_CONTROL. The Agent resolves the zone name toTZ-008and creates fixed JSON containing its WGS84 center and scale. Stop the patrol-history question becauseDATA_QUERYis outside the current Agent’s scope. Send both requests through the same event pipeline so the original text, classification, result, or rejection reason remains in audit history.
This explanation covers lookup, permission, deterministic output, and recording on both branches. The result is a convenient natural-language input with a deliberately narrow execution boundary.
Completion check
- Confirm the
TZ-008name, WGS84 center, and recommended scale. - Explain why
UI_CONTROLis allowed andDATA_QUERYis blocked. - Inspect the allowed command’s JSON and the blocked question’s reason.
- Distinguish the eight batch rows from the runtime events.
- Explain both the graph’s current coverage and its runtime-event limitation.
- Confirm allowed and blocked history for one user on the dashboard.
If any item is incomplete, return only to that chapter’s success signal.
Apply the pattern elsewhere
- In smart-factory commands, decide which display, query, and control intents receive separate permissions.
- In contact-center automation, separate executable responses from changes that require human approval.
- When linking runtime audits into a graph, define which business key to extract from nested results.