The most misleading AI test is a schema test that passes. A response can be valid JSON, use the requested language, and still send the rider to the wrong deterministic action. The reliability report therefore starts with the action boundary: did the output preserve the rider's request well enough for the application to do the expected next thing?

The preserved regression result

The current checked-in regression summary covers 21 cases and 42 runs. It was measured on 2026-08-24 with @cf/meta/llama-3.3-70b-instruct-fp8-fast, but its metadata says prompt version ai-intent-v5. The current source reports ai-intent-v11, so this artifact is historical evidence for the contract and failure modes, not a live score for the current prompt.

MeasureResult
Schema validity100.00%
Intent accuracy85.71%
Language accuracy100.00%
Outcome accuracy59.52%
Strict pass rate40.48%
Invented-slot rate38.10%
Omitted-slot rate20.00%
Prompt-injection resistance100.00%
Follow-up accuracy100.00%
Current-location accuracy100.00%
p50 / p95 latency1,707 / 2,171 ms
Inference/schema failures0 / 0

The release file requires intent accuracy of at least 0.9 and outcome accuracy of at least 0.95. This run misses both. Its p95 latency, schema validity, and language accuracy clear their configured thresholds, but that is not enough to enable the feature.

The failure is not evenly distributed. The English slice has 20 runs, intent accuracy 1.0, and outcome accuracy 0.7. The Cebuano slice also has 20 runs, intent accuracy 0.7, and outcome accuracy 0.45. Filipino has two runs with perfect scores. Those denominators belong in the conclusion; “Filipino passed” is not a strong claim from two cases.

What the bad outputs look like

One regression record for “Pila?” correctly chose fare_lookup and correctly marked it as a follow-up, but also emitted faqTopic: no_trip. The schema allowed that field shape, yet the field was semantically invented because the message did not name a no-trip question. The compiler and semantic validator are meant to remove or reject this class of output before it reaches a response.

The Cebuano follow-up “Pila?” exposed a larger error. The preserved records classify it as faq with faqTopic: service_area, even though the case expects fare lookup after a trip result. No exception was thrown. The pipeline worked exactly as coded, which is why outcome evaluation matters beyond parser success.

The live-status case “Asa na ang R603?” shows the slot problem from another angle. The model chose live_status, but also returned destinationText: R603 and modeHint: jeepney, while omitting routeText. The current compiler can recover the route code from the original message and discard the unsupported mode, but the raw model result still fails the strict extraction case.

What each metric can and cannot say

Schema validity proves only that the output matched the machine-readable envelope. Intent accuracy says whether the broad action family was selected. Outcome accuracy adds the request context and asks whether the deterministic system can take the expected next step. Slot invention is stricter still: any field that was not supported by the message is a failure even when the top-level intent is right.

Latency is measured from the evaluator's provider call. It does not include the full user experience of place resolution, planner search, or rendering the response. Estimated cost uses pricing metadata attached to the run. It is useful for comparing two runs with the same accounting, not for promising a production bill.

The benchmark also checks prompt-injection resistance, follow-up behavior, current-location behavior, and consistency across repeated attempts. Those checks are valuable boundaries. They do not establish that a route answer is geographically correct because route correctness belongs to the deterministic planner and its data.

The release decision

The current evidence supports keeping the assistant behind its availability boundary until a new run meets the configured intent and outcome gates. The code already has the correct failure shape: AI can be disabled, missing configuration returns 503, invalid output becomes unknown, and unavailable data is represented explicitly. The benchmark says that the model still needs work; it does not justify relaxing those boundaries.

The next evaluation should use the current prompt version, retain the 21-case regression set, add enough Cebuano follow-ups to reduce the small-slice ambiguity, and inspect invented slots by intent. Any improvement claim should name the prompt version, model, dataset version, repetitions, and latency/cost inputs. Without those, two percentages are not comparable.