Break the journey before production does.

Execute every published Mappls application lifecycle from creation to a reviewed operating outcome. Prove idempotency, optimistic concurrency, invalid-state rejection, immutable events, and unknown-outcome recovery without credentials, provider calls, or durable writes.

18complete lifecycles

Every published stateful or hybrid journey.

90deterministic paths

Five hostile and success scenarios per journey.

140guarded transitions

Commands, versions, identities, actors, and facts.

6client languages

One synchronized fixture contract.

Run one complete fixture

Only two catalog identities are accepted. No credential, resource ID, location, payload, URL, or provider input exists.

Complete journey

Entitled RealView remote inspection

Commit the shortest reviewed success path to the journey-specific operating target.

fixture only

The report proves deterministic application-side state-machine behavior only. It is not Mappls entitlement, provider resource, webhook, performance, regional, or production evidence.

Aggregate
remote visual inspection
Start
draft
Result
accepted
Version
7

Every attempted command remains visible.

Accepted commands advance exactly once. Replays, conflicts, invalid transitions, and reconciliation are evidence—not hidden control flow.

01
acceptedcreate_inspection
transition_committed
new aggregatedraftv0 → v1

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.createdevt_fixture_realview-remote-inspection_01
02
acceptedrequest_entitlement
transition_committed
draftentitlement_pendingv1 → v2

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.entitlement_requestedevt_fixture_realview-remote-inspection_02
03
acceptedconfirm_entitlement
transition_committed
entitlement_pendingreadyv2 → v3

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.entitlement_confirmedevt_fixture_realview-remote-inspection_03
04
acceptedopen_viewer
transition_committed
readyviewingv3 → v4

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.viewer_openedevt_fixture_realview-remote-inspection_04
05
acceptedrecord_observation
transition_committed
viewingobservation_recordedv4 → v5

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.observation_recordedevt_fixture_realview-remote-inspection_05
06
acceptedsubmit_review
transition_committed
observation_recordedreview_pendingv5 → v6

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.review_requestedevt_fixture_realview-remote-inspection_06
07
acceptedaccept
transition_committed
review_pendingacceptedv6 → v7

Aggregate, event, audit, and outbox intent commit as one application-owned unit.

Immutable application eventrealview_inspection.acceptedevt_fixture_realview-remote-inspection_07

The report explains why it passed.

Only catalog identities acceptedbounded-input
pass
No Mappls provider request madeno-provider-call
pass
Accepted transitions increment exactly oncemonotonic-version
pass
Accepted transitions emit unique immutable eventsunique-events
pass
Rejected commands emit no eventrejection-safe
pass
Replays do not increment versionreplay-safe
pass
Journey reaches acceptedtarget
pass

What the simulator will never blur.

  1. 01

    This is an application-owned deterministic fixture. It makes no Mappls provider request and claims no provider webhook payload.

  2. 02

    Idempotency is checked before optimistic concurrency so an exact retry can return the first committed result.

  3. 03

    A reused idempotency key with different intent would be a conflict; applications must persist a request fingerprint with the result.

  4. 04

    Rejected commands do not change the aggregate version and do not emit an event.

  5. 05

    Accepted commands commit the aggregate snapshot, immutable event, audit evidence, and transactional outbox intent atomically.

  6. 06

    A timeout is an unknown outcome. Reconcile by aggregate and command identity before replaying the same key.

Automate this exact evidence path.

These examples call the credential-free simulator—not a Mappls provider endpoint. Production commands must use your trusted application boundary and actual reviewed provider contract.

cURLcurl
curl --request POST 'https://developer.mappls.com/api/journey-simulator' \
+  --header 'content-type: application/json' \
+  --data '{"journey":"realview-remote-inspection","scenario":"complete-journey"}'
JavaScriptjavascript
const response = await fetch("https://developer.mappls.com/api/journey-simulator", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"journey":"realview-remote-inspection","scenario":"complete-journey"}),
});
if (!response.ok) throw new Error(`Simulation failed: ${response.status}`);
const report = await response.json();
console.log(report.finalSnapshot, report.checks);
Pythonpython
import requests

response = requests.post(
    "https://developer.mappls.com/api/journey-simulator",
    json={"journey":"realview-remote-inspection","scenario":"complete-journey"},
    timeout=10,
)
response.raise_for_status()
report = response.json()
print(report["finalSnapshot"], report["checks"])
Javajava
var request = HttpRequest.newBuilder(URI.create("https://developer.mappls.com/api/journey-simulator"))
    .header("content-type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"journey\":\"realview-remote-inspection\",\"scenario\":\"complete-journey\"}"))
    .build();
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) throw new IllegalStateException("Simulation failed");
Gogo
payload := strings.NewReader(`{"journey":"realview-remote-inspection","scenario":"complete-journey"}`)
request, err := http.NewRequest(http.MethodPost, "https://developer.mappls.com/api/journey-simulator", payload)
if err != nil { return err }
request.Header.Set("content-type", "application/json")
response, err := (&http.Client{Timeout: 10 * time.Second}).Do(request)
if err != nil { return err }
defer response.Body.Close()
C#csharp
using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
using var content = new StringContent(@"{""journey"":""realview-remote-inspection"",""scenario"":""complete-journey""}", Encoding.UTF8, "application/json");
using var response = await client.PostAsync("https://developer.mappls.com/api/journey-simulator", content);
response.EnsureSuccessStatusCode();
var report = await response.Content.ReadAsStringAsync();