Skip to content

railway

refund-agent-v2 vs refund-agent-v1

What changed

The same facts as the comparison below, in sentences. Nothing here depends on reading the table.

  • 5 step(s) the approved route always performs are absent from this release: refund.calculate, fraud.check, fraud.check.handler, policy.retrieve, policy.retrieve.handler. Each one is a check that did not run.
  • 1 step(s) ran more times than the approved route ever did: payment.refund 2 times against 1. A repeated write is a repeated side effect.
  • The comparison above is against the approved route family this release's run was judged nearest to.
  • FlightRules classified 12 of 15 change(s) as structural: Missing edge, Removed step, Route not approved, Duplicate side effect.

Behaviour change

The approved route beside the route this release actually took, step by step, in canonical order.

Approved route compared with the observed route, by canonical step
StepServiceApprovedThis releaseChangeSide effectTool
refund.requestflightrules-demo-agent11IN BOTHnone
refund.calculateflightrules-demo-agent1absentREMOVEDnonecalculate_refund
customer.notifyflightrules-demo-agent11IN BOTHexternalnotify_customer
customer.notify.handlerflightrules-notification-service11IN BOTHexternal
fraud.checkflightrules-demo-agent1absentREMOVEDreadcheck_fraud
fraud.check.handlerflightrules-fraud-service1absentREMOVEDread
order.lookupflightrules-demo-agent11IN BOTHreadlookup_order
order.lookup.handlerflightrules-order-service11IN BOTHread
policy.retrieveflightrules-demo-agent1absentREMOVEDreadretrieve_policy
policy.retrieve.handlerflightrules-policy-service1absentREMOVEDread
payment.refundflightrules-demo-agent12REPEATEDwriteissue_refund
payment.refund.handlerflightrules-payment-service11IN BOTHwrite

approved 43070aa4af4f6c2c912a8d7bcc724f1d199e0425dc8ad7256b528eec195cb037 · observed 22ffa0c0e578ef70a32a34aae7830f40aeef027aae28e66006601e80f99c7466

Typed changes

Produced by the deterministic graph comparison in the FlightRules engine, not by comparing text in the browser.

Every change the engine classified, with its PRD label
ChangeSubjectDetailApproved → observed
CARDINALITY CHANGEDpayment.refundpayment.refund occurs 2 times in the candidate against 1 in the baseline.1 → 2
MISSING EDGEfraud.check->fraud.check.handler|parentThe baseline relationship fraud.check->fraud.check.handler|parent is absent from the candidate.
MISSING EDGEpolicy.retrieve->policy.retrieve.handler|parentThe baseline relationship policy.retrieve->policy.retrieve.handler|parent is absent from the candidate.
MISSING EDGErefund.request->fraud.check|parentThe baseline relationship refund.request->fraud.check|parent is absent from the candidate.
MISSING EDGErefund.request->policy.retrieve|parentThe baseline relationship refund.request->policy.retrieve|parent is absent from the candidate.
MISSING EDGErefund.request->refund.calculate|parentThe baseline relationship refund.request->refund.calculate|parent is absent from the candidate.
REMOVED STEPfraud.checkfraud.check is present in the baseline but absent from the candidate.1 → 0
REMOVED STEPfraud.check.handlerfraud.check.handler is present in the baseline but absent from the candidate.1 → 0
REMOVED STEPpolicy.retrievepolicy.retrieve is present in the baseline but absent from the candidate.1 → 0
REMOVED STEPpolicy.retrieve.handlerpolicy.retrieve.handler is present in the baseline but absent from the candidate.1 → 0
REMOVED STEPrefund.calculaterefund.calculate is present in the baseline but absent from the candidate.1 → 0
RETRY INCREASEpayment.refundpayment.refund retried up to attempt 1 against 0 in the baseline.0 → 1
RETRY INCREASEpayment.refund.handlerpayment.refund.handler retried up to attempt 1 against 0 in the baseline.0 → 1
ROUTE NOT APPROVED22ffa0c0e578ef70a32a34aae7830f40aeef027aae28e66006601e80f99c7466The candidate route fingerprint matches none of the 1 approved baseline families.
DUPLICATE SIDE EFFECTpayment.refund|writepayment.refund performed a write side effect 2 times in the candidate against 1 in the baseline.1 → 2

Open the nearest approved route

Thresholds

What the contract permits, and what this release did
ThresholdPermittedObserved
Violation rate0.5%100.00%
Unknown route rate1%100.00%
Latency change20%+740.74%
Token change25%not measured
Duplicate side effectsreported100.00%
Missing prerequisitesreported100.00%

Findings

Why the gate decided what it decided
FindingImpliesSummaryExpectedObserved
ZERO TOLERANCE VIOLATIONfail24 zero-tolerance violation(s) were observed. A zero-tolerance rule has no permitted rate.0 zero-tolerance violation(s)24 violation(s)
VIOLATION RATE EXCEEDEDfail100.000000% of runs violated the contract; the gate permits at most 0.5%.at most 0.5%100.000000% (8 of 8)
UNKNOWN ROUTE RATE EXCEEDEDfail100.000000% of runs followed a route the contract does not approve; the gate permits at most 1%.at most 1%100.000000% (8 of 8)
LATENCY REGRESSION EXCEEDEDfailp95 latency moved 740.740740% against the baseline; the gate permits at most 20%.at most 20%740.740740% (189 ms to 1589 ms)
RELEASE BUDGET EXCEEDEDfailRelease-wide p95 of run.duration_ms was 1589, over the budget of 227.at most 2271589
MIN RUNS NOT METinsufficient_data8 completed run(s) were evaluated; the contract requires at least 20 before a release decision.at least 20 run(s)8 run(s)

Disclosures

Checks whose evidence is structurally absent. These are neither passes nor failures.
DisclosureDetail
RETRY CHANGE NOT MEASUREDNo usable baseline value for agent.retry.count, so its change could not be measured.
TOKEN REGRESSION NOT MEASUREDNo usable baseline value for gen_ai.usage.total_tokens, so its change could not be measured.

Change from baseline

run.duration_ms
+740.74% (189 → 1589)
gen_ai.usage.total_tokens
not measured
agent.retry.count
not measured
Evaluated at
2026-07-27 03:07:13
Evaluator version
1.0.0

Evidence

Representative runs this decision was taken over. Each SigNoz link is the URL SigNoz itself returned for that trace when FlightRules retrieved it, not a pattern this page assembled.

Representative traces this decision was taken over
TraceOutcomeRouteSimilarityIn SigNoz
1860df10f915cf6880631ec2206e18b2FAILINGnot approved0.619047Open trace
190770545baf3e9ddf3d7f3b80cbf608FAILINGnot approved0.619047Open trace
262049ed4b847a968d8209c0b396b2ebFAILINGnot approved0.619047Open trace
402d65a6c9e07b4a2bd0dd44624d7100FAILINGnot approved0.619047Open trace
7eab676eb948ebe9bcb706f697413725FAILINGnot approved0.619047Open trace

Actions

Re-running the evaluation creates a new evaluation and a job. The decision above is read from the most recent completed evaluation, so it does not change until the new one finishes — and the evidence behind it is preserved either way.