diff --git a/CAPABILITIES.md b/CAPABILITIES.md
index 19e581dea..4b4595c42 100644
--- a/CAPABILITIES.md
+++ b/CAPABILITIES.md
@@ -127,6 +127,7 @@ improvising or retrying when something is off.
| Capability | Status | Evidence | Where |
| --- | --- | --- | --- |
| Compile one or more demonstrations into a deterministic program | Released | Real app (OpenEMR referral, 62 timed runs) | `openadapt-flow record`, `compile`; [packages/flow](packages/flow/README.md) |
+| Try the three acts on a real app: `openadapt quickstart --app openemr` runs the certified OpenEMR referral program in Docker, five referrals at once checked in OpenEMR's record, then a possible duplicate stopped before saving; without Docker or a clone it says so and exits 2 | On main ([#1431](https://github.com/OpenAdaptAI/OpenAdapt/pull/1431)) | Real app (local OpenEMR 8.0.0.3, synthetic patients) | `openadapt quickstart --app openemr`; [docs/quickstart](docs/quickstart/README.md#on-a-real-app---app-openemr) |
| Classify common local edits without a person (select-all, Enter in a field or dropdown, an in-form tab, an informational dialog's dismiss), only when the recording's network capture shows no write and a runtime check confirms only the expected change | On main ([#1366](https://github.com/OpenAdaptAI/OpenAdapt/pull/1366)) | Synthetic; OpenEMR referral recording re-admitted offline (violations 12 to 1 under `permissive`) | [LOCAL_EDIT_CLASSIFICATION.md](packages/flow/docs/design/LOCAL_EDIT_CLASSIFICATION.md), `compiler/local_edit.py` |
| Right-record check before any write (structure, then OCR, then pixels) | Released | Real app and synthetic | [RESOLUTION_LADDER.md](packages/flow/docs/RESOLUTION_LADDER.md), `runtime/identity.py` |
| Read the saved record back from the system of record (API, database, FHIR, separate session) | Released | Real app (OpenEMR 12 of 12 fields) | [VERIFICATION.md](packages/flow/docs/VERIFICATION.md), `runtime/effects/` |
diff --git a/docs/quickstart/README.md b/docs/quickstart/README.md
index e7ef7bd20..1df581762 100644
--- a/docs/quickstart/README.md
+++ b/docs/quickstart/README.md
@@ -10,3 +10,58 @@
- `timing-2026-10-20.json`: the engine tutorial with `--break-it` (what
`openadapt quickstart --break-it` ran before) against the new quickstart,
three rounds each, interleaved, from `scripts/quickstart_timing.py`.
+
+## On a real app: `--app openemr`
+
+```bash
+openadapt quickstart --app openemr
+```
+
+The same three acts on OpenEMR 8.0.0.3, a real open-source EHR, instead of the
+bundled MockMed. The default stays MockMed: it needs no Docker and finishes in
+about 22 seconds.
+
+- **Needs** Docker (Docker Desktop, or Podman with `DOCKER_HOST` pointed at
+ its socket) and a clone of this repository, because the OpenEMR fixture is
+ repository-only:
+
+ ```bash
+ git clone https://github.com/OpenAdaptAI/OpenAdapt && cd OpenAdapt
+ pip install -e . -e packages/flow
+ ```
+
+ Without either, the command says which one is missing in one line and exits
+ with status 2. It never falls back to MockMed.
+- **Setup.** The pinned fixture from `packages/flow/benchmark/openemr_local/`:
+ pinned image digests, verified source files, a hashed SQL baseline, loopback
+ ports 9741 (HTTP) and 9740 (HTTPS) (set `OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT`
+ and `OPENADAPT_QUICKSTART_OPENEMR_HTTPS_PORT` to move them), and its own Compose project
+ (`openadapt-quickstart-openemr`). Its state stays in
+ `~/.cache/openadapt/quickstart-openemr`. The first run downloads the images
+ if they're missing (about 2.6 GB unpacked), installs OpenEMR, and adds
+ synthetic API clients. Later runs reuse the running copy and restore its
+ baseline.
+- **Act 1, show it once.** The referral as it was demonstrated once in
+ OpenEMR: the recorded actions of the certified referral program, the same
+ program behind the site's OpenEMR Seals
+ (`benchmark/openemr_local/referral_program/`). It was compiled with the
+ shared duplicate rule (`apply_referral_rules`) and qualified under
+ `clinical-write`.
+- **Act 2, run it.** Five synthetic referrals at once, each on its own clerk
+ account and browser. Each runs through the certified run path (the Standard
+ run gate, then the REST record check) and is read back from OpenEMR's
+ database with SQL: "✓ checked in OpenEMR's record".
+- **Act 3, break it.** The quickstart adds an existing chart (Rosa Delgado,
+ born 1958-03-27), then runs a referral for a Rosa Delgado born 1958-03-22.
+ OpenEMR's duplicate check lists the match, and the program stops before
+ saving ("Stopped before saving: possible duplicate"). SQL finds 0 new charts.
+- **Finale.** The same receipt card and Seal. Every quickstart, in either app,
+ ends the receipt with "See real Seals from OpenEMR runs:
+ https://openadapt.ai/seals".
+
+To stop the fixture, run
+`docker compose -p openadapt-quickstart-openemr stop`. The next quickstart
+starts it again.
+
+The real run is covered by `test_real_openemr_quickstart` (opt in with
+`OPENADAPT_REAL_QUICKSTART_OPENEMR=1` on a machine with Docker); CI skips it.
diff --git a/docs/quickstart/quickstart-openemr.tape b/docs/quickstart/quickstart-openemr.tape
new file mode 100644
index 000000000..29678d859
--- /dev/null
+++ b/docs/quickstart/quickstart-openemr.tape
@@ -0,0 +1,35 @@
+# Records docs/quickstart/quickstart-openemr.gif with VHS (https://github.com/charmbracelet/vhs, MIT).
+#
+# PATH="$PWD/.venv/bin:$PATH" vhs docs/quickstart/quickstart-openemr.tape
+#
+# Run it from a clone with Docker running (with Podman, export DOCKER_HOST
+# first; the recording's shell inherits it). The fixture from an earlier run
+# is reused, so this records a warm run. The browsers stay hidden (no display
+# in the recording). Everything else is the real command, start to finish, at
+# real speed.
+
+Output docs/quickstart/quickstart-openemr.gif
+
+Set Shell bash
+Set FontSize 15
+Set Width 1240
+Set Height 1100
+Set Padding 24
+Set Framerate 12
+Set TypingSpeed 45ms
+Set Theme "Builtin Dark"
+
+Hide
+Type "unset DISPLAY WAYLAND_DISPLAY; export SSH_CONNECTION=recording BROWSER=true OPENADAPT_FLOW_SCRUB=off OPENADAPT_SEAL_HOME=$(mktemp -d) PS1='$ '; cd $(mktemp -d) && clear"
+Enter
+Show
+
+Sleep 500ms
+Type "openadapt quickstart --app openemr"
+Sleep 400ms
+Enter
+Wait+Screen@600s /Press Enter/
+Sleep 2s
+Enter
+Wait+Screen@300s /Give your agent/
+Sleep 8s
diff --git a/llms-full.txt b/llms-full.txt
index f6e08aa18..bb2a176b6 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -524,6 +524,7 @@ improvising or retrying when something is off.
| Capability | Status | Evidence | Where |
| --- | --- | --- | --- |
| Compile one or more demonstrations into a deterministic program | Released | Real app (OpenEMR referral, 62 timed runs) | `openadapt-flow record`, `compile`; [packages/flow](https://github.com/OpenAdaptAI/OpenAdapt/blob/main/packages/flow/README.md) |
+| Try the three acts on a real app: `openadapt quickstart --app openemr` runs the certified OpenEMR referral program in Docker, five referrals at once checked in OpenEMR's record, then a possible duplicate stopped before saving; without Docker or a clone it says so and exits 2 | On main ([#1431](https://github.com/OpenAdaptAI/OpenAdapt/pull/1431)) | Real app (local OpenEMR 8.0.0.3, synthetic patients) | `openadapt quickstart --app openemr`; [docs/quickstart](https://github.com/OpenAdaptAI/OpenAdapt/blob/main/docs/quickstart/README.md#on-a-real-app---app-openemr) |
| Classify common local edits without a person (select-all, Enter in a field or dropdown, an in-form tab, an informational dialog's dismiss), only when the recording's network capture shows no write and a runtime check confirms only the expected change | On main ([#1366](https://github.com/OpenAdaptAI/OpenAdapt/pull/1366)) | Synthetic; OpenEMR referral recording re-admitted offline (violations 12 to 1 under `permissive`) | [LOCAL_EDIT_CLASSIFICATION.md](https://github.com/OpenAdaptAI/OpenAdapt/blob/main/packages/flow/docs/design/LOCAL_EDIT_CLASSIFICATION.md), `compiler/local_edit.py` |
| Right-record check before any write (structure, then OCR, then pixels) | Released | Real app and synthetic | [RESOLUTION_LADDER.md](https://github.com/OpenAdaptAI/OpenAdapt/blob/main/packages/flow/docs/RESOLUTION_LADDER.md), `runtime/identity.py` |
| Read the saved record back from the system of record (API, database, FHIR, separate session) | Released | Real app (OpenEMR 12 of 12 fields) | [VERIFICATION.md](https://github.com/OpenAdaptAI/OpenAdapt/blob/main/packages/flow/docs/VERIFICATION.md), `runtime/effects/` |
diff --git a/openadapt/cli.py b/openadapt/cli.py
index dff42a552..272c753ed 100644
--- a/openadapt/cli.py
+++ b/openadapt/cli.py
@@ -460,6 +460,7 @@ def _is_externally_managed_error(error: BaseException) -> bool:
_QUICKSTART_OPTIONS = frozenset(
{
"--out",
+ "--app",
"--headless",
"--no-break",
"--verbose",
@@ -548,6 +549,17 @@ def _quickstart_root(out: Optional[Path]) -> Path:
f"{_DEFAULT_QUICKSTART_DIR}, suffixed -2, -3, ... when taken."
),
)
+@click.option(
+ "--app",
+ type=click.Choice(["mockmed", "openemr"]),
+ default="mockmed",
+ show_default=True,
+ help=(
+ "The app to run it in. mockmed is bundled (about 22 seconds, no Docker). "
+ "openemr runs OpenEMR 8.0.0.3 in Docker from a clone of the repository; "
+ "the first run downloads and installs it, later runs reuse it."
+ ),
+)
@click.option(
"--headless",
is_flag=True,
@@ -570,6 +582,7 @@ def _quickstart_root(out: Optional[Path]) -> Path:
def quickstart(
command_ctx: click.Context,
out: Optional[Path],
+ app: str,
headless: bool,
no_break: bool,
verbose: bool,
@@ -584,14 +597,21 @@ def quickstart(
screen says saved, the database has nothing, and OpenAdapt stops. The
program makes no AI calls. Nothing in the output directory is overwritten.
+ With --app openemr, the same three acts run on OpenEMR 8.0.0.3 in Docker,
+ with the certified referral program: referrals registered at once and
+ checked in OpenEMR's record, then a referral that matches an existing
+ chart, where the program stops before saving. It runs from a clone of the
+ repository and needs Docker; without either it says so and exits 2.
+
Other flags of the engine tutorial (for example --guided or
--interactive-record) run that tutorial instead, unchanged.
"""
_require_supported_python()
_refuse_unknown_tutorial_options(command_ctx.args)
+ openemr = _openemr_checkout(command_ctx.args) if app == "openemr" else None
root = _quickstart_root(out)
- if command_ctx.args or not _flow_runs_quickstart():
+ if openemr is None and (command_ctx.args or not _flow_runs_quickstart()):
# Engine-owned flags (--guided, --interactive-record, and future
# engine additions) run the engine's own tutorial, as before. So does
# a Flow older than the pieces the three-act quickstart uses.
@@ -605,7 +625,7 @@ def quickstart(
steps = next_steps(
_hint,
_shell_quote,
- _agent_serves_tutorial(),
+ openemr is None and _agent_serves_tutorial(),
keep=_keep_command(),
shadow=_shadowing_openadapt if _under_uvx() else None,
)
@@ -617,6 +637,7 @@ def quickstart(
break_it=not no_break,
verbose=verbose,
steps=steps,
+ openemr=openemr,
)
except KeyboardInterrupt:
click.echo(f"\nStopped. Anything written so far is in {root}", err=True)
@@ -625,7 +646,11 @@ def quickstart(
if _is_externally_managed_error(error):
_echo_python_remedy()
raise click.exceptions.Exit(1) from error
- if type(error).__name__ in ("TutorialError", "DurableAuthorityBusy"):
+ if type(error).__name__ in (
+ "TutorialError",
+ "DurableAuthorityBusy",
+ "FixtureError",
+ ):
raise click.ClickException(
f"The quickstart stopped: {error}\nAnything it wrote is in {root}"
) from error
@@ -636,6 +661,31 @@ def quickstart(
raise click.exceptions.Exit(1)
+def _openemr_checkout(extra: list[str]) -> Path:
+ """The clone's packages/flow for ``--app openemr``, or exit 2 saying why.
+
+ Each missing piece is one line on stderr. Nothing falls back to MockMed.
+ """
+ from openadapt.quickstart.openemr import (
+ checkout_problem,
+ docker_problem,
+ find_flow_checkout,
+ )
+
+ if extra:
+ raise click.UsageError(
+ f"--app openemr runs the three-act quickstart only; {extra[0]} "
+ "belongs to the engine's MockMed tutorial."
+ )
+ problem = docker_problem()
+ flow = find_flow_checkout() if problem is None else None
+ problem = problem or checkout_problem(flow)
+ if problem is not None or flow is None:
+ click.echo(problem, err=True)
+ raise click.exceptions.Exit(2)
+ return flow
+
+
# The oldest Flow with every piece the three-act quickstart uses (shared
# browser, record checks bound to run inputs, the side-by-side page).
_QUICKSTART_FLOW_MINIMUM = (2, 2, 0)
diff --git a/openadapt/quickstart/__init__.py b/openadapt/quickstart/__init__.py
index 712ad4536..4b2c38b89 100644
--- a/openadapt/quickstart/__init__.py
+++ b/openadapt/quickstart/__init__.py
@@ -11,8 +11,9 @@
import sys
from pathlib import Path
-from typing import IO, Callable, Optional
+from typing import IO, Any, Callable, Optional
+from openadapt.quickstart.scene import MOCKMED
from openadapt.quickstart.story import (
YOUR_APP_URL,
NextSteps,
@@ -68,8 +69,13 @@ def run_quickstart(
steps: Callable[[Outcome], NextSteps],
stream: Optional[IO[str]] = None,
interactive: Optional[bool] = None,
+ openemr: Optional[Path] = None,
) -> Outcome:
- """Run the quickstart into ``root`` and print it to ``stream``."""
+ """Run the quickstart into ``root`` and print it to ``stream``.
+
+ ``openemr`` is a clone's ``packages/flow`` folder: the three acts then run
+ on OpenEMR in Docker instead of the bundled MockMed.
+ """
from openadapt.quickstart.engine import FlowEngine, display_available, open_page
from openadapt.quickstart.view import make_view
@@ -77,12 +83,18 @@ def run_quickstart(
stream = stream or sys.stdout
if interactive is None:
interactive = bool(sys.stdin.isatty() and getattr(stream, "isatty", bool)())
- # A person watching gets a short pause between demonstrated actions; a
- # hidden browser runs at full speed.
- engine = FlowEngine(root, visible=visible, pace_s=0.3 if visible else 0.0)
+ engine: Any
+ if openemr is not None:
+ from openadapt.quickstart.openemr import OpenEMREngine
+
+ engine = OpenEMREngine(root, visible=visible, flow=openemr)
+ else:
+ # A person watching gets a short pause between demonstrated actions;
+ # a hidden browser runs at full speed.
+ engine = FlowEngine(root, visible=visible, pace_s=0.3 if visible else 0.0)
return run_story(
engine,
- make_view(stream),
+ make_view(stream, scene=getattr(engine, "scene", MOCKMED)),
next_steps=steps,
break_it=break_it,
interactive=interactive,
diff --git a/openadapt/quickstart/engine.py b/openadapt/quickstart/engine.py
index c2d4e8cd2..95bbd252a 100644
--- a/openadapt/quickstart/engine.py
+++ b/openadapt/quickstart/engine.py
@@ -25,6 +25,8 @@
from pathlib import Path
from typing import Any, Callable, Optional, Sequence
+from openadapt.quickstart.scene import MOCKMED
+
#: Synthetic notes for the five runs. None of them is clinical advice.
RUN_NOTES = (
"Follow-up in two weeks",
@@ -336,6 +338,10 @@ def _sha256(path: Path) -> Optional[str]:
class FlowEngine:
"""The bundled tutorial, one stage per call, inside one browser process."""
+ #: Act 2's inputs: one new note per run.
+ inputs = RUN_NOTES
+ scene = MOCKMED
+
def __init__(self, root: Path, *, visible: bool, pace_s: float = 0.0) -> None:
self.root = root
self.visible = visible
@@ -595,20 +601,7 @@ def seal(self, runs: list[RunFacts]) -> Optional[SealFacts]:
no Seal and no command to check one.
"""
- try:
- from openadapt_flow.offline_seal import seal_home, seal_run
- except ImportError:
- return None
- checked = [run for run in runs if run.checked]
- if not checked:
- return None
- key_id = ""
- for run in checked:
- # The configured Seal key, or one generated under the Seal home
- # on first use (the offline-Seal default).
- seal = seal_run(run.run_dir, home=seal_home(), enqueue=False)
- key_id = str(seal.key_id)
- return SealFacts(key_id=key_id, sealed=len(checked))
+ return seal_runs(runs)
def write_page(self, first: RunFacts, broken: BreakFacts) -> Optional[Path]:
"""Write the side-by-side page (``openadapt flow demo``'s page)."""
@@ -652,6 +645,25 @@ def write_page(self, first: RunFacts, broken: BreakFacts) -> Optional[Path]:
return demo_proof.write_demo_page(evidence)
+def seal_runs(runs: list[RunFacts]) -> Optional[SealFacts]:
+ """Sign each checked run's report with this computer's Seal key."""
+
+ try:
+ from openadapt_flow.offline_seal import seal_home, seal_run
+ except ImportError:
+ return None
+ checked = [run for run in runs if run.checked]
+ if not checked:
+ return None
+ key_id = ""
+ for run in checked:
+ # The configured Seal key, or one generated under the Seal home on
+ # first use (the offline-Seal default).
+ seal = seal_run(run.run_dir, home=seal_home(), enqueue=False)
+ key_id = str(seal.key_id)
+ return SealFacts(key_id=key_id, sealed=len(checked))
+
+
def return_focus_to_terminal(
*, visible: bool, platform: Optional[str] = None, environ=None, run=None
) -> bool:
diff --git a/openadapt/quickstart/openemr.py b/openadapt/quickstart/openemr.py
new file mode 100644
index 000000000..f28b48486
--- /dev/null
+++ b/openadapt/quickstart/openemr.py
@@ -0,0 +1,620 @@
+"""``openadapt quickstart --app openemr``: the three acts on a real OpenEMR.
+
+The default quickstart uses the bundled MockMed: no Docker, about 22 seconds.
+This mode runs the same story on OpenEMR 8.0.0.3 in Docker, with the certified
+referral program behind the site's OpenEMR Seals:
+
+1. Show it once: the referral as it was demonstrated once in OpenEMR, from
+ the recording the program was compiled from.
+2. Run it: synthetic referrals at once, one clerk account and browser each,
+ every run through the certified run path (the Standard run gate, the REST
+ record check) and read back from OpenEMR's database.
+3. Break it: OpenEMR gets an existing chart, then a referral with the same
+ name and another birth date. OpenEMR's duplicate check lists the match, and
+ the program stops before saving. The database has no new chart.
+
+The OpenEMR fixture lives in the repository (``packages/flow/benchmark``),
+not in the published packages, so this mode runs from a clone. The fixture's
+state stays in the user's cache folder, and a running copy is reused.
+"""
+
+from __future__ import annotations
+
+import contextlib
+import json
+import os
+import shutil
+import subprocess
+import sys
+import threading
+import time
+from concurrent.futures import ThreadPoolExecutor
+from dataclasses import asdict
+from pathlib import Path
+from typing import Any, Callable, Optional, Sequence
+
+from openadapt.quickstart.engine import (
+ BreakFacts,
+ DemoStep,
+ RunFacts,
+ SealFacts,
+ return_focus_to_terminal,
+ seal_runs,
+)
+from openadapt.quickstart.scene import OPENEMR
+
+DOCKER_INSTALL_URL = "https://docs.docker.com/get-docker/"
+CLONE_URL = "https://github.com/OpenAdaptAI/OpenAdapt"
+
+#: A referral takes 20 to 30 seconds alone and longer five at a time. One
+#: that hasn't reported after this long has stalled.
+STALL_S = 240.0
+#: Workers sign in before they report ready.
+READY_TIMEOUT_S = 240.0
+
+#: The duplicate-check dialog in the 1280x800 screenshot.
+DIALOG_CROP = (204, 30, 1078, 262)
+
+#: Field labels for the demonstration's typed values.
+FIELD_LABELS = {
+ "title": "Title",
+ "fname": "First name",
+ "lname": "Last name",
+ "DOB": "Date of birth",
+ "sex": "Sex",
+ "street": "Street",
+ "city": "City",
+ "state_label": "State",
+ "postal_code": "Postal code",
+ "phone_home": "Home phone",
+ "email": "Email",
+ "country_code": "Country",
+}
+
+
+# ---------------------------------------------------------------------------
+# Preconditions
+# ---------------------------------------------------------------------------
+
+
+def docker_problem(
+ *,
+ which: Callable[[str], Optional[str]] = shutil.which,
+ run: Callable[..., Any] = subprocess.run,
+) -> Optional[str]:
+ """One line saying why Docker can't run OpenEMR here, or None."""
+
+ if which("docker") is None:
+ return (
+ "OpenEMR mode needs Docker, which isn't installed. Install Docker "
+ f"Desktop ({DOCKER_INSTALL_URL}), then run this again."
+ )
+ try:
+ info = run(
+ ["docker", "info", "--format", "{{.ServerVersion}}"],
+ capture_output=True,
+ timeout=30,
+ check=False,
+ )
+ except (OSError, subprocess.TimeoutExpired):
+ info = None
+ if info is None or info.returncode != 0:
+ return (
+ "OpenEMR mode needs Docker, which is installed but not running. "
+ "Start Docker Desktop, then run this again."
+ )
+ try:
+ compose = run(
+ ["docker", "compose", "version"],
+ capture_output=True,
+ timeout=30,
+ check=False,
+ )
+ except (OSError, subprocess.TimeoutExpired):
+ compose = None
+ if compose is None or compose.returncode != 0:
+ return (
+ "OpenEMR mode needs Docker Compose v2 (docker compose), which "
+ f"isn't available. Install Docker Desktop ({DOCKER_INSTALL_URL}), "
+ "then run this again."
+ )
+ return None
+
+
+def _has_fixture(flow: Path) -> bool:
+ return (flow / "benchmark" / "openemr_local" / "quickstart.py").is_file() and (
+ flow / "scripts" / "openemr_local_demo.py"
+ ).is_file()
+
+
+def find_flow_checkout(candidates: Optional[Sequence[Path]] = None) -> Optional[Path]:
+ """The ``packages/flow`` folder of a clone that has the OpenEMR fixture.
+
+ The installed engine's own folder comes first (an editable install from a
+ clone), then the launcher's.
+ """
+
+ if candidates is None:
+ found: list[Path] = []
+ with contextlib.suppress(ImportError):
+ import openadapt_flow
+
+ found.append(Path(openadapt_flow.__file__).resolve().parents[1])
+ import openadapt
+
+ found.append(
+ Path(openadapt.__file__).resolve().parents[1] / "packages" / "flow"
+ )
+ candidates = found
+ return next((path for path in candidates if _has_fixture(path)), None)
+
+
+def checkout_problem(flow: Optional[Path]) -> Optional[str]:
+ if flow is not None:
+ return None
+ return (
+ "OpenEMR mode runs from a clone of the repository: git clone "
+ f"{CLONE_URL} && cd OpenAdapt && pip install -e . -e packages/flow, "
+ "then run this again."
+ )
+
+
+def _driver(flow: Path) -> Any:
+ """The fixture driver, imported from the clone."""
+
+ path = str(flow)
+ if path not in sys.path:
+ sys.path.insert(0, path)
+ from benchmark.openemr_local import quickstart
+
+ return quickstart
+
+
+# ---------------------------------------------------------------------------
+# Facts
+# ---------------------------------------------------------------------------
+
+
+def demo_step_label(event: dict[str, Any]) -> Optional[str]:
+ """A label for one demonstrated action worth showing, else None.
+
+ Shown: each typed value, with its field, and the clicks that move the
+ task on. Not shown: the clicks into fields, select-all and Enter keys,
+ and scrolls (all of them are still steps of the program).
+ """
+
+ kind = event.get("kind")
+ if kind == "type":
+ field = FIELD_LABELS.get(str(event.get("param") or ""), "")
+ text = str(event.get("text") or "")
+ return f'{field}: "{text}"' if field else f'Type "{text}"'
+ if kind == "click":
+ selector = event.get("selector")
+ if selector == "#create":
+ return "Click Create New Patient"
+ if selector == "#confirmCreate":
+ return "Click Confirm Create New Patient"
+ if event.get("name") == "Contact":
+ return "Open the Contact section"
+ return None
+
+
+def run_facts(index: int, facts: dict[str, Any], checked: bool) -> RunFacts:
+ return RunFacts(
+ index=index,
+ note=str(facts["name"]),
+ run_dir=Path(facts["run_dir"]),
+ execution_outcome=str(facts["execution_outcome"]),
+ transaction_outcome=facts["transaction_outcome"],
+ checked=checked,
+ records=int(facts["charts"]),
+ model_calls=int(facts["model_calls"]),
+ cost_usd=float(facts["cost_usd"]),
+ effects_required=int(facts["effects_required"]),
+ effects_confirmed=int(facts["effects_confirmed"]),
+ seconds=float(facts["seconds"]),
+ plain_label=str(facts["plain_label"]),
+ )
+
+
+def read_dialog(screenshot: Path) -> Optional[str]:
+ """The matching chart OpenEMR's duplicate check listed, read off the screen."""
+
+ import re
+
+ from openadapt_flow.vision.ocr import ocr, upscale_png
+
+ from openadapt.quickstart.images import crop_png
+
+ try:
+ png = upscale_png(crop_png(screenshot, DIALOG_CROP), 2)
+ lines = [str(line.text).strip() for line in ocr(png)]
+ except Exception: # noqa: BLE001 - the screenshot itself still shows it
+ return None
+ name = next((line for line in lines if "," in line and "Delgado" in line), None)
+ born = next(
+ (line for line in lines if re.fullmatch(r"\d{4}-\d{2}-\d{2}", line)), None
+ )
+ if name is None:
+ return None
+ # OCR can drop the space after the comma ("Delgado,Rosa").
+ name = re.sub(r",(?=\S)", ", ", name)
+ return f"a matching chart: {name}" + (f", born {born}" if born else "")
+
+
+# ---------------------------------------------------------------------------
+# Workers
+# ---------------------------------------------------------------------------
+
+
+def _worker_main(
+ conn: Any,
+ visible: bool,
+ browser: str,
+ flow: str,
+ state_dir: str,
+ user: str,
+) -> None:
+ """One clerk: sign in, then run the program for each referral it is sent."""
+
+ os.environ.setdefault("OPENADAPT_FLOW_OCR_THREADS", "2")
+ if browser:
+ os.environ["OPENADAPT_FLOW_BROWSER"] = browser
+ if hasattr(os, "nice"):
+ with contextlib.suppress(OSError):
+ os.nice(10)
+ session = None
+ try:
+ from openadapt_flow import _prewarm
+ from openadapt_flow.backends._browser_process import shared_browser
+ from openadapt_flow.ir import Workflow
+
+ _prewarm.start()
+ driver = _driver(Path(flow))
+ fixture = driver.make_fixture(Path(state_dir))
+ driver.point_qualify_hooks_here(fixture)
+ with shared_browser(headless=not visible):
+ session = driver.Session(fixture, user, headless=not visible)
+ session.sign_in()
+ session.open_form()
+ conn.send(("ready",))
+ while True:
+ message = conn.recv()
+ if message[0] != "run":
+ return
+ _, index, key, bundle_dir, run_dir = message
+ try:
+ facts = session.run(
+ Workflow.load(Path(bundle_dir)),
+ Path(bundle_dir),
+ key,
+ Path(run_dir),
+ trial=index,
+ )
+ except Exception as exc: # noqa: BLE001 - reported to the parent
+ conn.send(("failed", f"{type(exc).__name__}: {exc}"))
+ continue
+ payload = asdict(run_facts(index, facts, driver.checked(facts)))
+ payload["run_dir"] = str(payload["run_dir"])
+ conn.send(("done", payload))
+ except (EOFError, KeyboardInterrupt, BrokenPipeError):
+ return
+ except Exception as exc: # noqa: BLE001 - the parent runs the job itself
+ with contextlib.suppress(BrokenPipeError, OSError):
+ conn.send(("broken", f"{type(exc).__name__}: {exc}"))
+ finally:
+ if session is not None:
+ with contextlib.suppress(Exception):
+ session.close()
+ conn.close()
+
+
+# ---------------------------------------------------------------------------
+# The engine
+# ---------------------------------------------------------------------------
+
+
+_HOW = {
+ "reused": "reused the running copy",
+ "restarted": "started the existing copy",
+ "created": "set up now; later runs reuse it",
+}
+
+
+class OpenEMREngine:
+ """The story's engine on OpenEMR: the fixture, the clerks, the program."""
+
+ scene = OPENEMR
+
+ def __init__(
+ self,
+ root: Path,
+ *,
+ visible: bool,
+ flow: Path,
+ state_dir: Optional[Path] = None,
+ ) -> None:
+ self.root = root
+ self.visible = visible
+ self.flow = flow
+ #: The demonstration's actions, copied from the clone.
+ self.recording_dir = root / "demonstration.jsonl"
+ self.bundle_dir = root / "bundle"
+ self.workflow: Any = None
+ self.setup_summary: Optional[str] = None
+ self._driver = _driver(flow)
+ self._state_dir = state_dir or self._driver.make_fixture().state_dir
+ self._fixture: Any = None
+ self._progress: Callable[[str, bool], None] = lambda text, milestone: None
+ self._stack = contextlib.ExitStack()
+ self._pool: Any = None
+ self._starter: Optional[threading.Thread] = None
+ self._count = 0
+ # Leftover runs and Act 3 run on one thread with its own browser
+ # (a browser's objects belong to the thread that made it).
+ self._main = ThreadPoolExecutor(1, thread_name_prefix="quickstart-openemr")
+ self._session: Any = None
+
+ @property
+ def inputs(self) -> Sequence[str]:
+ return tuple(self._driver.REFERRALS)
+
+ program_detail = (
+ "(the certified referral program behind the site's OpenEMR Seals: "
+ "qualified 6 of 6 cases under clinical-write; record check: OpenEMR's "
+ "REST API)"
+ )
+
+ # -- lifetime ---------------------------------------------------------
+
+ def set_progress(self, progress: Callable[[str, bool], None]) -> None:
+ self._progress = progress
+
+ def __enter__(self) -> "OpenEMREngine":
+ from openadapt_flow import _prewarm
+
+ _prewarm.start()
+ self.root.mkdir(parents=True, exist_ok=True)
+ self._stack.callback(self._shutdown)
+ driver = self._driver
+ self._fixture = driver.make_fixture(self._state_dir)
+ driver.point_qualify_hooks_here(self._fixture)
+ started = time.monotonic()
+ phase = {"name": "", "text": "", "since": started}
+ lock = threading.Lock()
+ done = threading.Event()
+
+ def show() -> None:
+ with lock:
+ elapsed = time.monotonic() - phase["since"]
+ text = phase["text"]
+ self._progress(f"{text} {int(elapsed)}s", False)
+
+ def say(name: str, text: str) -> None:
+ with lock:
+ milestone = name != phase["name"] or text.endswith("downloaded")
+ if name != phase["name"]:
+ phase["since"] = time.monotonic()
+ phase.update(name=name, text=text)
+ self._progress(text, milestone)
+
+ def tick() -> None:
+ while not done.wait(1.0):
+ show()
+
+ ticker = threading.Thread(target=tick, name="quickstart-setup", daemon=True)
+ ticker.start()
+ try:
+ how = driver.bring_up(self._fixture, say)
+ say("setup", "adding synthetic clerk accounts")
+ self._count = self._worker_target()
+ driver.add_clerks(self._fixture, self._count + 1)
+ finally:
+ done.set()
+ ticker.join()
+ self.setup_summary = (
+ f"OpenEMR 8.0.0.3 at {self._fixture.ui_base_url}: {_HOW[how]} "
+ f"{time.monotonic() - started:.1f}s"
+ )
+ self.start_workers()
+ self._main.submit(self._open_session)
+ return self
+
+ def __exit__(self, *exc: object) -> None:
+ self._stack.close()
+
+ def _shutdown(self) -> None:
+ if self._starter is not None:
+ self._starter.join()
+ if self._pool is not None:
+ self._pool.close()
+ if self._session is not None:
+ with contextlib.suppress(Exception):
+ self._main.submit(self._session.close).result(timeout=60)
+ self._main.shutdown(wait=False)
+
+ def _worker_target(self) -> int:
+ from openadapt.quickstart.workers import worker_count
+
+ return max(1, min(worker_count(), len(self._driver.REFERRALS)))
+
+ def _clerk(self, number: int) -> str:
+ return f"oa_clerk{number}"
+
+ def _open_session(self) -> None:
+ if self._session is None:
+ self._session = self._driver.Session(
+ self._fixture, self._clerk(self._count + 1), headless=not self.visible
+ )
+ self._session.sign_in()
+
+ # -- act 1 ------------------------------------------------------------
+
+ def record(self, on_step: Callable[[DemoStep], None]) -> list[DemoStep]:
+ """The demonstration the program was compiled from, step by step."""
+
+ shutil.copyfile(self._driver.DEMONSTRATION, self.recording_dir)
+ steps = []
+ for event in self._driver.demonstration():
+ label = demo_step_label(event)
+ if label is None:
+ continue
+ step = DemoStep(label=label, seconds=float(event.get("t") or 0.0))
+ steps.append(step)
+ on_step(step)
+ return steps
+
+ def compile(self) -> int:
+ """Copy the certified program into the output folder; its step count."""
+
+ self.workflow = self._driver.copy_program(self.bundle_dir)
+ return len(self.workflow.steps)
+
+ @property
+ def program_name(self) -> str:
+ return str(getattr(self.workflow, "name", "") or "")
+
+ def note_param(self) -> bool:
+ return True
+
+ # -- act 2 ------------------------------------------------------------
+
+ def start_workers(self) -> None:
+ from openadapt.quickstart.workers import WorkerPool, worker_browser
+
+ if self._count <= 1 or self._starter is not None:
+ return
+
+ def start() -> None:
+ browser = worker_browser(self.visible)
+ if browser is None:
+ return
+ self._pool = WorkerPool(
+ self._count,
+ visible=self.visible,
+ browser=browser,
+ target=_worker_main,
+ worker_args=[
+ (str(self.flow), str(self._state_dir), self._clerk(n))
+ for n in range(1, self._count + 1)
+ ],
+ stall_s=STALL_S,
+ ready_timeout_s=READY_TIMEOUT_S,
+ )
+
+ self._starter = threading.Thread(target=start, name="quickstart-workers")
+ self._starter.start()
+
+ def _started_pool(self) -> Any:
+ if self._starter is not None:
+ self._starter.join()
+ return self._pool
+
+ @property
+ def parallel(self) -> int:
+ pool = self._started_pool()
+ return max(1, pool.usable()) if pool is not None else 1
+
+ def _run_here(self, index: int, key: str, folder: str) -> RunFacts:
+ def work() -> RunFacts:
+ self._open_session()
+ facts = self._session.run(
+ self.workflow, self.bundle_dir, key, self.root / folder, trial=index
+ )
+ return run_facts(index, facts, self._driver.checked(facts))
+
+ return self._main.submit(work).result()
+
+ def run_all(
+ self, keys: Sequence[str], on_finish: Callable[[RunFacts], None]
+ ) -> None:
+ """One referral per clerk, all at once; any a clerk can't take runs here."""
+
+ assert self.workflow is not None
+ jobs = [(index, key, f"run-{index}") for index, key in enumerate(keys, 1)]
+ leftover = jobs
+ pool = self._started_pool()
+ if pool is not None:
+ leftover = pool.run(
+ jobs, bundle_dir=self.bundle_dir, root=self.root, on_finish=on_finish
+ )
+ pool.release()
+ for index, key, folder in leftover:
+ run = self._run_here(index, key, folder)
+ run.repeated = folder != f"run-{index}"
+ on_finish(run)
+
+ # -- act 3 ------------------------------------------------------------
+
+ def before_prompt(self) -> None:
+ return_focus_to_terminal(visible=self.visible)
+
+ def break_it(self) -> BreakFacts:
+ """Add an existing chart; run the referral that matches it."""
+
+ assert self.workflow is not None
+ driver, fixture = self._driver, self._fixture
+ run_dir = self.root / "run-broken"
+
+ def work() -> tuple[dict[str, Any], int, Optional[Path]]:
+ self._open_session()
+ driver.seed_existing_chart(fixture)
+ before = {row["id"] for row in driver.charts(fixture)}
+ facts = self._session.run(
+ self.workflow, self.bundle_dir, driver.DUPLICATE, run_dir, trial=99
+ )
+ screenshot = self._session.screenshot(run_dir / "screen.png")
+ after = {row["id"] for row in driver.charts(fixture)}
+ return facts, len(after - before), screenshot
+
+ facts, new_charts, screenshot = self._main.submit(work).result()
+ (run_dir / "quickstart-readback.json").write_text(
+ json.dumps(
+ {
+ "existing_chart": "Rosa Delgado, born 1958-03-27",
+ "referral": f"{facts['name']}, born {facts['dob']}",
+ "new_charts_in_database": new_charts,
+ },
+ indent=2,
+ )
+ + "\n"
+ )
+ return BreakFacts(
+ run_dir=run_dir,
+ fault="possible duplicate",
+ execution_outcome=str(facts["execution_outcome"]),
+ transaction_outcome=facts["transaction_outcome"],
+ screen_showed_success=False,
+ screen_text=None,
+ screenshot=screenshot,
+ new_records=new_charts,
+ effects_required=sum(len(step.effects) for step in self.workflow.steps),
+ effects_refuted=0,
+ halt_reason=str(facts["halt_reason"]),
+ model_calls=int(facts["model_calls"]),
+ seconds=float(facts["seconds"]),
+ )
+
+ def read_screen(self, broken: BreakFacts) -> Optional[str]:
+ if broken.screenshot is None:
+ return None
+ return read_dialog(broken.screenshot)
+
+ # -- finale -----------------------------------------------------------
+
+ def seal(self, runs: list[RunFacts]) -> Optional[SealFacts]:
+ return seal_runs(runs)
+
+ def write_page(self, first: RunFacts, broken: BreakFacts) -> Optional[Path]:
+ return None
+
+
+__all__ = [
+ "DOCKER_INSTALL_URL",
+ "OpenEMREngine",
+ "checkout_problem",
+ "demo_step_label",
+ "docker_problem",
+ "find_flow_checkout",
+ "read_dialog",
+]
diff --git a/openadapt/quickstart/scene.py b/openadapt/quickstart/scene.py
new file mode 100644
index 000000000..25905a196
--- /dev/null
+++ b/openadapt/quickstart/scene.py
@@ -0,0 +1,198 @@
+"""The words that differ between the quickstart's apps.
+
+MockMed (the default) breaks a save silently: the screen says saved and the
+database has nothing. OpenEMR's Act 3 is a referral that matches an existing
+chart: the program stops before saving. Everything else in the story and the
+views is shared; a :class:`Scene` holds what is not.
+"""
+
+from __future__ import annotations
+
+from dataclasses import dataclass
+from typing import TYPE_CHECKING, Optional
+
+if TYPE_CHECKING:
+ from openadapt.quickstart.engine import BreakFacts
+
+#: Where the site publishes Seals from real OpenEMR runs. Every quickstart's
+#: finale links it, whatever the app.
+SEALS_URL = "https://openadapt.ai/seals"
+SEALS_LINE = f"See real Seals from OpenEMR runs: {SEALS_URL}"
+
+
+@dataclass(frozen=True)
+class Scene:
+ """One app's words for the three acts."""
+
+ #: The headline under the command.
+ intro: str
+ #: What the spinner says while the app starts.
+ starting: str
+ #: Act 1's subtitle (before ", in a hidden browser" when Act 1 is live).
+ act1_where: str
+ #: Act 2's inputs, plural ("notes": "the program on 5 new notes").
+ inputs_noun: str
+ #: Where each run is checked ("checked in the database").
+ checked_in: str
+ #: Act 3's subtitle.
+ act3_subtitle: str
+ #: The line before Act 3 runs.
+ break_setup: str
+ #: The prompt before Act 3 runs, on a terminal.
+ confirm_prompt: str
+ #: What the spinner says while Act 3 runs.
+ breaking: str
+ #: The record's label in Act 3 ("What the database showed").
+ record_label: str
+ #: What one record is called ("record": "0 new records").
+ record_noun: str
+ #: OpenAdapt's verdict when Act 3 stopped.
+ stopped: str
+ #: The record check's subject in the receipt ("in the database").
+ receipt_where: str
+ #: What Act 3's screen showed when its text couldn't be read.
+ screen_default: str = "a saved message"
+ #: The part of the 1280x800 screenshot Act 3 shows (left, top, right,
+ #: bottom).
+ screen_crop: tuple[int, int, int, int] = (0, 0, 640, 320)
+ #: True when Act 3's screen claims success (MockMed's silent failure), so
+ #: a screen-trusting bot's "Done" and the one-line summary apply.
+ screen_claims_success: bool = True
+ #: True when Act 1 demonstrates in a browser now; False when it shows the
+ #: recorded demonstration a certified program was compiled from.
+ act1_live: bool = True
+ #: How Act 1 ends, given the program's step count.
+ compiled_template: str = "Compiled into a program: {steps} steps."
+
+ def compiled_line(self, steps: int) -> str:
+ return self.compiled_template.format(steps=steps)
+
+ def database_line(self, broken: "BreakFacts") -> str:
+ count = broken.new_records
+ return f"{count} new {self.record_noun}" + ("" if count == 1 else "s")
+
+ def why_line(self, broken: "BreakFacts") -> str:
+ if not self.screen_claims_success:
+ if broken.stopped and broken.new_records == 0:
+ return (
+ "OpenEMR's duplicate check found an existing chart. The "
+ "program saves only when it finds none, so it stopped "
+ "before saving."
+ )
+ if broken.stopped:
+ return "OpenAdapt stopped, but a new chart is in OpenEMR. Check it."
+ return "OpenAdapt did not stop. Treat this build as broken."
+ if broken.stopped and broken.new_records == 0:
+ return (
+ "OpenAdapt reads the record back from the database after each save. "
+ "It found nothing, so it stopped."
+ )
+ if broken.stopped:
+ return "OpenAdapt read the record back, and it didn't match, so it stopped."
+ return "OpenAdapt did not stop. Treat this build as broken."
+
+ def aha_line(self, broken: "BreakFacts") -> Optional[str]:
+ """The one-line summary, only when the run showed all of it."""
+
+ if not (broken.stopped and broken.new_records == 0):
+ return None
+ if not self.screen_claims_success:
+ return (
+ "The demonstration clicked Confirm Create New Patient here. "
+ "Replaying those clicks would have saved a possible duplicate. "
+ "OpenAdapt stopped."
+ )
+ if not broken.screen_showed_success:
+ return None
+ text = broken.screen_text
+ end = text.lower().find("saved") if text else -1
+ if text and end >= 0:
+ screen = f'The screen said "{text[: end + len("saved")]}".'
+ else:
+ screen = "The screen showed its saved message."
+ return (
+ f"{screen} The database had nothing. A bot that trusts the screen "
+ "reports Done. OpenAdapt stopped."
+ )
+
+ def break_detail(self, broken: "BreakFacts") -> list[str]:
+ """Act 3's engine detail, for ``--verbose``."""
+
+ if not self.screen_claims_success:
+ first = (
+ f"case {broken.fault!r}: OpenEMR already has a chart with this "
+ "name, so its duplicate check lists a match"
+ )
+ checks = (
+ f"record checks {broken.effects_required} declared, none run "
+ "(the save step never ran)"
+ )
+ else:
+ first = (
+ f"fault mode {broken.fault!r}: the server rejects the write after "
+ "the app shows its saved message"
+ )
+ checks = (
+ f"record checks refuted "
+ f"{broken.effects_refuted}/{broken.effects_required}"
+ )
+ return [
+ first,
+ f"execution {broken.execution_outcome}, transaction "
+ f"{broken.transaction_outcome}, {checks}",
+ f"engine: {broken.halt_reason}",
+ f"report {broken.report_md}",
+ ]
+
+
+MOCKMED = Scene(
+ intro=("show a task once, run it, then watch it catch a save that didn't happen."),
+ starting="Starting the synthetic clinic app",
+ act1_where="a demonstration in a synthetic clinic app",
+ inputs_noun="notes",
+ checked_in="checked in the database",
+ act3_subtitle="the next save fails silently",
+ break_setup=(
+ "The app will show its saved message. The database will reject the save."
+ ),
+ confirm_prompt="Press Enter to make the next save fail silently",
+ breaking="Running the program once more, checking the database",
+ record_label="What the database showed",
+ record_noun="record",
+ stopped="Stopped before reporting success",
+ receipt_where="in the database",
+)
+
+OPENEMR = Scene(
+ intro=(
+ "show a task once in OpenEMR, run it, then watch it stop before saving a "
+ "duplicate chart."
+ ),
+ starting="Starting OpenEMR",
+ act1_where="a referral as it was demonstrated once in OpenEMR 8.0.0.3",
+ inputs_noun="referrals",
+ checked_in="checked in OpenEMR's record",
+ act3_subtitle="a referral that matches an existing chart",
+ break_setup=(
+ "OpenEMR already has a chart for Rosa Delgado. The next referral is a "
+ "Rosa Delgado with another birth date."
+ ),
+ confirm_prompt="Press Enter to run the program on that referral",
+ breaking="Running the program on the referral, then reading OpenEMR's charts",
+ record_label="What OpenEMR's record showed",
+ record_noun="chart",
+ stopped="Stopped before saving: possible duplicate",
+ receipt_where="in OpenEMR's record",
+ screen_claims_success=False,
+ act1_live=False,
+ compiled_template=(
+ "The program compiled from it: {steps} steps, certified under clinical-write."
+ ),
+ screen_default="OpenEMR's duplicate check, listing a matching chart",
+ screen_crop=(204, 30, 1078, 262),
+)
+
+SCENES = {"mockmed": MOCKMED, "openemr": OPENEMR}
+
+
+__all__ = ["MOCKMED", "OPENEMR", "SCENES", "SEALS_LINE", "SEALS_URL", "Scene"]
diff --git a/openadapt/quickstart/story.py b/openadapt/quickstart/story.py
index 59d2597d3..55de74172 100644
--- a/openadapt/quickstart/story.py
+++ b/openadapt/quickstart/story.py
@@ -21,6 +21,7 @@
RunFacts,
SealFacts,
)
+from openadapt.quickstart.scene import MOCKMED, Scene
#: The placeholder app address in the "try it on your own app" command.
YOUR_APP_URL = "https://your-app.example"
@@ -44,6 +45,10 @@ class Engine(Protocol):
root: Path
visible: bool
+ #: The app's words (MockMed's when an engine has none).
+ scene: Scene
+ #: Act 2's inputs, one run each.
+ inputs: Sequence[str]
def __enter__(self) -> "Engine": ...
@@ -130,6 +135,10 @@ def intro(self, root: Path, visible: bool) -> None: ...
def starting(self) -> Any: ...
+ def setup_progress(self, text: str, milestone: bool) -> None: ...
+
+ def setup_done(self, text: str) -> None: ...
+
def act(self, number: int, title: str, subtitle: str) -> None: ...
def demo_step(self, step: DemoStep) -> None: ...
@@ -159,7 +168,15 @@ def finale(self, outcome: Outcome, steps: NextSteps) -> None: ...
def detail(self, lines: list[str]) -> None: ...
-def _engine_detail_run(run: RunFacts) -> list[str]:
+def _engine_detail_run(run: RunFacts, scene: Scene) -> list[str]:
+ if not scene.screen_claims_success:
+ return [
+ f"run {run.index}: execution {run.execution_outcome}, transaction "
+ f"{run.transaction_outcome}, record checks "
+ f"{run.effects_confirmed}/{run.effects_required} confirmed through "
+ f"OpenEMR's REST API, {run.records} chart(s) for this referral in "
+ f"OpenEMR's database; report {run.report_md}",
+ ]
return [
f"run {run.index}: execution {run.execution_outcome}, transaction "
f"{run.transaction_outcome}, profile standard, record checks "
@@ -169,18 +186,6 @@ def _engine_detail_run(run: RunFacts) -> list[str]:
]
-def _engine_detail_break(broken: BreakFacts) -> list[str]:
- return [
- f"fault mode {broken.fault!r}: the server rejects the write after the "
- "app shows its saved message",
- f"execution {broken.execution_outcome}, transaction "
- f"{broken.transaction_outcome}, record checks refuted "
- f"{broken.effects_refuted}/{broken.effects_required}",
- f"engine: {broken.halt_reason}",
- f"report {broken.report_md}",
- ]
-
-
def run_story(
engine: Engine,
view: View,
@@ -195,15 +200,22 @@ def run_story(
"""Run the three acts against ``engine`` and show them through ``view``."""
outcome = Outcome(root=engine.root)
+ scene = getattr(engine, "scene", MOCKMED)
started = clock()
paused = 0.0
view.intro(engine.root, engine.visible)
+ set_progress = getattr(engine, "set_progress", None)
+ if set_progress is not None:
+ set_progress(view.setup_progress)
with view.starting():
engine.__enter__()
try:
+ ready = getattr(engine, "setup_summary", None)
+ if ready:
+ view.setup_done(ready)
# Act 1: show it once. Act 2's workers get ready meanwhile.
engine.start_workers()
- view.act(1, "Show it once", _act1_subtitle(engine.visible))
+ view.act(1, "Show it once", _act1_subtitle(engine.visible, scene))
act_start = clock()
outcome.demo_steps = engine.record(view.demo_step)
with view.compiling():
@@ -214,16 +226,25 @@ def run_story(
if verbose:
view.detail(
[
- f"recording {engine.root / 'recording'}",
- f"program {engine.root / 'bundle'} (certified under "
- "clinical-write; record checks mined from the demonstration)",
+ "recording "
+ f"{getattr(engine, 'recording_dir', engine.root / 'recording')}",
+ f"program {engine.root / 'bundle'} "
+ + getattr(
+ engine,
+ "program_detail",
+ "(certified under clinical-write; record checks mined "
+ "from the demonstration)",
+ ),
]
)
# Act 2: run it.
- total = len(RUN_NOTES)
+ inputs = getattr(engine, "inputs", RUN_NOTES)
+ total = len(inputs)
view.act(
- 2, "Run it", _act2_subtitle(total, engine.note_param(), engine.parallel)
+ 2,
+ "Run it",
+ _act2_subtitle(total, engine.note_param(), engine.parallel, scene),
)
act_start = clock()
@@ -231,11 +252,11 @@ def finished(run: RunFacts) -> None:
outcome.runs.append(run)
view.run_row(run, total)
if verbose:
- view.detail(_engine_detail_run(run))
+ view.detail(_engine_detail_run(run, scene))
view.progress(len(outcome.runs), total, outcome.checked)
with view.running(total, engine.parallel):
- engine.run_all(RUN_NOTES, finished)
+ engine.run_all(inputs, finished)
outcome.act2_seconds = clock() - act_start
view.runs_total(outcome)
# Sign the checked runs' reports while Act 3 runs; the finale waits.
@@ -244,12 +265,12 @@ def finished(run: RunFacts) -> None:
# Act 3: break it.
paging = None
if break_it:
- view.act(3, "Break it", "the next save fails silently")
+ view.act(3, "Break it", scene.act3_subtitle)
view.break_setup()
if interactive:
waited = clock()
engine.before_prompt()
- view.confirm("Press Enter to make the next save fail silently")
+ view.confirm(scene.confirm_prompt)
paused += clock() - waited
with view.breaking():
outcome.broken = engine.break_it()
@@ -263,7 +284,7 @@ def finished(run: RunFacts) -> None:
broken.screen_text = engine.read_screen(broken)
view.break_result(outcome.broken)
if verbose:
- view.detail(_engine_detail_break(outcome.broken))
+ view.detail(scene.break_detail(outcome.broken))
outcome.seal = sealing.result()
if paging is not None:
@@ -288,11 +309,15 @@ def _in_background(work: Callable[[], Any]) -> Any:
return future
-def _act2_subtitle(total: int, varied: bool, parallel: int) -> str:
+def _act2_subtitle(
+ total: int, varied: bool, parallel: int, scene: Scene = MOCKMED
+) -> str:
# An engine that can't give a run its own note replays the demonstrated
# one, and the header says so.
what = (
- f"the program on {total} new notes" if varied else f"the program {total} times"
+ f"the program on {total} new {scene.inputs_noun}"
+ if varied
+ else f"the program {total} times"
)
if parallel >= total:
return f"{what}, all at once"
@@ -301,9 +326,11 @@ def _act2_subtitle(total: int, varied: bool, parallel: int) -> str:
return what
-def _act1_subtitle(visible: bool) -> str:
+def _act1_subtitle(visible: bool, scene: Scene = MOCKMED) -> str:
+ if not scene.act1_live:
+ return scene.act1_where
where = "watch the browser window" if visible else "in a hidden browser"
- return f"a demonstration in a synthetic clinic app, {where}"
+ return f"{scene.act1_where}, {where}"
__all__ = [
diff --git a/openadapt/quickstart/view.py b/openadapt/quickstart/view.py
index 4a6e399da..ff569fad6 100644
--- a/openadapt/quickstart/view.py
+++ b/openadapt/quickstart/view.py
@@ -16,6 +16,7 @@
from typing import IO, Any, Iterator, Mapping, Optional
from openadapt.quickstart.engine import BreakFacts, DemoStep, RunFacts
+from openadapt.quickstart.scene import MOCKMED, SEALS_LINE, SEALS_URL, Scene
from openadapt.quickstart.story import NextSteps, Outcome, display_path
#: Width of the step and note column, so times line up.
@@ -45,14 +46,14 @@ def seconds(value: float) -> str:
return f"{value:.1f}s"
-def compiled_line(outcome: Outcome) -> str:
- return f"Compiled into a program: {outcome.program_steps} steps."
+def compiled_line(outcome: Outcome, scene: Scene = MOCKMED) -> str:
+ return scene.compiled_line(outcome.program_steps)
-def run_status(run: RunFacts, marks: Marks) -> str:
+def run_status(run: RunFacts, marks: Marks, scene: Scene = MOCKMED) -> str:
if run.checked:
again = " (on a second try)" if run.repeated else ""
- return f"{marks.ok} checked in the database{again}"
+ return f"{marks.ok} {scene.checked_in}{again}"
return f"{marks.stop} {run.plain_label or run.execution_outcome}"
@@ -68,9 +69,8 @@ def runs_total_line(outcome: Outcome, marks: Marks) -> str:
)
-def database_line(broken: BreakFacts) -> str:
- count = broken.new_records
- return f"{count} new record" + ("" if count == 1 else "s")
+def database_line(broken: BreakFacts, scene: Scene = MOCKMED) -> str:
+ return scene.database_line(broken)
def bot_verdict(broken: BreakFacts, marks: Marks) -> Optional[str]:
@@ -79,50 +79,45 @@ def bot_verdict(broken: BreakFacts, marks: Marks) -> Optional[str]:
return f"{marks.ok} Done" if broken.screen_showed_success else None
-def openadapt_verdict(broken: BreakFacts, marks: Marks) -> str:
+def openadapt_verdict(broken: BreakFacts, marks: Marks, scene: Scene = MOCKMED) -> str:
if broken.stopped:
- return f"{marks.stop} Stopped before reporting success"
+ return f"{marks.stop} {scene.stopped}"
return f"{broken.execution_outcome.title()} (expected a stop)"
-def why_line(broken: BreakFacts) -> str:
- if broken.stopped and broken.new_records == 0:
- return (
- "OpenAdapt reads the record back from the database after each save. "
- "It found nothing, so it stopped."
- )
- if broken.stopped:
- return "OpenAdapt read the record back, and it didn't match, so it stopped."
- return "OpenAdapt did not stop. Treat this build as broken."
+def why_line(broken: BreakFacts, scene: Scene = MOCKMED) -> str:
+ return scene.why_line(broken)
-def aha_line(broken: BreakFacts) -> Optional[str]:
+def aha_line(broken: BreakFacts, scene: Scene = MOCKMED) -> Optional[str]:
"""The one-line summary, only when the run showed all of it."""
- if not (
- broken.stopped and broken.screen_showed_success and broken.new_records == 0
- ):
- return None
- text = broken.screen_text
- end = text.lower().find("saved") if text else -1
- if text and end >= 0:
- screen = f'The screen said "{text[: end + len("saved")]}".'
- else:
- screen = "The screen showed its saved message."
- return (
- f"{screen} The database had nothing. A bot that trusts the screen "
- "reports Done. OpenAdapt stopped."
+ return scene.aha_line(broken)
+
+
+def break_labels(scene: Scene) -> tuple[str, str, str, str]:
+ """Act 3's four row labels, padded to one width (plain view)."""
+
+ labels = (
+ "What the screen showed:",
+ f"{scene.record_label}:",
+ "A screen-trusting bot:",
+ "OpenAdapt:",
)
+ width = max(len(label) for label in labels) + 2
+ return tuple(f"{label:<{width}}" for label in labels) # type: ignore[return-value]
-def receipt_rows(outcome: Outcome, marks: Marks) -> list[tuple[str, str]]:
+def receipt_rows(
+ outcome: Outcome, marks: Marks, scene: Scene = MOCKMED
+) -> list[tuple[str, str]]:
dot = f" {marks.dot} "
rows = [
("Program", f"{outcome.program_name}{dot}{outcome.program_steps} steps"),
(
"Runs",
- f"{outcome.checked} of {len(outcome.runs)} saved and checked in the "
- "database",
+ f"{outcome.checked} of {len(outcome.runs)} saved and checked "
+ f"{scene.receipt_where}",
),
(
"Cost",
@@ -181,14 +176,16 @@ def wants_plain(stream: IO[str], environ: Optional[Mapping[str, str]] = None) ->
return not (callable(isatty) and isatty())
-def make_view(stream: Optional[IO[str]] = None, *, environ=None) -> Any:
+def make_view(
+ stream: Optional[IO[str]] = None, *, environ=None, scene: Scene = MOCKMED
+) -> Any:
stream = stream or sys.stdout
if wants_plain(stream, environ):
- return PlainView(stream)
+ return PlainView(stream, scene=scene)
try:
- return RichView(stream, environ=environ)
+ return RichView(stream, environ=environ, scene=scene)
except ImportError: # rich is a launcher dependency; plain lines still work
- return PlainView(stream)
+ return PlainView(stream, scene=scene)
# ---------------------------------------------------------------------------
@@ -199,8 +196,9 @@ def make_view(stream: Optional[IO[str]] = None, *, environ=None) -> Any:
class PlainView:
"""One line per fact, printed as it happens. No color, no cursor moves."""
- def __init__(self, stream: IO[str]) -> None:
+ def __init__(self, stream: IO[str], *, scene: Scene = MOCKMED) -> None:
self.stream = stream
+ self.scene = scene
self.marks = Marks(getattr(stream, "encoding", None))
def _say(self, text: str = "") -> None:
@@ -212,15 +210,19 @@ def _quiet(self) -> Iterator[None]:
yield
def intro(self, root: Path, visible: bool) -> None:
- self._say(
- "OpenAdapt quickstart: show a task once, run it, then watch it "
- "catch a save that didn't happen."
- )
+ self._say(f"OpenAdapt quickstart: {self.scene.intro}")
self._say(f"Synthetic data only. Files go to {display_path(root)}")
def starting(self):
return self._quiet()
+ def setup_progress(self, text: str, milestone: bool) -> None:
+ if milestone:
+ self._say(f" {text}")
+
+ def setup_done(self, text: str) -> None:
+ self._say(f" {self.marks.ok} {text}")
+
def act(self, number: int, title: str, subtitle: str) -> None:
self._say()
self._say(f"{number} {title} {self.marks.dot} {subtitle}")
@@ -234,7 +236,9 @@ def compiling(self):
return self._quiet()
def compiled(self, outcome: Outcome) -> None:
- self._say(f" {compiled_line(outcome)} {seconds(outcome.act1_seconds)}")
+ self._say(
+ f" {compiled_line(outcome, self.scene)} {seconds(outcome.act1_seconds)}"
+ )
def running(self, total: int, parallel: int):
return self._quiet()
@@ -245,16 +249,14 @@ def progress(self, finished: int, total: int, checked: int) -> None:
def run_row(self, run: RunFacts, total: int) -> None:
self._say(
f" {run.index}/{total} {run.note:<{_LABEL_WIDTH - 6}} "
- f"{run_status(run, self.marks)} {seconds(run.seconds)}"
+ f"{run_status(run, self.marks, self.scene)} {seconds(run.seconds)}"
)
def runs_total(self, outcome: Outcome) -> None:
self._say(f" {runs_total_line(outcome, self.marks)}")
def break_setup(self) -> None:
- self._say(
- " The app will show its saved message. The database will reject the save."
- )
+ self._say(f" {self.scene.break_setup}")
def confirm(self, prompt: str) -> None:
self.stream.write(f" {prompt} ")
@@ -268,19 +270,21 @@ def breaking(self):
return self._quiet()
def break_result(self, broken: BreakFacts) -> None:
+ scene = self.scene
+ screen, record, bot_label, openadapt = break_labels(scene)
quote = broken.screen_text
- shown = f'"{quote}"' if quote else "a saved message"
- self._say(f" What the screen showed: {shown}")
- self._say(f" What the database showed: {database_line(broken)}")
+ shown = f'"{quote}"' if quote else scene.screen_default
+ self._say(f" {screen}{shown}")
+ self._say(f" {record}{database_line(broken, scene)}")
bot = bot_verdict(broken, self.marks)
if bot:
- self._say(f" A screen-trusting bot: {bot}")
+ self._say(f" {bot_label}{bot}")
self._say(
- f" OpenAdapt: {openadapt_verdict(broken, self.marks)}"
+ f" {openadapt}{openadapt_verdict(broken, self.marks, scene)}"
f" {seconds(broken.seconds)}"
)
- self._say(f" Why: {why_line(broken)}")
- aha = aha_line(broken)
+ self._say(f" Why: {why_line(broken, scene)}")
+ aha = aha_line(broken, scene)
if aha:
self._say()
self._say(aha)
@@ -288,8 +292,9 @@ def break_result(self, broken: BreakFacts) -> None:
def finale(self, outcome: Outcome, steps: NextSteps) -> None:
self._say()
self._say("Receipt")
- for name, value in receipt_rows(outcome, self.marks):
+ for name, value in receipt_rows(outcome, self.marks, self.scene):
self._say(f" {name:<9} {value}")
+ self._say(SEALS_LINE)
if steps.verify:
self._say(f"Check it: {steps.verify}")
self._say(details_line(outcome))
@@ -312,7 +317,12 @@ class RichView:
"""Color, spinners, a boxed receipt, and the screenshot where possible."""
def __init__(
- self, stream: IO[str], *, environ=None, width: Optional[int] = None
+ self,
+ stream: IO[str],
+ *,
+ environ=None,
+ width: Optional[int] = None,
+ scene: Scene = MOCKMED,
) -> None:
from rich.console import Console
@@ -321,6 +331,7 @@ def __init__(
self.console = Console(
file=stream, highlight=False, soft_wrap=False, width=width
)
+ self.scene = scene
self.marks = Marks(getattr(stream, "encoding", None) or "utf-8")
self.image_protocol = detect_image_protocol(environ, isatty=True)
@@ -329,15 +340,25 @@ def _status(self, text: str):
def intro(self, root: Path, visible: bool) -> None:
self.console.print(
- "[bold]OpenAdapt quickstart[/]: show a task once, run it, then watch "
- "it catch a save that didn't happen."
+ f"[bold]OpenAdapt quickstart[/]: {_escape(self.scene.intro)}"
)
self.console.print(
f"[dim]Synthetic data only. Files go to {display_path(root)}[/]"
)
def starting(self):
- return self._status("Starting the synthetic clinic app")
+ self._setup = self._status(self.scene.starting)
+ return self._setup
+
+ def setup_progress(self, text: str, milestone: bool) -> None:
+ live = getattr(self, "_setup", None)
+ if live is not None:
+ live.update(
+ f"[dim]{_escape(self.scene.starting)} {self.marks.dot} {_escape(text)}[/]"
+ )
+
+ def setup_done(self, text: str) -> None:
+ self.console.print(f" [green]{self.marks.ok}[/] {_escape(text)}")
def act(self, number: int, title: str, subtitle: str) -> None:
self.console.print()
@@ -356,7 +377,8 @@ def compiling(self):
def compiled(self, outcome: Outcome) -> None:
self.console.print(
- f" [bold]{compiled_line(outcome)}[/] [dim]{seconds(outcome.act1_seconds)}[/]"
+ f" [bold]{compiled_line(outcome, self.scene)}[/] "
+ f"[dim]{seconds(outcome.act1_seconds)}[/]"
)
def running(self, total: int, parallel: int):
@@ -372,7 +394,7 @@ def _running_text(
how = "one after another"
return (
f"Running {total} {how} {self.marks.dot} {finished} done "
- f"{self.marks.dot} {checked} checked in the database"
+ f"{self.marks.dot} {checked} {self.scene.checked_in}"
)
def progress(self, finished: int, total: int, checked: int) -> None:
@@ -386,16 +408,15 @@ def run_row(self, run: RunFacts, total: int) -> None:
color = "green" if run.checked else "red"
self.console.print(
f" [dim]{run.index}/{total}[/] {_escape(run.note):<{_LABEL_WIDTH - 6}} "
- f"[{color}]{run_status(run, self.marks)}[/] [dim]{seconds(run.seconds)}[/]"
+ f"[{color}]{run_status(run, self.marks, self.scene)}[/] "
+ f"[dim]{seconds(run.seconds)}[/]"
)
def runs_total(self, outcome: Outcome) -> None:
self.console.print(f" [bold]{runs_total_line(outcome, self.marks)}[/]")
def break_setup(self) -> None:
- self.console.print(
- " The app will show its saved message. The database will reject the save."
- )
+ self.console.print(f" {_escape(self.scene.break_setup)}")
def confirm(self, prompt: str) -> None:
try:
@@ -404,24 +425,28 @@ def confirm(self, prompt: str) -> None:
self.console.print()
def breaking(self):
- return self._status("Running the program once more, checking the database")
+ return self._status(self.scene.breaking)
def _right_column(self, broken: BreakFacts) -> list[str]:
width = 52
+ scene = self.scene
lines = [
- "[bold]What the database showed[/]",
- f"[bold red]{database_line(broken)}[/]",
+ f"[bold]{_escape(scene.record_label)}[/]",
+ f"[bold red]{database_line(broken, scene)}[/]",
"",
]
bot = bot_verdict(broken, self.marks)
if bot:
lines.append(f"A screen-trusting bot [red]{bot}[/]")
lines.append(
- f"OpenAdapt [bold green]{openadapt_verdict(broken, self.marks)}[/]"
+ f"OpenAdapt "
+ f"[bold green]{openadapt_verdict(broken, self.marks, scene)}[/]"
f" [dim]{seconds(broken.seconds)}[/]"
)
lines.append("")
- lines.extend(f"[dim]{part}[/]" for part in _wrap(why_line(broken), width))
+ lines.extend(
+ f"[dim]{part}[/]" for part in _wrap(why_line(broken, scene), width)
+ )
return lines
def break_result(self, broken: BreakFacts) -> None:
@@ -433,7 +458,7 @@ def break_result(self, broken: BreakFacts) -> None:
if self.image_protocol and broken.screenshot is not None:
drawn = self._draw_beside_screenshot(broken, right)
if not drawn:
- quote = broken.screen_text or "a saved message"
+ quote = broken.screen_text or self.scene.screen_default
box = Panel(
f"[green]{_escape(quote)}[/]",
title="What the screen showed",
@@ -447,17 +472,16 @@ def break_result(self, broken: BreakFacts) -> None:
grid.add_row(box, "\n".join(right))
self.console.print()
self.console.print(grid, crop=False)
- aha = aha_line(broken)
+ aha = aha_line(broken, self.scene)
if aha:
self.console.print()
self.console.print(f"[bold]{_escape(aha)}[/]")
def _draw_beside_screenshot(self, broken: BreakFacts, right: list[str]) -> bool:
- from openadapt.quickstart.engine import SCREEN_CROP
from openadapt.quickstart.images import beside_image, crop_png, image_sequence
try:
- png = crop_png(broken.screenshot, SCREEN_CROP)
+ png = crop_png(broken.screenshot, self.scene.screen_crop)
except Exception: # noqa: BLE001 - fall back to the text box
return False
cols, rows = 40, 10
@@ -497,12 +521,14 @@ def finale(self, outcome: Outcome, steps: NextSteps) -> None:
table = Table.grid(padding=(0, 2))
table.add_column(style="dim")
table.add_column()
- for name, value in receipt_rows(outcome, self.marks):
+ for name, value in receipt_rows(outcome, self.marks, self.scene):
table.add_row(name, _escape(value))
self.console.print()
self.console.print(
Panel(table, title="Receipt", title_align="left", expand=False)
)
+ label = SEALS_LINE[: -len(SEALS_URL)].rstrip()
+ self.console.print(f"[dim]{label}[/] [bold cyan]{SEALS_URL}[/]")
if steps.verify:
self.console.print(f"[dim]Check it:[/] [bold]{_escape(steps.verify)}[/]")
self.console.print(f"[dim]{_escape(details_line(outcome))}[/]")
diff --git a/openadapt/quickstart/workers.py b/openadapt/quickstart/workers.py
index 53d2388aa..580414dac 100644
--- a/openadapt/quickstart/workers.py
+++ b/openadapt/quickstart/workers.py
@@ -187,13 +187,21 @@ def __init__(
visible: bool,
browser: str = "",
target: Callable[..., None] = _worker_main,
+ worker_args: Optional[Sequence[tuple[Any, ...]]] = None,
+ stall_s: float = STALL_S,
+ ready_timeout_s: float = READY_TIMEOUT_S,
) -> None:
+ """``worker_args[i]`` follows the usual three arguments of worker i."""
+
context = multiprocessing.get_context("spawn")
self._workers: dict[Connection, Any] = {}
- for _ in range(size):
+ self._stall_s = stall_s
+ self._ready_timeout_s = ready_timeout_s
+ for number in range(size):
parent, child = context.Pipe()
+ extra = tuple(worker_args[number]) if worker_args else ()
process = context.Process(
- target=target, args=(child, visible, browser), daemon=True
+ target=target, args=(child, visible, browser, *extra), daemon=True
)
process.start()
child.close()
@@ -267,10 +275,10 @@ def give(conn: Connection) -> None:
give(conn)
while (self._starting() and pending) or given:
now = clock()
- deadlines = [since + STALL_S for _job, since in given.values()]
+ deadlines = [since + self._stall_s for _job, since in given.values()]
starting = self._starting() if pending else set()
if starting:
- deadlines.append(started + READY_TIMEOUT_S)
+ deadlines.append(started + self._ready_timeout_s)
timeout = max(0.0, min(deadlines) - now) if deadlines else None
for conn in wait(list(starting | set(given)), timeout=timeout):
if conn not in given:
@@ -297,11 +305,11 @@ def give(conn: Connection) -> None:
back.append(_again(job))
now = clock()
for conn, (job, since) in list(given.items()):
- if now - since >= STALL_S:
+ if now - since >= self._stall_s:
given.pop(conn)
self._drop(conn)
back.append(_again(job))
- if pending and now - started >= READY_TIMEOUT_S:
+ if pending and now - started >= self._ready_timeout_s:
for conn in self._starting():
self._drop(conn)
return sorted(back + pending)
diff --git a/packages/flow/benchmark/openemr_local/quickstart.py b/packages/flow/benchmark/openemr_local/quickstart.py
new file mode 100644
index 000000000..f78e09470
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/quickstart.py
@@ -0,0 +1,702 @@
+"""OpenEMR for ``openadapt quickstart --app openemr`` (synthetic data only).
+
+The quickstart's three acts on a real OpenEMR 8.0.0.3 instead of the bundled
+MockMed. Everything here reuses the pinned local fixture and the certified
+referral recipe:
+
+- the fixture is :class:`benchmark.openemr_local.fixture.OpenEMRFixture`
+ (pinned images, verified source files, hashed SQL baseline), with its own
+ Compose project and ports so it never touches another copy, and its state
+ in the user's cache folder so the next quickstart reuses it;
+- Act 1 records the referral with the benchmark's own scripted recorder
+ (network capture on) and compiles it the way the certified bundle was
+ compiled: ``drop_redundant_keys`` and ``pixel_verify_enabled``, then
+ ``compile_recording``'s fix-ups, including the shared duplicate rule
+ (``apply_referral_rules``: confirm a new chart only when OpenEMR's
+ duplicate check finds no match);
+- Act 2 runs referrals on clerk accounts cloned from the fixture's user (the
+ throughput harness's ``add_clerks``), one signed-in browser per clerk, each
+ run checked by the engine's REST record check and read back here with SQL;
+- Act 3 adds an existing chart and runs a referral that matches it. The
+ program stops before saving, and SQL finds no new chart.
+
+Every patient, address, phone number (555-01xx) and email
+(``example.invalid``) is made up. OpenAdapt isn't affiliated with OpenEMR.
+"""
+
+from __future__ import annotations
+
+import contextlib
+import dataclasses
+import json
+import os
+import re
+import shutil
+import subprocess
+import threading
+import time
+from pathlib import Path
+from typing import Any, Callable, Mapping, Optional
+
+from . import fixture as fx
+
+HERE = Path(__file__).resolve().parent
+FLOW = HERE.parents[1]
+
+#: The quickstart's own Compose project and its default loopback ports;
+#: ``OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT`` and ``..._HTTPS_PORT`` move them
+#: (a fixture set up on other ports is set up again on the new ones).
+PROJECT = "openadapt-quickstart-openemr"
+UI_PORT = "9741"
+API_PORT = "9740"
+
+
+def ports() -> tuple[str, str]:
+ """(HTTP, HTTPS) loopback ports, from the environment or the defaults."""
+
+ http = os.environ.get("OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT") or UI_PORT
+ https = os.environ.get("OPENADAPT_QUICKSTART_OPENEMR_HTTPS_PORT") or API_PORT
+ for port in (http, https):
+ if not re.fullmatch(r"[1-9][0-9]{2,4}", port) or int(port) > 65535:
+ raise fx.FixtureError(f"not a port: {port!r}")
+ return http, https
+
+
+#: Act 2's referrals and Act 3's possible duplicate: the referral timing
+#: benchmark's synthetic patients, the same ones behind the site's Seals.
+REFERRALS = (
+ "r3-ines-carvalho",
+ "r4-theo-lindqvist",
+ "r5-grace-adeyemi",
+ "r7-arlo-whitcombe",
+ "r8-priya-raman",
+)
+DUPLICATE = "r6-rosa-delgado"
+
+#: OpenEMR's tab shell polls this ten seconds after it loads, then every
+#: minute; a session waits for the first poll before its first run.
+BACKGROUND_POLL = "execute_background_services.php"
+SIGN_IN_POLL_WAIT_S = 45.0
+
+#: The fields the read-back compares (the referral's 12).
+SQL_FIELDS = (
+ "id",
+ "title",
+ "fname",
+ "lname",
+ "DOB",
+ "sex",
+ "street",
+ "city",
+ "state",
+ "postal_code",
+ "phone_home",
+ "email",
+ "country_code",
+)
+
+
+def default_state_dir() -> Path:
+ """Where the quickstart keeps its fixture state between runs."""
+
+ base = os.environ.get("XDG_CACHE_HOME") or str(Path.home() / ".cache")
+ return Path(base) / "openadapt" / "quickstart-openemr"
+
+
+class QuickstartFixture(fx.OpenEMRFixture):
+ """The pinned fixture under its own project, ports and state folder."""
+
+ def __init__(self, state_dir: Path | str, **kwargs: Any) -> None:
+ super().__init__(state_dir, **kwargs)
+ self.lock = {**self.lock, "project": PROJECT}
+ self.http_port, self.https_port = ports()
+
+ @property
+ def ui_base_url(self) -> str:
+ return f"http://127.0.0.1:{self.http_port}"
+
+ @property
+ def api_base_url(self) -> str:
+ return f"https://127.0.0.1:{self.https_port}"
+
+ def _expected_runtime(self) -> dict[str, str]:
+ return {
+ "OPENEMR_IMAGE": self.lock["services"]["openemr"],
+ "MARIADB_IMAGE": self.lock["services"]["mariadb"],
+ "OPENEMR_ACTOR_USER": "openadapt_actor",
+ "OPENEMR_HTTP_PORT": self.http_port,
+ "OPENEMR_HTTPS_PORT": self.https_port,
+ }
+
+ def _validate_runtime_env(self) -> None:
+ values = self._runtime_values()
+ for name, value in self._expected_runtime().items():
+ if values.get(name) != value:
+ raise fx.FixtureError(f"runtime.env {name} differs from the lock")
+ for name in (
+ "MARIADB_ROOT_PASSWORD",
+ "OPENEMR_DB_PASSWORD",
+ "OPENEMR_ACTOR_PASSWORD",
+ ):
+ if not re.fullmatch(r"[A-Za-z0-9_-]{24,}", values.get(name, "")):
+ raise fx.FixtureError(f"runtime.env {name} is absent or malformed")
+ self.runtime_env.chmod(0o600)
+
+ def prepare(self) -> None:
+ """The base preparation, with this fixture's ports in runtime.env."""
+
+ import secrets
+
+ self._protect_state_dir()
+ if not self.runtime_env.exists():
+ values = {
+ **self._expected_runtime(),
+ "MARIADB_ROOT_PASSWORD": secrets.token_urlsafe(32),
+ "OPENEMR_DB_PASSWORD": secrets.token_urlsafe(32),
+ "OPENEMR_ACTOR_PASSWORD": secrets.token_urlsafe(32),
+ }
+ self._write_private_exclusive(
+ self.runtime_env,
+ (
+ "# generated local synthetic fixture; never commit\n"
+ + "".join(f"{key}={value}\n" for key, value in values.items())
+ ).encode(),
+ )
+ super().prepare()
+
+ # -- state ------------------------------------------------------------
+
+ def bootstrapped(self) -> bool:
+ """True when a previous quickstart set this fixture up, on these ports."""
+
+ try:
+ self._validate_runtime_env()
+ except fx.FixtureError:
+ return False
+ return all(
+ path.is_file()
+ for path in (
+ self.runtime_env,
+ self.clients_path,
+ self.snapshot_path,
+ self.snapshot_hash_path,
+ )
+ )
+
+ def running(self) -> bool:
+ """True when both containers of this project are running."""
+
+ try:
+ out = self._compose(
+ "ps", "--status", "running", "--services", timeout_s=30.0
+ ).stdout.decode()
+ except fx.FixtureError:
+ return False
+ return {"openemr", "db"} <= set(out.split())
+
+ def healthy(self) -> bool:
+ try:
+ self._compose(
+ "exec",
+ "-T",
+ "openemr",
+ "/usr/bin/curl",
+ "--fail",
+ "--insecure",
+ "--silent",
+ "https://localhost/meta/health/readyz",
+ timeout_s=15.0,
+ )
+ except fx.FixtureError:
+ return False
+ return True
+
+ def discard(self) -> None:
+ """Remove this project's containers and volumes and its state folder.
+
+ For a setup that never finished, and for cold timing runs: it holds
+ synthetic data only, never anyone's work. Another project or state
+ folder is never touched.
+ """
+
+ if self.runtime_env.exists():
+ # Not through _compose: its check of runtime.env refuses a copy
+ # set up on other ports, which is exactly the one to remove.
+ with contextlib.suppress(fx.FixtureError):
+ self._run(
+ [
+ "docker",
+ "compose",
+ "--env-file",
+ str(self.runtime_env),
+ "-f",
+ str(self._compose_path()),
+ "-p",
+ self.lock["project"],
+ "down",
+ "--volumes",
+ ],
+ timeout_s=180.0,
+ )
+ if self.state_dir.name == default_state_dir().name or os.environ.get(
+ "OPENADAPT_QUICKSTART_OPENEMR_STATE"
+ ):
+ shutil.rmtree(self.state_dir, ignore_errors=True)
+
+
+def make_fixture(state_dir: Optional[Path] = None) -> QuickstartFixture:
+ state = state_dir or Path(
+ os.environ.get("OPENADAPT_QUICKSTART_OPENEMR_STATE") or default_state_dir()
+ )
+ return QuickstartFixture(state)
+
+
+# -- bring-up ---------------------------------------------------------------
+
+
+#: What :func:`bring_up` reports for each phase: (phase, detail). Phases are
+#: "pull", "start", "setup", "reset" and "ready".
+Say = Callable[[str, str], None]
+
+
+def _image_present(image: str, run: Callable[..., Any] = subprocess.run) -> bool:
+ return (
+ run(
+ ["docker", "image", "inspect", image],
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ check=False,
+ ).returncode
+ == 0
+ )
+
+
+def pull(
+ image: str, label: str, say: Say, popen: Callable[..., Any] = subprocess.Popen
+) -> None:
+ """Pull one pinned image, reporting layers as Docker finishes them."""
+
+ if _image_present(image):
+ say("pull", f"{label}: already downloaded")
+ return
+ process = popen(
+ ["docker", "pull", image],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True,
+ )
+ layers: set[str] = set()
+ done: set[str] = set()
+ assert process.stdout is not None
+ for line in process.stdout:
+ layer, _, status = line.strip().partition(": ")
+ if not re.fullmatch(r"[0-9a-f]{12,64}", layer):
+ continue
+ layers.add(layer)
+ if status.startswith(("Pull complete", "Already exists")):
+ done.add(layer)
+ say("pull", f"{label}: {len(done)} of {len(layers)} layers")
+ if process.wait() != 0:
+ raise fx.FixtureError(f"docker pull failed for {label}")
+
+
+def bring_up(fixture: QuickstartFixture, say: Say) -> str:
+ """Make the fixture ready at its verified baseline; return how.
+
+ "reused": it was running; "restarted": it was set up but stopped;
+ "created": it was set up now (downloads the images when they are absent,
+ and OpenEMR installs itself on first start).
+ """
+
+ if fixture.bootstrapped() and fixture.running() and fixture.healthy():
+ say("reset", "restoring the synthetic baseline")
+ fixture.reset()
+ return "reused"
+ if fixture.bootstrapped():
+ say("start", "starting the existing copy")
+ fixture._compose("up", "-d", timeout_s=600.0)
+ fixture._wait_ready(timeout_s=600.0)
+ say("reset", "restoring the synthetic baseline")
+ fixture.reset()
+ return "restarted"
+ if fixture.state_dir.exists():
+ # A setup that stopped part-way; it holds no one's work.
+ fixture.discard()
+ fixture.runtime_preflight()
+ say("setup", "checking the pinned OpenEMR release")
+ fixture.prepare()
+ pull(fixture.lock["services"]["openemr"], "OpenEMR 8.0.0.3", say)
+ pull(fixture.lock["services"]["mariadb"], "MariaDB 11.8", say)
+ fixture.image_identity()
+ say("start", "OpenEMR installs itself on first start")
+ fixture._compose("up", "-d", timeout_s=600.0)
+ fixture._wait_ready(timeout_s=900.0)
+ fixture._verify_running_source()
+ say("setup", "adding synthetic API clients")
+ fixture.bootstrap()
+ fixture.snapshot()
+ return "created"
+
+
+# -- the referral program ---------------------------------------------------
+
+#: The certified referral program: the bundle behind the site's OpenEMR
+#: Seals (qualification qual10, clinical-write, 6 of 6 cases), and the
+#: demonstration it was compiled from, without its URLs (they held that
+#: session's sign-in token). See referral_program/README.md.
+PROGRAM_DIR = HERE / "referral_program"
+BUNDLE = PROGRAM_DIR / "program"
+DEMONSTRATION = PROGRAM_DIR / "demonstration.jsonl"
+POLICY = "clinical-write"
+
+
+def load_demo() -> Any:
+ """The OpenEMR reference harness (sign-in, form frame, backend)."""
+
+ from benchmark.openemr_api_tier.common import load_demo as load
+
+ return load()
+
+
+def referral(key: str) -> Any:
+ """The synthetic patient for one referral key."""
+
+ from benchmark.openemr_api_tier.common import REFERRALS as ALL
+ from benchmark.openemr_api_tier.common import spec_for
+
+ return spec_for({r.key: r for r in ALL}[key])
+
+
+def existing_chart() -> Any:
+ from benchmark.openemr_api_tier.common import EXISTING_ROSA, Referral, spec_for
+
+ return spec_for(Referral("existing", EXISTING_ROSA))
+
+
+def demonstration() -> list[dict[str, Any]]:
+ """The recorded actions the program was compiled from, in order."""
+
+ return [
+ json.loads(line)
+ for line in DEMONSTRATION.read_text(encoding="utf-8").splitlines()
+ if line.strip()
+ ]
+
+
+def point_qualify_hooks_here(fixture: QuickstartFixture) -> None:
+ """Point verify.yaml's hooks (sign-in, read-back client) at this fixture.
+
+ ``benchmark/openemr_local/verify.yaml`` reads these variables; the lock
+ copy names this fixture's Compose project.
+ """
+
+ lock = fixture.state_dir / "environment.lock.json"
+ text = json.dumps(fixture.lock, indent=2) + "\n"
+ if not lock.is_file() or lock.read_text() != text:
+ lock.write_text(text)
+ os.environ["OPENEMR_FIXTURE_STATE"] = str(fixture.state_dir)
+ os.environ["OPENEMR_FIXTURE_LOCK"] = str(lock)
+ os.environ["OPENEMR_UI_URL"] = fixture.ui_base_url
+ os.environ["OPENEMR_API_URL"] = fixture.api_base_url
+
+
+def copy_program(bundle: Path) -> Any:
+ """Copy the certified program to ``bundle``; load it (digest-checked)."""
+
+ from openadapt_flow.ir import Workflow
+
+ shutil.copytree(BUNDLE, bundle)
+ return Workflow.load(bundle)
+
+
+_ENV: dict[str, Any] = {}
+
+
+def certified_env() -> dict[str, Any]:
+ """verify.yaml's config, lookup plan and hooks, loaded once per process."""
+
+ if not _ENV:
+ from openadapt_flow.qualify.campaign import _default_hooks, lookup_plan
+ from openadapt_flow.qualify.config import load_verify_config
+
+ config = load_verify_config(HERE / "verify.yaml")
+ surface, structure = lookup_plan(config)
+ _ENV.update(
+ config=config,
+ hooks=_default_hooks(config, None),
+ lookup={"use_structural": structure, "deployment_surface": surface},
+ )
+ return _ENV
+
+
+def add_clerks(fixture: QuickstartFixture, n: int) -> list[str]:
+ """``n`` synthetic clerk accounts, one per parallel browser."""
+
+ from benchmark.openemr_throughput.harness import add_clerks as add
+
+ return add(fixture, n)
+
+
+def seed_existing_chart(fixture: QuickstartFixture) -> int:
+ """Add the existing chart Act 3's referral matches; return the HTTP status."""
+
+ session = fixture.token_session("actor")
+ try:
+ return session.post(
+ f"{fixture.api_base_url}/apis/default/api/patient",
+ json=dict(existing_chart().fields),
+ ).status_code
+ finally:
+ session.close()
+
+
+def charts(fixture: QuickstartFixture) -> list[dict[str, str]]:
+ """Every chart in OpenEMR's database, read with SQL."""
+
+ out = fixture._db(
+ "SELECT " + ",".join(SQL_FIELDS) + " FROM openemr.patient_data ORDER BY id"
+ ).decode()
+ return [
+ {k: ("" if v == "NULL" else v) for k, v in zip(SQL_FIELDS, line.split("\t"))}
+ for line in out.splitlines()
+ ]
+
+
+def charts_for(fixture: QuickstartFixture, spec: Any) -> tuple[int, int]:
+ """(charts with this referral's email, fields matching when exactly one)."""
+
+ mine = [row for row in charts(fixture) if row.get("email") == spec.email]
+ fields = dict(spec.fields)
+ if len(mine) != 1:
+ return len(mine), 0
+ return 1, sum(1 for k, v in fields.items() if mine[0].get(k) == v)
+
+
+class _As:
+ """The fixture, signed in as another of its users (same password)."""
+
+ def __init__(self, fixture: QuickstartFixture, user: str) -> None:
+ self.ui_base_url = fixture.ui_base_url
+ self._values = {**fixture._runtime_values(), "OPENEMR_ACTOR_USER": user}
+
+ def _runtime_values(self) -> dict[str, str]:
+ return dict(self._values)
+
+
+class Session:
+ """One browser signed in to OpenEMR as one user, at a blank New Patient form."""
+
+ def __init__(
+ self, fixture: QuickstartFixture, user: str, *, headless: bool
+ ) -> None:
+ self.fixture = fixture
+ self.user = user
+ self.demo = load_demo()
+ self.backend, self._close = self.demo.OpenEMRPlaywrightBackend.launch(
+ fixture.ui_base_url, headless=headless
+ )
+ self._signed_in = False
+ self._polled = threading.Event()
+ self.backend.page.context.on("requestfinished", self._saw_request)
+ self.backend.page.context.on("requestfailed", self._saw_request)
+
+ def _saw_request(self, request: Any) -> None:
+ if BACKGROUND_POLL in request.url:
+ self._polled.set()
+
+ def sign_in(self) -> None:
+ """Sign in and wait out the tab shell's first background poll.
+
+ OpenEMR's tab shell posts ``execute_background_services.php`` ten
+ seconds after it loads, then every minute. A run that starts inside
+ that window meets an in-flight request at its first step, and on a
+ busy computer the readiness check gives up before it ends. Waiting
+ for the first poll (bounded), then for a quiet page, is part of
+ signing in.
+ """
+
+ if self._signed_in:
+ return
+ self.demo._preauthenticate_browser(self.backend, _As(self.fixture, self.user))
+ self._signed_in = True
+ deadline = time.monotonic() + SIGN_IN_POLL_WAIT_S
+ page = self.backend.page
+ while not self._polled.is_set() and time.monotonic() < deadline:
+ page.wait_for_timeout(250)
+ while time.monotonic() < deadline:
+ if self.backend.page_quiescent(0.5) is not False:
+ return
+ page.wait_for_timeout(250)
+
+ def open_form(self) -> None:
+ """Where the recording started: no chart open, a blank form."""
+
+ demo, page = self.demo, self.backend.page
+ if page.evaluate(
+ "() => !!(window.app_view_model && app_view_model.application_data.patient())"
+ ):
+ with page.expect_response(
+ lambda r: "unset_session_ajax.php" in r.url, timeout=30_000
+ ):
+ page.evaluate("() => clearPatient(false)")
+ page.wait_for_function(
+ "() => !app_view_model.application_data.patient()", timeout=30_000
+ )
+ try:
+ frame = demo._form_frame(page, timeout_s=5.0)
+ except fx.FixtureError:
+ frame = None
+ if frame is not None:
+ fname = frame.locator("#form_fname")
+ fname.wait_for(state="visible", timeout=60_000)
+ if fname.input_value() == "":
+ return
+ # A run that stopped part-way left this form filled in: load it
+ # again, inside the same tab shell.
+ frame.evaluate("() => window.location.reload()")
+ page.wait_for_timeout(500)
+ else:
+ page.evaluate(
+ "({path, name}) => { window.navigateTab(path, name); "
+ "window.activateTabByName(name, true); }",
+ {"path": demo.FORM_PATH, "name": demo.FORM_FRAME_NAME},
+ )
+ frame = demo._form_frame(page)
+ frame.locator("#form_fname").wait_for(state="visible", timeout=60_000)
+ if frame.locator("#form_fname").input_value() != "":
+ raise fx.FixtureError("the New Patient form was not blank")
+
+ def run(
+ self, workflow: Any, bundle: Path, key: str, run_dir: Path, *, trial: int = 1
+ ) -> dict[str, Any]:
+ """Run the program for one referral, as a certified run; return the facts.
+
+ The certified referral runs' own path (``certified_referrals``): the
+ Standard run gate on the certified bundle under ``clinical-write``,
+ the governed authorization built from it, durable runs, settled-state
+ detection, and verify.yaml's REST record check. The one difference is
+ the session: this clerk's browser, already signed in. The facts come
+ from the run's report and a SQL read of OpenEMR's database.
+ """
+
+ from openadapt_flow.plain_outcome import plain_result
+ from openadapt_flow.qualify.campaign import TrialContext, _run
+ from openadapt_flow.report import render_run_report
+ from openadapt_flow.run_gate import (
+ build_runtime_authorization,
+ evaluate_run_gate,
+ )
+
+ spec = referral(key)
+ params = {k: str(v) for k, v in spec.params().items()}
+ started = time.monotonic()
+ self.sign_in()
+ self.open_form()
+ env = certified_env()
+ hooks = dataclasses.replace(
+ env["hooks"], open_session=lambda: (self.backend, lambda: None)
+ )
+ ctx = TrialContext(
+ case_id="quickstart",
+ expected="VERIFIED",
+ oracle_kind="exact_record",
+ trial=trial,
+ trial_dir=run_dir,
+ run_dir=run_dir,
+ run_id=f"quickstart-openemr-{key}-{int(time.time())}",
+ params=params,
+ certified_run=True,
+ state={"policy": POLICY},
+ )
+ gate_seen: dict[str, Any] = {}
+
+ def authorize(_verifier: Any, gate_kwargs: dict[str, Any]) -> Any:
+ gate = evaluate_run_gate(workflow, **gate_kwargs)
+ gate_seen["gate"] = gate
+ if not gate.passed:
+ raise fx.FixtureError(
+ "the Standard run gate refused the referral program:\n"
+ + gate.render()
+ )
+ return build_runtime_authorization(workflow, gate, params=params)
+
+ report, _ = _run(
+ workflow=workflow,
+ bundle_dir=bundle,
+ config=env["config"],
+ hooks=hooks,
+ ctx=ctx,
+ setup=type("Setup", (), {"observer": None})(), # type: ignore[arg-type]
+ authorize=authorize,
+ fault_driver=None,
+ marks={"start": time.time()},
+ lookup=env["lookup"],
+ )
+ with contextlib.suppress(Exception):
+ render_run_report(run_dir)
+ found, matched = charts_for(self.fixture, spec)
+ envelope = getattr(report, "outcome_envelope", None)
+ required = int(envelope.required_contracts.effect) if envelope else 0
+ confirmed = int(envelope.passed_contracts.effect) if envelope else 0
+ halt = getattr(report, "halt", None)
+ return {
+ "key": key,
+ "name": f"{spec.fname} {spec.lname}",
+ "dob": spec.dob,
+ "run_dir": str(run_dir),
+ "execution_outcome": str(report.execution_outcome),
+ "transaction_outcome": report.transaction_outcome,
+ "execution_profile": getattr(report, "execution_profile", None),
+ "plain_label": plain_result(
+ report.transaction_outcome, report.execution_outcome
+ ).label,
+ "model_calls": int(report.model_calls),
+ "cost_usd": float(getattr(report, "est_model_cost_usd", 0.0) or 0.0),
+ "effects_required": required,
+ "effects_confirmed": confirmed,
+ "charts": found,
+ "fields_matched": matched,
+ "fields_total": len(dict(spec.fields)),
+ "halt_step": getattr(halt, "state_id", None) if halt else None,
+ "halt_reason": str(getattr(halt, "reason", "") or "") if halt else "",
+ "seconds": time.monotonic() - started,
+ }
+
+ def screenshot(self, path: Path) -> Optional[Path]:
+ try:
+ self.backend.page.screenshot(path=str(path))
+ except Exception: # noqa: BLE001 - the report still has the frame
+ return None
+ return path
+
+ def close(self) -> None:
+ self._close()
+
+
+def checked(facts: Mapping[str, Any]) -> bool:
+ """A referral the engine verified and SQL found exactly once, field for field."""
+
+ return (
+ facts["execution_outcome"] == "VERIFIED"
+ and facts["transaction_outcome"] == "VERIFIED"
+ and facts["effects_required"] > 0
+ and facts["effects_confirmed"] == facts["effects_required"]
+ and facts["charts"] == 1
+ and facts["fields_matched"] == facts["fields_total"]
+ )
+
+
+def main() -> int:
+ """Bring the quickstart's fixture up and print how (for timing it alone)."""
+
+ started = time.monotonic()
+ fixture = make_fixture()
+ how = bring_up(
+ fixture, lambda phase, detail: print(f"{phase}: {detail}", flush=True)
+ )
+ print(json.dumps({"how": how, "seconds": round(time.monotonic() - started, 1)}))
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/packages/flow/benchmark/openemr_local/referral_program/README.md b/packages/flow/benchmark/openemr_local/referral_program/README.md
new file mode 100644
index 000000000..189df59d5
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/README.md
@@ -0,0 +1,43 @@
+# The certified OpenEMR referral program
+
+The program `openadapt quickstart --app openemr` runs, and the demonstration
+it was compiled from. It's the same program behind the site's OpenEMR Seals
+(the r3 to r6 runs in
+[`benchmark/scoreboard/raw/openemr_referral/certified/2026-10-20/`](../../scoreboard/raw/openemr_referral/certified/2026-10-20/)).
+Every patient, address, phone number (555-01xx) and email
+(`example.invalid`) is made up.
+
+| File | What it is |
+| --- | --- |
+| `program/` | The compiled bundle, unchanged: 29 steps, content digest `ec096afa2b614326b00ec3155f256041c19d86f3998761ce9d772cfd911460b6` |
+| `demonstration.jsonl` | The recorded actions it was compiled from: one line per action, with its time, kind, field and typed value |
+
+## How it was made
+
+1. **Recorded** once on the local fixture with the scripted recorder in
+ `scripts/openemr_local_demo.py` (`record`), with network capture on. The
+ recording's tree hash is `243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894`,
+ the bundle's `recording_id`.
+2. **Compiled** with `compile_recording` from the same script, with
+ `drop_redundant_keys` and `pixel_verify_enabled`. That compile applies the
+ shared duplicate rule (`apply_referral_rules`): Create New Patient must
+ show OpenEMR's duplicate check with "No matches were found." before the
+ program confirms a new chart.
+3. **Qualified** with `openadapt-flow qualify --verify
+ benchmark/openemr_local/verify.yaml --certify clinical-write`: 6 of 6
+ cases, 3 trials each (representative VERIFIED; ambiguity, wrong identity,
+ stale identity, weak effect and missing effect each halted with no write),
+ plus 3 of 3 possible-duplicate trials halted before saving. The
+ qualification record is inside `program/workflow.json`.
+
+`demonstration.jsonl` is the recording's `events.jsonl` without its page
+URLs and titles: those held the recording session's sign-in token. The
+screenshots stay out of the repository.
+
+## Using it
+
+`benchmark/openemr_local/quickstart.py` copies `program/` into the
+quickstart's output folder and runs it through the certified run path (the
+Standard run gate under `clinical-write`, and verify.yaml's REST record
+check). Changing any file in `program/` changes its content digest, and
+`Workflow.load` refuses a bundle whose files don't match its manifest.
diff --git a/packages/flow/benchmark/openemr_local/referral_program/demonstration.jsonl b/packages/flow/benchmark/openemr_local/referral_program/demonstration.jsonl
new file mode 100644
index 000000000..d07d8bc3f
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/demonstration.jsonl
@@ -0,0 +1,41 @@
+{"i": 0, "t": 1.306, "kind": "click", "selector": "#form_title"}
+{"i": 1, "t": 2.104, "kind": "type", "param": "title", "text": "Ms.", "field_label": "form_title"}
+{"i": 2, "t": 2.855, "kind": "key", "key": "Enter"}
+{"i": 3, "t": 3.638, "kind": "click", "selector": "#form_fname"}
+{"i": 4, "t": 4.405, "kind": "key", "key": "Control+a"}
+{"i": 5, "t": 5.171, "kind": "type", "param": "fname", "text": "OpenAdapt", "field_label": "First Name"}
+{"i": 6, "t": 5.972, "kind": "click", "selector": "#form_lname"}
+{"i": 7, "t": 6.723, "kind": "key", "key": "Control+a"}
+{"i": 8, "t": 7.547, "kind": "type", "param": "lname", "text": "LoanParity", "field_label": "Last Name"}
+{"i": 9, "t": 8.907, "kind": "click", "selector": "#form_DOB"}
+{"i": 10, "t": 9.672, "kind": "key", "key": "Control+a"}
+{"i": 11, "t": 10.476, "kind": "type", "param": "DOB", "text": "1985-02-03", "field_label": "form_DOB"}
+{"i": 12, "t": 11.331, "kind": "click", "selector": "#form_sex"}
+{"i": 13, "t": 12.155, "kind": "type", "param": "sex", "text": "Female", "field_label": "form_sex"}
+{"i": 14, "t": 12.905, "kind": "key", "key": "Enter"}
+{"i": 15, "t": 13.67, "kind": "scroll", "dx": 0, "dy": 300}
+{"i": 16, "t": 14.855, "kind": "click", "name": "Contact"}
+{"i": 17, "t": 15.619, "kind": "scroll", "dx": 0, "dy": 600}
+{"i": 18, "t": 16.403, "kind": "click", "selector": "#form_street"}
+{"i": 19, "t": 17.153, "kind": "key", "key": "Control+a"}
+{"i": 20, "t": 17.954, "kind": "type", "param": "street", "text": "101 SYNTHETIC WAY", "field_label": "form_street"}
+{"i": 21, "t": 18.756, "kind": "click", "selector": "#form_city"}
+{"i": 22, "t": 19.504, "kind": "key", "key": "Control+a"}
+{"i": 23, "t": 20.344, "kind": "type", "param": "city", "text": "EXAMPLETON", "field_label": "form_city"}
+{"i": 24, "t": 21.286, "kind": "click", "selector": "#form_state"}
+{"i": 25, "t": 22.07, "kind": "type", "param": "state_label", "text": "Massachusetts", "field_label": "form_state"}
+{"i": 26, "t": 22.821, "kind": "key", "key": "Enter"}
+{"i": 27, "t": 23.622, "kind": "click", "selector": "#form_postal_code"}
+{"i": 28, "t": 24.37, "kind": "key", "key": "Control+a"}
+{"i": 29, "t": 25.156, "kind": "type", "param": "postal_code", "text": "02139", "field_label": "form_postal_code"}
+{"i": 30, "t": 26.32, "kind": "click", "selector": "#form_phone_home"}
+{"i": 31, "t": 27.093, "kind": "key", "key": "Control+a"}
+{"i": 32, "t": 27.905, "kind": "type", "param": "phone_home", "text": "555-0107", "field_label": "form_phone_home"}
+{"i": 33, "t": 29.136, "kind": "click", "selector": "#form_email"}
+{"i": 34, "t": 29.886, "kind": "key", "key": "Control+a"}
+{"i": 35, "t": 30.686, "kind": "type", "param": "email", "text": "openadapt.loan-parity@example.invalid", "field_label": "form_email"}
+{"i": 36, "t": 31.471, "kind": "click", "selector": "#form_country_code"}
+{"i": 37, "t": 32.237, "kind": "type", "param": "country_code", "text": "USA", "field_label": "form_country_code"}
+{"i": 38, "t": 32.985, "kind": "key", "key": "Enter"}
+{"i": 39, "t": 34.503, "kind": "click", "selector": "#create"}
+{"i": 40, "t": 36.805, "kind": "click", "selector": "#confirmCreate", "name": "Create New Patient"}
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/api_proposal.json b/packages/flow/benchmark/openemr_local/referral_program/program/api_proposal.json
new file mode 100644
index 000000000..595627afc
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/api_proposal.json
@@ -0,0 +1,7 @@
+{
+ "proposed": false,
+ "step": null,
+ "reasons": [
+ "the page that serves the form is not in the capture; start recording before opening it"
+ ]
+}
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/benchmark-contract.json b/packages/flow/benchmark/openemr_local/referral_program/program/benchmark-contract.json
new file mode 100644
index 000000000..06a1c7e73
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/benchmark-contract.json
@@ -0,0 +1,22 @@
+{
+ "effects_sha256": "50f848801002c21c5e8ee57459c838a42c1db9c8a6d6063bfe095a6d6ca0a76b",
+ "marker_sha256": "7180c24064c8c02851229f9cd684a3985ddb800eda491b3c20e81d863b740540",
+ "required_params": [
+ "DOB",
+ "city",
+ "country_code",
+ "email",
+ "fname",
+ "lname",
+ "phone_home",
+ "postal_code",
+ "sex",
+ "state_label",
+ "street",
+ "title"
+ ],
+ "save_step_id": "step_040",
+ "schema_version": 1,
+ "source_recording_sha256": "243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894",
+ "workflow_name": "openemr-create-synthetic-patient"
+}
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/compile_notes.json b/packages/flow/benchmark/openemr_local/referral_program/program/compile_notes.json
new file mode 100644
index 000000000..a4b3c1ca5
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/compile_notes.json
@@ -0,0 +1,151 @@
+{
+ "schema": "openadapt.compile-notes/v1",
+ "note": "Changes the default compiler passes made to demonstrated gestures. Each replaces a gesture that asserted nothing with an equivalent one that carries its own check.",
+ "changes": [
+ {
+ "change": "drop_select_commit_enter",
+ "step": "step_002",
+ "evidence": "structural role combobox, then TYPE, then Enter",
+ "selector": "#form_title"
+ },
+ {
+ "change": "drop_select_commit_enter",
+ "step": "step_014",
+ "evidence": "structural role combobox, then TYPE, then Enter",
+ "selector": "#form_sex"
+ },
+ {
+ "change": "drop_select_commit_enter",
+ "step": "step_026",
+ "evidence": "structural role combobox, then TYPE, then Enter",
+ "selector": "#form_state"
+ },
+ {
+ "change": "drop_select_commit_enter",
+ "step": "step_038",
+ "evidence": "structural role combobox, then TYPE, then Enter",
+ "selector": "#form_country_code"
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_004",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 364,
+ 296,
+ 160,
+ 50
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_007",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 591,
+ 285,
+ 160,
+ 61
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_010",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 347,
+ 398,
+ 160,
+ 64
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_019",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 399,
+ 128,
+ 160,
+ 64
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_022",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 364,
+ 172,
+ 160,
+ 55
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_028",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 340,
+ 207,
+ 160,
+ 59
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_031",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 382,
+ 315,
+ 160,
+ 64
+ ]
+ },
+ {
+ "change": "drop_select_all_on_empty_field",
+ "step": "step_034",
+ "evidence": "Ctrl+A changed no pixel in the clicked field box",
+ "region": [
+ 955,
+ 350,
+ 160,
+ 64
+ ]
+ },
+ {
+ "change": "static_control_identifier_crop",
+ "step": "step_016",
+ "evidence": "structural role button with no identity evidence",
+ "region": [
+ 554,
+ 473,
+ 160,
+ 64
+ ]
+ },
+ {
+ "change": "focused_field_region_stable",
+ "step": "step_027",
+ "evidence": "structural field role",
+ "region": [
+ 340,
+ 207,
+ 160,
+ 59
+ ]
+ },
+ {
+ "change": "focused_field_region_stable",
+ "step": "step_036",
+ "evidence": "structural field role",
+ "region": [
+ 937,
+ 210,
+ 160,
+ 56
+ ]
+ }
+ ]
+}
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/manifest.json b/packages/flow/benchmark/openemr_local/referral_program/program/manifest.json
new file mode 100644
index 000000000..35d80cabc
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/manifest.json
@@ -0,0 +1,262 @@
+{
+ "schema_version": 2,
+ "content_digest": "ec096afa2b614326b00ec3155f256041c19d86f3998761ce9d772cfd911460b6",
+ "file_hashes": {
+ "templates/identifiers/step_016.png": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "templates/layout_fingerprint.json": "d7727e415947aa17cb2fa007be88f5cd1e56b9e913a64354f61c62b580459e0a",
+ "templates/step_000.png": "d7a431d729f4d525993bf1eb95bb66ad63f8a486d858a2e44666301d70b93011",
+ "templates/step_000_expect.png": "054fe016774a313989c92f999615bbf1f9c0bf6cf105a4ef8e1446fa290015d9",
+ "templates/step_003.png": "dce5569d4b131c367fe623aa1d6ed9526c12c1dbf7cc221c8efa8f237ea95a9b",
+ "templates/step_003_expect.png": "087fbc35f6f04062e7f557deea1c840d80623ae56998cd5f58de6c4aedf3b70a",
+ "templates/step_006.png": "bd23dd90a29b84df5589a7476448966a7710bf47074b727f313491da7158c98d",
+ "templates/step_006_expect.png": "7cb7eeda6806270a30bfd093255fd401cc3b20935f2435b8543af2b961b747fc",
+ "templates/step_009.png": "517c77489043a2dd9ac5bb089144dff4b3a112a7e34037aad40d1f9751aee85e",
+ "templates/step_009_expect.png": "ec0b79d0367c4958939efeb76ca5f20c6493ae71b1cd3fb3ad4d36be07159adc",
+ "templates/step_012.png": "ac4efcf5feba028428c2b253a582edb0af6471791520169a0de9baa0070c025c",
+ "templates/step_012_expect.png": "df173d42b500650f81d0871716a9efd38214140c4888122d6c3f64b33f1d5c28",
+ "templates/step_016.png": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "templates/step_016_expect.png": "ce1cea546632622f1619810362446214fec79590a4ee5553a26f4ec197627107",
+ "templates/step_018.png": "84a5d61734af83336cac971cca1adb5bd76c56faef578b352528b177eb6557b3",
+ "templates/step_018_expect.png": "b325a8bc335bded3f3cf7b47830e0a24ebbaf08062de554fb5d5da63a56db05f",
+ "templates/step_021.png": "e9607624e6649bdb1548772a3e9e4577f5112d99ac962e3f8c77b44b80a356ef",
+ "templates/step_021_expect.png": "372a6705999c77fb3ceb959c616f5a40536e485b73eacf1756426581ddce67b6",
+ "templates/step_024.png": "3b8449493928ef24a570e1d7ac65b5b25584c8b3cd68eba071af842bfbae9399",
+ "templates/step_024_expect.png": "278236d24d497fe78a87483c8d60bd3fe9c926bdfad310630b58cff790a7ae91",
+ "templates/step_027.png": "014571a3a093215ed0ec9b812b1eb66efc274116d2be529d736a37301b92a95f",
+ "templates/step_027_expect.png": "5f1ea1d1b03efa9d0812b6d21155117cbfb75b47f6b643815a7041759529b0f6",
+ "templates/step_030.png": "0e551c8fa8f8e2eb4cfef0ccef68c35862e8a3c1dd6e654ec0185edcab047b28",
+ "templates/step_030_expect.png": "1b71bfe520e1b6c8a1d41b990bca4f2f6dd5e15a4bf931595917894ad56d1c46",
+ "templates/step_033.png": "28ee56d03479ba76a938532854fbca55bab26ed8ba738b9a44185f4db04368aa",
+ "templates/step_033_expect.png": "298a1691c7832c2eeb29e00a15457b005b5222f304d6c41530cfc2dc91cbc36c",
+ "templates/step_036.png": "3e21d6500e80bd6ce8c56f1dfc23e6de983e48e4835f341d7a59149049771673",
+ "templates/step_036_expect.png": "221dc30b588ef26b60326197e8ec510a84dc007201d57103c0100d9f06e5d641",
+ "templates/step_039.png": "01bd72ded2316233b66af4e50b63bdf54c3f2ca12d5aac2a5462a88893f30b43",
+ "templates/step_039_expect.png": "8782f2d5377eec7fbddbd9b0657f283207254be7eaa415d3204f10cdb13fdcb4",
+ "templates/step_040.png": "22dd0ae0fba63fbcaf4222de690199ef88fa71a386a186db9c03b813f981aa87",
+ "templates/step_040_expect.png": "194dcc5ba50edcfb2d4a5fb8a6e9ca1d6669654147c9f990715572992ddf8a6c"
+ },
+ "provenance": {
+ "compiler_version": "2.2.0",
+ "source_recording_sha256": "243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894",
+ "compiler_config_sha256": "a40fa088af6e27af7555bd066b216ac2b73da101e6e228470fb2dd994d754efd",
+ "created_at": "2026-10-20T02:34:27.692587+00:00",
+ "policy_name": "clinical-write",
+ "certified": true,
+ "certification_status": "certified",
+ "certified_at": "2026-10-20T02:56:35.080875+00:00",
+ "expires_at": null,
+ "certification_invalidated_at": null,
+ "certification_invalidation_reason": null,
+ "governed_authorization_template": {
+ "schema_version": "openadapt.governed-authorization-template/v1",
+ "bundle_content_digest": "ec096afa2b614326b00ec3155f256041c19d86f3998761ce9d772cfd911460b6",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "qualification_project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "qualification_project_revision": 51,
+ "qualification_project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "qualification_environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "qualification_report_sha256": "679cb95559a88b86ec4541c2e0b826699da17d4e0774745c1e930562b7b96463",
+ "qualification_case_evidence_contract_sha256": "8343336b83784d2904667591334a239cb2cc5f9b1d0d6fcb4c8564f698a144db",
+ "policy_name": "clinical-write",
+ "policy_contract_sha256": "f35a6a94b3f2787165f071ce8571de07095169b9632d394e9df719b35da52c0f",
+ "execution_profile": "standard",
+ "minimum_effect_tier": 1,
+ "qualified_effect_requirements": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 0,
+ "effect_contract_hash": "sha256:f64985856097097954250be6523fa260daf9fc5db495671c2548ead9a388577b",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 1,
+ "effect_contract_hash": "sha256:206d1d6fc27df6f24c02bb6b6f4419e0612e7935ec7e744fc8cc446f54558385",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 2,
+ "effect_contract_hash": "sha256:8f295459bdd868daf117ca9f77dd948cdc2c8c034a65184cb5418ccfab7f60e7",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 3,
+ "effect_contract_hash": "sha256:52c6884d06d82c4ccc14600150f2890bcd25d92cb7eb26bc53ef54033075ba3c",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 4,
+ "effect_contract_hash": "sha256:7732675a6e6123c0c3f51512496f695fa4ce503ab989993c520fb8a469bbdc3d",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 5,
+ "effect_contract_hash": "sha256:598fb97e12d3c0b537f0453e7fdaad453b969e249e888424e67fcd85a06741f0",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 6,
+ "effect_contract_hash": "sha256:ba109cf90077d7b20a37c2848fa7bee8ea0039747a5ae47465617b2ea1039a2b",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 7,
+ "effect_contract_hash": "sha256:f508b7fd1536726db75a0814fc439c65dbd6c0b637a7b619855c73a571bcfca9",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 8,
+ "effect_contract_hash": "sha256:b311b51ece1670a60f793b29aa3d28d40da196ffbcd26f2fdd620e380dedf97a",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 9,
+ "effect_contract_hash": "sha256:a33cf54165b96ce6d48014e6e68bac94cdc8f9c9176bae6f5c955123d20683c2",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 10,
+ "effect_contract_hash": "sha256:d2516eb0f6aa365b812e84fd754127d053d8e0b1a4b349a0b8ce71936bcec199",
+ "minimum_tier": 1
+ }
+ ],
+ "required_identity_step_ids": [
+ "step_040"
+ ],
+ "identity_contract_sha256": "44f51284a45d149f9a7c9a034feab055eded47b89eb3910609c215005205f424",
+ "parameters": [
+ {
+ "name": "DOB",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "city",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "country_code",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "email",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "fname",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "lname",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "phone_home",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "postal_code",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "sex",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "state_label",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "street",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "title",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ }
+ ],
+ "parameter_contract_sha256": "2a19e2c3ea6e0644cfe9a842aea8c53e036d18bed254b100cf23c88ea090d603",
+ "template_sha256": "074ac60fe06d201b0083c921b6c24b1d1b83b63b2b91cb140d55e319251d86cb"
+ }
+ },
+ "encrypted": false
+}
\ No newline at end of file
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/param_hygiene.json b/packages/flow/benchmark/openemr_local/referral_program/program/param_hygiene.json
new file mode 100644
index 000000000..6bc3f42af
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/param_hygiene.json
@@ -0,0 +1,25 @@
+{
+ "note": "REGION_STABLE postconditions dropped because the changed region rendered a demonstrated parameter value. These steps carry no pixel-region invariant; add an effect assertion if the step needs one. Matched text is masked.",
+ "dropped_region_stable": [
+ {
+ "step_id": "step_027",
+ "region": [
+ 885,
+ 146,
+ 265,
+ 99
+ ],
+ "matched_text": "Ma**************************pp"
+ },
+ {
+ "step_id": "step_036",
+ "region": [
+ 885,
+ 333,
+ 302,
+ 99
+ ],
+ "matched_text": "op****************************in"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/identifiers/step_016.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/identifiers/step_016.png
new file mode 100644
index 000000000..9ad632eb8
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/identifiers/step_016.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/layout_fingerprint.json b/packages/flow/benchmark/openemr_local/referral_program/program/templates/layout_fingerprint.json
new file mode 100644
index 000000000..b10ee1c56
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/templates/layout_fingerprint.json
@@ -0,0 +1,2914 @@
+{
+ "scale_landmarks": {
+ "salt": "012f6509e0e82749e36d064a5e96317f",
+ "steps": {
+ "step_000": [
+ [
+ "e6a563a41f7ff7f2",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 300,
+ 21
+ ],
+ [
+ "38b441cc77f9503f",
+ 424.0,
+ 319.0,
+ 76,
+ 20
+ ],
+ [
+ "3c9c2b4574476f73",
+ 632.5,
+ 318.0,
+ 75,
+ 22
+ ],
+ [
+ "f3fa42bb307e7a8e",
+ 170.5,
+ 352.0,
+ 123,
+ 20
+ ],
+ [
+ "c1fd9860d1095746",
+ 505.0,
+ 358.0,
+ 236,
+ 20
+ ],
+ [
+ "86b48fef274929d1",
+ 153.5,
+ 387.5,
+ 91,
+ 23
+ ],
+ [
+ "a0778c38341cc97c",
+ 440.5,
+ 393.0,
+ 107,
+ 20
+ ],
+ [
+ "751ccb168d81049a",
+ 649.0,
+ 393.0,
+ 106,
+ 20
+ ],
+ [
+ "b16014cb33089bdc",
+ 684.0,
+ 425.0,
+ 76,
+ 22
+ ],
+ [
+ "aa125cc68293af51",
+ 168.0,
+ 461.5,
+ 120,
+ 25
+ ],
+ [
+ "f6c33aeef5c9d975",
+ 179.5,
+ 496.5,
+ 143,
+ 23
+ ],
+ [
+ "7133755b1b467edf",
+ 686.0,
+ 497.5,
+ 82,
+ 27
+ ],
+ [
+ "fccf77f0e4ecf7a8",
+ 153.0,
+ 531.5,
+ 90,
+ 23
+ ],
+ [
+ "fc544683fb8a9147",
+ 150.0,
+ 566.5,
+ 88,
+ 23
+ ],
+ [
+ "c30db2fac1d41190",
+ 700.5,
+ 566.5,
+ 109,
+ 23
+ ],
+ [
+ "9e31646f30d3ff8c",
+ 160.5,
+ 601.5,
+ 105,
+ 23
+ ],
+ [
+ "9d0cd43d650b674b",
+ 153.5,
+ 641.0,
+ 93,
+ 26
+ ],
+ [
+ "5d1559267ea9930b",
+ 172.0,
+ 675.5,
+ 128,
+ 23
+ ],
+ [
+ "981158554b6be9da",
+ 132.5,
+ 787.0,
+ 63,
+ 24
+ ]
+ ],
+ "step_003": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 31.0,
+ 910,
+ 22
+ ],
+ [
+ "e6a563a41f7ff7f2",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 300,
+ 21
+ ],
+ [
+ "38b441cc77f9503f",
+ 424.0,
+ 319.0,
+ 76,
+ 20
+ ],
+ [
+ "3c9c2b4574476f73",
+ 632.5,
+ 318.0,
+ 75,
+ 22
+ ],
+ [
+ "f3fa42bb307e7a8e",
+ 170.5,
+ 352.0,
+ 123,
+ 20
+ ],
+ [
+ "c1fd9860d1095746",
+ 505.0,
+ 358.0,
+ 236,
+ 20
+ ],
+ [
+ "86b48fef274929d1",
+ 153.5,
+ 387.5,
+ 91,
+ 23
+ ],
+ [
+ "a0778c38341cc97c",
+ 440.5,
+ 393.0,
+ 107,
+ 20
+ ],
+ [
+ "751ccb168d81049a",
+ 649.0,
+ 393.0,
+ 106,
+ 20
+ ],
+ [
+ "b16014cb33089bdc",
+ 684.0,
+ 425.0,
+ 76,
+ 22
+ ],
+ [
+ "aa125cc68293af51",
+ 168.0,
+ 461.5,
+ 120,
+ 25
+ ],
+ [
+ "f6c33aeef5c9d975",
+ 179.0,
+ 496.5,
+ 144,
+ 25
+ ],
+ [
+ "7133755b1b467edf",
+ 686.0,
+ 497.5,
+ 82,
+ 27
+ ],
+ [
+ "fccf77f0e4ecf7a8",
+ 153.0,
+ 531.5,
+ 90,
+ 23
+ ],
+ [
+ "fc544683fb8a9147",
+ 150.0,
+ 566.5,
+ 88,
+ 23
+ ],
+ [
+ "c30db2fac1d41190",
+ 700.5,
+ 566.5,
+ 109,
+ 23
+ ],
+ [
+ "9e31646f30d3ff8c",
+ 160.5,
+ 601.5,
+ 105,
+ 23
+ ],
+ [
+ "9d0cd43d650b674b",
+ 153.5,
+ 641.0,
+ 93,
+ 26
+ ],
+ [
+ "5d1559267ea9930b",
+ 172.0,
+ 675.5,
+ 128,
+ 23
+ ],
+ [
+ "981158554b6be9da",
+ 132.5,
+ 787.0,
+ 63,
+ 24
+ ]
+ ],
+ "step_006": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 31.0,
+ 910,
+ 22
+ ],
+ [
+ "e6a563a41f7ff7f2",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 300,
+ 21
+ ],
+ [
+ "3c9c2b4574476f73",
+ 632.5,
+ 318.0,
+ 75,
+ 22
+ ],
+ [
+ "f3fa42bb307e7a8e",
+ 170.5,
+ 352.0,
+ 123,
+ 20
+ ],
+ [
+ "c1fd9860d1095746",
+ 505.0,
+ 358.0,
+ 236,
+ 20
+ ],
+ [
+ "86b48fef274929d1",
+ 153.5,
+ 387.5,
+ 91,
+ 23
+ ],
+ [
+ "a0778c38341cc97c",
+ 440.5,
+ 393.0,
+ 107,
+ 20
+ ],
+ [
+ "751ccb168d81049a",
+ 649.0,
+ 393.0,
+ 106,
+ 20
+ ],
+ [
+ "b16014cb33089bdc",
+ 684.0,
+ 425.0,
+ 76,
+ 22
+ ],
+ [
+ "aa125cc68293af51",
+ 168.0,
+ 461.5,
+ 120,
+ 25
+ ],
+ [
+ "f6c33aeef5c9d975",
+ 179.0,
+ 496.5,
+ 144,
+ 25
+ ],
+ [
+ "7133755b1b467edf",
+ 686.0,
+ 497.5,
+ 82,
+ 27
+ ],
+ [
+ "fccf77f0e4ecf7a8",
+ 153.0,
+ 531.5,
+ 90,
+ 23
+ ],
+ [
+ "fc544683fb8a9147",
+ 150.0,
+ 566.5,
+ 88,
+ 23
+ ],
+ [
+ "c30db2fac1d41190",
+ 700.5,
+ 566.5,
+ 109,
+ 23
+ ],
+ [
+ "9e31646f30d3ff8c",
+ 160.5,
+ 601.5,
+ 105,
+ 23
+ ],
+ [
+ "9d0cd43d650b674b",
+ 153.5,
+ 641.0,
+ 93,
+ 26
+ ],
+ [
+ "5d1559267ea9930b",
+ 172.0,
+ 675.5,
+ 128,
+ 23
+ ],
+ [
+ "981158554b6be9da",
+ 132.5,
+ 787.0,
+ 63,
+ 24
+ ]
+ ],
+ "step_009": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 31.0,
+ 910,
+ 22
+ ],
+ [
+ "e6a563a41f7ff7f2",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 300,
+ 21
+ ],
+ [
+ "f3fa42bb307e7a8e",
+ 170.5,
+ 352.0,
+ 123,
+ 20
+ ],
+ [
+ "c1fd9860d1095746",
+ 505.0,
+ 358.0,
+ 236,
+ 20
+ ],
+ [
+ "86b48fef274929d1",
+ 153.5,
+ 387.5,
+ 91,
+ 23
+ ],
+ [
+ "a0778c38341cc97c",
+ 440.0,
+ 392.0,
+ 108,
+ 22
+ ],
+ [
+ "751ccb168d81049a",
+ 649.0,
+ 393.0,
+ 106,
+ 20
+ ],
+ [
+ "b16014cb33089bdc",
+ 684.0,
+ 425.0,
+ 76,
+ 22
+ ],
+ [
+ "aa125cc68293af51",
+ 168.0,
+ 461.5,
+ 120,
+ 25
+ ],
+ [
+ "f6c33aeef5c9d975",
+ 179.0,
+ 496.5,
+ 144,
+ 25
+ ],
+ [
+ "7133755b1b467edf",
+ 686.0,
+ 497.5,
+ 82,
+ 27
+ ],
+ [
+ "fccf77f0e4ecf7a8",
+ 153.0,
+ 531.5,
+ 90,
+ 23
+ ],
+ [
+ "fc544683fb8a9147",
+ 150.0,
+ 566.5,
+ 88,
+ 23
+ ],
+ [
+ "c30db2fac1d41190",
+ 700.5,
+ 566.5,
+ 109,
+ 23
+ ],
+ [
+ "9e31646f30d3ff8c",
+ 160.5,
+ 601.5,
+ 105,
+ 23
+ ],
+ [
+ "9d0cd43d650b674b",
+ 153.5,
+ 641.0,
+ 93,
+ 26
+ ],
+ [
+ "5d1559267ea9930b",
+ 172.0,
+ 675.5,
+ 128,
+ 23
+ ],
+ [
+ "981158554b6be9da",
+ 132.5,
+ 787.0,
+ 63,
+ 24
+ ]
+ ],
+ "step_012": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 31.0,
+ 910,
+ 22
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 300,
+ 21
+ ],
+ [
+ "f3fa42bb307e7a8e",
+ 170.5,
+ 353.0,
+ 123,
+ 20
+ ],
+ [
+ "c1fd9860d1095746",
+ 505.0,
+ 357.0,
+ 236,
+ 20
+ ],
+ [
+ "86b48fef274929d1",
+ 153.5,
+ 387.5,
+ 91,
+ 23
+ ],
+ [
+ "a0778c38341cc97c",
+ 440.0,
+ 392.0,
+ 108,
+ 22
+ ],
+ [
+ "751ccb168d81049a",
+ 648.5,
+ 392.0,
+ 107,
+ 22
+ ],
+ [
+ "b16014cb33089bdc",
+ 684.0,
+ 425.0,
+ 76,
+ 22
+ ],
+ [
+ "aa125cc68293af51",
+ 168.0,
+ 461.5,
+ 120,
+ 25
+ ],
+ [
+ "bc55103af484362f",
+ 526.0,
+ 463.5,
+ 118,
+ 17
+ ],
+ [
+ "f6c33aeef5c9d975",
+ 179.0,
+ 496.5,
+ 144,
+ 25
+ ],
+ [
+ "7133755b1b467edf",
+ 686.0,
+ 497.0,
+ 80,
+ 24
+ ],
+ [
+ "fccf77f0e4ecf7a8",
+ 153.0,
+ 531.5,
+ 90,
+ 23
+ ],
+ [
+ "fc544683fb8a9147",
+ 150.0,
+ 566.5,
+ 88,
+ 23
+ ],
+ [
+ "c30db2fac1d41190",
+ 700.5,
+ 566.5,
+ 109,
+ 23
+ ],
+ [
+ "9e31646f30d3ff8c",
+ 160.0,
+ 601.5,
+ 106,
+ 23
+ ],
+ [
+ "9d0cd43d650b674b",
+ 153.5,
+ 641.0,
+ 93,
+ 26
+ ],
+ [
+ "5d1559267ea9930b",
+ 172.5,
+ 675.5,
+ 129,
+ 23
+ ],
+ [
+ "981158554b6be9da",
+ 132.5,
+ 787.0,
+ 63,
+ 24
+ ]
+ ],
+ "step_016": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "e6a563a41f7ff7f2",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 300,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 465.5,
+ 126.5,
+ 191,
+ 17
+ ],
+ [
+ "d7572869fcd4c0f4",
+ 426.5,
+ 152.5,
+ 79,
+ 17
+ ],
+ [
+ "aa125cc68293af51",
+ 168.0,
+ 180.5,
+ 122,
+ 25
+ ],
+ [
+ "f6c33aeef5c9d975",
+ 179.0,
+ 215.5,
+ 142,
+ 23
+ ],
+ [
+ "7133755b1b467edf",
+ 686.5,
+ 216.5,
+ 79,
+ 21
+ ],
+ [
+ "fccf77f0e4ecf7a8",
+ 153.5,
+ 250.5,
+ 89,
+ 21
+ ],
+ [
+ "fc544683fb8a9147",
+ 151.0,
+ 285.5,
+ 86,
+ 21
+ ],
+ [
+ "c30db2fac1d41190",
+ 701.0,
+ 286.0,
+ 108,
+ 20
+ ],
+ [
+ "9e31646f30d3ff8c",
+ 160.5,
+ 320.5,
+ 105,
+ 23
+ ],
+ [
+ "9d0cd43d650b674b",
+ 153.5,
+ 360.0,
+ 93,
+ 26
+ ],
+ [
+ "5d1559267ea9930b",
+ 172.5,
+ 395.0,
+ 127,
+ 20
+ ],
+ [
+ "981158554b6be9da",
+ 132.5,
+ 505.5,
+ 63,
+ 23
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 547.0,
+ 65,
+ 24
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_018": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 187.0,
+ 125.5,
+ 304,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 465.5,
+ 126.5,
+ 191,
+ 17
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.0,
+ 69,
+ 26
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 706.5,
+ 269.5,
+ 121,
+ 25
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.5,
+ 378.5,
+ 109,
+ 23
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 181.0,
+ 462.5,
+ 136,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_021": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 185.5,
+ 125.5,
+ 301,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.5,
+ 127.0,
+ 151,
+ 20
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.5,
+ 69,
+ 27
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 707.0,
+ 270.0,
+ 120,
+ 20
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 110,
+ 25
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 181.0,
+ 462.5,
+ 136,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_024": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "e6a563a41f7ff7f2",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 186.0,
+ 125.5,
+ 302,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.0,
+ 127.0,
+ 150,
+ 20
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.5,
+ 69,
+ 27
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 706.5,
+ 269.5,
+ 121,
+ 25
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 108,
+ 25
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 181.0,
+ 462.5,
+ 136,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_027": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 185.5,
+ 125.5,
+ 301,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.0,
+ 126.5,
+ 148,
+ 17
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.5,
+ 69,
+ 27
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 706.5,
+ 269.5,
+ 121,
+ 25
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 108,
+ 25
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 181.0,
+ 462.5,
+ 136,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_030": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 185.5,
+ 125.5,
+ 301,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.0,
+ 126.5,
+ 148,
+ 17
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.5,
+ 69,
+ 27
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 706.5,
+ 269.5,
+ 121,
+ 25
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 108,
+ 25
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 181.0,
+ 462.5,
+ 136,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_033": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 185.5,
+ 125.5,
+ 301,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.5,
+ 126.5,
+ 149,
+ 17
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.0,
+ 69,
+ 26
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 707.0,
+ 270.0,
+ 120,
+ 20
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 108,
+ 25
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 181.0,
+ 462.5,
+ 136,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 710.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_036": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 185.5,
+ 125.5,
+ 301,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.5,
+ 126.5,
+ 149,
+ 17
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.0,
+ 69,
+ 26
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "1966373c53a5e53a",
+ 706.5,
+ 269.5,
+ 121,
+ 25
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 108,
+ 23
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 180.5,
+ 462.5,
+ 137,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 711.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_039": [
+ [
+ "5d75012daf614d82",
+ 504.0,
+ 30.5,
+ 910,
+ 21
+ ],
+ [
+ "168adbfb7d2d48b9",
+ 1056.5,
+ 32.0,
+ 153,
+ 20
+ ],
+ [
+ "9337756da4138906",
+ 185.5,
+ 125.5,
+ 301,
+ 21
+ ],
+ [
+ "9c8c45530dc94d6a",
+ 444.5,
+ 126.5,
+ 149,
+ 17
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "f8f9528a9fe385a5",
+ 706.0,
+ 157.0,
+ 116,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "f329c8b460accfb9",
+ 670.5,
+ 192.0,
+ 51,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 157.0,
+ 231.0,
+ 98,
+ 20
+ ],
+ [
+ "ee3677efe8c70157",
+ 680.5,
+ 231.0,
+ 69,
+ 26
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "4ab15f283ae4e3bb",
+ 431.0,
+ 275.5,
+ 78,
+ 21
+ ],
+ [
+ "1966373c53a5e53a",
+ 706.5,
+ 269.5,
+ 121,
+ 25
+ ],
+ [
+ "1d0ef0194a2f7704",
+ 183.5,
+ 308.5,
+ 151,
+ 25
+ ],
+ [
+ "e1f015cc98df0983",
+ 717.0,
+ 308.0,
+ 140,
+ 20
+ ],
+ [
+ "52f7e24847d800b6",
+ 160.0,
+ 343.5,
+ 104,
+ 23
+ ],
+ [
+ "2ab7729aa68f6d83",
+ 696.0,
+ 343.0,
+ 100,
+ 26
+ ],
+ [
+ "db019276a72b1ea5",
+ 162.0,
+ 378.5,
+ 108,
+ 23
+ ],
+ [
+ "718ecc2d878d965c",
+ 702.0,
+ 378.5,
+ 110,
+ 23
+ ],
+ [
+ "531d97c59d0a0007",
+ 163.0,
+ 414.0,
+ 108,
+ 20
+ ],
+ [
+ "4d87b462cbd40ebb",
+ 180.5,
+ 462.5,
+ 137,
+ 19
+ ],
+ [
+ "df35fb9e5e069440",
+ 1088.0,
+ 464.0,
+ 116,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 43,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 25
+ ],
+ [
+ "b6b771df259caa31",
+ 138.0,
+ 588.5,
+ 76,
+ 27
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.5,
+ 43,
+ 23
+ ],
+ [
+ "03163deaa1c82552",
+ 132.5,
+ 711.0,
+ 61,
+ 20
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ],
+ "step_040": [
+ [
+ "2d609c54e30e7f2f",
+ 127.0,
+ 30.5,
+ 150,
+ 17
+ ],
+ [
+ "43279a24ae50b77e",
+ 1103.5,
+ 33.0,
+ 59,
+ 20
+ ],
+ [
+ "f02204ea463723a8",
+ 1025.5,
+ 60.0,
+ 65,
+ 20
+ ],
+ [
+ "7e3b121b4ec18324",
+ 106.0,
+ 126.5,
+ 138,
+ 17
+ ],
+ [
+ "ea58ee73ce79d870",
+ 559.5,
+ 121.5,
+ 57,
+ 17
+ ],
+ [
+ "5fe3d3c923805f9a",
+ 910.5,
+ 121.5,
+ 51,
+ 17
+ ],
+ [
+ "2a34a72e9f8a7865",
+ 993.5,
+ 121.5,
+ 55,
+ 19
+ ],
+ [
+ "649147251c6c65e3",
+ 238.0,
+ 138.0,
+ 30,
+ 18
+ ],
+ [
+ "248bc0403e27ced8",
+ 988.0,
+ 138.0,
+ 46,
+ 20
+ ],
+ [
+ "970f1aa1fffa9af3",
+ 143.0,
+ 157.0,
+ 70,
+ 20
+ ],
+ [
+ "07393f1c1ab28853",
+ 127.5,
+ 192.5,
+ 43,
+ 27
+ ],
+ [
+ "7cd384290d5e961a",
+ 305.0,
+ 183.0,
+ 162,
+ 26
+ ],
+ [
+ "05fe958e3b2c5238",
+ 254.0,
+ 208.0,
+ 62,
+ 24
+ ],
+ [
+ "f9394c522d837471",
+ 156.0,
+ 231.0,
+ 94,
+ 20
+ ],
+ [
+ "1c67ee3e08858fac",
+ 138.5,
+ 270.0,
+ 63,
+ 24
+ ],
+ [
+ "5cecbedb1bc5fe43",
+ 600.5,
+ 280.0,
+ 207,
+ 24
+ ],
+ [
+ "bf9783d9e97c26ce",
+ 756.0,
+ 280.0,
+ 58,
+ 24
+ ],
+ [
+ "16e8d4dc975015e4",
+ 157.5,
+ 309.5,
+ 101,
+ 27
+ ],
+ [
+ "52f7e24847d800b6",
+ 157.5,
+ 343.5,
+ 99,
+ 23
+ ],
+ [
+ "db019276a72b1ea5",
+ 156.5,
+ 378.5,
+ 97,
+ 23
+ ],
+ [
+ "9733a4ae9469d443",
+ 1113.0,
+ 385.0,
+ 74,
+ 20
+ ],
+ [
+ "957380e91fb9316d",
+ 157.0,
+ 414.0,
+ 96,
+ 20
+ ],
+ [
+ "173b55f2af94d353",
+ 159.0,
+ 463.5,
+ 92,
+ 17
+ ],
+ [
+ "4935da62cb10b630",
+ 1111.5,
+ 464.0,
+ 71,
+ 20
+ ],
+ [
+ "2d6ae7a1ff310960",
+ 133.5,
+ 488.0,
+ 45,
+ 18
+ ],
+ [
+ "7fd84f520997cf7d",
+ 133.5,
+ 546.5,
+ 65,
+ 23
+ ],
+ [
+ "b6b771df259caa31",
+ 138.5,
+ 588.5,
+ 73,
+ 21
+ ],
+ [
+ "1d43db84ffaec54e",
+ 122.5,
+ 629.0,
+ 45,
+ 24
+ ],
+ [
+ "59f0aadb9257fd32",
+ 120.5,
+ 669.0,
+ 43,
+ 24
+ ],
+ [
+ "03163deaa1c82552",
+ 132.0,
+ 711.0,
+ 58,
+ 18
+ ],
+ [
+ "19ea440470e738fd",
+ 152.0,
+ 772.5,
+ 58,
+ 21
+ ],
+ [
+ "86e79a41ae1f6379",
+ 298.0,
+ 773.0,
+ 144,
+ 20
+ ]
+ ]
+ }
+ },
+ "schema": "openadapt.layout-fingerprints/v1",
+ "steps": {
+ "step_000": {
+ "char_width": 8.472222222222221,
+ "landmarks": {},
+ "lines": 38,
+ "profile_sha256": null,
+ "text_height": 22.0,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_003": {
+ "char_width": 8.5,
+ "landmarks": {},
+ "lines": 39,
+ "profile_sha256": null,
+ "text_height": 22,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_006": {
+ "char_width": 8.555555555555555,
+ "landmarks": {},
+ "lines": 39,
+ "profile_sha256": null,
+ "text_height": 22,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_009": {
+ "char_width": 8.5,
+ "landmarks": {},
+ "lines": 39,
+ "profile_sha256": null,
+ "text_height": 22,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_012": {
+ "char_width": 8.633333333333333,
+ "landmarks": {},
+ "lines": 46,
+ "profile_sha256": null,
+ "text_height": 21.0,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_016": {
+ "char_width": 8.75,
+ "landmarks": {},
+ "lines": 31,
+ "profile_sha256": null,
+ "text_height": 21,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_018": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 33,
+ "profile_sha256": null,
+ "text_height": 21,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_021": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 34,
+ "profile_sha256": null,
+ "text_height": 21.0,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_024": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 35,
+ "profile_sha256": null,
+ "text_height": 21,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_027": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 36,
+ "profile_sha256": null,
+ "text_height": 21.0,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_030": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 36,
+ "profile_sha256": null,
+ "text_height": 21.0,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_033": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 37,
+ "profile_sha256": null,
+ "text_height": 21,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_036": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 39,
+ "profile_sha256": null,
+ "text_height": 21,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_039": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 40,
+ "profile_sha256": null,
+ "text_height": 20.5,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ },
+ "step_040": {
+ "char_width": 9.0,
+ "landmarks": {},
+ "lines": 41,
+ "profile_sha256": null,
+ "text_height": 20,
+ "viewport": [
+ 1280,
+ 800
+ ]
+ }
+ }
+}
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000.png
new file mode 100644
index 000000000..8435371ec
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000_expect.png
new file mode 100644
index 000000000..ceec49af2
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003.png
new file mode 100644
index 000000000..82f8d0b86
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003_expect.png
new file mode 100644
index 000000000..bd732ea2b
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006.png
new file mode 100644
index 000000000..f5b0f3087
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006_expect.png
new file mode 100644
index 000000000..9bc16b784
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009.png
new file mode 100644
index 000000000..877819030
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009_expect.png
new file mode 100644
index 000000000..874b0eb4e
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012.png
new file mode 100644
index 000000000..eea382138
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012_expect.png
new file mode 100644
index 000000000..bfa2011ff
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016.png
new file mode 100644
index 000000000..9ad632eb8
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016_expect.png
new file mode 100644
index 000000000..41971b7bb
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018.png
new file mode 100644
index 000000000..608442167
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018_expect.png
new file mode 100644
index 000000000..2930f7953
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021.png
new file mode 100644
index 000000000..ae6f6b77c
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021_expect.png
new file mode 100644
index 000000000..cdeb30cee
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024.png
new file mode 100644
index 000000000..852f3e6fd
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024_expect.png
new file mode 100644
index 000000000..1a503340f
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027.png
new file mode 100644
index 000000000..9fae963d2
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027_expect.png
new file mode 100644
index 000000000..c6bdd0ff3
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030.png
new file mode 100644
index 000000000..1c62f1931
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030_expect.png
new file mode 100644
index 000000000..8f321d693
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033.png
new file mode 100644
index 000000000..69694ef60
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033_expect.png
new file mode 100644
index 000000000..58f9927e6
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036.png
new file mode 100644
index 000000000..63eb6df7a
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036_expect.png
new file mode 100644
index 000000000..96aab9514
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039.png
new file mode 100644
index 000000000..95c811966
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039_expect.png
new file mode 100644
index 000000000..382842963
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040.png
new file mode 100644
index 000000000..918bb8f54
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040_expect.png b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040_expect.png
new file mode 100644
index 000000000..77a6cdaf3
Binary files /dev/null and b/packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040_expect.png differ
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/workflow.json b/packages/flow/benchmark/openemr_local/referral_program/program/workflow.json
new file mode 100644
index 000000000..2c7d7f55e
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/workflow.json
@@ -0,0 +1,14395 @@
+{
+ "schema_version": 2,
+ "name": "openemr-create-synthetic-patient",
+ "recording_id": "243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894",
+ "contains_phi": false,
+ "phi_scrubbed": false,
+ "encrypted": false,
+ "created_at": "2026-10-20T02:34:27.691432+00:00",
+ "viewport": [
+ 1280,
+ 800
+ ],
+ "params": {
+ "title": "Ms.",
+ "fname": "OpenAdapt",
+ "lname": "LoanParity",
+ "DOB": "1985-02-03",
+ "sex": "Female",
+ "street": "101 SYNTHETIC WAY",
+ "city": "EXAMPLETON",
+ "state_label": "Massachusetts",
+ "postal_code": "02139",
+ "phone_home": "555-0107",
+ "email": "openadapt.loan-parity@example.invalid",
+ "country_code": "USA"
+ },
+ "param_specs": {
+ "title": {
+ "name": "title",
+ "type": "string",
+ "example": "Ms.",
+ "required": true,
+ "choices": []
+ },
+ "fname": {
+ "name": "fname",
+ "type": "string",
+ "example": "OpenAdapt",
+ "required": true,
+ "choices": []
+ },
+ "lname": {
+ "name": "lname",
+ "type": "string",
+ "example": "LoanParity",
+ "required": true,
+ "choices": []
+ },
+ "DOB": {
+ "name": "DOB",
+ "type": "string",
+ "example": "1985-02-03",
+ "required": true,
+ "choices": []
+ },
+ "sex": {
+ "name": "sex",
+ "type": "string",
+ "example": "Female",
+ "required": true,
+ "choices": []
+ },
+ "street": {
+ "name": "street",
+ "type": "string",
+ "example": "101 SYNTHETIC WAY",
+ "required": true,
+ "choices": []
+ },
+ "city": {
+ "name": "city",
+ "type": "string",
+ "example": "EXAMPLETON",
+ "required": true,
+ "choices": []
+ },
+ "state_label": {
+ "name": "state_label",
+ "type": "string",
+ "example": "Massachusetts",
+ "required": true,
+ "choices": []
+ },
+ "postal_code": {
+ "name": "postal_code",
+ "type": "string",
+ "example": "02139",
+ "required": true,
+ "choices": []
+ },
+ "phone_home": {
+ "name": "phone_home",
+ "type": "string",
+ "example": "555-0107",
+ "required": true,
+ "choices": []
+ },
+ "email": {
+ "name": "email",
+ "type": "string",
+ "example": "openadapt.loan-parity@example.invalid",
+ "required": true,
+ "choices": []
+ },
+ "country_code": {
+ "name": "country_code",
+ "type": "string",
+ "example": "USA",
+ "required": true,
+ "choices": []
+ }
+ },
+ "secret_params": [],
+ "steps": [
+ {
+ "id": "step_000",
+ "intent": "click 'Unassigned'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_000.png",
+ "structural": {
+ "selector": "#form_title",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "combobox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 354,
+ 250,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 434,
+ 282
+ ],
+ "ocr_text": "Unassigned",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 0,
+ "tokens": [],
+ "concats": [],
+ "structured": "2c80415fb9e6eecb",
+ "signal_hashes": {
+ "structured|exact|": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|unicode_nfkc": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|casefold": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|collapse_whitespace": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|unicode_nfkc,casefold": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|casefold,collapse_whitespace": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|casefold,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "2c80415fb9e6eecbc141875ecbe0296c78ed8e8e17856b98050665d9117228c2",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "9546f07f71a006967bd43657c0605985056b7d56a20a33bc7a254e4ae0f7e75c"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Birth First Name",
+ "distance_px": 111,
+ "dx_px": -6,
+ "dy_px": -111
+ },
+ {
+ "relation": "right_of",
+ "ocr_text": "Middle",
+ "distance_px": 115,
+ "dx_px": -109,
+ "dy_px": -36
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 233,
+ 176,
+ 99
+ ],
+ "phash": "8b746995dc63344b",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_000_expect.png"
+ },
+ {
+ "kind": "text_present",
+ "text": "CalendarFinderFlowRecallsMessagesPatientFeesModulesProceduresAdminReportsMiscellaneousPopups",
+ "region": null,
+ "phash": null,
+ "phash_tolerance": 8,
+ "timeout_s": 5.0,
+ "template": null
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_001",
+ "intent": "type
",
+ "action": "type",
+ "anchor": null,
+ "text": "Ms.",
+ "param": "title",
+ "secret": false,
+ "field_label": "form_title",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_003",
+ "intent": "click 'First Name'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_003.png",
+ "structural": {
+ "selector": "#form_fname",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 364,
+ 296,
+ 160,
+ 50
+ ],
+ "click_point": [
+ 444,
+ 317
+ ],
+ "ocr_text": "First Name",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 17,
+ "tokens": [
+ {
+ "c": "eeb9d3a0fa15f93d",
+ "r": "eeb9d3a0fa15f93d",
+ "n": 5,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "e515769d08d2c0bb",
+ "r": "e515769d08d2c0bb",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ee7decccd95cff4b",
+ "r": "ee7decccd95cff4b",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ee7decccd95cff4b",
+ "r": "ee7decccd95cff4b",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "ebec9ee944632ee8",
+ "r": "ebec9ee944632ee8",
+ "digit": false,
+ "name": true,
+ "n": 9
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "d88ac00eae04530d",
+ "r": "d88ac00eae04530d",
+ "digit": false,
+ "name": true,
+ "n": 13
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "cb2a55af67be6486",
+ "r": "cb2a55af67be6486",
+ "digit": false,
+ "name": true,
+ "n": 17
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "5011f1bd8c17f868",
+ "r": "5011f1bd8c17f868",
+ "digit": false,
+ "name": true,
+ "n": 8
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "8d12ada2a9ced771",
+ "r": "8d12ada2a9ced771",
+ "digit": false,
+ "name": true,
+ "n": 12
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "7b2340a53ec8ad17",
+ "r": "7b2340a53ec8ad17",
+ "digit": false,
+ "name": true,
+ "n": 8
+ }
+ ],
+ "structured": "dc6fd87a801b4b3f",
+ "signal_hashes": {
+ "structured|exact|": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|unicode_nfkc": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|casefold": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|collapse_whitespace": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|unicode_nfkc,casefold": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|casefold,collapse_whitespace": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|casefold,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "dc6fd87a801b4b3f38327edeb01d7716a6a6ac921c54a3abe3ce4d6c831254c1",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "076e4d01eec8b7cc78559e1cc5a20577d28ca3317860cb4b9dec07d41b480dec",
+ "captured_context|exact|": "be97ebbcecf11a81e28a3b8099e6190a135549f25a2fe31486b88cd951dffb01",
+ "captured_context|normalized|unicode_nfkc": "be97ebbcecf11a81e28a3b8099e6190a135549f25a2fe31486b88cd951dffb01",
+ "captured_context|normalized|casefold": "3cb82c431448856d5eb773402efce2029630a432b9877d1b41d71794cf630df9",
+ "captured_context|normalized|collapse_whitespace": "be97ebbcecf11a81e28a3b8099e6190a135549f25a2fe31486b88cd951dffb01",
+ "captured_context|normalized|strip_punctuation": "3febd20812d468248fc58eb5c4f7e928d35efcc35b52af57b9afd98ec5ac411b",
+ "captured_context|normalized|unicode_nfkc,casefold": "3cb82c431448856d5eb773402efce2029630a432b9877d1b41d71794cf630df9",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "be97ebbcecf11a81e28a3b8099e6190a135549f25a2fe31486b88cd951dffb01",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "3febd20812d468248fc58eb5c4f7e928d35efcc35b52af57b9afd98ec5ac411b",
+ "captured_context|normalized|casefold,collapse_whitespace": "3cb82c431448856d5eb773402efce2029630a432b9877d1b41d71794cf630df9",
+ "captured_context|normalized|casefold,strip_punctuation": "b0b95d713e3a141a69a79cc59d73a98a0ee1e96e430f733eb9e306771b1a7be9",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "3febd20812d468248fc58eb5c4f7e928d35efcc35b52af57b9afd98ec5ac411b",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "3cb82c431448856d5eb773402efce2029630a432b9877d1b41d71794cf630df9",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "b0b95d713e3a141a69a79cc59d73a98a0ee1e96e430f733eb9e306771b1a7be9",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "3febd20812d468248fc58eb5c4f7e928d35efcc35b52af57b9afd98ec5ac411b",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "b0b95d713e3a141a69a79cc59d73a98a0ee1e96e430f733eb9e306771b1a7be9",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "b0b95d713e3a141a69a79cc59d73a98a0ee1e96e430f733eb9e306771b1a7be9"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Birth First Name",
+ "distance_px": 76,
+ "dx_px": 4,
+ "dy_px": -76
+ },
+ {
+ "relation": "right_of",
+ "ocr_text": "Middle",
+ "distance_px": 124,
+ "dx_px": -99,
+ "dy_px": -75
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 300,
+ 197,
+ 67
+ ],
+ "phash": "8969b532b2b3e88b",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_003_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_005",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "OpenAdapt",
+ "param": "fname",
+ "secret": false,
+ "field_label": "First Name",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_006",
+ "intent": "click 'Last Name'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_006.png",
+ "structural": {
+ "selector": "#form_lname",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 591,
+ 285,
+ 160,
+ 61
+ ],
+ "click_point": [
+ 671,
+ 317
+ ],
+ "ocr_text": "Last Name",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 24,
+ "tokens": [
+ {
+ "c": "eeb9d3a0fa15f93d",
+ "r": "eeb9d3a0fa15f93d",
+ "n": 5,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "e7540eec51e7c97e",
+ "r": "e7540eec51e7c97e",
+ "n": 9,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "5c01d1993588c4cf",
+ "r": "77bf4c145c69a2ce",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ee7decccd95cff4b",
+ "r": "ee7decccd95cff4b",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "3b24ba72c2b197b4",
+ "r": "3b24ba72c2b197b4",
+ "digit": false,
+ "name": true,
+ "n": 14
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "4e8237f169e71794",
+ "r": "79ddc537687bcdb0",
+ "digit": false,
+ "name": true,
+ "n": 20
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "a3115ef4d9a8bba8",
+ "r": "1d13762c70c14b7e",
+ "digit": false,
+ "name": true,
+ "n": 24
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "b7ba3504ee34661e",
+ "r": "dac6ce54d23bee4a",
+ "digit": false,
+ "name": true,
+ "n": 15
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "a1ea24f284b2d142",
+ "r": "9021446ef8f61b92",
+ "digit": false,
+ "name": true,
+ "n": 19
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "b9e88ac828a10f35",
+ "r": "05a14a0fea22092c",
+ "digit": false,
+ "name": true,
+ "n": 10
+ }
+ ],
+ "structured": "4ba12b4bb5a07d80",
+ "signal_hashes": {
+ "structured|exact|": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|unicode_nfkc": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|casefold": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|collapse_whitespace": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|unicode_nfkc,casefold": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|casefold,collapse_whitespace": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|casefold,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "4ba12b4bb5a07d809678d53984aeddf600d0be71557ed542a2c244b3306dcff2",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "85375807f26b850904d3e2cb51ddda31327246b27fc4ece76cfac931a678cc6d",
+ "captured_context|exact|": "3bfb3aab2912fc7df70a2f3fc1a93f24cac4247c5d88ad6d8ae5d2d70fc7a2a5",
+ "captured_context|normalized|unicode_nfkc": "3bfb3aab2912fc7df70a2f3fc1a93f24cac4247c5d88ad6d8ae5d2d70fc7a2a5",
+ "captured_context|normalized|casefold": "3f03031e690db07d20ec649737fa35a9ca52784fdfd2e4e1d7f34f4e0ee4a93e",
+ "captured_context|normalized|collapse_whitespace": "3bfb3aab2912fc7df70a2f3fc1a93f24cac4247c5d88ad6d8ae5d2d70fc7a2a5",
+ "captured_context|normalized|strip_punctuation": "0d5e67279dbc7892ce3d7c194a7f5df6d1b8ff2563994bf8f27d05a94f03e0ca",
+ "captured_context|normalized|unicode_nfkc,casefold": "3f03031e690db07d20ec649737fa35a9ca52784fdfd2e4e1d7f34f4e0ee4a93e",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "3bfb3aab2912fc7df70a2f3fc1a93f24cac4247c5d88ad6d8ae5d2d70fc7a2a5",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "0d5e67279dbc7892ce3d7c194a7f5df6d1b8ff2563994bf8f27d05a94f03e0ca",
+ "captured_context|normalized|casefold,collapse_whitespace": "3f03031e690db07d20ec649737fa35a9ca52784fdfd2e4e1d7f34f4e0ee4a93e",
+ "captured_context|normalized|casefold,strip_punctuation": "e7f983e1d6726a8762588d4ffe085ac9105b1f63b913c626c2d3f2e903d4d71b",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "0d5e67279dbc7892ce3d7c194a7f5df6d1b8ff2563994bf8f27d05a94f03e0ca",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "3f03031e690db07d20ec649737fa35a9ca52784fdfd2e4e1d7f34f4e0ee4a93e",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "e7f983e1d6726a8762588d4ffe085ac9105b1f63b913c626c2d3f2e903d4d71b",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "0d5e67279dbc7892ce3d7c194a7f5df6d1b8ff2563994bf8f27d05a94f03e0ca",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "e7f983e1d6726a8762588d4ffe085ac9105b1f63b913c626c2d3f2e903d4d71b",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "e7f983e1d6726a8762588d4ffe085ac9105b1f63b913c626c2d3f2e903d4d71b"
+ },
+ "context_params": [
+ "fname"
+ ],
+ "param_token_indices": {
+ "fname": [
+ 1
+ ]
+ },
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Birth Last Name",
+ "distance_px": 79,
+ "dx_px": 22,
+ "dy_px": -76
+ },
+ {
+ "relation": "below",
+ "ocr_text": "BirthSex:",
+ "distance_px": 109,
+ "dx_px": -13,
+ "dy_px": -108
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 555,
+ 268,
+ 232,
+ 99
+ ],
+ "phash": "eb0c710eee7190c7",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_006_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_008",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "LoanParity",
+ "param": "lname",
+ "secret": false,
+ "field_label": "Last Name",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_009",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_009.png",
+ "structural": {
+ "selector": "#form_DOB",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 347,
+ 398,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 427,
+ 430
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 23,
+ "tokens": [
+ {
+ "c": "59b0781d700a616a",
+ "r": "59b0781d700a616a",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "f47e46f566cd8b97",
+ "r": "a66563dae5451734",
+ "n": 9,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ba40d92b166d9054",
+ "r": "1d65b97bbb1f20ff",
+ "n": 10,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "89af95af52c394aa",
+ "r": "7e4fb6bf4cbe0ba8",
+ "digit": false,
+ "name": true,
+ "n": 13
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "04e1c6b10676d82a",
+ "r": "f035f843fa708739",
+ "digit": false,
+ "name": true,
+ "n": 23
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "b41bafb1568b20ca",
+ "r": "f991ea26a7716f08",
+ "digit": false,
+ "name": true,
+ "n": 19
+ }
+ ],
+ "structured": "687ed7ecfa518ef3",
+ "signal_hashes": {
+ "structured|exact|": "5ac6b8965be938450e2a92acd10c9b4532266d2ecf70aaf7037eb1eadc304cfd",
+ "structured|normalized|unicode_nfkc": "5ac6b8965be938450e2a92acd10c9b4532266d2ecf70aaf7037eb1eadc304cfd",
+ "structured|normalized|casefold": "687ed7ecfa518ef3e18340e0f16a2ca4a3075840346dd39811d62e30c96080e4",
+ "structured|normalized|collapse_whitespace": "5ac6b8965be938450e2a92acd10c9b4532266d2ecf70aaf7037eb1eadc304cfd",
+ "structured|normalized|strip_punctuation": "4d7e44668b38646d81137fff64d6b5900bc7a7624d7033732125fc47bc8f4414",
+ "structured|normalized|unicode_nfkc,casefold": "687ed7ecfa518ef3e18340e0f16a2ca4a3075840346dd39811d62e30c96080e4",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "5ac6b8965be938450e2a92acd10c9b4532266d2ecf70aaf7037eb1eadc304cfd",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "4d7e44668b38646d81137fff64d6b5900bc7a7624d7033732125fc47bc8f4414",
+ "structured|normalized|casefold,collapse_whitespace": "687ed7ecfa518ef3e18340e0f16a2ca4a3075840346dd39811d62e30c96080e4",
+ "structured|normalized|casefold,strip_punctuation": "9827fb8d6150b26a6c67048caf723b7a3c1e7d63f9e099a69d01d19adf5f0774",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "4d7e44668b38646d81137fff64d6b5900bc7a7624d7033732125fc47bc8f4414",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "687ed7ecfa518ef3e18340e0f16a2ca4a3075840346dd39811d62e30c96080e4",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "9827fb8d6150b26a6c67048caf723b7a3c1e7d63f9e099a69d01d19adf5f0774",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "4d7e44668b38646d81137fff64d6b5900bc7a7624d7033732125fc47bc8f4414",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "9827fb8d6150b26a6c67048caf723b7a3c1e7d63f9e099a69d01d19adf5f0774",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "9827fb8d6150b26a6c67048caf723b7a3c1e7d63f9e099a69d01d19adf5f0774",
+ "captured_context|exact|": "139fedba4467614587a219b5092fd98e6b1da0d9ba2bfe4de20d9aa34c477f79",
+ "captured_context|normalized|unicode_nfkc": "139fedba4467614587a219b5092fd98e6b1da0d9ba2bfe4de20d9aa34c477f79",
+ "captured_context|normalized|casefold": "9057614fcbcb873a4b2a9d66c3826936ecde9fa20272bca49bb07c0fe67bad28",
+ "captured_context|normalized|collapse_whitespace": "139fedba4467614587a219b5092fd98e6b1da0d9ba2bfe4de20d9aa34c477f79",
+ "captured_context|normalized|strip_punctuation": "92bf8512e6621ed600dcb7347883c4b873559749aac24fcb61d871cd135f2cad",
+ "captured_context|normalized|unicode_nfkc,casefold": "9057614fcbcb873a4b2a9d66c3826936ecde9fa20272bca49bb07c0fe67bad28",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "139fedba4467614587a219b5092fd98e6b1da0d9ba2bfe4de20d9aa34c477f79",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "92bf8512e6621ed600dcb7347883c4b873559749aac24fcb61d871cd135f2cad",
+ "captured_context|normalized|casefold,collapse_whitespace": "9057614fcbcb873a4b2a9d66c3826936ecde9fa20272bca49bb07c0fe67bad28",
+ "captured_context|normalized|casefold,strip_punctuation": "ce4c27bfec4dfaa7a37de3a678c378f73ff6954b934ffe8517c2a8745d5e4d96",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "92bf8512e6621ed600dcb7347883c4b873559749aac24fcb61d871cd135f2cad",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "9057614fcbcb873a4b2a9d66c3826936ecde9fa20272bca49bb07c0fe67bad28",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "ce4c27bfec4dfaa7a37de3a678c378f73ff6954b934ffe8517c2a8745d5e4d96",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "92bf8512e6621ed600dcb7347883c4b873559749aac24fcb61d871cd135f2cad",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "ce4c27bfec4dfaa7a37de3a678c378f73ff6954b934ffe8517c2a8745d5e4d96",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "ce4c27bfec4dfaa7a37de3a678c378f73ff6954b934ffe8517c2a8745d5e4d96"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Unassigned",
+ "distance_px": 72,
+ "dx_px": -4,
+ "dy_px": -72
+ },
+ {
+ "relation": "right_of",
+ "ocr_text": "Middle",
+ "distance_px": 122,
+ "dx_px": -116,
+ "dy_px": 38
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 381,
+ 310,
+ 298
+ ],
+ "phash": "80daeba3a383939b",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_009_expect.png"
+ },
+ {
+ "kind": "text_present",
+ "text": "October-2026-",
+ "region": null,
+ "phash": null,
+ "phash_tolerance": 8,
+ "timeout_s": 5.0,
+ "template": null
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_011",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "1985-02-03",
+ "param": "DOB",
+ "secret": false,
+ "field_label": "form_DOB",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_012",
+ "intent": "click 'Unassigned'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_012.png",
+ "structural": {
+ "selector": "#form_sex",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "combobox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 892,
+ 398,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 972,
+ 430
+ ],
+ "ocr_text": "Unassigned",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 23,
+ "tokens": [
+ {
+ "c": "59b0781d700a616a",
+ "r": "59b0781d700a616a",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "461dbf84b117f3bd",
+ "r": "c58b25207a6c9d90",
+ "n": 10,
+ "alpha": false,
+ "name": false,
+ "digit": true,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "f47e46f566cd8b97",
+ "r": "a66563dae5451734",
+ "n": 9,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "3f93bf596abcd723",
+ "r": "1c229dbb17325485",
+ "digit": true,
+ "name": false,
+ "n": 14
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "17b0492af2a9f753",
+ "r": "8947623da824353c",
+ "digit": true,
+ "name": false,
+ "n": 23
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "8785d4acf42c1abc",
+ "r": "7e8d82e9fbc98b91",
+ "digit": true,
+ "name": false,
+ "n": 19
+ }
+ ],
+ "structured": "b2a45c7bad8c45f1",
+ "signal_hashes": {
+ "structured|exact|": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|unicode_nfkc": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|casefold": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|collapse_whitespace": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|unicode_nfkc,casefold": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|casefold,collapse_whitespace": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|casefold,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "b2a45c7bad8c45f11cbd13f1ab7eec54ce719810d21c86d53db8f18b72da5a50",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "56ad42a2f8bf5f78dcf4d4bc3301b1762504bd90b21a28e4fcbace670b12f1bc",
+ "captured_context|exact|": "a7fc66541451c77051f55cca262761ce31ebc40cd600651ad17f3d4905d630a9",
+ "captured_context|normalized|unicode_nfkc": "a7fc66541451c77051f55cca262761ce31ebc40cd600651ad17f3d4905d630a9",
+ "captured_context|normalized|casefold": "96b2a4da1f2b2272a8e06b25888a3da1cb0a1954796036004070cd42b3b7cefc",
+ "captured_context|normalized|collapse_whitespace": "a7fc66541451c77051f55cca262761ce31ebc40cd600651ad17f3d4905d630a9",
+ "captured_context|normalized|strip_punctuation": "ae14fee7ee91795c2234027a964baabaeeb6c6aa96db50ecd334cc73fef6468e",
+ "captured_context|normalized|unicode_nfkc,casefold": "96b2a4da1f2b2272a8e06b25888a3da1cb0a1954796036004070cd42b3b7cefc",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "a7fc66541451c77051f55cca262761ce31ebc40cd600651ad17f3d4905d630a9",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "ae14fee7ee91795c2234027a964baabaeeb6c6aa96db50ecd334cc73fef6468e",
+ "captured_context|normalized|casefold,collapse_whitespace": "96b2a4da1f2b2272a8e06b25888a3da1cb0a1954796036004070cd42b3b7cefc",
+ "captured_context|normalized|casefold,strip_punctuation": "47f2f3f2fbb8200c3e3446c6cbac6f6844629bfd2a9149f1f1f788965ddb50a5",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "ae14fee7ee91795c2234027a964baabaeeb6c6aa96db50ecd334cc73fef6468e",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "96b2a4da1f2b2272a8e06b25888a3da1cb0a1954796036004070cd42b3b7cefc",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "47f2f3f2fbb8200c3e3446c6cbac6f6844629bfd2a9149f1f1f788965ddb50a5",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "ae14fee7ee91795c2234027a964baabaeeb6c6aa96db50ecd334cc73fef6468e",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "47f2f3f2fbb8200c3e3446c6cbac6f6844629bfd2a9149f1f1f788965ddb50a5",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "47f2f3f2fbb8200c3e3446c6cbac6f6844629bfd2a9149f1f1f788965ddb50a5"
+ },
+ "context_params": [
+ "DOB"
+ ],
+ "param_token_indices": {
+ "DOB": [
+ 1
+ ]
+ },
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Unassigned",
+ "distance_px": 72,
+ "dx_px": 2,
+ "dy_px": -72
+ },
+ {
+ "relation": "below",
+ "ocr_text": "Unassigned",
+ "distance_px": 141,
+ "dx_px": 2,
+ "dy_px": -141
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 446,
+ 310,
+ 233
+ ],
+ "phash": "c0c391996e3e9ae3",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_012_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_013",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "Female",
+ "param": "sex",
+ "secret": false,
+ "field_label": "form_sex",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_015",
+ "intent": "scroll by (0, 300)",
+ "action": "scroll",
+ "anchor": null,
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": 0,
+ "scroll_dy": 300,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_016",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_016.png",
+ "structural": {
+ "selector": null,
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "button",
+ "name": "Contact",
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 554,
+ 473,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 634,
+ 505
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": null,
+ "identifier_crop": "templates/identifiers/step_016.png",
+ "identifier_region": [
+ 554,
+ 473,
+ 160,
+ 64
+ ],
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "Marital Status:",
+ "distance_px": 229,
+ "dx_px": -67,
+ "dy_px": 219
+ },
+ {
+ "relation": "above",
+ "ocr_text": "Pronouns:",
+ "distance_px": 294,
+ "dx_px": -52,
+ "dy_px": 289
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 53,
+ 452,
+ 1160,
+ 348
+ ],
+ "phash": "8d025ad2a695cf9d",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_016_expect.png"
+ },
+ {
+ "kind": "text_present",
+ "text": "Address Line 2:",
+ "region": null,
+ "phash": null,
+ "phash_tolerance": 8,
+ "timeout_s": 5.0,
+ "template": null
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_017",
+ "intent": "scroll by (0, 600)",
+ "action": "scroll",
+ "anchor": null,
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": 0,
+ "scroll_dy": 600,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_018",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_018.png",
+ "structural": {
+ "selector": "#form_street",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 399,
+ 128,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 479,
+ 160
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 21,
+ "tokens": [
+ {
+ "c": "56337622e1e15996",
+ "r": "56337622e1e15996",
+ "n": 8,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "417212ab40bf439d",
+ "r": "417212ab40bf439d",
+ "n": 7,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "cc4e82f2d2da1202",
+ "r": "108d044c527c8890",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "694835feb3417e55",
+ "r": "ed123a669f9bbb25",
+ "n": 2,
+ "alpha": false,
+ "name": false,
+ "digit": true,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "d252693e430e4393",
+ "r": "d252693e430e4393",
+ "digit": false,
+ "name": true,
+ "n": 15
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "ba2d7aac50810f64",
+ "r": "2492a5bd7f04d52a",
+ "digit": false,
+ "name": true,
+ "n": 19
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "2266742f666ce065",
+ "r": "f157810db852489a",
+ "digit": true,
+ "name": false,
+ "n": 21
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "a6f7f775ed1c9cc4",
+ "r": "f83c1261065f1a14",
+ "digit": false,
+ "name": true,
+ "n": 11
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "1c7882a0c83caccb",
+ "r": "9e5d144211a4b821",
+ "digit": true,
+ "name": false,
+ "n": 13
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "3bfbd81fe8e246c6",
+ "r": "0b71b00d8f2b9336",
+ "digit": true,
+ "name": false,
+ "n": 6
+ }
+ ],
+ "structured": "c13c46d9f811020d",
+ "signal_hashes": {
+ "structured|exact|": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|unicode_nfkc": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|casefold": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|collapse_whitespace": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|unicode_nfkc,casefold": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|casefold,collapse_whitespace": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|casefold,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "c13c46d9f811020db385b3cd2fd9d1bcc3dac34e40dfc7b03976a6651a69da57",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "0d71c62f63b537c2b1a742823e7c77c422af361b7852e51019d3b09891d07888",
+ "captured_context|exact|": "2f6f5a89d04c2bdabe030ffe037fbd6bc6721c5c06abdff642a8ccfebaedbe88",
+ "captured_context|normalized|unicode_nfkc": "2f6f5a89d04c2bdabe030ffe037fbd6bc6721c5c06abdff642a8ccfebaedbe88",
+ "captured_context|normalized|casefold": "8f4b3ce91d63d6810fbcf7d8263895240dedf72497519ddc0157e88bb0bc1425",
+ "captured_context|normalized|collapse_whitespace": "2f6f5a89d04c2bdabe030ffe037fbd6bc6721c5c06abdff642a8ccfebaedbe88",
+ "captured_context|normalized|strip_punctuation": "dff032d40b23e319be346b41147cb77a26ac0650597ee6a9266c404f63c4ff16",
+ "captured_context|normalized|unicode_nfkc,casefold": "8f4b3ce91d63d6810fbcf7d8263895240dedf72497519ddc0157e88bb0bc1425",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "2f6f5a89d04c2bdabe030ffe037fbd6bc6721c5c06abdff642a8ccfebaedbe88",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "dff032d40b23e319be346b41147cb77a26ac0650597ee6a9266c404f63c4ff16",
+ "captured_context|normalized|casefold,collapse_whitespace": "8f4b3ce91d63d6810fbcf7d8263895240dedf72497519ddc0157e88bb0bc1425",
+ "captured_context|normalized|casefold,strip_punctuation": "92244456b50efdb28bdfcb44fe32af13cc8071e622c17c9abfb6464d176106d1",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "dff032d40b23e319be346b41147cb77a26ac0650597ee6a9266c404f63c4ff16",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "8f4b3ce91d63d6810fbcf7d8263895240dedf72497519ddc0157e88bb0bc1425",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "92244456b50efdb28bdfcb44fe32af13cc8071e622c17c9abfb6464d176106d1",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "dff032d40b23e319be346b41147cb77a26ac0650597ee6a9266c404f63c4ff16",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "92244456b50efdb28bdfcb44fe32af13cc8071e622c17c9abfb6464d176106d1",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "92244456b50efdb28bdfcb44fe32af13cc8071e622c17c9abfb6464d176106d1"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Unassigned",
+ "distance_px": 125,
+ "dx_px": 48,
+ "dy_px": -115
+ },
+ {
+ "relation": "above",
+ "ocr_text": "CalendarFinderFlowRecallsMessagesPatientFeesModulesProceduresAdminReportsMiscellaneousPopups",
+ "distance_px": 132,
+ "dx_px": -25,
+ "dy_px": 130
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 115,
+ 267,
+ 95
+ ],
+ "phash": "c8ccc8c0b43eaf3e",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_018_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_020",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "101 SYNTHETIC WAY",
+ "param": "street",
+ "secret": false,
+ "field_label": "form_street",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_021",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_021.png",
+ "structural": {
+ "selector": "#form_city",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 364,
+ 172,
+ 160,
+ 55
+ ],
+ "click_point": [
+ 444,
+ 195
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 23,
+ "tokens": [
+ {
+ "c": "fb25450d4ebbc4e3",
+ "r": "00f1d5c45b01e786",
+ "n": 5,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "7d59221d1202ac69",
+ "r": "7d59221d1202ac69",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ba40d92b166d9054",
+ "r": "1d65b97bbb1f20ff",
+ "n": 10,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "5d5987a7b1f7379b",
+ "r": "5d5987a7b1f7379b",
+ "n": 2,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "8e81834e05766ba8",
+ "r": "209e6cdafc538d8b",
+ "digit": false,
+ "name": true,
+ "n": 11
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "394c2f62cac4ec7f",
+ "r": "561bc10a9e22b494",
+ "digit": false,
+ "name": true,
+ "n": 21
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "5959fe325c2c8b1a",
+ "r": "0f2002378f23ac32",
+ "digit": false,
+ "name": true,
+ "n": 23
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "2ba281fa3c7f0142",
+ "r": "b387a1a7172dc384",
+ "digit": false,
+ "name": true,
+ "n": 16
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "b5eb9e7739293582",
+ "r": "000ce0f5ae784c4c",
+ "digit": false,
+ "name": true,
+ "n": 18
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "640585765dc026c1",
+ "r": "8feeb11754156b91",
+ "digit": false,
+ "name": true,
+ "n": 12
+ }
+ ],
+ "structured": "3bee8999d9f5b656",
+ "signal_hashes": {
+ "structured|exact|": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|unicode_nfkc": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|casefold": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|collapse_whitespace": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|unicode_nfkc,casefold": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|casefold,collapse_whitespace": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|casefold,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "3bee8999d9f5b6565d91089a38b4fa0bbf5cd0dff9c349b65b3fccada542f79f",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "7e6876ce463e4584b9b18cc5454b67ddac24e3335cf775ffc0068948b5f29302",
+ "captured_context|exact|": "2064676b16acb4302d859e0c994c23fe2ea00dc0bfc5ead1adba71e379795f04",
+ "captured_context|normalized|unicode_nfkc": "2064676b16acb4302d859e0c994c23fe2ea00dc0bfc5ead1adba71e379795f04",
+ "captured_context|normalized|casefold": "f04cd00f6cf34277d6d1c6ad7ef3c691261ec896e6fc99454160a483735bd38e",
+ "captured_context|normalized|collapse_whitespace": "2064676b16acb4302d859e0c994c23fe2ea00dc0bfc5ead1adba71e379795f04",
+ "captured_context|normalized|strip_punctuation": "7e1cf77d9fd1e85257017f6268b1aa097da9b6ccdf3dc25e2b1d0246fc6cd230",
+ "captured_context|normalized|unicode_nfkc,casefold": "f04cd00f6cf34277d6d1c6ad7ef3c691261ec896e6fc99454160a483735bd38e",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "2064676b16acb4302d859e0c994c23fe2ea00dc0bfc5ead1adba71e379795f04",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "7e1cf77d9fd1e85257017f6268b1aa097da9b6ccdf3dc25e2b1d0246fc6cd230",
+ "captured_context|normalized|casefold,collapse_whitespace": "f04cd00f6cf34277d6d1c6ad7ef3c691261ec896e6fc99454160a483735bd38e",
+ "captured_context|normalized|casefold,strip_punctuation": "c2c7987a411470c216d1109b4f18144f7739f78785173e2bd7c6c102552befe5",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "7e1cf77d9fd1e85257017f6268b1aa097da9b6ccdf3dc25e2b1d0246fc6cd230",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "f04cd00f6cf34277d6d1c6ad7ef3c691261ec896e6fc99454160a483735bd38e",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "c2c7987a411470c216d1109b4f18144f7739f78785173e2bd7c6c102552befe5",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "7e1cf77d9fd1e85257017f6268b1aa097da9b6ccdf3dc25e2b1d0246fc6cd230",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "c2c7987a411470c216d1109b4f18144f7739f78785173e2bd7c6c102552befe5",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "c2c7987a411470c216d1109b4f18144f7739f78785173e2bd7c6c102552befe5"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "Search or Add Patient",
+ "distance_px": 68,
+ "dx_px": 0,
+ "dy_px": 68
+ },
+ {
+ "relation": "below",
+ "ocr_text": "Unassigned",
+ "distance_px": 81,
+ "dx_px": 13,
+ "dy_px": -80
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 176,
+ 267,
+ 69
+ ],
+ "phash": "c8d9bcc1c11ce7c3",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_021_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_023",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "EXAMPLETON",
+ "param": "city",
+ "secret": false,
+ "field_label": "form_city",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_024",
+ "intent": "click 'Jnassigned'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_024.png",
+ "structural": {
+ "selector": "#form_state",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "combobox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 937,
+ 163,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 1017,
+ 195
+ ],
+ "ocr_text": "Jnassigned",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 23,
+ "tokens": [
+ {
+ "c": "fb25450d4ebbc4e3",
+ "r": "00f1d5c45b01e786",
+ "n": 5,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "e4f5b290c241b88d",
+ "r": "e4f5b290c241b88d",
+ "n": 10,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "7d59221d1202ac69",
+ "r": "7d59221d1202ac69",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "5d5987a7b1f7379b",
+ "r": "5d5987a7b1f7379b",
+ "n": 2,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "79f99d4ee9b87e51",
+ "r": "1749e56512ba88e6",
+ "digit": false,
+ "name": true,
+ "n": 15
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "3bce3ab5b1cae4a7",
+ "r": "76622543e55c39ea",
+ "digit": false,
+ "name": true,
+ "n": 21
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "b7c12a2cec7b03fd",
+ "r": "4fb1608307d6427c",
+ "digit": false,
+ "name": true,
+ "n": 23
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "1ff3a1c8d500b6ec",
+ "r": "1ff3a1c8d500b6ec",
+ "digit": false,
+ "name": true,
+ "n": 16
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "dbe4529998c844ca",
+ "r": "dbe4529998c844ca",
+ "digit": false,
+ "name": true,
+ "n": 18
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "4faf2141658543ff",
+ "r": "4faf2141658543ff",
+ "digit": false,
+ "name": true,
+ "n": 8
+ }
+ ],
+ "structured": "73a2d4adb23a491a",
+ "signal_hashes": {
+ "structured|exact|": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|unicode_nfkc": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|casefold": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|collapse_whitespace": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|unicode_nfkc,casefold": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|casefold,collapse_whitespace": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|casefold,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "73a2d4adb23a491a2ff1a73fc376335a12ba318ab1c1861a9d8f12a905977bdd",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "c0dfc567509a812829e1d14411223eb402b1ca77e2a68b3009744da2ee7c1245",
+ "captured_context|exact|": "11fcb7efb588cf06c8cf64231f5fcd26a645678555533b4467633970a43c5d20",
+ "captured_context|normalized|unicode_nfkc": "11fcb7efb588cf06c8cf64231f5fcd26a645678555533b4467633970a43c5d20",
+ "captured_context|normalized|casefold": "03e0e3c702c79faf3c876e580d11f78fa49837873a24ee6a16f85b2c2cc8ddec",
+ "captured_context|normalized|collapse_whitespace": "11fcb7efb588cf06c8cf64231f5fcd26a645678555533b4467633970a43c5d20",
+ "captured_context|normalized|strip_punctuation": "977d0c17122d7392210180c6297b97aaedf00abc3be3902a4a502f0568d2eee0",
+ "captured_context|normalized|unicode_nfkc,casefold": "03e0e3c702c79faf3c876e580d11f78fa49837873a24ee6a16f85b2c2cc8ddec",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "11fcb7efb588cf06c8cf64231f5fcd26a645678555533b4467633970a43c5d20",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "977d0c17122d7392210180c6297b97aaedf00abc3be3902a4a502f0568d2eee0",
+ "captured_context|normalized|casefold,collapse_whitespace": "03e0e3c702c79faf3c876e580d11f78fa49837873a24ee6a16f85b2c2cc8ddec",
+ "captured_context|normalized|casefold,strip_punctuation": "2b4b62efbbf25cbdc59ec0606572ab15d9b15d8dff7996643f71c4033140c07c",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "977d0c17122d7392210180c6297b97aaedf00abc3be3902a4a502f0568d2eee0",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "03e0e3c702c79faf3c876e580d11f78fa49837873a24ee6a16f85b2c2cc8ddec",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "2b4b62efbbf25cbdc59ec0606572ab15d9b15d8dff7996643f71c4033140c07c",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "977d0c17122d7392210180c6297b97aaedf00abc3be3902a4a502f0568d2eee0",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "2b4b62efbbf25cbdc59ec0606572ab15d9b15d8dff7996643f71c4033140c07c",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "2b4b62efbbf25cbdc59ec0606572ab15d9b15d8dff7996643f71c4033140c07c"
+ },
+ "context_params": [
+ "city"
+ ],
+ "param_token_indices": {
+ "city": [
+ 1
+ ]
+ },
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "Searchbyanydemogra",
+ "distance_px": 168,
+ "dx_px": -39,
+ "dy_px": 163
+ },
+ {
+ "relation": "below",
+ "ocr_text": "Show Inactive",
+ "distance_px": 278,
+ "dx_px": -71,
+ "dy_px": -269
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 885,
+ 146,
+ 265,
+ 99
+ ],
+ "phash": "a21d7d38eeb891c2",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_024_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_025",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "Massachusetts",
+ "param": "state_label",
+ "secret": false,
+ "field_label": "form_state",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_027",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_027.png",
+ "structural": {
+ "selector": "#form_postal_code",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 340,
+ 207,
+ 160,
+ 59
+ ],
+ "click_point": [
+ 420,
+ 234
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 31,
+ "tokens": [
+ {
+ "c": "17f8f776ea36c139",
+ "r": "17f8f776ea36c139",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "7608674b52e96450",
+ "r": "7608674b52e96450",
+ "n": 5,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "58106cbe6c84b2e9",
+ "r": "58106cbe6c84b2e9",
+ "n": 8,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ba40d92b166d9054",
+ "r": "1d65b97bbb1f20ff",
+ "n": 10,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "5d5987a7b1f7379b",
+ "r": "5d5987a7b1f7379b",
+ "n": 2,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "0b43a0ba8b1ad61f",
+ "r": "0b43a0ba8b1ad61f",
+ "digit": false,
+ "name": true,
+ "n": 11
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "a4c63c132d44fa87",
+ "r": "a4c63c132d44fa87",
+ "digit": false,
+ "name": true,
+ "n": 19
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "30b9301cfea3dd45",
+ "r": "2116417ca747fc95",
+ "digit": false,
+ "name": true,
+ "n": 29
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "f99f5c3c73b47742",
+ "r": "f99f5c3c73b47742",
+ "digit": false,
+ "name": true,
+ "n": 13
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "56ff119b8f1b1087",
+ "r": "277f0d2e78797bff",
+ "digit": false,
+ "name": true,
+ "n": 23
+ },
+ {
+ "i": 1,
+ "size": 4,
+ "c": "62b840e1d0fe3bae",
+ "r": "8d631017e757ef23",
+ "digit": false,
+ "name": true,
+ "n": 25
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "05a92a90ab5e120e",
+ "r": "b222cc2c598deaab",
+ "digit": false,
+ "name": true,
+ "n": 18
+ },
+ {
+ "i": 2,
+ "size": 3,
+ "c": "b68329079fe6669c",
+ "r": "98982c7c283672d3",
+ "digit": false,
+ "name": true,
+ "n": 20
+ },
+ {
+ "i": 3,
+ "size": 2,
+ "c": "640585765dc026c1",
+ "r": "8feeb11754156b91",
+ "digit": false,
+ "name": true,
+ "n": 12
+ }
+ ],
+ "structured": "b344935e2617dfcb",
+ "signal_hashes": {
+ "structured|exact|": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|unicode_nfkc": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|casefold": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|collapse_whitespace": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|unicode_nfkc,casefold": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|casefold,collapse_whitespace": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|casefold,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "b344935e2617dfcba078b5c89afdae5668d1c5c92642a6cf7c7937ba25f80270",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "ee78b802292e8771733d81f75f66336297de36dd7f0fb7d936b340b1b0ff76b7",
+ "captured_context|exact|": "66dc2bd37b48e3a49ade8162b35ebb25afe4c180ba69b77e2542f7c8e7d03fe1",
+ "captured_context|normalized|unicode_nfkc": "66dc2bd37b48e3a49ade8162b35ebb25afe4c180ba69b77e2542f7c8e7d03fe1",
+ "captured_context|normalized|casefold": "1611e5aae145fb297300add1a191f45363cd8f18e4d5bd6d30eb8b17f29b3010",
+ "captured_context|normalized|collapse_whitespace": "66dc2bd37b48e3a49ade8162b35ebb25afe4c180ba69b77e2542f7c8e7d03fe1",
+ "captured_context|normalized|strip_punctuation": "f583d146e95918a44d1ae7e2e40b04c157f4d3043dd49f07eb973dc51c099f9e",
+ "captured_context|normalized|unicode_nfkc,casefold": "1611e5aae145fb297300add1a191f45363cd8f18e4d5bd6d30eb8b17f29b3010",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "66dc2bd37b48e3a49ade8162b35ebb25afe4c180ba69b77e2542f7c8e7d03fe1",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "f583d146e95918a44d1ae7e2e40b04c157f4d3043dd49f07eb973dc51c099f9e",
+ "captured_context|normalized|casefold,collapse_whitespace": "1611e5aae145fb297300add1a191f45363cd8f18e4d5bd6d30eb8b17f29b3010",
+ "captured_context|normalized|casefold,strip_punctuation": "94f6e7f11c5ec7ba225b48d4ab7f9c2137ee6051ea8d263fdc576fcf063a7cd2",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "f583d146e95918a44d1ae7e2e40b04c157f4d3043dd49f07eb973dc51c099f9e",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "1611e5aae145fb297300add1a191f45363cd8f18e4d5bd6d30eb8b17f29b3010",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "94f6e7f11c5ec7ba225b48d4ab7f9c2137ee6051ea8d263fdc576fcf063a7cd2",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "f583d146e95918a44d1ae7e2e40b04c157f4d3043dd49f07eb973dc51c099f9e",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "94f6e7f11c5ec7ba225b48d4ab7f9c2137ee6051ea8d263fdc576fcf063a7cd2",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "94f6e7f11c5ec7ba225b48d4ab7f9c2137ee6051ea8d263fdc576fcf063a7cd2"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "SearchorAddPatient",
+ "distance_px": 111,
+ "dx_px": -24,
+ "dy_px": 108
+ },
+ {
+ "relation": "above",
+ "ocr_text": "CalendarFinderFlowRecallsMessagesPatientFeesModulesProceduresAdminReportsMiscellaneousPopups",
+ "distance_px": 221,
+ "dx_px": -84,
+ "dy_px": 204
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 340,
+ 207,
+ 160,
+ 59
+ ],
+ "phash": "87968f8ea58de0a5",
+ "phash_tolerance": 8,
+ "timeout_s": 5.0,
+ "template": "templates/step_027_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_029",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "02139",
+ "param": "postal_code",
+ "secret": false,
+ "field_label": "form_postal_code",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_030",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_030.png",
+ "structural": {
+ "selector": "#form_phone_home",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 382,
+ 315,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 462,
+ 347
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 20,
+ "tokens": [
+ {
+ "c": "bc4afbbd0b0d381b",
+ "r": "bc4afbbd0b0d381b",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "93c520b039bcba2c",
+ "r": "93c520b039bcba2c",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "96ddabdfc5d4b290",
+ "r": "96ddabdfc5d4b290",
+ "n": 4,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "93c520b039bcba2c",
+ "r": "93c520b039bcba2c",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "fd69eb6fb0ff92d1",
+ "r": "fd69eb6fb0ff92d1",
+ "digit": false,
+ "name": true,
+ "n": 10
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "cb80906e855a1626",
+ "r": "cb80906e855a1626",
+ "digit": false,
+ "name": true,
+ "n": 14
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "fa3b230bbe7fea1a",
+ "r": "fa3b230bbe7fea1a",
+ "digit": false,
+ "name": true,
+ "n": 20
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "01d0c19c3607b65c",
+ "r": "01d0c19c3607b65c",
+ "digit": false,
+ "name": true,
+ "n": 10
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "5e45c8ec22f0b469",
+ "r": "5e45c8ec22f0b469",
+ "digit": false,
+ "name": true,
+ "n": 16
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "8810f9086d50323a",
+ "r": "8810f9086d50323a",
+ "digit": false,
+ "name": true,
+ "n": 10
+ }
+ ],
+ "structured": "cffb593e4c59c004",
+ "signal_hashes": {
+ "structured|exact|": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|unicode_nfkc": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|casefold": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|collapse_whitespace": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|unicode_nfkc,casefold": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|casefold,collapse_whitespace": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|casefold,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "cffb593e4c59c00442f115110ee3ac01ae646a9d8b394fc5b1e28abcf0b27aa3",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "05e23074e1b0952fecd0c4380b9a1c7ea165bf4572a3fa916d97f207ed7f1648",
+ "captured_context|exact|": "bc16e04ce0b5c6ce52adf7bedeb4726c3ce0adac1df5b1b72d77793bfea35907",
+ "captured_context|normalized|unicode_nfkc": "bc16e04ce0b5c6ce52adf7bedeb4726c3ce0adac1df5b1b72d77793bfea35907",
+ "captured_context|normalized|casefold": "c1d7385e32ed5c4d313717c6db654d67bc040aba6d9a7f08f00aaa394cf3bc8e",
+ "captured_context|normalized|collapse_whitespace": "bc16e04ce0b5c6ce52adf7bedeb4726c3ce0adac1df5b1b72d77793bfea35907",
+ "captured_context|normalized|strip_punctuation": "c80b4a511327bec36aadfc4ec7627a02fb3ff41205afb1aed88ee49443c04624",
+ "captured_context|normalized|unicode_nfkc,casefold": "c1d7385e32ed5c4d313717c6db654d67bc040aba6d9a7f08f00aaa394cf3bc8e",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "bc16e04ce0b5c6ce52adf7bedeb4726c3ce0adac1df5b1b72d77793bfea35907",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "c80b4a511327bec36aadfc4ec7627a02fb3ff41205afb1aed88ee49443c04624",
+ "captured_context|normalized|casefold,collapse_whitespace": "c1d7385e32ed5c4d313717c6db654d67bc040aba6d9a7f08f00aaa394cf3bc8e",
+ "captured_context|normalized|casefold,strip_punctuation": "0256066c0eb37f834362fac4fc421ac5467ceaab8967a84cdc8c271192982d31",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "c80b4a511327bec36aadfc4ec7627a02fb3ff41205afb1aed88ee49443c04624",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "c1d7385e32ed5c4d313717c6db654d67bc040aba6d9a7f08f00aaa394cf3bc8e",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "0256066c0eb37f834362fac4fc421ac5467ceaab8967a84cdc8c271192982d31",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "c80b4a511327bec36aadfc4ec7627a02fb3ff41205afb1aed88ee49443c04624",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "0256066c0eb37f834362fac4fc421ac5467ceaab8967a84cdc8c271192982d31",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "0256066c0eb37f834362fac4fc421ac5467ceaab8967a84cdc8c271192982d31"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "Unassigned",
+ "distance_px": 78,
+ "dx_px": 31,
+ "dy_px": 72
+ },
+ {
+ "relation": "above",
+ "ocr_text": "SearchorAddPatient",
+ "distance_px": 222,
+ "dx_px": 18,
+ "dy_px": 221
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 346,
+ 298,
+ 232,
+ 99
+ ],
+ "phash": "c04af8933fa5c66c",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_030_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_032",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "555-0107",
+ "param": "phone_home",
+ "secret": false,
+ "field_label": "form_phone_home",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_033",
+ "intent": "click recorded visual target",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_033.png",
+ "structural": {
+ "selector": "#form_email",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "textbox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 955,
+ 350,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 1035,
+ 382
+ ],
+ "ocr_text": null,
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 25,
+ "tokens": [
+ {
+ "c": "1fde90828da40187",
+ "r": "5534fe29d3b99b08",
+ "n": 12,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "1771afe11ff94dc1",
+ "r": "1771afe11ff94dc1",
+ "n": 7,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "ff5376b16c33add6",
+ "r": "e2bd5a9c886402a8",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "4dce9a1bbc06f990",
+ "r": "2c0d02e39b19334a",
+ "digit": false,
+ "name": true,
+ "n": 19
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "892ae816b52e7213",
+ "r": "80836a1fdba793b4",
+ "digit": false,
+ "name": true,
+ "n": 25
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "dd3ba1231f325b37",
+ "r": "c66b2c2086353ea8",
+ "digit": false,
+ "name": true,
+ "n": 13
+ }
+ ],
+ "structured": "1266dcc1ca721903",
+ "signal_hashes": {
+ "structured|exact|": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|unicode_nfkc": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|casefold": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|collapse_whitespace": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|unicode_nfkc,casefold": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|casefold,collapse_whitespace": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|casefold,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "1266dcc1ca721903411689c56671ecbfa3f6585f566c50e30c83930fd4a38399",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "49d6e8f8ba211023908a404178aa14783b590b81fbe84a0407bac9201514297a",
+ "captured_context|exact|": "2ea87855d019fcad9a942d1688827d1317b7575de89f95e0c02e2471f45bda27",
+ "captured_context|normalized|unicode_nfkc": "2ea87855d019fcad9a942d1688827d1317b7575de89f95e0c02e2471f45bda27",
+ "captured_context|normalized|casefold": "d0a1c856e56bb646ba2f9ae0bc9a5ac25f27f3dcdc247bbff23625d74d618c3c",
+ "captured_context|normalized|collapse_whitespace": "2ea87855d019fcad9a942d1688827d1317b7575de89f95e0c02e2471f45bda27",
+ "captured_context|normalized|strip_punctuation": "fea8b36583135fc708e3282c88a312514638e7192e6123de8baaac11cb4ba257",
+ "captured_context|normalized|unicode_nfkc,casefold": "d0a1c856e56bb646ba2f9ae0bc9a5ac25f27f3dcdc247bbff23625d74d618c3c",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "2ea87855d019fcad9a942d1688827d1317b7575de89f95e0c02e2471f45bda27",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "fea8b36583135fc708e3282c88a312514638e7192e6123de8baaac11cb4ba257",
+ "captured_context|normalized|casefold,collapse_whitespace": "d0a1c856e56bb646ba2f9ae0bc9a5ac25f27f3dcdc247bbff23625d74d618c3c",
+ "captured_context|normalized|casefold,strip_punctuation": "8526e96c4e0ec8fbddd2c2ee2e2961e320f8316994cec7ee6a8ab4c4055a794b",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "fea8b36583135fc708e3282c88a312514638e7192e6123de8baaac11cb4ba257",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "d0a1c856e56bb646ba2f9ae0bc9a5ac25f27f3dcdc247bbff23625d74d618c3c",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "8526e96c4e0ec8fbddd2c2ee2e2961e320f8316994cec7ee6a8ab4c4055a794b",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "fea8b36583135fc708e3282c88a312514638e7192e6123de8baaac11cb4ba257",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "8526e96c4e0ec8fbddd2c2ee2e2961e320f8316994cec7ee6a8ab4c4055a794b",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "8526e96c4e0ec8fbddd2c2ee2e2961e320f8316994cec7ee6a8ab4c4055a794b"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "below",
+ "ocr_text": "Show Inactive",
+ "distance_px": 98,
+ "dx_px": -53,
+ "dy_px": -82
+ },
+ {
+ "relation": "above",
+ "ocr_text": "Unassigned",
+ "distance_px": 161,
+ "dx_px": 65,
+ "dy_px": 147
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 885,
+ 333,
+ 302,
+ 99
+ ],
+ "phash": "cad0ba36be2dc1c1",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_033_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_035",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "openadapt.loan-parity@example.invalid",
+ "param": "email",
+ "secret": false,
+ "field_label": "form_email",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_036",
+ "intent": "click 'Jnassigned'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_036.png",
+ "structural": {
+ "selector": "#form_country_code",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "combobox",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 937,
+ 210,
+ 160,
+ 56
+ ],
+ "click_point": [
+ 1017,
+ 234
+ ],
+ "ocr_text": "Jnassigned",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 26,
+ "tokens": [
+ {
+ "c": "17f8f776ea36c139",
+ "r": "17f8f776ea36c139",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "7608674b52e96450",
+ "r": "7608674b52e96450",
+ "n": 5,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "b28840e46eb5f647",
+ "r": "a3ae22fd50cb0be1",
+ "n": 5,
+ "alpha": false,
+ "name": false,
+ "digit": true,
+ "idsh": true,
+ "glyph": true,
+ "gen": false
+ },
+ {
+ "c": "58106cbe6c84b2e9",
+ "r": "58106cbe6c84b2e9",
+ "n": 8,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "5d5987a7b1f7379b",
+ "r": "5d5987a7b1f7379b",
+ "n": 2,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "0b43a0ba8b1ad61f",
+ "r": "0b43a0ba8b1ad61f",
+ "digit": false,
+ "name": true,
+ "n": 11
+ },
+ {
+ "i": 0,
+ "size": 3,
+ "c": "0b92c553057da886",
+ "r": "4b9a0d38d5a1eb21",
+ "digit": true,
+ "name": false,
+ "n": 16
+ },
+ {
+ "i": 0,
+ "size": 4,
+ "c": "65615d64d17074ce",
+ "r": "da11a53a95a31a7d",
+ "digit": true,
+ "name": false,
+ "n": 24
+ },
+ {
+ "i": 1,
+ "size": 2,
+ "c": "fdc51a23183599f1",
+ "r": "8c299d9f4685171b",
+ "digit": true,
+ "name": false,
+ "n": 10
+ },
+ {
+ "i": 1,
+ "size": 3,
+ "c": "518a200b4eaae8eb",
+ "r": "2d4e5300a63e3c73",
+ "digit": true,
+ "name": false,
+ "n": 18
+ },
+ {
+ "i": 1,
+ "size": 4,
+ "c": "364fbb1a78747d5f",
+ "r": "25f9c653a1bda159",
+ "digit": true,
+ "name": false,
+ "n": 20
+ },
+ {
+ "i": 2,
+ "size": 2,
+ "c": "387d9b6e37301237",
+ "r": "2815e221c53c3187",
+ "digit": true,
+ "name": false,
+ "n": 13
+ },
+ {
+ "i": 2,
+ "size": 3,
+ "c": "9b733aec2c54acbb",
+ "r": "d1abe420b6862639",
+ "digit": true,
+ "name": false,
+ "n": 15
+ },
+ {
+ "i": 3,
+ "size": 2,
+ "c": "b30f38b67b3a9035",
+ "r": "b30f38b67b3a9035",
+ "digit": false,
+ "name": true,
+ "n": 10
+ }
+ ],
+ "structured": "679b60998a3366fb",
+ "signal_hashes": {
+ "structured|exact|": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|unicode_nfkc": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|casefold": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|collapse_whitespace": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|unicode_nfkc,casefold": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|casefold,collapse_whitespace": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|casefold,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "679b60998a3366fbf74c7733326ae25bdd817ec73fbed73d36394a0bcd2e7fde",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "2587b61898422f880951aadecc869ae0299b2dbeed0ec8993a2574f3525a01d7",
+ "captured_context|exact|": "61ff25f90870bbb6b72da1bc71137d3b692b8a009da734f2bcf9f924776898a6",
+ "captured_context|normalized|unicode_nfkc": "61ff25f90870bbb6b72da1bc71137d3b692b8a009da734f2bcf9f924776898a6",
+ "captured_context|normalized|casefold": "bf22964b8fd303ccc120bab3a56b25e9f182ee75e303ed29ba75924ca97f63d1",
+ "captured_context|normalized|collapse_whitespace": "61ff25f90870bbb6b72da1bc71137d3b692b8a009da734f2bcf9f924776898a6",
+ "captured_context|normalized|strip_punctuation": "f4f93b71ad7e7017728eb1da774225666020adbba5a562a81aff2986443e2f31",
+ "captured_context|normalized|unicode_nfkc,casefold": "bf22964b8fd303ccc120bab3a56b25e9f182ee75e303ed29ba75924ca97f63d1",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "61ff25f90870bbb6b72da1bc71137d3b692b8a009da734f2bcf9f924776898a6",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "f4f93b71ad7e7017728eb1da774225666020adbba5a562a81aff2986443e2f31",
+ "captured_context|normalized|casefold,collapse_whitespace": "bf22964b8fd303ccc120bab3a56b25e9f182ee75e303ed29ba75924ca97f63d1",
+ "captured_context|normalized|casefold,strip_punctuation": "faf9c82c2e7fabfe84337b2f7062c93daf4ac50b9b62173be3f0914350708463",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "f4f93b71ad7e7017728eb1da774225666020adbba5a562a81aff2986443e2f31",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "bf22964b8fd303ccc120bab3a56b25e9f182ee75e303ed29ba75924ca97f63d1",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "faf9c82c2e7fabfe84337b2f7062c93daf4ac50b9b62173be3f0914350708463",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "f4f93b71ad7e7017728eb1da774225666020adbba5a562a81aff2986443e2f31",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "faf9c82c2e7fabfe84337b2f7062c93daf4ac50b9b62173be3f0914350708463",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "faf9c82c2e7fabfe84337b2f7062c93daf4ac50b9b62173be3f0914350708463"
+ },
+ "context_params": [
+ "postal_code"
+ ],
+ "param_token_indices": {
+ "postal_code": [
+ 2
+ ]
+ },
+ "rests_on_confusable_identifier": true
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "Search by any demogre",
+ "distance_px": 206,
+ "dx_px": -39,
+ "dy_px": 202
+ },
+ {
+ "relation": "below",
+ "ocr_text": "Show Inactive",
+ "distance_px": 241,
+ "dx_px": -71,
+ "dy_px": -230
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 937,
+ 210,
+ 160,
+ 56
+ ],
+ "phash": "e76a9890e7f63811",
+ "phash_tolerance": 8,
+ "timeout_s": 5.0,
+ "template": "templates/step_036_expect.png"
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_037",
+ "intent": "type ",
+ "action": "type",
+ "anchor": null,
+ "text": "USA",
+ "param": "country_code",
+ "secret": false,
+ "field_label": "form_country_code",
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": null,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": null,
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_039",
+ "intent": "click 'Create New Patient'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_039.png",
+ "structural": {
+ "selector": "#create",
+ "frame_path": [
+ "div:nth-of-type(3) > iframe:nth-of-type(1)"
+ ],
+ "role": "button",
+ "name": null,
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 204,
+ 736,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 284,
+ 772
+ ],
+ "ocr_text": "Create New Patient",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 0,
+ "tokens": [],
+ "concats": [],
+ "structured": "d761782f47f7aeeb",
+ "signal_hashes": {
+ "structured|exact|": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|unicode_nfkc": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|casefold": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|collapse_whitespace": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|unicode_nfkc,casefold": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|casefold,collapse_whitespace": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|casefold,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "d761782f47f7aeeb3916f23cbe15694c81cee59a8bc47f5c0f8c5870824ad15d",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "eac545cd1e5409a76be55f3cc9beb24ef718c446a95d28b453f3ce00c0f4d097"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "left_of",
+ "ocr_text": "Search",
+ "distance_px": 132,
+ "dx_px": 132,
+ "dy_px": 0
+ },
+ {
+ "relation": "left_of",
+ "ocr_text": "Related",
+ "distance_px": 164,
+ "dx_px": 152,
+ "dy_px": 61
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "text_present",
+ "text": "Confirm Create New Patient",
+ "region": null,
+ "phash": null,
+ "phash_tolerance": 8,
+ "timeout_s": 10.0,
+ "template": null
+ },
+ {
+ "kind": "text_present",
+ "text": "No matches were found.",
+ "region": null,
+ "phash": null,
+ "phash_tolerance": 8,
+ "timeout_s": 10.0,
+ "template": null
+ }
+ ],
+ "effects": [],
+ "api_binding": null,
+ "risk": "reversible",
+ "risk_explanation": "operator-qualified override: reversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ },
+ {
+ "id": "step_040",
+ "intent": "click 'Confirm Create New Patient'",
+ "action": "click",
+ "anchor": {
+ "template": "templates/step_040.png",
+ "structural": {
+ "selector": "#confirmCreate",
+ "frame_path": [
+ "#modalframe"
+ ],
+ "role": "button",
+ "name": "Create New Patient",
+ "automation_id": null,
+ "window_name": null
+ },
+ "region": [
+ 520,
+ 248,
+ 160,
+ 64
+ ],
+ "click_point": [
+ 600,
+ 280
+ ],
+ "ocr_text": "Confirm Create New Patient",
+ "context_text": null,
+ "structured_identity": null,
+ "identity_template": {
+ "schema_version": 1,
+ "salt": "f490ff17f8d4403544cbbbdaabfd336a",
+ "band_len": 13,
+ "tokens": [
+ {
+ "c": "83254a515071bcc3",
+ "r": "83254a515071bcc3",
+ "n": 7,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ },
+ {
+ "c": "b793dcf538c95db0",
+ "r": "b793dcf538c95db0",
+ "n": 6,
+ "alpha": true,
+ "name": true,
+ "digit": false,
+ "idsh": false,
+ "glyph": false,
+ "gen": false
+ }
+ ],
+ "concats": [
+ {
+ "i": 0,
+ "size": 2,
+ "c": "6993f69cba57388d",
+ "r": "6993f69cba57388d",
+ "digit": false,
+ "name": true,
+ "n": 13
+ }
+ ],
+ "structured": "1a4723a4867ce902",
+ "signal_hashes": {
+ "structured|exact|": "5d171bc76094daf157445b90df0f120741fb4f8638ba4a72d0ac47cea2b9b47b",
+ "structured|normalized|unicode_nfkc": "5d171bc76094daf157445b90df0f120741fb4f8638ba4a72d0ac47cea2b9b47b",
+ "structured|normalized|casefold": "1a4723a4867ce902e1c9b51639aaa076d4bdf80f12827b7d43f2ec7e919faca4",
+ "structured|normalized|collapse_whitespace": "5d171bc76094daf157445b90df0f120741fb4f8638ba4a72d0ac47cea2b9b47b",
+ "structured|normalized|strip_punctuation": "40c2fbc1d47ce7504082ac794b723d451030d5dd994a6516901aa60369d7650b",
+ "structured|normalized|unicode_nfkc,casefold": "1a4723a4867ce902e1c9b51639aaa076d4bdf80f12827b7d43f2ec7e919faca4",
+ "structured|normalized|unicode_nfkc,collapse_whitespace": "5d171bc76094daf157445b90df0f120741fb4f8638ba4a72d0ac47cea2b9b47b",
+ "structured|normalized|unicode_nfkc,strip_punctuation": "40c2fbc1d47ce7504082ac794b723d451030d5dd994a6516901aa60369d7650b",
+ "structured|normalized|casefold,collapse_whitespace": "1a4723a4867ce902e1c9b51639aaa076d4bdf80f12827b7d43f2ec7e919faca4",
+ "structured|normalized|casefold,strip_punctuation": "1c47e61892d78749b44482b6d84a5e6d679aa5f9d97a9cdfa2d9cd3b2c07366d",
+ "structured|normalized|collapse_whitespace,strip_punctuation": "40c2fbc1d47ce7504082ac794b723d451030d5dd994a6516901aa60369d7650b",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace": "1a4723a4867ce902e1c9b51639aaa076d4bdf80f12827b7d43f2ec7e919faca4",
+ "structured|normalized|unicode_nfkc,casefold,strip_punctuation": "1c47e61892d78749b44482b6d84a5e6d679aa5f9d97a9cdfa2d9cd3b2c07366d",
+ "structured|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "40c2fbc1d47ce7504082ac794b723d451030d5dd994a6516901aa60369d7650b",
+ "structured|normalized|casefold,collapse_whitespace,strip_punctuation": "1c47e61892d78749b44482b6d84a5e6d679aa5f9d97a9cdfa2d9cd3b2c07366d",
+ "structured|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "1c47e61892d78749b44482b6d84a5e6d679aa5f9d97a9cdfa2d9cd3b2c07366d",
+ "captured_context|exact|": "8a5332176457dca95aad8911d3a81713940512b469a6a01521e5d71ddb31366a",
+ "captured_context|normalized|unicode_nfkc": "8a5332176457dca95aad8911d3a81713940512b469a6a01521e5d71ddb31366a",
+ "captured_context|normalized|casefold": "868d8aad20d09757572c0f83249d16720609d5efbd6d11eb3fec39b1c966ee54",
+ "captured_context|normalized|collapse_whitespace": "8a5332176457dca95aad8911d3a81713940512b469a6a01521e5d71ddb31366a",
+ "captured_context|normalized|strip_punctuation": "28efb30fa67de8b327fa027a42f1c5d570fe0506bdb6bce6d30f6e0a6c1efa14",
+ "captured_context|normalized|unicode_nfkc,casefold": "868d8aad20d09757572c0f83249d16720609d5efbd6d11eb3fec39b1c966ee54",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace": "8a5332176457dca95aad8911d3a81713940512b469a6a01521e5d71ddb31366a",
+ "captured_context|normalized|unicode_nfkc,strip_punctuation": "28efb30fa67de8b327fa027a42f1c5d570fe0506bdb6bce6d30f6e0a6c1efa14",
+ "captured_context|normalized|casefold,collapse_whitespace": "868d8aad20d09757572c0f83249d16720609d5efbd6d11eb3fec39b1c966ee54",
+ "captured_context|normalized|casefold,strip_punctuation": "5c74f814e3bf1d20abdbb93e05c40821bee229322112ae0c9403349bb986131b",
+ "captured_context|normalized|collapse_whitespace,strip_punctuation": "28efb30fa67de8b327fa027a42f1c5d570fe0506bdb6bce6d30f6e0a6c1efa14",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace": "868d8aad20d09757572c0f83249d16720609d5efbd6d11eb3fec39b1c966ee54",
+ "captured_context|normalized|unicode_nfkc,casefold,strip_punctuation": "5c74f814e3bf1d20abdbb93e05c40821bee229322112ae0c9403349bb986131b",
+ "captured_context|normalized|unicode_nfkc,collapse_whitespace,strip_punctuation": "28efb30fa67de8b327fa027a42f1c5d570fe0506bdb6bce6d30f6e0a6c1efa14",
+ "captured_context|normalized|casefold,collapse_whitespace,strip_punctuation": "5c74f814e3bf1d20abdbb93e05c40821bee229322112ae0c9403349bb986131b",
+ "captured_context|normalized|unicode_nfkc,casefold,collapse_whitespace,strip_punctuation": "5c74f814e3bf1d20abdbb93e05c40821bee229322112ae0c9403349bb986131b"
+ },
+ "param_token_indices": {},
+ "rests_on_confusable_identifier": false
+ },
+ "identifier_crop": null,
+ "identifier_region": null,
+ "landmarks": [
+ {
+ "relation": "above",
+ "ocr_text": "Name",
+ "distance_px": 151,
+ "dx_px": 50,
+ "dy_px": 142
+ },
+ {
+ "relation": "above",
+ "ocr_text": "Name",
+ "distance_px": 152,
+ "dx_px": -54,
+ "dy_px": 142
+ }
+ ],
+ "search_pad": 80
+ },
+ "text": null,
+ "param": null,
+ "secret": false,
+ "field_label": null,
+ "selection_commit_key": null,
+ "selection_region": null,
+ "key": null,
+ "modifiers": [],
+ "drag_end_anchor": null,
+ "scroll_dx": null,
+ "scroll_dy": null,
+ "expect": [
+ {
+ "kind": "region_stable",
+ "text": null,
+ "region": [
+ 0,
+ 255,
+ 1280,
+ 545
+ ],
+ "phash": "fe4b96c1c9196970",
+ "phash_tolerance": 16,
+ "timeout_s": 5.0,
+ "template": "templates/step_040_expect.png"
+ },
+ {
+ "kind": "text_present",
+ "text": "Medical Record Dashboard",
+ "region": null,
+ "phash": null,
+ "phash_tolerance": 8,
+ "timeout_s": 10.0,
+ "template": null
+ }
+ ],
+ "effects": [
+ {
+ "kind": "record_written",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": null,
+ "value": null,
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": {
+ "literal": null,
+ "param": "email"
+ },
+ "key_field": "email",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "exactly 1 patient record(s) written",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "title",
+ "value": {
+ "literal": null,
+ "param": "title"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'title' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "fname",
+ "value": {
+ "literal": null,
+ "param": "fname"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'fname' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "DOB",
+ "value": {
+ "literal": null,
+ "param": "DOB"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'DOB' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "sex",
+ "value": {
+ "literal": null,
+ "param": "sex"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'sex' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "street",
+ "value": {
+ "literal": null,
+ "param": "street"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'street' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "city",
+ "value": {
+ "literal": null,
+ "param": "city"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'city' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "state",
+ "value": {
+ "literal": "MA",
+ "param": null
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'state' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "postal_code",
+ "value": {
+ "literal": null,
+ "param": "postal_code"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'postal_code' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "phone_home",
+ "value": {
+ "literal": null,
+ "param": "phone_home"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'phone_home' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ },
+ {
+ "kind": "field_equals",
+ "match": {
+ "email": {
+ "literal": null,
+ "param": "email"
+ },
+ "lname": {
+ "literal": null,
+ "param": "lname"
+ }
+ },
+ "field": "country_code",
+ "value": {
+ "literal": null,
+ "param": "country_code"
+ },
+ "expected_count": 1,
+ "new_records": [],
+ "identity_field": "id",
+ "idempotency_key": null,
+ "key_field": "key",
+ "count_new_only": false,
+ "forbid_collateral_loss": true,
+ "risk": "reversible",
+ "probe": "patient field 'country_code' read-back",
+ "timeout_s": 5.0,
+ "needs_operator_confirmation": false,
+ "readback": null
+ }
+ ],
+ "api_binding": null,
+ "risk": "irreversible",
+ "risk_explanation": "operator-qualified override: irreversible",
+ "risk_review_required": false,
+ "wait_until": null,
+ "guard": null,
+ "read": null,
+ "read_gate": null,
+ "surface": null,
+ "opens": [],
+ "surface_origin": null,
+ "closes_surface": false,
+ "dialog": null,
+ "timeout_s": 10.0,
+ "identity_armed": true,
+ "identity_unarmed_reason": null,
+ "identifier_crop_missing_reason": "structured identity (DOM/UIA/AX) owns this step's identity; no identifier pixels persisted at rest — mark the identifier field/region at record time (--identifier) to also arm the pixel tier for remote-display replays",
+ "hover": null,
+ "submit_binding": null,
+ "submit_binding_unbound_reason": null
+ }
+ ],
+ "interstitials": [],
+ "program": null,
+ "subflows": {},
+ "data_sources": {},
+ "qualification": {
+ "schema_version": "openadapt.qualification-project/v1",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "revision": 51,
+ "previous_revision_sha256": "5be1c5caf2e597b3716ae48b33847dd7a98919b8f19e76282911eb56fefd781d",
+ "created_at": "2026-10-20T02:47:34.993889+00:00",
+ "updated_at": "2026-10-20T02:56:34.858042+00:00",
+ "environment": {
+ "target_kind": "web",
+ "application": "OpenEMR (local fixture, made-up patients)",
+ "application_identity": "http://127.0.0.1:9311",
+ "application_version": "openemr@7c96c8eefe46 (benchmark/openemr_local lock)",
+ "environment_observer_id": "openadapt.qualify.web-environment",
+ "environment_observer_contract_sha256": "25c2d28794ad31768d428cd7078021ff8c31e6465e5b3c2c815209ed242c88cd",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "required_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ]
+ },
+ "minimum_effect_tier": 1,
+ "action_classifications": {
+ "step_000": {
+ "step_id": "step_000",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_001": {
+ "step_id": "step_001",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_003": {
+ "step_id": "step_003",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_005": {
+ "step_id": "step_005",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_006": {
+ "step_id": "step_006",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_008": {
+ "step_id": "step_008",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_009": {
+ "step_id": "step_009",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_011": {
+ "step_id": "step_011",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_012": {
+ "step_id": "step_012",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_013": {
+ "step_id": "step_013",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_015": {
+ "step_id": "step_015",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_016": {
+ "step_id": "step_016",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_017": {
+ "step_id": "step_017",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_018": {
+ "step_id": "step_018",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_020": {
+ "step_id": "step_020",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_021": {
+ "step_id": "step_021",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_023": {
+ "step_id": "step_023",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_024": {
+ "step_id": "step_024",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_025": {
+ "step_id": "step_025",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_027": {
+ "step_id": "step_027",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_029": {
+ "step_id": "step_029",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_030": {
+ "step_id": "step_030",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_032": {
+ "step_id": "step_032",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_033": {
+ "step_id": "step_033",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_035": {
+ "step_id": "step_035",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_036": {
+ "step_id": "step_036",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_037": {
+ "step_id": "step_037",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_039": {
+ "step_id": "step_039",
+ "classification": "read_only",
+ "explanation": "fills or navigates; writes no patient",
+ "operator_confirmed": true
+ },
+ "step_040": {
+ "step_id": "step_040",
+ "classification": "irreversible",
+ "explanation": "writes the patient in the system of record (verify.yaml save)",
+ "operator_confirmed": true
+ }
+ },
+ "identity_policies": {
+ "step_040": {
+ "step_id": "step_040",
+ "enforcement": "canonical_ladder",
+ "signals": [],
+ "quorum": 0
+ }
+ },
+ "effect_policies": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 0,
+ "effect_contract_hash": "sha256:f64985856097097954250be6523fa260daf9fc5db495671c2548ead9a388577b",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 1,
+ "effect_contract_hash": "sha256:206d1d6fc27df6f24c02bb6b6f4419e0612e7935ec7e744fc8cc446f54558385",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 2,
+ "effect_contract_hash": "sha256:8f295459bdd868daf117ca9f77dd948cdc2c8c034a65184cb5418ccfab7f60e7",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 3,
+ "effect_contract_hash": "sha256:52c6884d06d82c4ccc14600150f2890bcd25d92cb7eb26bc53ef54033075ba3c",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 4,
+ "effect_contract_hash": "sha256:7732675a6e6123c0c3f51512496f695fa4ce503ab989993c520fb8a469bbdc3d",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 5,
+ "effect_contract_hash": "sha256:598fb97e12d3c0b537f0453e7fdaad453b969e249e888424e67fcd85a06741f0",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 6,
+ "effect_contract_hash": "sha256:ba109cf90077d7b20a37c2848fa7bee8ea0039747a5ae47465617b2ea1039a2b",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 7,
+ "effect_contract_hash": "sha256:f508b7fd1536726db75a0814fc439c65dbd6c0b637a7b619855c73a571bcfca9",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 8,
+ "effect_contract_hash": "sha256:b311b51ece1670a60f793b29aa3d28d40da196ffbcd26f2fdd620e380dedf97a",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 9,
+ "effect_contract_hash": "sha256:a33cf54165b96ce6d48014e6e68bac94cdc8f9c9176bae6f5c955123d20683c2",
+ "tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 10,
+ "effect_contract_hash": "sha256:d2516eb0f6aa365b812e84fd754127d053d8e0b1a4b349a0b8ce71936bcec199",
+ "tier": 1
+ }
+ ],
+ "entity_labels": {},
+ "cases": [
+ {
+ "id": "fault-ambiguity",
+ "kind": "ambiguity",
+ "description": "Deterministic ambiguity refusal case",
+ "input_ref": null,
+ "runtime_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "action_targets": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui"
+ }
+ ],
+ "expected_outcome": "halted",
+ "required": true,
+ "results": [
+ {
+ "case_id": "fault-ambiguity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "738a56b9f509443a7a5168745c0b474a7aeb8458d051075acc23c64af34c6e1b",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "99d0d163743c7eb7a08e2c723109e94fc7d3c6559b80180176cca19f5782dfc4",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-ambiguity/trial-01/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-ambiguity/trial-01/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0b14432d3eb1c113deb837e3a40eb2e9d23e15ad6b10a5716c87afb11b15f1f3",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "1b74863767baf27087a0c378032d223136c87cd8eae29ae63f03f920433475fe",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "4a26479a8fdfb8e8e07a69b979befe4a4897f5e6bcbbb2cc4c804cb87e260e99",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "f60561aedaf104e0fc9a2d256637a94189d3ec246ca4b9f265daa7690ad99650",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7bb1cfeb62e9046a770a3ad85b42017ca4aa3c7957b6f6c205c1443024ee1a9c",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1f32b19bdaec4ee6bb9c7c153559d53e08786531a3f42c6104397e1b7500208a",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fbeb573c21373ea6148ff3bb559ff2a69662513ca164d65787c286e6930fa1e8",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ec03b2414451c79e052d6a3344e0d56ddc7a1259f19272bee15fcb3be18faca1",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "56dad9c7e5763fcaac0746df366b6bc882e1c053a475e22d9ab1ebb157464c1c",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bd5c4e13510406c074cf81fd12ffb6aa12efa9fd027bf20087790dfc66722e1b",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "963e8edbcb103acc3b9fd9951accc320f346da6201f2764f8ecdcf6bdf61b0c2",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "88013d168bd24ff7e802d1aaced3f36e239547f164f83693f0736d459bbd9e38",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a71ba9522ebc4130dd51c3a7d23d57c0384b29f26300633fc911489a21f8943a",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6160e8e7687d9abd369e9c051ccd2769973cffc29bcbd7732107a2c6bc5dc2d0",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "be5cffe9c5dadf73a92f0f1795661b921ba84999441ecfd1592bb26ce9973e79",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "167b78a1c891ec167edaf04fc6b8ad37c1d7934e63584a1367ecd9f70c3ccea3",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9c324c8ccb1bf3c89b1c969a0036d2deee180b83c013464fa4bf26e99a7406ee",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4c4bf37bb8a296181df33d890dc55606e996200863947193ae9c0de0edb34c0c",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "71889b687d82787a9cc72a2026a0b6e66211dd663917dac47da365979be73f56",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8e27d50daa79a0b7e1b4e1cbe543e96b5c190e3b982ad424196ca510cbf831a7",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "32f7b3721fd9efa31a8187704541614d1ac210bc3f8af4537f19809953a50e15",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ee101445b7b5758a7461c5d348b192628bb915315e8777379e4a8904e1312c72",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f486bc2e643f11103467a2749a2e7c80f3d7a4d3489fa1ada90f02c30186700f",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6ac673b71ca7bf36ea77590cb85f6dbe02d34647c00ef4790c97dc3bab017a8c",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ab75beb8cee9cb74624a669369c02e97ac849719102ce4c0f75f14a83681a906",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "23d4c8f29139d253e6f8b49fd216f9018245cd68401099d885bad42be52882fc",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "88f55106e6b1da72affd8ece122d721fc8c9c565202aa1c33e7b762413449aa3",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "43aa444178479fdf91b987b0c8b1b34880c4b597aa5e58dbc90b2bcb0651be98",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "659a78b6fb9611d37a84778e95342bb60b0dd31815b5ecf39aaa70e3f6559a97",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbde35128293c19eb60eabdd33e9754ed112accb2ca27270647109b9e57ab0b7",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3e951f0866553347dcb808ba9c01344419195c0274e4ebb8eb7416b041d6702",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "44018b716914901a1b3bfad071653264aea4fda8b07e8505648a1c62ba2773a0",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9520b913a4df216d9854d83976e11f4f27d135546380b000fb9653eb9976b131",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d6428e8d989835f9606301418b72e8e1aafb889093a8516c60981f2d78af1f28",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "758ca2da6a7bf3eb27b1f6d1272bb1948f14e732dd1d82405dcd2a9cd50804db",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "124ba3897557393e246a9a4128d236021d664e85e1df64cafd6a882dabd81d7a",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "df131f62b283384b5a0266c037c314304308e4407401d901148546b8a2be6abc",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d340b9a508bff667de8a7239a01995bec2ea2f486173e3f712a8171c8826b2e6",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d78993e83d30b49ad73b24d885306a4f1d1508d39c9fb2a0d6d21bededc88a82",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a549550b51f3ec2df374fe39036437a2dfbce5818c1b7b10ff3b90c2f5ecf24",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd1e99af94186d7051a2109ea551f444bd5f9bef1274f2c69fcd96ed8e894ae9",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "87e20b033d1ef137771b2fe7f5ace3ae7aae7a3eacb8bc39b3097948d63d65a6",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4468b5fa4dff832498eee5b16f5e0b7804b936e62c537e072aa90079a095d2ab",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "87e20b033d1ef137771b2fe7f5ace3ae7aae7a3eacb8bc39b3097948d63d65a6",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5feabfa31531807d42c9965c3b93375fb6f771fbf4a3d4d8a2cba602aa276e22",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b99b1bfb47d1551452cf9dabc989a6eec0e269c3039382d1ce37300880523c60",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f5861bae6cbb27dc409490dac254549ba35eafa7ac04376814ffb78ef253442",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "893bf96f40064bed66bf92e921f2abc7b1dfc37a3ee03d5d034d632926e15d32",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "360d2f27855146cccc3f75f343a18ad1b80b7f0b8d4cce13a60d5324826d444d",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ea17c9c44d5f873e2c3cd604ee2578d9578a96fbfbbdb95766d1617471e0cab",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93c63fc7b19f52692ca3c40449c39e26a7d8d921241484c05228863f4f4d7852",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "182796012a4ebaea04c5c27febd50033fdfd8a92d0cf218b0e6b76135d9b794b",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "37099c55decc85a1975ecf3435d3724b9a7e1df1af1ad47f06aff44779387aaf",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a8658da9349d3a66e0003764ecbe7070def4eedf68d69add43a056abb52673f4",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ff8c7f62ed1b7d602aab20443889dc2395b88f15641fb6c24cc53e6f0c126631",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3efdc8df122cb2f2fb1a98a3510e3e0b0633f3ff1221b20bb268b5e4eb2ba33",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "861ba4bd053a9bcb0e80075e9b13e2b9409a22ca84a6a66f55d5fd46e47f918b",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd2ca3799736faaab1672c03d0fdeb3aa3627ca0c25700c6486d75b471cd0a3f",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e243fec2a0727b2f9ba3052b3b99351df4dc2782f32d5a0ceb75abe790c360ce",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b5884819bf18c81455cd949ae50ca22a32f64b64c5bb4039189118bab9f7af",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b5884819bf18c81455cd949ae50ca22a32f64b64c5bb4039189118bab9f7af",
+ "relative_path": "cases/fault-ambiguity/trial-01/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "a417f4071a66b9d11aa9bea0295b0d53f12f8109f5f59820beae49520430c208",
+ "relative_path": "cases/fault-ambiguity/trial-01/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "d2ccdfbe6bfa731c01529d4037934302f66c2ac811123c5d8a7fe2eb6e9b23b2",
+ "relative_path": "cases/fault-ambiguity/trial-01/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-ambiguity.01",
+ "completed_at": "2026-10-20T02:49:16.992898+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "ozHiRkAY6JwYQupZ8sQLIOH2FzcwUOGsBNfH7LtBpvN53PT3RaNMHUabsbtgFcQ/2yfJHp9sRy2i6/eEtYQoAw=="
+ },
+ {
+ "case_id": "fault-ambiguity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "e949f6eeabf2fac6660f23aee8bcb846ee0aff7cf66ad141d1768defc4a00486",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "444315d0e816cd5e87390252bcf219b9f39713afa6295df493adf44996998ea9",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-ambiguity/trial-02/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-ambiguity/trial-02/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6910f9626c159eefea3a449840e5b5b6c5447c3780352f34be78898eee18fa85",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "d1f1885f96c1a28e30ca3a53f4c97c0aaa7a0c80fa6aab5702faf97b05482be3",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "0172f86b57b98452bfb2c4eea16e49d5040574daf18120179b823b63336b690b",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "388edd0996b6869c1c9533275e880950d4dee3d4157b417732984aa84fb4e029",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "567a5b6f8bfcdf5ca571cd14c69076aa0b8b273b4b27b3772e057258387814d6",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1a4f0e6811db6c530378ff8ce51b8c0ff863e8e1fa0c1956677a5799a6ca53a4",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6000270d05c223fc17541606972f35ac4debbcd72e6ed660167efec2f884c4ea",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5b486cfdd17be28fd616e1441c7e5c6f8c5d6e49c9d5e27dfe3460d5d975820a",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a6bc9d23b8ec59fca0960298ddd7bf4f9c124d87d9d24829d99a38e914fde36c",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6b23c193b4c6e8e9882b289e98444e036c40f19d3bf33948ad545c853d65e627",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "928bb86a71d662987b372d700ab15350eed6654458c552bd101205ccb7b1a864",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "05f0e3dcd3c6978558c8ef145565fc6cb366afcb3fc5e3c1660c7dff45369b6e",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "528ec6fa155ce47a308ddcf2f12480fa185b1ee86d118d68204ba3ade8cd85d1",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "888221ce76a835cc8056ebc29959be4529bd1418e6dedfa6a3e67803d1ab00cd",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "733ea481d862242dd6f39aad324c8c9ae96c6cdfca2cbb5b97698533a8d3f7ff",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "60b387fa814657ee168fd3335e22b663cc020cf5baa750c7276fe8f6902fd976",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "984ba7017a83866d028501b4b77d797cb2bb42257fd321ded623d3e41cc56f4d",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f3da7d53aef6d7ea975cf8e021b9228b740730a1983e97fbbfa0ade009058518",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9aa27b02e20be0024f8096271b2e4b9cc144141e067bae71537b8b3e77d46f2a",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7e95e93c33e709658b2097af072c215a27c60ef1d3856f8119b7236734e4a095",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5434c3f1bc458201cc08566fd336c20a47d94a6be29e0ef5f4a248f141ffef29",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8c6b1de449e33476c054a0f79af49691f69a1286ea8f38fea2eabbcd7a38bf60",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dc2afc29fd6116e29d108f2fd61dc50b02d2b3e4b6c13b739b9e7930599b02d7",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "34c3e2b963239a8ff0cb23134f7913ce03e8db3f25b04478ef0dd9a2791dbf2f",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b5183ed4ecd8ff063bb13e3094486e98d80ae549935ce23fe980e2e15e16902b",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b0d173381e515bae530361782c1ffc9b27611247267763fb06ae9087a8eb0764",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "72cac9766f04ad3c030dc30a01e1ecd9eee278884fe7488e74a9294e1428257d",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a844abbf6c15aa5321845ddc3b14396a0111411efbd5516ce4f327a74fa09b2a",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "75102e907a995e466358a54b245422abf432cd6c362f61c2ad32fd87f116c585",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "20da733d108537707b6b355cbff58ba52ea101c042c1703129a10eb516373e13",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4e5e48078064d3d881a7c78b76fa4ef35f6ad48b7b01b044c1412c5210d39c82",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "07679fab1707787e8228b1f018c5c2f4ac9deebc3b61a7bc1bd7289d8222ca1a",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f28911ca0a77d954eeb182d8456f3c1124053995d8f9843ffedd9447fa3aa6b7",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cebded4065e638d0928485d152b302acbad00ac295a8eab3aba0be5e471542fe",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e5cb4442f1afb3551d0e67297061cd85be7eb9a67f00529a6d71ae9d0ffbb8e",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7ab2c13b4fe99634ca33509531e7617775e111cfdd46fdc20ce6d1616f0a09c",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c6f46132bd7422d9f189e16f0f1979154ba2d6be4371b69e478e2a14ba0f7fd6",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c1258059df43e1599e1a91b014a0b353a5bcb1ee85ca0030fbcb60f3325f7ab2",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dc095f12231847ab79f0238a73fc7139080a892aebd4b9dbd6ae849d8f7fc52",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d5581d8ec8b17707e203d92b7739455f025ba70d53f7534ecd6a154e0de40375",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5152230d112342fb5c77a66aa3cdb428f3f75d3150122dc896793f578010a3fd",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f74a01c8851896553fb971acf44d10c0cf75c47852e09cc7b8c94561e41773fa",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c7d09eb44412dfdda5e818888bfee9d7880b9e5eeeb4e3a3dd0be13dbafa65fc",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6040e433878e5016e4f065f4315af0e0624e6ed52da781857be737b5f60c85cf",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c54beda44fa60a89f1c32a4160956c9ec32946c590d5618aa0294132a7bf3259",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ae52ddd312e1347915c89511e2e6fee1624daee96fadbd749383625657370352",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "26afddce8a20c45951863ca4bcc6565529574ef09fe410f303f42773ff2d17de",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a05e10a3211ca948e54d3d312412709d522f28e3e615b618d3f1ea68d9bd126c",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b4a35ceeabe8235a61eb070c58ce66956b1436fbd9b5f7da97b6235cfe3bc3cf",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3711cf7f656737657ee3e95e23e26deab0bc0205f1bb1415b5e79a0fe25c96dc",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "edd990866c5521c814290ab9c4e6585ffaa6e9723f0d574ae8c2b61dd3171244",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b9800603d8af8394c14c1c58a757679d5c42ae6ec3000a5af845da7071069cfa",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1f5d6a98a2d30d87e5fbaed5b1b9f1ceffac64c475fe09690d0caaa601d82a10",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ab6d609985d071e28828dcc4df72681d2d55416d0c63fdf7617f21e8bd6bd87",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "28aec824f9f15859669e6493e72143a57e75addba47e5ebbb44c6f8db58b8988",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "da1539d8ec919b1c076aea9f4ba76bb7529d789048e7e735c50c974e0940ac99",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c84e9bd78a834b5bc5b507fd5703c99f005fdc5942b55dd2f07237658aab94c5",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "939dd19cc1ac52567d8eca67f938cce8737e07fa4ce7f87b9b41b9b517019a12",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1af32cacd4e8ac838a84e2d1221462a63c370bc43734134d0e98087de6bfda77",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b5884819bf18c81455cd949ae50ca22a32f64b64c5bb4039189118bab9f7af",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b5884819bf18c81455cd949ae50ca22a32f64b64c5bb4039189118bab9f7af",
+ "relative_path": "cases/fault-ambiguity/trial-02/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "96b879c78e6e0bb3f23b081d2df443e6f3540297a72c3b6105be540d048ffbfb",
+ "relative_path": "cases/fault-ambiguity/trial-02/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "d2ccdfbe6bfa731c01529d4037934302f66c2ac811123c5d8a7fe2eb6e9b23b2",
+ "relative_path": "cases/fault-ambiguity/trial-02/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-ambiguity.02",
+ "completed_at": "2026-10-20T02:49:38.785092+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "LkGaPLZTxkPQXDhEovWQgZXhGZCwesNpx/ZPRpw85hiOJd8nxDM5d00TGTlp4rGq4SmQaG92DvDHZOK3PmABBA=="
+ },
+ {
+ "case_id": "fault-ambiguity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "8ad59be4bde67a6b7dc47aabeb241a44eb4f7f98fc97b74f15db0506d67ad8dc",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "7cc489ddf93b81e8cea144f75ee230a1a66f2cc7a246768c37d8ae35fe7a0063",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-ambiguity/trial-03/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-ambiguity/trial-03/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "504e765116fdb473f8cdf0cdc5ed3a7f9a4ace9a9bd22dbf197068ba99f46bbe",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "280c1b40556ac4e2df45991b9b3170d59e36461f10d505b03391a3f1883deb65",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "baa3ed98057881ace186b8049c144f667502bc493b27dcb02d5be2fdcf50de88",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "2bd0d8c6bf0fcce608b02f59158df3bcb073842d20a53c20c498bc10f23821a1",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7e1463623edec834778cf77f00376033300a8d18e9031a00508e5ac1d42bbad2",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0984439c17155412da8cf7633dc69812ddda07c3018ba0b0d023b11cd3c0e71d",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "22b88eece76adf8bee64838fabd3ac3646201ccf95867841ee86223c1bfea0c9",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7b82f1cb147afc1d15692f876628763ed5c43707a6c2c7c05e5f1cfd60d6a7cd",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "256827449c814e953f94cc7f5714437e2b8e27a2cf4d795f387e7697b26f9c0e",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "91d741a6199556f9e690c3376134a08b9a9a5ff5f192c5a6b9aa112ac06187a6",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d54a059ab08c019293cbf5e8da9b287c2389844b38cb3be0064647d7bb7b03f8",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "32f2d58b8bfe855b4d276b9328902e300544e63c696d7d15e65d489a9df13f63",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a9fa56806d081858271bdbed7a3a0ef025b7c59aa4e1abf7d2b572b1e3b2ef31",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1ed0bad581d962f2910385f95057c55a4ae177435f57b2c0b245a460396b1162",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "db22aa7d555d4f8c0e0b024b1d29ad5f8cc111b72f22a02a9d971ecfcf43c78a",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "429a4e1cda7be33c42387243f484ecae4f8c56b5fec0a67a222d47c5c0c8c1e7",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "472dec4853dc8b375d401c2f0b4c03d1d02696237daa94373f9bcfc97c2be07a",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cfb8fda71efb67aded16cfcb162cefc24dad04ee9f857719db84ad447377ecef",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4fb709c865d863ef4bb530ca80c917cc19d3d9c5087f295b3075c52084a4e80b",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a644cad4891f23f3116c9ed9cf47650658a2180702531e0d4c02ba8490d35990",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "edd75f38d87683e383a8ed48ebac5e0bc1558414284688550929a285d9cb7f73",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ea7104afed43762060a07f1d2c072304405ef1a85393834bf11a98b2284ef8e7",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6377ddda51a950081eb5269f98a8c08e75353d97f34aec4777ed5610efcf4253",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8d92cbac793a1b94055179a76852cdbc5dc433e558dd22d5be6ffed0b490b93",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f8655d96f3c75379b42fdc18b7d6342cef5bc360c93f57fb25cae07e0c0ef6f0",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ea187c5022b5b55cc5e1d67944b6f0a1da9030b5a71ae916f86774e7e3c0dac5",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5f44da517efa29328ae16050ac3e479f11022b280536e6e4aa62d8e7e189c510",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2dcf5753fc4e6e10d7db116e98b7ad01e5128420e007d104161c4a5369273d5b",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b2299090d6265deb773b5cb5b2b03f9dc1689677848df8b76bc49674c6cd527d",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1a29e7e7d0895a778cae050bde13d4e14871b21c6eb81397e62c7193e828e6f",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "06d9fc12c816eeea764147f4c9371fb5895ed2fb3021e311f2c331c523b01574",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "482d2aeb8df463a477b3f385d81b07b803212ebf0467a362e6782a6e1eed28b5",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b4f710d235f59c67a0638762b77dd9fbb72f568282e43885a50fc792836a70b7",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "797845a40a4ddb7b47790442a77d8fabb87b43abe3d37f37e23b0b0aaffcbb73",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5884a590c2a665b233f7867d9963cc095af069fc40cdf9579ba4bdb8ae99c4c9",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4993c247f1d66302c5669e86e3e3d963bfd349592c2572f54bb56a72bcd244ed",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbaae6c95b577aa72b6d4da46f924754f4b0ec0a67b8eadc89a7f155a22843ed",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "db0faeeed0b64c47da251f44da2f527807e09f5208a14be20f605ba2f99b5949",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ebddda9ecabaaae75e23ad09c4ee91964197ff8902774789d83a4bd75dfc889f",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41899f4d448f839b35edd066d5c5dae9cc7c84deb46c5dc1c774b01536c49883",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4fc3e19a0ba34493724ddef65bcf2c28877d5b1381e0baf551e0d731e28e8cf7",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "46f40ecbe96f2a4c238b87d074c7b440ba5968bb0167aa6e9a4627f5156477a9",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f15534900084af51932bd6b6418a1d8ed16df71d89f38ec6685bac99c0a34b",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "74f2eaab45c27c13b72c402fc0b3b9ff9a01c60a0c0b4a0addf4d84b0c79945f",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "01a7fda08f8f4e006c0efb69ad043938b1982262453cc8632a8be167dea0f7b3",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b4a35ceeabe8235a61eb070c58ce66956b1436fbd9b5f7da97b6235cfe3bc3cf",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ad9cd8a35a2ce466383d744225839a7809c8afc05361c9092dfc48bfaa194bcb",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "669bdaa42f5d530bc957f0318e3e9ac2c232b1cb16bdfa5932aa00ff5d7fa3f7",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5a1731e51f8fd85f30cc12c2fd846941fde7e44bf160f895f1c27e90fb989101",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e067b0efc157402f56a29cee58fdc76de1a8985e49d4ba5910a9d7aa8bbd6d88",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "02588db579a0c3716189b38957902c6f855a42aec141b3be7f0e3c8c00a08e42",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a3d3c342b4eeddb0fec83534696a2198fcedda9176deb4acf8d27b4ecc5a12d0",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8f7952b1a7e32bb3e1e432f6eb7fdbe73e30dfef919d788a6ca864e8cf0ef502",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f9c80e2a669effe6913170bc3097b60a1663a1c47b5df55a0b0da444374d4556",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0c26b7f08765699a77d899aa5834f53ae80e5cbc26c3cbb5b796b01df2fa6b60",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e7a7bcf083d3eba0f3a5f5cba7cfbefec6ae7425dc6ab63a4e8861ea7c55221f",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "72275a9a9c0d7e3f8cb1cd0cfce85f73f56073742932e7aa6dab177788fd0593",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b5884819bf18c81455cd949ae50ca22a32f64b64c5bb4039189118bab9f7af",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b5884819bf18c81455cd949ae50ca22a32f64b64c5bb4039189118bab9f7af",
+ "relative_path": "cases/fault-ambiguity/trial-03/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "a81aedc2d827e40e3577f9429aad56532c23f8ad2db320b09b323f0d12ee0f16",
+ "relative_path": "cases/fault-ambiguity/trial-03/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "d2ccdfbe6bfa731c01529d4037934302f66c2ac811123c5d8a7fe2eb6e9b23b2",
+ "relative_path": "cases/fault-ambiguity/trial-03/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-ambiguity.03",
+ "completed_at": "2026-10-20T02:50:01.533706+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "L/zJq0fzW2ceUohi5CKJTm5+RiHpF9fWRuJbAvv9UIc2+jW6khuKuCCcXnzN8QWlY/3jHz4UaDBUSIOHHQUSBQ=="
+ }
+ ]
+ },
+ {
+ "id": "fault-wrong-identity",
+ "kind": "wrong_identity",
+ "description": "Deterministic wrong identity refusal case",
+ "input_ref": null,
+ "runtime_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "action_targets": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui"
+ }
+ ],
+ "expected_outcome": "halted",
+ "required": true,
+ "results": [
+ {
+ "case_id": "fault-wrong-identity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "dec89c94922aa92bac7d337653fee3aebf9c2a8e04a9a451ecdb887cb2d23c1d",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "ed31e9f113881d8af4113fb54e84dca174cb0075e74f8535c71b111b5c49c0bd",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-wrong-identity/trial-01/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-wrong-identity/trial-01/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a518d93b7a2dd067ab90d978bdf392356279222d024f29808c893a1b883f1f4",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "e32497daa679a745b96397b2f5da571038054057f2882f29e81d8f9e6a0159d6",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "8e2b3701fe44a10efd4447541399bc6efaa7420df1a6a475f88036ea94a43ccd",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "2e98083b410e94986869ca39707ed41009ff365a20d4c7397129fc5964f6b0ae",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "23eb6edff27035acb19b051775edd7186aa5228d0d9a6a7d248adb5ecb43111a",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cca638bb24cdab0d7d3d315826a16e420e8eb638b76a036d05c5e1876d3f661b",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e194710e9f178bf6e66166c847781ba661a53ab485596442224e952a61b5100b",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "04b2cd39ad35553adfbf728e61beddada9d2505811a09c456f793f30b9308fa2",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "33812b6179d5931faa52642f5095231185e2d14ce3f7c6f10a9da821bf645386",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c37ad9be0a5537e7886ffe07a6dd67fa298f0e75194f72094b9013fb06539843",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "83e399d3ac6cb1f2629020b66ff6decfae52c7e3e9dfe0a8ec6f42c07136af2e",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b639ba006140bb757cf1d7dff7c19854c508e9b905ea7f3d82a15d18a413727d",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e4f678bbc3b2f832dba9e052a5af70b6d2806754d7e300592d64b6035d7851ea",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "48e683df5d6b41665b3e9625200b309c7fb9b31cc5edabb003d380ff2cd8062c",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b0e372a910b2045883ca5cf8453d6e798af9989035d72b0730dfa3be10b206ba",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "94575f324d630868d65eb2cdff2971d4a8d889b24557f4ce5ae16fe32acd9f98",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "34f4f30462210942eb67c5629a3175b556d40ba7ae8ee83ba52f2b67a5dbc623",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "754dbd8a0b350d5655dfb7d8f63517d7a1f531b3b5177761981cd7cfaf6434b2",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "eaa786612b75766d9deb0a7cdc16578d9b568ff03101a0b0a2457117dead27b7",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c51842c4e0361f6828bb2ca062600019484a4edaadc9682be21ca14ffba961f3",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "accfd05770ca8b93d98e4b57bacff586f9040bdea4307d841c60ae8d29f1c5e1",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "44f611720e57efc36082c31d8a131a6b22d2f051766b47c36fed0820609a62df",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cea2765d869174e9f9e6af5697a727718a18166345c703061a59338b50a6dbd",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dd96bb4a31bee5581c859df0254cf2ff8d4d3c0fa6aef8313a6fabff02504b33",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "434b9e4bb9811f8263ec93a06a27ceb1eda4d3d20c671d7c4b71eaa85d04be17",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6d23d40f53c1ec8167bf0454993213e053e614dc2a22d8a32800266cf1e551e7",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "537a5e26fdabf073320e90cb22dfdb484cb4c658331e28f4c32a68203df6070e",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "463d9e4fd49bd9c9d88e9e45b7e5c6d8588c8cfc88c919757b055dc58c3c8cb0",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "af08890f5d0fe59922ac2bde94bd190c194102534526aca0fda1b860f526a3c7",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4743e836ec80a1a997a461803c8905afb342d09a79e256042d9f612c8e095cbf",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0aaa6d590b64a9b7b8a9134020a3040e4c28bf6a7bed416f549c6d31ac1286f3",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e700cb4656ce8caec297f8ffed9d51603b285fab8f6aa38cacf9ee9788518380",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "11bd61b1671b1871b5de8a950f3380dd58364a46f05549110664eecb69abfef2",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "71b1132c3165204951978b5b166db43b62506fcc423242afc036843c44f8da15",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f6eaa9e919e7f78d6f898c02ac228e7908c563e355a8f46bf6986468bf7a8642",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "758ca2da6a7bf3eb27b1f6d1272bb1948f14e732dd1d82405dcd2a9cd50804db",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "81aad85213e12325194281d9df0fbf55a1179126382015ac1067a20e221d49a4",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbaae6c95b577aa72b6d4da46f924754f4b0ec0a67b8eadc89a7f155a22843ed",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "df131f62b283384b5a0266c037c314304308e4407401d901148546b8a2be6abc",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d340b9a508bff667de8a7239a01995bec2ea2f486173e3f712a8171c8826b2e6",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d78993e83d30b49ad73b24d885306a4f1d1508d39c9fb2a0d6d21bededc88a82",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "cea20c4bb96c971f2d9aa915546ce20e3512f4144117a974bc545d4404dae420",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd1e99af94186d7051a2109ea551f444bd5f9bef1274f2c69fcd96ed8e894ae9",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3332fd9a691b81e013986d4185abff9a512ae0e117fe20c4958a87d2f9fd3e24",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1648d6ccbbcb00a2dfcce243b5f32d54789fe3cd3123c672e19ed08298e3daaf",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "181682709bdd06f33365a50eccef4a5f39bfe76f58366c4808393dffcbefe79a",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "46f40ecbe96f2a4c238b87d074c7b440ba5968bb0167aa6e9a4627f5156477a9",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f15534900084af51932bd6b6418a1d8ed16df71d89f38ec6685bac99c0a34b",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2b8b7e9ea72f8c330e3300428e54dacb97011ab72052c0c0a2b5e784498b1c39",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d647ab51b8a51480fe54ff06c02490bff13ee9ad1e1de27b75f8579711b347d8",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b4a35ceeabe8235a61eb070c58ce66956b1436fbd9b5f7da97b6235cfe3bc3cf",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5ce745806d53d5927d28b616151637f975ce6ccfe57f828be2513396ef0c98a",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3711cf7f656737657ee3e95e23e26deab0bc0205f1bb1415b5e79a0fe25c96dc",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "88a63247750d7a938552b45a9a2306275350ce9a84d9bfa6892008577ecfddc9",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4027a6dd435e14e933ce88ca307a1dabc25566fa588dedb0381447bbdfffb2c8",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "02588db579a0c3716189b38957902c6f855a42aec141b3be7f0e3c8c00a08e42",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "25142fcbecb28f07a64cdc4ae6ae1d8e1f2e001f6efa7294dc99fca2c381dd55",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8e07ffd934c98f30c5db74533468e5f987fa09572c33820db28287416975e7af",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "669bdaa42f5d530bc957f0318e3e9ac2c232b1cb16bdfa5932aa00ff5d7fa3f7",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0c26b7f08765699a77d899aa5834f53ae80e5cbc26c3cbb5b796b01df2fa6b60",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4e1477d43c6697f1c44b871abc024a9edc37861e194896b6e576bcddbdb3e417",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "10b471e497c472ce70d46993fc77d3e328a00a504115ad1f9752d8d174c79bd6",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a3d3c342b4eeddb0fec83534696a2198fcedda9176deb4acf8d27b4ecc5a12d0",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e291d643e169bb742849b874e467f9a9574e3a6dd20c2b8032de35d1de031009",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d66405730b336e467d00cf85290038c91fb07564e911a70550e6404dad382b78",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca74b9020bf92dfd609a8aef49e884e1d47dc84eb137edcc6dfdcf8020609c1f",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d23bacf219dc63956f43b5afcd6937f29851717eec696255c9455b7549f4d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d23bacf219dc63956f43b5afcd6937f29851717eec696255c9455b7549f4d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-01/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "30131a2d0b31821ae2494f46213c34c32a828d943c1b1940936c95c69fb327a0",
+ "relative_path": "cases/fault-wrong-identity/trial-01/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "06ef3ad155c06b3c05861ba5b834a2b82e888033f3b6c943115df8f06c75ac1a",
+ "relative_path": "cases/fault-wrong-identity/trial-01/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-wrong-identity.01",
+ "completed_at": "2026-10-20T02:50:23.798767+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "JBEuPbsEnJiECg5W7MP9eSHnzsWdaEK8NgGrYZim7I940unfcgNCOBOn3H8RFpTX+j6Y5uFHFr/uqtgJw0huAg=="
+ },
+ {
+ "case_id": "fault-wrong-identity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "ac6933fb7496449fc93f7874e907a0a9fbd3ad926bd6801134925f3f9dbbcad9",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "05c93f9fb0126ab9b32d98cbbb859813ce287ff22075117927142b1170731403",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-wrong-identity/trial-02/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-wrong-identity/trial-02/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8cd915f59b7cd35b4f1dd8d0f2b4835f13d578a9addae41f318d2a7805b86cfc",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "c6ffe0fcfaf79f0317c411ef9e4a2bbba24ac28c9c77e05cbd3ae6a1771d1350",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "0bdc0dbdbecc4f00bf158099120366e0ee4e812181d3896ce3fb28e22083f6d3",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "bfdb0f81b154ff1353cfb1a09d593fa1f8c042e422d950f180cd39cb05c510a0",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "81abef806de12fac3183290fe031bf1cc09de1f8cb6b4ec72c692a6b43946951",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "765be6054584372a52cec2d285b89c5e239905e0d71233857b09087c314c3c02",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ed6aaec0c6e19eeaf0981c7399dfdc6d1e59bcdab6edbb66c697c52ccf6281dc",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "da4b77edf3832c97047ab9d4ea897b34b8c333c18a243234e91af480af9a5cf0",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3174cf76d85c1c5feb51e3e32a29664430b7594b444e988b31cf1f3e48d2d9e",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7c40962fcc6050a3a47e87ef4a5b0b979dbe1a73b477ed774a43928f16d9710c",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2be12f430d423bdb83deff7a8de70440161be56ab2703c1d9c1af78104dea154",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d78c42eb3912233081b96b0cafc730874795cc6c8edc383e794590424c0e240a",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ee8cc31411a953c37124204287344acb5ec049b4bc9b32ddda9256edbf6df7d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bc29740c4b390bac17c543827dc68289371d22ed51d57a420fed931a2a7e30ed",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "296545c79401e8672772835ad4edf8fe29e8d4c9a04177f3b6beaf4e087b6e8d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "70629ba1b7767d16bb131ba0ed624f2b618cc6e4f933a371aad1dac9a5bc512b",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9cf5177907e06b551805120e89b75c2b348ba92b66da52e6b2f6e1fd89b8afd4",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "15312380255a6e08030e353f70e6108d53c09242102c013d49165ee86d2c2e93",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fc27b1a97c15a42c64159ac941d3cfa4a6d3337f0bd6fac83c6d1400df4ba886",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4ecd6c5a8e7f07c11d99be59c3e6f6ae26c0770a606fd661d251a33841cef760",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ac91a1fd04c14da583ab197565eb6e790815be207e52816c45613783fe46f2b6",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "53c15a4a5c9a98b4a256df7a2b2564745a59c16f9bc017b62856181744fd0117",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9985df474f22538e34a84be85358d177afbadceb84ee71259f665ca9240036e2",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "da7db0ddb8ce1a429ca5dd86b281f979294d42b24d05998021f00382d370a361",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "12f0c815c3d80265cf7535b18936f8ccbc2a50af86b351cc71b2be46a68abcce",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c2a2783e5f2cdbf75ceb9d3666f4aaf72afb41e5e0ee32c3c44cfb239d74fd00",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ad21a5052d54f03a9bb8c868bffb6e7a4b4bbd6040fe9a0f188ad7ca7127054",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4dc5790fa30171acef6aded774df53b1f3383e316d1026470ad7e45414f44476",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "beb643b2af9cfd7f2b65b4074701e3396f0ddff892c4052930b40ac365cfcd9d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2e32b9c0cdbcfa7893fd0ee412aca30c4fdcfcfa2a8ffdf860a164fddbc6bc93",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dafdc9eacee0ddddf0feb324503e5073d67832e795e892692dbacc8c7ff9fc16",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a4cc3124984cbede14631180da55acca1ee58b95a74952acf0ef0ef19d7603e7",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a33bb32c8f8f4ca673f6be511cbbd05cf31a88829bc018cfd018b21101ba47f4",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "144b7065b3968b5b228740ad361e5c658c6afc86d69389bcc83bd1d57b4f3b90",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "124ba3897557393e246a9a4128d236021d664e85e1df64cafd6a882dabd81d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "702131647ad774d25423257dbb124c11326babb03ae64a84c41612c36623dea7",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "bdcda1d039982bb9f9f4eb96d0fbbe938ad7da2ca9617d3f1bf723ed533a3b85",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3cfe3c0faac662b32fecc2684c65e9bfe2958d2e3aefabd9f404afe87a58c766",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5b26662efc16499e02d816cc3aabe261c2419d820dcdd93cc4cde28aacbd052c",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5feabfa31531807d42c9965c3b93375fb6f771fbf4a3d4d8a2cba602aa276e22",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b99b1bfb47d1551452cf9dabc989a6eec0e269c3039382d1ce37300880523c60",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f5861bae6cbb27dc409490dac254549ba35eafa7ac04376814ffb78ef253442",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "abcbf0ceeecc203d3ae212df70f72cee29667cd9c489404508b3ca7bd0ed8f57",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ea17c9c44d5f873e2c3cd604ee2578d9578a96fbfbbdb95766d1617471e0cab",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "39f76fb2c885c0922ba35353c74c9a94a3938c58897a6d7a3d326e7dd10941a9",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4cf457ea2277d5992be9f39f5443509f71be9978a4fa9e0db066da2eaef96499",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9251188f1477dd8b6f7a4ba59e5701997be38801494dfb552632709c883be68f",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "14d42a082fe4e613d32466d4ac7dd78a5e7a18a2653d271ebedccb4875473d4d",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1e5f15943bee4a0e7c270b4f82cd2bb4c18f1334bd67d9e2b8e0e71441439661",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5a6a50dcc3908866eba4ca8074cd91e39a17a6c12052ade000895d39550bcf1",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f81c52db1122535dcde53d54a6ad87e9310e8e28fe9236d28a8701198ec9581a",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ee705e6b96cf25df74aa1956c725766bf6a827d2a5f8fd9621842e9b1fec7914",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b1294d0f968e7949330651fd53867e8d1ac0ed8ce6f6a07f4cc8b781c30cfd61",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1ff4335e7ec44683953f92b3c40a581c500177d2cfd6bffd9d763ed6de8a83fa",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "113878767510b147873867389b607025d32b1bd7a00cfe4df7cde53193470f33",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d23bacf219dc63956f43b5afcd6937f29851717eec696255c9455b7549f4d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d23bacf219dc63956f43b5afcd6937f29851717eec696255c9455b7549f4d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-02/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "aabcebdf779a1bd73ad001333c3dffbd0ed89968366792a0636b0eef3cfa4126",
+ "relative_path": "cases/fault-wrong-identity/trial-02/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "06ef3ad155c06b3c05861ba5b834a2b82e888033f3b6c943115df8f06c75ac1a",
+ "relative_path": "cases/fault-wrong-identity/trial-02/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-wrong-identity.02",
+ "completed_at": "2026-10-20T02:50:45.442777+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "pJByflK/FyoJLxnTkAlG7jwjPNQ85Gofn0WzZh0l1GQWa6RnDoDWSHpMD/VamKSaJdOJ3Lts6ghdHq8NUgRVCQ=="
+ },
+ {
+ "case_id": "fault-wrong-identity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "47f71a3838b272503b165eab72b1cf4015f4368f5f026c4566f6c5600e8363d8",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "ce0fc000938d4d74589e425b9127d8afde7b04952fd7ddb923c7551e57fc2be5",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-wrong-identity/trial-03/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-wrong-identity/trial-03/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "142cab2ed8fb6b60d1f36c0d69f34640375f4f5d8215fc9509f155c0b1e16bd5",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "b7aca224aaa222d8cfedc65d72805166a328d276973f8cef3d7786de94d9cbb7",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "49a9cc14154ef7cc571be79303c75d143faab47d17fd3b3eb7845329ccb25940",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "8637250ffed23704e945a8c0478053fb34d4c7f572385debb200e389b1b8e8d6",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c8d11bb61926050c7065f6a1b93b96f0ba66778c69597852251307076ecc6719",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "61822ebd1edf6b4ce5c38c42189d021b339faeadb39022111f8c45e91b331330",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "48a851066fb455c87956aeddb6a1d2ccd364a753565333f09101c00ad995d007",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "34c03df9542c7620a1ba1c3d5c9576add6d6bcd709c24e7284df1caef776fb24",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "332d61924cfc9d2969776efa82fa92b25fa95c5c439e28cc4507b63a12d25384",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d35da8e7e87088267017cb91f8615bbf3291b84443d87378d0acd1edf10af516",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6e7f1d6ce7a4ecd83f90bb0f5a6d6885ef62b284583b9c430af5b98aeeb9aaa8",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a0e4528db25c1134f15ecd7f4c5cdfc6b51b205b2a69480f9621e0a5e1339b45",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7582c246cde8f6a3c6715047763ef1a1f3c413a67cbbb6493959c4533b0a342c",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5dee09c3fb4040d441eaab1d9fef74cc5e77f3164eada552056732e52c4394c0",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3b7c47e73ef3208fefbb64232ec45d39f740e01f9207f344a7e71f8a45fe93c",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0bc04fee6f0f6e93e10bd37be6d94a480cf3915daf90a459a63cfee616cf91c0",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1200fd8b51700e76a3f0a995e1560957323bf6a9d6b431d301009015828eb867",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "99a06374c4f1fca99fb31ad2ab2b56b28ab5e9fcfa7b453f32e7ecede5fc979e",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "439f412f654a3fb82ead923a21fcc3908fcda9dcac75a7ddfa3488a6ab6dc33a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "344faf023b98d987ad35b699c29f8226a75e03c6a4963c02f6e88208c477e73b",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "72714de4e35c8bc579f3304d073cff9f6da33460820269752d48ac6ccbed245f",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9b5a610cce9230a40a9a3a4c3675912c2feb5d7f941465d923d60677dd10c684",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14d9a4ef9a5329834a8e724f074f5d7920e55163fd40a013fed88754ca4a3688",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e94be9e024304927ec5bbbdf25d0569b04460c08048f6d3645a363d4b81a928a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dfa0ebc8a1a328b3aed9e35a9266124a8e920301348fd88d0e8ed08ca0311988",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c4c9979699ffaac96aea02d52e3ac4e27d6d4381ea94bc4a369323ae0270900e",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "61e49d5871cbe879731694d2080c4c0ffff4aa29cc21a3b2a436bff1a6d7fcd3",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "965d8ac55efc7542cf987bfcb158b1b636bf4e602178a7d31cfe333ed2ad5502",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "def974513087f35a39cbe1ddd9e6821d7db6ef46382eaadf13ca6cc88df5e4bb",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f3aca2a9c54a9558209270cf3559a52c192506a9abc628a268118065f8f3035f",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "faf58e89223a94522b47f9c6e1b65974ee6d35f8c9ebbe28f8a2ffa5397a223d",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f4973899e7e491654687986d55d254ef37729051cb7a18f48094fcfc62a7f15e",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4fd8b98de73afae133cadfba9ea50138989928c8128a21eb1055e61a0c0f3125",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "93fefe80de16a354939844e2464dbefe67a5b1a79d9d277e93f8bd0af2152da8",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "124ba3897557393e246a9a4128d236021d664e85e1df64cafd6a882dabd81d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "759f207277a0195503a184c984d2173d352bcb0320ce3175a2ce35ba7058059e",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "bdcda1d039982bb9f9f4eb96d0fbbe938ad7da2ca9617d3f1bf723ed533a3b85",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3cfe3c0faac662b32fecc2684c65e9bfe2958d2e3aefabd9f404afe87a58c766",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5b26662efc16499e02d816cc3aabe261c2419d820dcdd93cc4cde28aacbd052c",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f15534900084af51932bd6b6418a1d8ed16df71d89f38ec6685bac99c0a34b",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "26afddce8a20c45951863ca4bcc6565529574ef09fe410f303f42773ff2d17de",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a05e10a3211ca948e54d3d312412709d522f28e3e615b618d3f1ea68d9bd126c",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "387cb5eaba6671d00549e239cc1be85207caf52ab12d6f6c660c5e35c25a101f",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3711cf7f656737657ee3e95e23e26deab0bc0205f1bb1415b5e79a0fe25c96dc",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f1d1d1a999c75d45e0d6e3d6ebe573e21e1fa9a68a7c9f84a342c2f7c4e93aff",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "14d42a082fe4e613d32466d4ac7dd78a5e7a18a2653d271ebedccb4875473d4d",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ebd133f8fcb242541776c8a7699d8c36e960723d52f67f49b58dc4ae034e62b7",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "61a81409418c832eb49801341e13d27964149237d7998c4b33b56eb4eeadf9ba",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "39f76fb2c885c0922ba35353c74c9a94a3938c58897a6d7a3d326e7dd10941a9",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ee705e6b96cf25df74aa1956c725766bf6a827d2a5f8fd9621842e9b1fec7914",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6690b826c35b8ed5487edb911404249742db841565d2d66580ffbc9580bf352f",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "628bdbc486d25998a31915c5cf8e0ddec1e53f0c273456a5860317e249db3050",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1e5f15943bee4a0e7c270b4f82cd2bb4c18f1334bd67d9e2b8e0e71441439661",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "be60dd247e9aab42312c73038c94658a207d5ab3e8ebcffea567f4a2601ca8e4",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "263d4bce4231b62444922011b745ff8128248d9cb656c6f13ad21cc221e6f284",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d23bacf219dc63956f43b5afcd6937f29851717eec696255c9455b7549f4d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d23bacf219dc63956f43b5afcd6937f29851717eec696255c9455b7549f4d7a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "4e8b7b4b62552965d42c00364ec47d78470431549dfde14eeab9f85df3b41f63",
+ "relative_path": "cases/fault-wrong-identity/trial-03/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "06ef3ad155c06b3c05861ba5b834a2b82e888033f3b6c943115df8f06c75ac1a",
+ "relative_path": "cases/fault-wrong-identity/trial-03/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-wrong-identity.03",
+ "completed_at": "2026-10-20T02:51:07.450993+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "nDLuOWoL79JaFkYNTfxa8gHnb6kx1NV9EeKHuPyjI0gaXVqzJixu/IX9QOf94iQ3NSL6a4UJvFGlYSRCE39YCw=="
+ }
+ ]
+ },
+ {
+ "id": "fault-stale-identity",
+ "kind": "stale_identity",
+ "description": "Deterministic stale identity refusal case",
+ "input_ref": null,
+ "runtime_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "action_targets": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui"
+ }
+ ],
+ "expected_outcome": "halted",
+ "required": true,
+ "results": [
+ {
+ "case_id": "fault-stale-identity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "5fe1475a6e5d6d852f1764fc9dce595682fda28fe6e0250b3f1b89c443b58fd3",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "1b3d832ca725d856969dbf129dfc056b2ea0472a2f4ef6410c56abdad03242d8",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-stale-identity/trial-01/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-stale-identity/trial-01/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c9cee8a6389fcb3313aac6dd48bea8a05eda0f7d375b173dbc68275f14621544",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "31a1a889928c72a6a79319eba94ad52a9466a69536277561a2938333a52897e9",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "ab5f824fea8fc8d2a379979c316f83f29f623ab6da989aed491cea8613dded6c",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "bf42039aa5f68291257773a68a2968b655c19fbf1cf09d69187691f56b4cbfb0",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "033a718aa2047e35eb04bed79c0832ae4dc5bb6c1c69f9564cc7baed4ad3e69a",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "feaae6386138a964a1351391a223f67828234b0cf8517430e7b37defd3d90819",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ce7e9317b2c73d8ee139e5d4f62ff46bad02498a79274852c74ba1854e05826c",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "93b753bb04db8f00ecd09f9bad7c5827ff99ba7659fe63a22e668bf3e6a2f731",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3b8d91c4834549d4e362f126c5bfc3ad146c96d49edfa3bdf1b79013dc853124",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "aeaad3681d52ede9bfc28915c058a879774283ac726c23819a7e687696156f02",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "86c93bb8454a2f1cf85e926598af44cf7561a73c5152b3af1da97ec0cfe293fe",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bd7ed2adaae76244a2ddc6526e2bf11a33f4a06cf780bd037720ae01b4bfe709",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "52fb361b1682046d0b3914ca65984b2f0800531f4a6b0f86c5eacad5fc045b73",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "35e75dd45356d932e957c5c839ad6f910eecccb4ce592b2ffed8e612d80bacbf",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca1ad3f9f6dc67e43d25d1905240ed46466f7170762444be711d77627123f4db",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bd4481562d53cc9b5927e38237db9463edbbb32aa082a7257f9ab467ac7cb1c2",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "75c6d5f1d0727b45d2be6bd1e2e352b27faba854f2113e063bfef0c3ea96bbb5",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8ede94e9b749ae112a2c18149e4c6134e9c8d2c48844325c65222481b4341994",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8cc7ca6676654c6a3d4ad50c3a1b67fa6f6f6f139831d1b33b2cd941184c3e4a",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0e0147aa6f887bf49dd399b2a4e6c99bcdcaf269732fb6411ef7709232f9d43e",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c87f6e14a4cdb3492cbd46421c2564d983b58fe2cda9918c81acd390155a1d1e",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "96ba034b6b8285ec5ceef21a6a7c6fe3973c14d5ffa63bd9e6da91cd75120715",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ebbf9604c9867115c61a2c79da9e4320a2ebd52a51d38523363648e474075db",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6ce5b3b8f4779c29a9891a511e0c9e4c1b5e11a1aabef68433ddb25509da0fb5",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7a5c8603f9838293b3fd9bb0e64c5cfb97a92385068d89de3b53d519c7dd65b9",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c19108508729cd3a3a47e96fdaa6d7e7bd3f31de123207b3d57fc0ea36d46c13",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "523cc4f0bd882f856f262f0b20cc3fe176725b574389809353a6c11ee07cf728",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bf1d1d8c20ef7822ccba682ae60744f16800833b7200110311bde06b56302027",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5277b121bf6da5c30ae09f2340ca9f7c8d234d37e469413a845f39e23128fda1",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1c797e2226c8c4d0546b14d2114e06fcc77ce2ce3d3fc6761361fcfb150897fe",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "feda021aa18ef030c9f994c2b7ab6542c60a1c533b37998c13343de992f28193",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ace8888716374b4c90d15744d389898d894d71ae3cb469cf348febc234a1a218",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8b7893eacc12967ec5ca7abc42d5a277adde7a89dc9d3da7c44aba2245cbc0e1",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8d18386bfee4e1a874cc7a4214109f8aa5f467d8cca0971e972a358a0056997c",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "758ca2da6a7bf3eb27b1f6d1272bb1948f14e732dd1d82405dcd2a9cd50804db",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "124ba3897557393e246a9a4128d236021d664e85e1df64cafd6a882dabd81d7a",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "db0faeeed0b64c47da251f44da2f527807e09f5208a14be20f605ba2f99b5949",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ebddda9ecabaaae75e23ad09c4ee91964197ff8902774789d83a4bd75dfc889f",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41899f4d448f839b35edd066d5c5dae9cc7c84deb46c5dc1c774b01536c49883",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4fc3e19a0ba34493724ddef65bcf2c28877d5b1381e0baf551e0d731e28e8cf7",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "46f40ecbe96f2a4c238b87d074c7b440ba5968bb0167aa6e9a4627f5156477a9",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3408e2ccad1d1a5c77418e70dd32761c2023fa6c5f46ae99010e495f4af5044b",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d647ab51b8a51480fe54ff06c02490bff13ee9ad1e1de27b75f8579711b347d8",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "893bf96f40064bed66bf92e921f2abc7b1dfc37a3ee03d5d034d632926e15d32",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "360d2f27855146cccc3f75f343a18ad1b80b7f0b8d4cce13a60d5324826d444d",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ea17c9c44d5f873e2c3cd604ee2578d9578a96fbfbbdb95766d1617471e0cab",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "39f76fb2c885c0922ba35353c74c9a94a3938c58897a6d7a3d326e7dd10941a9",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4cf457ea2277d5992be9f39f5443509f71be9978a4fa9e0db066da2eaef96499",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9251188f1477dd8b6f7a4ba59e5701997be38801494dfb552632709c883be68f",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "14d42a082fe4e613d32466d4ac7dd78a5e7a18a2653d271ebedccb4875473d4d",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1e5f15943bee4a0e7c270b4f82cd2bb4c18f1334bd67d9e2b8e0e71441439661",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5a6a50dcc3908866eba4ca8074cd91e39a17a6c12052ade000895d39550bcf1",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b200b1f9cf9e9a1918d51a26b01772907d1d9d0890e343d3b51341e229889d06",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ee705e6b96cf25df74aa1956c725766bf6a827d2a5f8fd9621842e9b1fec7914",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "77c9285378e3cc808460941d70fc7391e412a355723ac211644e069b630dabc8",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9767b67a006038bfa0bd01806bd2462f2125d9f2e5c70c880911d89f451c3239",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "113878767510b147873867389b607025d32b1bd7a00cfe4df7cde53193470f33",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d280c399ac0e43322e629d18957d9de738f963d464d0db9f7bd89ea6c309f368",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d280c399ac0e43322e629d18957d9de738f963d464d0db9f7bd89ea6c309f368",
+ "relative_path": "cases/fault-stale-identity/trial-01/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "9a6b15d152dca207234ab4504531986c7c3b5258335fc7dbdfa82ad15c9fa162",
+ "relative_path": "cases/fault-stale-identity/trial-01/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "46e611590b005f7467e0fcf0e636a220050d3997527fc2407cc5d152f4d76552",
+ "relative_path": "cases/fault-stale-identity/trial-01/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-stale-identity.01",
+ "completed_at": "2026-10-20T02:51:29.989616+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "6L/HHwdcSX1uEfAXHqHYup2QatWaz3lY5TvD4wuYTCFbNQ3P4oe6bEGcMkPKaBSc8iFuFnpe/VawwyrmfnkLBw=="
+ },
+ {
+ "case_id": "fault-stale-identity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "4d73d88e3fa53de7c43049b7d237e4a1569299ef5b3d93180406fde6b0845055",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "9c72bbcac1bf5b170363aeb3cd3b0b7f4cb06ac75ef7c16daf3011484c64d871",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-stale-identity/trial-02/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-stale-identity/trial-02/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fcebbe1027d2abb743c811b49415fd910550b623eb075bc876f245299d044d99",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "b398285fdeb494164e1f9b302550d0996b0271b56cdaabbb004ee8569d1d8c1c",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "91b8604208a5cc6bf3adeb2ba8dbe9ccba1b9ccfe78944a4459c6b499960c72c",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "6a9f2ccb2171375ca0a96485b11de7df9b380c549b7d38b1be77f95cdc541e53",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "af3593e328b1b228d4275b07dfd944e3299a835fefc2956d1e317227ef048ca4",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "206609d91b21ba2f1f0280210e7a6cfee171607ca2661f843b76752b809ae0ca",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ad83e3c915b19496b8c215cfc4bc59a2565be93be69410c54f5a345e4ef41bc4",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3673eaf7a779dcd5927683a52b5443e55b18e5ee9913bce145c613c8fcbc4d7e",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1a65750974bcb19661855a222f6426b235ec3c5c8a1c68fa1b4cacc1919aceee",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "61d841d54927066f4f0014e2f7170f7a882e5496f72567a47fee831a9a65239e",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "709dcc1bb6a7607a36545caf99bed0668e0681ccb51901ce87a151b50529d697",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "35f9953e199ac2a7ec1b1a81c5abd820d4d8670cdd5f57812e19ac2962074e1c",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e317f85dfb5f3c56ffbd272159242f404d3580956f4d2aadd3f2e03e65f0264e",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ce4cc59d8d3adf55ea7f78ec3a8cfe0454567712a5242a4a9d8b7958c15ccfd9",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "764b31a753d4806e172710f7cbe7a9db6ccafcfb0ae6028612988b7c413843d2",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d6c9c4809a519a3d5b9e18716818a250b057eccea42de0feecca34abcca7a388",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2a96ff2c35c817644af6ebd9d0d0e3ebbb6070fdc38ce657855db2992945d02d",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dee68d5d2b611fd4f52bf0e7012ead0a67d66becf8f67c63753266be3aeca28",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "504e88b4ec1c9b95da62983695c0599e7d011bc2c640d1e945498587713261a6",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9df925e8ffcb50367efe9203fbd13491d77894da738d63f9d6a30b8c629841d",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "62bc40059729dddc1622ec01813328da9516d400aead7aa10dcf115cc840cf09",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6898d9af9a95fc69d84bd444d700ad8b74c9e6ce63a86425af5ec87a47339cc9",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "13d9ef9341a47741e3b4de315095b0084863a220399e2dc1e37405312b1118c5",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dc1a30b59d618139a0644778af2cb4cfa3ba4ce603eb441a8a136d2b1c66de2c",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e2457a2b2aa227a717c12909eafc018c45e102dc5d94c40d739e6700f983c132",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7239b91ee83e83c15ae8227332a318ed48aae7e046f67dc17c5017ea844edf7a",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3b4f554ebedf76eaab72fce9e49a58fcab6cd6121084dfdd9114fecb0e36e80b",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "10b6772d5562c053f98bbff862e76e1ef48b69f24536f0c5110e8d59b1977834",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5b3e10043d269a69bac63b848eb95102989d8898dd833e12d364db5546f815c3",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4d46c44cd20130672b187c78e1857f8fa27c96e2c5fcee13ffef4db4e4c51a48",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f349f8763eaeebc497162bca8047e5efccee748c3b6a5b21db6384147a16e745",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7a22c24c74258a1ccdbfdd3fc36f98091a16726a2d4b4291ee1e2d110e6bd7f2",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fa5558eb9bbb1be6b8661c75b4bb2cc93f8e4131b706a9a2ef7e6b4d24590c7c",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6399b7241d71db851f784a92bf1aa3371deb60ee29d0004ab815f93f46f570ca",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fad79bfa21dff3229684757c2b447ac400a8ffe95608dafc7f4b66d040e94f1a",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "df131f62b283384b5a0266c037c314304308e4407401d901148546b8a2be6abc",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d340b9a508bff667de8a7239a01995bec2ea2f486173e3f712a8171c8826b2e6",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d78993e83d30b49ad73b24d885306a4f1d1508d39c9fb2a0d6d21bededc88a82",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f9866b9273104202cb3a94f5fa4f2a459bf4454a45adfd005a53db20c8c110b8",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd1e99af94186d7051a2109ea551f444bd5f9bef1274f2c69fcd96ed8e894ae9",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3332fd9a691b81e013986d4185abff9a512ae0e117fe20c4958a87d2f9fd3e24",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1648d6ccbbcb00a2dfcce243b5f32d54789fe3cd3123c672e19ed08298e3daaf",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "181682709bdd06f33365a50eccef4a5f39bfe76f58366c4808393dffcbefe79a",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "46f40ecbe96f2a4c238b87d074c7b440ba5968bb0167aa6e9a4627f5156477a9",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b5c275c29ce7457552d530bed7a469c18e8a71dc7c7d47f27f0b2b7864d4db3b",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d647ab51b8a51480fe54ff06c02490bff13ee9ad1e1de27b75f8579711b347d8",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a34f4ae9bb747ae5b6c27fd22f7f29997d8752fed1b92baaecd5351085945608",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "edd990866c5521c814290ab9c4e6585ffaa6e9723f0d574ae8c2b61dd3171244",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b9800603d8af8394c14c1c58a757679d5c42ae6ec3000a5af845da7071069cfa",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c783ada6829d100354aad3145a478aebbe39309ee690420b43343121299ff292",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ab6d609985d071e28828dcc4df72681d2d55416d0c63fdf7617f21e8bd6bd87",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "28aec824f9f15859669e6493e72143a57e75addba47e5ebbb44c6f8db58b8988",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "da1539d8ec919b1c076aea9f4ba76bb7529d789048e7e735c50c974e0940ac99",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c84e9bd78a834b5bc5b507fd5703c99f005fdc5942b55dd2f07237658aab94c5",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "939dd19cc1ac52567d8eca67f938cce8737e07fa4ce7f87b9b41b9b517019a12",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1af32cacd4e8ac838a84e2d1221462a63c370bc43734134d0e98087de6bfda77",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d280c399ac0e43322e629d18957d9de738f963d464d0db9f7bd89ea6c309f368",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d280c399ac0e43322e629d18957d9de738f963d464d0db9f7bd89ea6c309f368",
+ "relative_path": "cases/fault-stale-identity/trial-02/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "21356fd30e51e80606f8182f4ee1dca871cc14129f059bea6538ea4b0fa11f30",
+ "relative_path": "cases/fault-stale-identity/trial-02/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "46e611590b005f7467e0fcf0e636a220050d3997527fc2407cc5d152f4d76552",
+ "relative_path": "cases/fault-stale-identity/trial-02/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-stale-identity.02",
+ "completed_at": "2026-10-20T02:51:52.841037+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "NsKS2TszLz5vsqPnsaJZ/VN1oReSeHeXTSzZpRfE9ZizLPR+p7OkSC8of5os5F1IiyYKpaxA5xpDj9cXVE/UBQ=="
+ },
+ {
+ "case_id": "fault-stale-identity",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "5c8d4e2faa3b477db51729d4f482a1edcc7fcb789e3e7f3e443747f3a980e480",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "5caa90b55c8e2fe33da2df04fbf04549b0428e13c435a8c7889220537fad9a9c",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-stale-identity/trial-03/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-stale-identity/trial-03/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7a57c21c27a930f50d180cf11d8c0a816125dfb59b074728161552db351519a9",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "1c7cf5a49c4eddcf54e2e296852c2c8ff888c888eaca11c4c3e9cd7b09a91ff5",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "0dffd5492186c62292e345a9013c93cae033fdac13bb0394f6ca51aa65a7a011",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "506b1a170ef075edb074f04765e03ae0e846bc140d7286a262011055d9bb8ae1",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3c940f7b2415d16712025bb36064d05e493de3259fa89f102ba95bfef1b6fcc4",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b69115da0a4296d001885a4337135e4a6e6f8e475bc0583c1923574a3763358f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1140f5a021b6e237db4c709143e768f9a4d7fb60076835505fa8ad64ab25f76f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "84979e8349ffc747a6eef1665178f82e3117a81938de6e38179a18d47d3098fa",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "eb7759aeadf59a8905b56e9b0dd780ab62a6fe5e75e9ed73fdc29a0664ed4d07",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "51088a029d3c859f764586a22c2cf3eca00917f9eb89472ca9fd71f29007f194",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "53d894b65f42a5c04bc53857b9d1d2587b127e8d4e20d68781c35ff00cbc444a",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5c53a3bc272d368483d31fe7eb4785db5704507594e673275ec4e2ebcd2da04c",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3deafd68db7b60c59b1adf80be57edd778cb5eb2c84dc1389efb30fe5925c2ed",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6d26bca887bb88687da8dd3f2d653662827396caf91cc7dcc3521be25318abdc",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3be613e8e31e88294e4ebb1e5633400ee40316947a440f3cde17b53a6a13ae46",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "727922abf6c32d5d85b2286a523eda2a46b496c11d4ceeef1d2a7c479960eb9e",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f5cd123314aeca7c58b59add53827454648ad61d08f2aeddadaab8ee5b0cd32e",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fa87f0e5cac2152312ad6cf4f9638fd4455a187095a61520e0609b838eef58a9",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1d1a6975c52ac80603d3f991d3852a3510b6826089f45af1a5dbd48b7475a036",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "df2350b850477c6e95343ab18c3138ce8044b58daf2dc1f5fa4e5f2f852967d5",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "24cd73d92a3bccc6c0fcd13d8ef9075e0863d3d35ff26ec540839d6d65d3c444",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7e373f61296d6d94e9d3ffa5f5a0eb701b3d284807f0cf172d86fb15cb546e84",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "041ccf1da837eb45e06b63263e824a8bc6582c5a37b0f90e2d1ea597397d0f72",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f3bea5ad9736007c1bb8dd1502580b9fda7dfa8240c63752ad4044dc1a9fc8b9",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "72b92f0ea2bfa9af9526906731b33ea543a016fcb87ab8482b4ec019f60c851a",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "94b85844e0d7c0dce256539d5c1321d5b5a7d8f62564ed96c451a7e95466152f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "33ab03f7f81afcbd59762a575bfe55303cb978026b5fbfc2d9dd103e906e7507",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8c10f7f2dd79e765229fc1d0c3642a25ddabd1e444642f0e212052db0b668ef1",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14c5531fe6ff817ea6405730f46ef59512988448c17b6a354c2ad3793e922158",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a5719eebf3c2d4e3aa4cbfdcf3c429b6b2e878d685357a93a13d8badbdc1d19c",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ad12549ff61684bc4db4bed8ea093e2635b14fd68170ab8815f0c229d1bada1a",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3f817ab7f8d5ff10d8f80bb60afbb5407bd46bf41b4cb9034c3f9d7fc3f01e28",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "719f731d241e57e6a95f24de8a1d928d54d32f2224e11265fb0d795aa0e69e83",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8b01aafad34e747413e20c670b92e4c07ec17576fe6b2916407e9ab644046181",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f6eaa9e919e7f78d6f898c02ac228e7908c563e355a8f46bf6986468bf7a8642",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "758ca2da6a7bf3eb27b1f6d1272bb1948f14e732dd1d82405dcd2a9cd50804db",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "124ba3897557393e246a9a4128d236021d664e85e1df64cafd6a882dabd81d7a",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "db0faeeed0b64c47da251f44da2f527807e09f5208a14be20f605ba2f99b5949",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ebddda9ecabaaae75e23ad09c4ee91964197ff8902774789d83a4bd75dfc889f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41899f4d448f839b35edd066d5c5dae9cc7c84deb46c5dc1c774b01536c49883",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4fc3e19a0ba34493724ddef65bcf2c28877d5b1381e0baf551e0d731e28e8cf7",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3408e2ccad1d1a5c77418e70dd32761c2023fa6c5f46ae99010e495f4af5044b",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d647ab51b8a51480fe54ff06c02490bff13ee9ad1e1de27b75f8579711b347d8",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a34f4ae9bb747ae5b6c27fd22f7f29997d8752fed1b92baaecd5351085945608",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "edd990866c5521c814290ab9c4e6585ffaa6e9723f0d574ae8c2b61dd3171244",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "14d42a082fe4e613d32466d4ac7dd78a5e7a18a2653d271ebedccb4875473d4d",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ebd133f8fcb242541776c8a7699d8c36e960723d52f67f49b58dc4ae034e62b7",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "61a81409418c832eb49801341e13d27964149237d7998c4b33b56eb4eeadf9ba",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "39f76fb2c885c0922ba35353c74c9a94a3938c58897a6d7a3d326e7dd10941a9",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ee705e6b96cf25df74aa1956c725766bf6a827d2a5f8fd9621842e9b1fec7914",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6690b826c35b8ed5487edb911404249742db841565d2d66580ffbc9580bf352f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "247c9df110d185db50d49d31760ffde94b643d1f69906437f85f3aa22fa5957c",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1e5f15943bee4a0e7c270b4f82cd2bb4c18f1334bd67d9e2b8e0e71441439661",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ce242bb242ce7135f6399fb398fba03ba6d218b4f935b1e43ebc8e8c01cc8342",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "78cdd655be27d0e600a3dafd9f8ce9b2ac8c5a8bf08e7308f4889dbbe21fd4b7",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca74b9020bf92dfd609a8aef49e884e1d47dc84eb137edcc6dfdcf8020609c1f",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d280c399ac0e43322e629d18957d9de738f963d464d0db9f7bd89ea6c309f368",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d280c399ac0e43322e629d18957d9de738f963d464d0db9f7bd89ea6c309f368",
+ "relative_path": "cases/fault-stale-identity/trial-03/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "9b4ad4aa4c60a35bdc2e0d3d7e09820fc2e990a1d187ed0721c705f683b5ab78",
+ "relative_path": "cases/fault-stale-identity/trial-03/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "46e611590b005f7467e0fcf0e636a220050d3997527fc2407cc5d152f4d76552",
+ "relative_path": "cases/fault-stale-identity/trial-03/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-stale-identity.03",
+ "completed_at": "2026-10-20T02:52:14.845296+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "FX2r0fmn5Ya2sXis+w3o/lnYLpTsww02BMW20TyZdmuXAH3Jg3AEEUhWjzuS6c2w1fuzyResjUZxmNwBRsTyAA=="
+ }
+ ]
+ },
+ {
+ "id": "fault-weak-effect",
+ "kind": "weak_effect",
+ "description": "Deterministic weak effect refusal case",
+ "input_ref": null,
+ "runtime_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "action_targets": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui"
+ }
+ ],
+ "expected_outcome": "halted",
+ "required": true,
+ "results": [
+ {
+ "case_id": "fault-weak-effect",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "88a538d0bff2dfefdd37a3d040c33e3e07483bc5feea228cd6f3f264a085c4fe",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "1398061e268877cfec8a9d217861868e32c9e40de79e4598fac30e68b8de36f7",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-weak-effect/trial-01/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-weak-effect/trial-01/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "87bd40239695f618bfe9dffc46df14b471ecd5efd6beb9cfc412e844115ffde4",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "7978e476e0725e76c750adc52db577c4c7f6ac0e0c7c4aa743dab3a2ab162183",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "74816218fce7ccc753eee223f060bbd45ce7867c288007f097c172c9e797322d",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "dd4e5440259c77c888c79e1e6ecbb076fd155b256fed063ca08bb5995a6205d9",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "eade9a568875b12cfaba521453936eca32932e5a2f46af45ae4d713a3d4e72da",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b67e76c8c8fb3cb49ed4897537b1ff31a40cb2e1d78431910a22f9038a2e0900",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "943f645b9818e2b3efaa19978d309868b7f3b2ee424266ebd8d92ca6da3f17a5",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2de9261d18467c44f97748ece29933f5c59fe1cad303e0af46a210e8a888f798",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "78fd361c923f83ba9a307d5cc55f9fc87809696b0fad0eae74b408884b6246b2",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a58c6d202e1d8abdfd9f65479efdda45340e15ffa46cb93eedcebee2342b11f3",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "52e8d3462afacacf6f819cc120e3bee039d033d0e7e8fdef93219cef54992440",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2329df11e43ffffc7045bf213167535b5e4843512515ae0d9aec93f5206246b0",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1dba9a92240eab0ce33359c7cc917eef301dbaaa42ff2b7dc1bb388e0cbebe51",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5483b10a2dfa3cae5fd2368dbc5220d46d85da7090b565821036b1d30660945b",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ef365f9a092fddf401fb0d8c1afa5be9d2b156369311644359893a41566e4e46",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "db6eac4d68ce340466be62e4778d1580c9840e37f161a425585ad097f655d4aa",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1f649fb097a360817a4df5606c623c47231b803830c5329998df5a3fe43aa535",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "119df8d79f3b66e281bcca6c21e3d2c4d4efcb81e774f8a0e033957c9ae33d05",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3566e5f935cf0d31b82d8a22e301eb67f54a5fc4f3d4163330e20e6e9689839e",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d371fbe802354b8691ef8aa0f79bb7346c87ceacdf30d877110413ba4fb2b64f",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "65e4fe0d2e2fb92db6afb6e75d99ef751520282079050c380046417a437120ff",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "403dd70c1d9c762295cef8330a820b2d9709f2b2c8949700e53477d8f3edfcae",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "611afb4735f79370d60abe3f3278e8bde54617d4a8c03db73ba7815eab6201b5",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b9a0d97cc77a81c05ef93c4ecb5d5201d75656a4bd812bd9da31d7c5815acc4a",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2c3a580a935f454230468c2d7fba5cbb77f20fce1a6dcf3528625b00d8b8467c",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "47f4b92773b9133ca13ae215b05a1248510b7215eeeb6dcf5a17df570bfb16ac",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "80eea1e9d4889e3dadc94c9c92bf8f27076581751022b337bd2ad9f9a9a41ce7",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a8e715366ae0eef93455df47a26752a07c3d574bce3e17c38048e0423712f80",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9c720cae350e014a6f709bc44405bee288dd907c8b644848b7f7985b402974d9",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ad42c1df620d918efaaea8ed34de3441bd06c16c73cf81be8a30aa0bb7e2a13",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ece7a79b411924f605844beebd1accdc8e3760ed669376dd67a90d550d1afb60",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8317af17b1bf1455fd9f0cfbffc56ee857ba4f0d9d0b001045ba3f144ac7ec0",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1716b3b95bd806ec956272c637ba74a651d2386de943cd4e4e12f988199b9a3c",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a88af2a1f1901931e04a6555676ef159348ce768657ce69673beba4da088f6a5",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f6eaa9e919e7f78d6f898c02ac228e7908c563e355a8f46bf6986468bf7a8642",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4993c247f1d66302c5669e86e3e3d963bfd349592c2572f54bb56a72bcd244ed",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbaae6c95b577aa72b6d4da46f924754f4b0ec0a67b8eadc89a7f155a22843ed",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "df131f62b283384b5a0266c037c314304308e4407401d901148546b8a2be6abc",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d340b9a508bff667de8a7239a01995bec2ea2f486173e3f712a8171c8826b2e6",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d78993e83d30b49ad73b24d885306a4f1d1508d39c9fb2a0d6d21bededc88a82",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8671623e2762930f3d73d2f2795fc66d9ac46e4e727c6a23df3db9f7e85961e3",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd1e99af94186d7051a2109ea551f444bd5f9bef1274f2c69fcd96ed8e894ae9",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "87e20b033d1ef137771b2fe7f5ace3ae7aae7a3eacb8bc39b3097948d63d65a6",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4468b5fa4dff832498eee5b16f5e0b7804b936e62c537e072aa90079a095d2ab",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ec5e5ff4cba0d1fe8e783c677816f3d09730a0663928ed74aaceff7c40b01e91",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c261fb3d04e15f77e04f2aba1689d9f86ddd0447e91f51410987d67a69970f02",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "74f2eaab45c27c13b72c402fc0b3b9ff9a01c60a0c0b4a0addf4d84b0c79945f",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "01a7fda08f8f4e006c0efb69ad043938b1982262453cc8632a8be167dea0f7b3",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "65c50dd0a22ca0b341f47356d18567bd15c18b9cc926809651c75e03a367cd26",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ad9cd8a35a2ce466383d744225839a7809c8afc05361c9092dfc48bfaa194bcb",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "669bdaa42f5d530bc957f0318e3e9ac2c232b1cb16bdfa5932aa00ff5d7fa3f7",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5a1731e51f8fd85f30cc12c2fd846941fde7e44bf160f895f1c27e90fb989101",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b19deb7b436f9bf87b63153a37581edd8ccfb128d905aefa1a644dc5369e31eb",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "02588db579a0c3716189b38957902c6f855a42aec141b3be7f0e3c8c00a08e42",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8cf8776863c67a51f6f7b52ef6a9de05af8f5e9d4131871b9595a40fab1c7afb",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "555dce212c5578987d7a5d58271032b84952dd50a8e70ca82a532434d30fc23f",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "27a6214d5d564fd0b28ad23b4588035b3f30d3cb3a52b3959a7a58a5550acd08",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "35b3890d1f9cb854087d4c157891d2e6bc171bab7f55d17c919402e9407ec3bd",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ea4258a94231b381d77c3c64ae6aee6602ff0abb9f6c1c9089663f0ac86fda5",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "dba858dd9c3e0732b054c310475b2712435971a57aec042732155b3bcdfcea59",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca74b9020bf92dfd609a8aef49e884e1d47dc84eb137edcc6dfdcf8020609c1f",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-weak-effect/trial-01/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "ccb0588a4c291b81db8ade2372700f301e74f6585e76b1f43d2d250748c4c9f1",
+ "relative_path": "cases/fault-weak-effect/trial-01/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "f50a7bc7522c7900758311ce5d710be0cfd436db480706a2f8401039f4cf8ef3",
+ "relative_path": "cases/fault-weak-effect/trial-01/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-weak-effect.01",
+ "completed_at": "2026-10-20T02:52:36.451227+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "LRoxdzDVM/YbOmWyjLT2rPRYOlRSwiZfrAJ4mGcW/eSQLOJY1CsM2mupNHU7+A/ajqL3XNbhjuaCfrIx3y49Dg=="
+ },
+ {
+ "case_id": "fault-weak-effect",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "63c2243e1bd1f8ed922be61d23dd2b6b793dc4e1c339ec0aedf38c40494c2e24",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "1b9b3dee828aa41e50fad33e60b19d3a49ef07adccc595d05bc6601108d7169a",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-weak-effect/trial-02/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-weak-effect/trial-02/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7bddd7fede162d5e758724dddc4b1bd05852e8d662c8b9a2fe1549bd16ec0d5e",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7df3f184e0a7f62d8f72b64c092af9ab4f49325ada5e9e1cf37fe23c6f48795",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "e53892c38439b437fe69416ab4f78ae71e75dfb555064d70fc06b86e2fc48220",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "329d698e41121375b91bdd9bf1d69483fac673e01794b626efbae2c7f2626301",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1fdd9177c6cc2c39d82df8ddc519a457c3ae0fcf46a5e0311d210ab26793b124",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "709c9dd7e2ea6985062615b268fd7340051fe9a5df386cc1c087f56fe31b6c38",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b2a0e842af9a959b8e30e2b6b5d46c2817a8f8293dc2bfc90e2931d64b3e73ec",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d13b4350cd0a03c22b08e616c8efcac404d6327854b756b93c39d109e093b0e6",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "93e64eca49278c9a51ba8cc425871a2a0b4c465f0d6104c64ad9cec15494b8db",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e9b48ade8d0ac42037c4c4709ca3d656b1ca1793c1fe0aaf96427e4d55b2c36",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bbf7e1e9f55c167433d8e09aa03f567d071297beda52159a6719f3baedf09751",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "816c30079dacdeff7554106150568351285ba24409117aa06267b4db813b21c9",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5dd028a8bd706959799d815790436c9774662b96c5d4a9636e0cc7485bbc3832",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8560309b023fe47c0075fc9d3a95927371baddbdbe45970d2f6f94380eacaf3f",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f52225a9458400df820521724a4c39e07c82cc15eaacf73fbc7673930b5315d",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "80d5f411ecbbc1c0ae432ce85ad3985ebbd2db6edfc7885b98a6d41de16e7b63",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dfe1d34caabbfa81bee14a2b7c8692b7f113288198e740e746f4fb3f161cd142",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fa9a873d07a3289ae4b19b77bc598ebbd970c8214f7982e50cc35d141c217b51",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "857100badd097d9b47a03825cb4742464f684820414e74801b7a168e2f4358d2",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1e464faf6d277af7da697bc6fe3ee9f42d8e348369756c1db3adc57288b77fb",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e5fc7549559695bae80818dfda4d524c93a8cd259252b76c64170570fc76925c",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4cc1ed0c1d3ccc8d277ceb9609b82bbcccbca5894a9f3303700f23db9a7c79a3",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "aba962027f7fe20e7e2a75f5ba6584bd12b3b322763093b40f3889360634eb2b",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ef1d876b3434be5ddfe6175efa8444a534f82bfa8813b32c963bae518046dae8",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "724a10b8f21cf573e944cdc6f8d0d77484aaf2d434ce66fced8289cb45764609",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0c5c83f2b9546bbc756bf221304cfb6eb38ff46f13a2efa06bfb28ad17d79fd2",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dbb8a48ac87f4fc8c3cbcd936c87c4a6bbb960796105c24e1aa49ca5f95c0303",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "251613a54701424a03b5d1241a51232c7b97a90b37297843b64ff7c18664cdc6",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a2f21945cd6615788de5507d02f0a30f637948b3d2da01858b55b2a076d17ecc",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4a9f2161ac1620d49e1d0b18ce1d297b4533f8cf98ca9d5b4ce93adc74805fe9",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1b382c32fa255f6156b614239443c7fe0cdd5d071574efb4bec551e613a892f3",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f41e4c2f9062f3355040eb894de8a47245d73c7ef5cd6a5c29a4cccac2a049a1",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "896b7495048ac56bcebbbd71377cbfa3f2601b68b82bd4dbe48e502b722816c8",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "65b3f7dcd07149e01389a2e3b04742c5e5288f5fabd8982c565012e8eae48beb",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "758ca2da6a7bf3eb27b1f6d1272bb1948f14e732dd1d82405dcd2a9cd50804db",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "81aad85213e12325194281d9df0fbf55a1179126382015ac1067a20e221d49a4",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbaae6c95b577aa72b6d4da46f924754f4b0ec0a67b8eadc89a7f155a22843ed",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "702131647ad774d25423257dbb124c11326babb03ae64a84c41612c36623dea7",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "bdcda1d039982bb9f9f4eb96d0fbbe938ad7da2ca9617d3f1bf723ed533a3b85",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3cfe3c0faac662b32fecc2684c65e9bfe2958d2e3aefabd9f404afe87a58c766",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5b26662efc16499e02d816cc3aabe261c2419d820dcdd93cc4cde28aacbd052c",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b54da12cb02114f9e08f94475afc22477b83f43835b2d9c1fcad7c63a36f8627",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "576845c19519b6bd040fd8518fa8f5b27015d9eeb588c7e22d577f8159e2d61f",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "22c7da483aaac482d725fbd348d490e80f3bb0e4b0539e57098bc23cae360335",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "57247e089f1dd8b09d1c8b2cde19fa9a6a05513e62f439e59825cd8a5cada520",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "40603bcfd337da0c13aaa3ac1ead13d0104cce7532573d9af440fe79d81b5e71",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8ccd4cfbb01ee129480855fdd50ed171766430956f53c44aaab1b0ec1fc2594e",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f70c8380fcf82ee0f4cdd947bf3872c999c0ba7e8d8a3fe891d68b3ca339b11f",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4027a6dd435e14e933ce88ca307a1dabc25566fa588dedb0381447bbdfffb2c8",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "360d2f27855146cccc3f75f343a18ad1b80b7f0b8d4cce13a60d5324826d444d",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a8e7c350f02175783ac203929a6212eb517939ffa732f5c36f449ee47ee41f7c",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5ce745806d53d5927d28b616151637f975ce6ccfe57f828be2513396ef0c98a",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93c63fc7b19f52692ca3c40449c39e26a7d8d921241484c05228863f4f4d7852",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "56ae0f9b53cbbe600f687611bb69120a94e90607fa695bfa6a040152f2161278",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c84e9bd78a834b5bc5b507fd5703c99f005fdc5942b55dd2f07237658aab94c5",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "966d5f32cf033af9a7be165465b2f77bd1bc9b9bb179506c80fa1d875ef2c427",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "900684a4080bd0aff2efe62ca186a2f6bbc4a525aef108077579023350d7123c",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ab6d609985d071e28828dcc4df72681d2d55416d0c63fdf7617f21e8bd6bd87",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "099ef7c96f3cce13dc1f11897e72e269c182fc59acf7365dc490c9b6be479738",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0d0248ea004eff7cde6bb375eb113812156360d7ed9ea87eebfc1b87b9a1400f",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-weak-effect/trial-02/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "dae8bb1bbe38ec1af8841f438efe39dd4a7ec64b2f91a9fc55afad6b2382b126",
+ "relative_path": "cases/fault-weak-effect/trial-02/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "f50a7bc7522c7900758311ce5d710be0cfd436db480706a2f8401039f4cf8ef3",
+ "relative_path": "cases/fault-weak-effect/trial-02/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-weak-effect.02",
+ "completed_at": "2026-10-20T02:52:58.772484+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "B+ImMkNLBpJEZ5LwlAKtu1I/tDRWlQr4xMurfwem/Om4QjcBKpHiom+L3RnAs5v+dZX+KBMUBib8rKMD/nCmAg=="
+ },
+ {
+ "case_id": "fault-weak-effect",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "8da9ed97f3df7c64d6ebaf34bcc3113124b9c3d8e65d7be9190bbfb27f80650f",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "32e888bf99a87b39821d2aa02bfb2dbf4f10bee165aca606aa591923dbf5dc1c",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-weak-effect/trial-03/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-weak-effect/trial-03/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2acfb646ee4f0c2fe773fbc5514b4f7a449c1d9bb5a612581b4563c0f14e908a",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "94a7513885926a78c263750493f7b91eb105f5b06c4a677beff3761f7a8cd9d2",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "5e986b1a3e8c8f793274ebd094cfb007d7da8160e9dfd03dd582ad817d6a9e58",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "5c33f83803077e08495b07b04c3b60933c0b0a88e0c3f4165fd206caa3884e21",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2e0d250b03586129b9a9d2f8434f6ab0a36db63bfd6dbdc4cd50fb70d7ea79b0",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6c23aa4d629fb558630ed2f04db922c65b9c72d612a439823569732b39c5daf8",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0bb7d7500d57620d06f727194c54480c556ca2cf72a04f6dfb0b73434f67cf61",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e006979b38748262e7be2b62364afc8dd29fcdc5603fdaba72324be9cf0976b9",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "05bb38920932f0bbe520823094aae99bbe9a8596b13a9cae714f86af8a5ff92c",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "657165cf21b8e6fd8c5e07b8879b33b3ea694ca8cb42797629d1f25c848adf1e",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "257cae1fff29fc97af3d9615686868fe2bfaf663f551f0339849f3bd7552fdab",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d19d73474a528bff0b667b467030f5b4b2b82c0cd277a51039d6cbab546f98da",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b2180ef3711f86c78ecfce7fedbd6b65acc8bbbf4ab7690976a473c8bfc211c6",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3cebfdbd067ae9d691c5befc6e3548888fd1cefbc811e783934a4e2b0d76417a",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1197c703e7afad65db4ab300a2c0afc82a6c2a879154f7af6bf924aa6938c782",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8619a51d8f6ce91d6beb09fa7c325c028fe0aa913cfff81293a3fbbec47ae91b",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "712bc2f6e77688066174b4fe0257c8ad6895cdab7f34ed616316a9da22990b60",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "959ade678d729f40a8d8c24c42a30038248a6729d2aae776caea96a8750f3f00",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e4dc38928d13b11d5da02b3efa74546aeb025f73f528c8c239c97b49443a73b5",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0c76e0f563e001ee7742c7cdded4675fe2720b3dd9e4b9231e0eb4b530204ba4",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "87f58e9332b671be1ea4f77718e6214f715de8996dda57a35e0c6e29024c108d",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5e423ed9c58dcff707df37bfd1c41b86c8df92b88f9f38080ea740bc14632873",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a6136eb83519ce3d866672f299325ddc54c46a8a85ff3f6136f3317bb742a9b7",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "29aa6b216ca8db18c78242853204c45a7261c17e0981227a323539097db5fbe9",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "705c7e132285b0d3ebe78a2ad442d0ffecc09bb9e42b2486a8a3ff342e8776b3",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0490d4ba2ff9fc75f4a644d25abddbed5c025c99e2b42761c5e3e19549a47c35",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dd256a776926f22a566dc9bccf91684149a5d2632f5129aa35d7c2b5327a4b0e",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3db5f4cb2570925e4c83f5b9081cbd2f964d8c3ddf0790b77fed775d1c282a26",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "444923ddbfc04397531a8194725fbdf4ca85bcc6c56a0273eca6fea424d7cb57",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e6fcf576f775ffb880465843472c4051ffad8609d11daf54777c435153cf587f",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c45d713acd2445822290f8df44ac956014fa813a4987693b500f753b7a245853",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "df29b27eb6335025ca79d1bce70a4ca54652101e1f1f782de4fddc1867f8fb87",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0b1bed931ab9d32039f404cec4c9004065fdd94949e68cf0c2ceb77097e624bd",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3ae0beb8674a48ae2221d235ccb59dbdf7c5975904b4551eaf55bf580da2221",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4993c247f1d66302c5669e86e3e3d963bfd349592c2572f54bb56a72bcd244ed",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7ab2c13b4fe99634ca33509531e7617775e111cfdd46fdc20ce6d1616f0a09c",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c6f46132bd7422d9f189e16f0f1979154ba2d6be4371b69e478e2a14ba0f7fd6",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c1258059df43e1599e1a91b014a0b353a5bcb1ee85ca0030fbcb60f3325f7ab2",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dc095f12231847ab79f0238a73fc7139080a892aebd4b9dbd6ae849d8f7fc52",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d5581d8ec8b17707e203d92b7739455f025ba70d53f7534ecd6a154e0de40375",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5152230d112342fb5c77a66aa3cdb428f3f75d3150122dc896793f578010a3fd",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "529f58aa86b15e7dc11f9627de3ffdbff56f12f58267566a87dc3a587e594349",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c7d09eb44412dfdda5e818888bfee9d7880b9e5eeeb4e3a3dd0be13dbafa65fc",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6040e433878e5016e4f065f4315af0e0624e6ed52da781857be737b5f60c85cf",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c54beda44fa60a89f1c32a4160956c9ec32946c590d5618aa0294132a7bf3259",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ae52ddd312e1347915c89511e2e6fee1624daee96fadbd749383625657370352",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f15534900084af51932bd6b6418a1d8ed16df71d89f38ec6685bac99c0a34b",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b5c275c29ce7457552d530bed7a469c18e8a71dc7c7d47f27f0b2b7864d4db3b",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "01a7fda08f8f4e006c0efb69ad043938b1982262453cc8632a8be167dea0f7b3",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "19e55f32514dc1d970f6bb3d2700ae92bc25fd00fac2b399f384d869b8ebd76a",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4027a6dd435e14e933ce88ca307a1dabc25566fa588dedb0381447bbdfffb2c8",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "360d2f27855146cccc3f75f343a18ad1b80b7f0b8d4cce13a60d5324826d444d",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fedacc70e63bfc6de07f4b557882ab58fb6991c939ad3d438f7b595cac16408a",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5ce745806d53d5927d28b616151637f975ce6ccfe57f828be2513396ef0c98a",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a84087b07fec6c8fd47da09a1a383dc6f0a14d165e7d3f956acd77158de8c6c",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0d6605ecb4ba2bf0e97fcedc0e1c49c07001a784123fb1f989e848099aff5f74",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "11fd7e106464d485527a85497f4a09205af53fd5fe239c44905b4171d7de09aa",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "376b753dc6c70aff88040f4f09cd16528685513a886e95ff0d51e422785bda60",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4ddc5538ec39cb4837dc1f48f2a53d2c51a06124b98e1dad11320aee33819b86",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ef4e824a3be47dc4a29643dd4b2b6231dfc9bfbd4def9a64e41b0cdcdeb91e76",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "66bca8eaf77839ebd59c88c423f2633940f504fc737d9cc8a712631ad2332540",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5f7b3584cb47b4e28dc377caff9edac3937c25b99cd41aafab8fee1ab0d23f60",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e355de59f04224ed940b938135ff96888cde996c45d8bf54d0013493fb0d4a07",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05ac3cb82f163b6484ec96cc40660fbcec68c3dfd8d453dee6480acfc82512f6",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-weak-effect/trial-03/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "93bccf3b70891cb0e4cdfb3fba528f519c0cf729753a503f4d2f0e3f628357d3",
+ "relative_path": "cases/fault-weak-effect/trial-03/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "f50a7bc7522c7900758311ce5d710be0cfd436db480706a2f8401039f4cf8ef3",
+ "relative_path": "cases/fault-weak-effect/trial-03/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-weak-effect.03",
+ "completed_at": "2026-10-20T02:53:20.377616+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "g/bPPeeDPHZB71VKQ2iaU6HkGp1MWiPgkPGSAmlMj8lDdhNx+AjvPzpcv05XYIty6rk0uCyDGBv3D2n7jpsXBg=="
+ }
+ ]
+ },
+ {
+ "id": "fault-missing-effect",
+ "kind": "missing_effect",
+ "description": "Deterministic missing effect refusal case",
+ "input_ref": null,
+ "runtime_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "action_targets": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui"
+ }
+ ],
+ "expected_outcome": "halted",
+ "required": true,
+ "results": [
+ {
+ "case_id": "fault-missing-effect",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "df964674bd47ec848d279686c9d4377749ccf3fdb11376e2822973daf652b3e9",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "cb781148d2770f799266885d38b8863c3e3bb2e618cd6f23571428ada5f480fe",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-missing-effect/trial-01/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-missing-effect/trial-01/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e23be3d71948c06c1c53ca36e57e58a7fb5c1a0b8462f3906a38190028da334c",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "e8965f69200af913d52368586a74ec5c2268d2fd9abfd0002286938dd70ced15",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "2d9b4feb2caa16130917bbeaceb4314ffdbabb5bb72e2040be45d061bcd0b0d9",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "4d4d929dcb3241edd123c12b338bc55a93df5f99affef6a65314838b678cee38",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "66cac94703fba9717a24a5d5911eb7d8d79f71a8eb67cd93a91633d1eed855bd",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e0e513d24b392149cfcceebc3b10f4fbcac0469d61153adf09be424887abc50",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b6999a33d9ba9c7f7f7ae6e59478d67f21afc820dc526dd898ea7c98426e51f4",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9b9df9ca17252f7568ffd46c9af2771522291d9e0d6fa4922f51ab4343d66bfa",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "17424b371db60cc1136051e381dcadacf9d8574b0ce89ea72d107b4cc3ac1c51",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "747c23180affe91d47b5861f097cbb483c97c518b1bc214d53bf0c4f7c665f6a",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ab89ad51445fede252e278674f4cdd0c9ee2004cd2c28232bf45e9310e59b2a1",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a88de3ebc4aa15db2ddd72ae8f082f91e53fd30431ce20fec909902c897900f0",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "48dac96f14d52dc0c8f226c81adac032c08b0ec62436ecd2373a577b4b89a162",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8470c72d54b477a3d9450b7a9f93c50cfd148edb3fe3bf998c417d9ad3f667ee",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "41b7f6ad98aa427e8da782c3fcb864243d91a3d8513ddccae8e322d7423a451a",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4449466f17afa67a7faf2fa2d459ec4488d93a644a21fcc1c3a21dec8c55ee54",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2ac1def9dd9e0baac946f373b4543934aef3786bf025cca7f8a88079ca1b9a32",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "18757b6fe49aa2c669fe2fc71dc397215a2835fea1b4156b6c53de62124749c4",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3ee92f856574dfec9ba2d742cb94dd94b3e939b32f007d14f38ae1ebf8298321",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7a046913260d6cf56885ae8bc6d11c5558110e82a046cdbfdbe401ed427d0784",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4ae9fe9af7aa96f6c53391e65c148f867a48c08f2d1639dc1d6809d87869aebb",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9b93b6f6450baf451b8aae8c81847d567dd4ea62811968e375788433e649f25e",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "274bde7f7216e2b064f2760abad29480eac29542f4c67e75164816213ef96824",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e0c9642b094977e1c8c2a876171d29932a5eb76c789d0cc4c2b2ed72c0a8c1bf",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8ea0c065027b53c7f99281d706ca65d55744ab5326c5c6a8084f4dc6966d074",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0e5bf4cbda929bddc83ba3272b5ede440d630efcc9b985a1e7c8985e1e684f3d",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4d0f442a0b2f685850bc8105ae3bb7c15d3199c90c7686716fbdc0164682f981",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b19449904ebf78179b3a96aa52c5b2108526ad4b7fa52f896ebc28abea0e0b00",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dad4b19f2d8ba6ae02417d4e717e6f33b6641ba28d71aa59008057bfe2eaa6c2",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f2cb2510f2da82c862df02ee48edfff158b024d939767f8258c0aa1e97d55b",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "141212ef822faa3bdb53a681dcc2496a6c131753e01e2ffa1ac02405b7b1f4d7",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5626ab85f9ff4cc8ea468213df06de90609a59fa200a3050a5c064bcd6d130fb",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6f9469d0317b075ca6f2b2fa25e779c163922f419b7a56a0c53217f8a7120b35",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2a857512d80b89fa33354554ca849f81d99493df8757b56e38de68f034e433e1",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f6eaa9e919e7f78d6f898c02ac228e7908c563e355a8f46bf6986468bf7a8642",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5884a590c2a665b233f7867d9963cc095af069fc40cdf9579ba4bdb8ae99c4c9",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "81aad85213e12325194281d9df0fbf55a1179126382015ac1067a20e221d49a4",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbaae6c95b577aa72b6d4da46f924754f4b0ec0a67b8eadc89a7f155a22843ed",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "df131f62b283384b5a0266c037c314304308e4407401d901148546b8a2be6abc",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d340b9a508bff667de8a7239a01995bec2ea2f486173e3f712a8171c8826b2e6",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d78993e83d30b49ad73b24d885306a4f1d1508d39c9fb2a0d6d21bededc88a82",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f9866b9273104202cb3a94f5fa4f2a459bf4454a45adfd005a53db20c8c110b8",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd1e99af94186d7051a2109ea551f444bd5f9bef1274f2c69fcd96ed8e894ae9",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3332fd9a691b81e013986d4185abff9a512ae0e117fe20c4958a87d2f9fd3e24",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1648d6ccbbcb00a2dfcce243b5f32d54789fe3cd3123c672e19ed08298e3daaf",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "181682709bdd06f33365a50eccef4a5f39bfe76f58366c4808393dffcbefe79a",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5feabfa31531807d42c9965c3b93375fb6f771fbf4a3d4d8a2cba602aa276e22",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b99b1bfb47d1551452cf9dabc989a6eec0e269c3039382d1ce37300880523c60",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f5861bae6cbb27dc409490dac254549ba35eafa7ac04376814ffb78ef253442",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a34f4ae9bb747ae5b6c27fd22f7f29997d8752fed1b92baaecd5351085945608",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4027a6dd435e14e933ce88ca307a1dabc25566fa588dedb0381447bbdfffb2c8",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a8e7c350f02175783ac203929a6212eb517939ffa732f5c36f449ee47ee41f7c",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5ce745806d53d5927d28b616151637f975ce6ccfe57f828be2513396ef0c98a",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93c63fc7b19f52692ca3c40449c39e26a7d8d921241484c05228863f4f4d7852",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "56ae0f9b53cbbe600f687611bb69120a94e90607fa695bfa6a040152f2161278",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c84e9bd78a834b5bc5b507fd5703c99f005fdc5942b55dd2f07237658aab94c5",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "966d5f32cf033af9a7be165465b2f77bd1bc9b9bb179506c80fa1d875ef2c427",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "431316c93c6dfc320da43e147c3ba04bf2eb75f4573ba61abbfd66474e8ed75c",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ab6d609985d071e28828dcc4df72681d2d55416d0c63fdf7617f21e8bd6bd87",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "99e9f23eaea7e7a49bdb4c395897700b3ef855e8dafa5075f16323018c1190e9",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9e11cdf8e5f7cf99281cd2e0bbb89720da4e84788d7921775b0919cc9ca54f38",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-missing-effect/trial-01/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "6d6dfd06a5ccb2b488340527e841d98d33c2ecae8ee610e425e91d0beb273a3f",
+ "relative_path": "cases/fault-missing-effect/trial-01/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "da531a70cf546d36b9f63926e6f1f8d3a50018cae9762ba7a1a66954644ac3e5",
+ "relative_path": "cases/fault-missing-effect/trial-01/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-missing-effect.01",
+ "completed_at": "2026-10-20T02:53:41.635098+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "s97e7wTHQ629M7IsjUzXeaYpyx4ANpRN5MqTy7djwttuuM/DXbIndAT2c+12ys91YFAw309HaEqFAdG6Nj3LCA=="
+ },
+ {
+ "case_id": "fault-missing-effect",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "ba9c786b58049c021dbb508648ab9ae2148c49dd1a2d2a93812b61cc8a6d5530",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "692394d8d288cbb1dfcf865ae7ed4b764495d109246d8f1ab14b0f2db52993e8",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-missing-effect/trial-02/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-missing-effect/trial-02/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "03aeec623ef4c1e14508df5d8e203c8a1f1f9524f1231b44ef1ae7fd52f493ea",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "6fe3b04cd55d3fba2bdff5a20b61c9f250e2aefadfbc842064b0b9c0ed163c81",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "e8c798e460a8c21b7464ab664309a947a8839c17ccce80aa71b61f620ca3c02d",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "5986de897875b17cb2260615657425952994baa807698ab377028019edc46e49",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3f95a9fe98299115546abbc86b4768b46367ce422f924b58af7e0233594470ec",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "386dc23a3f45748bc656b445e3c8b60a94caf85f496654d3db8a2bdf8c0985d7",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5c953099e2842439564dfa9bc5f665e2eafd0dac031852a0e8430f26d1b258a6",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ffdf170a37ec9eaea636e678d8602c870e053931b482312ec829994fe9d1b71",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "494f7cf46c319cb7c7f27a306244a9689820302493bf58fe493d350b2f5a536c",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e09da70ea825c4d50b597852f25d6821e1559e66862c53b08070c5764eb8c69b",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b91d19dbd138befbbe0067e531b69ad9a6aecc13bc71399b88df7f07c4823121",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fc60cc5734339fe191fd3218a5dcb6d685c9c95b526126b6c0bce2b42dcf59e3",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d03e51535d468e8656e5426847093d20a76d6c8d82812c893ed461c81450a8a0",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5dfee92414c19a0940e0d8c497c9fc63c299a07315d89e9f506005d1f86e55b5",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f58f8febddc068c82f6c8f75cfa56646708a03906030387145582d1f67c560c2",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1485580df3cbe9ead817f6226b86416e90fd63d2f69162a4cd23a67474c7ce8",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d5e133b0ce890ef27bddce6ef37743093c83b6dbd33ca4a0396bb3e8d7349f4d",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "1d3f118d4f2f5562f498e9e6d9e25ae7555f6a68e02b80c6bf11e3568da317d7",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0dfd828cdbe44b8df63827c54605a7885b8350184b6017fc0c8a18bddd02f57d",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "243345e6a4f02fe1b306a00ce951aea41d29f367d4bfd370f1d67a97baedc47a",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c8c2c3d4e9c33538b163219eed9f0adc4b2add75c5e636cee104664098be6352",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e87b34ecc8eff60d953eb11d4e867f50f154fc36f8cf76612745c83618adbad4",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a47deb0cc2fdb7ba368eaaa06a32c0fbd023cae81629e3745c1e501fb3432e5",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fb6e598e78e3db28fc2a1db5d58836b94df0485943585722d63c8a7c899fc5aa",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7f87cc22542ef16c77d604d85f71269636edad83ee38f12e7307e4154350167c",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2207608dbb67a327aefc11164f2b51a3650703e1ce4b2581e0b2457f5a44a458",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2a7f4ad0491ab62975f2d7371925c777185e2fa872848bffa2d6ffd214bf9f34",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14322b44a1200e7f0df355dee8e86926d733067b0a8a11a741b3d33f0ef09178",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "43a416ea5730435a6fd364a82c8367dda42280a104bf720d1d422aa43041720f",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7744d2978d2ec1aebfd5bdf5ac4378bf52dec9d391f2d3ad65fb80d23945bcde",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "27818c5f7b670d1120b85ad3d5632b83882648b9bf39545c0d0fedc643d4143c",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4dd31e52617928d108b4d043b3a6b15651d2949682dd0a6bd854c7b155344c15",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7f6601535f3875f443461d2f6b66ccc647cbd0623d3608a93e5e4ff7d6416b45",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f379b439ed1615bfd582bf81b4960694095b1617996885f8a3350af590b1045c",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8a69623e8cfaffe5b0a19852153833e68feb5be50b26836f357639b040d28c4",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "124ba3897557393e246a9a4128d236021d664e85e1df64cafd6a882dabd81d7a",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "20a54dfbc2702433d0a2d0075db6ced5fae7d631633eec4b61f98ebf7a2598a8",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "85f5110a4852bd1b37465ea8d7d6181982aab8cba6f2329a83fdcd861e4a2dc1",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "91aecd2dcd2693042c51a60ae29f1eb6a55490fc8b837a5985a2f86482066e58",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d9531d0f08d4b5b73b99ff79897ff61e9b8f59816adffb916e5d838dfe5ff77e",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3fcb9ae62c8c2277f3d4d27daaa6d935302e6f5f06a6d005f1375792af81a196",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8db27ccc362af4d56c46ab00d5c9061d6942bec7db9ef73d09a80dd827f8485d",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "702131647ad774d25423257dbb124c11326babb03ae64a84c41612c36623dea7",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95336a7e5a3adfbff13a9cacaec52490c04e38c047527cb716ad7b3233373057",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "bdcda1d039982bb9f9f4eb96d0fbbe938ad7da2ca9617d3f1bf723ed533a3b85",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3cfe3c0faac662b32fecc2684c65e9bfe2958d2e3aefabd9f404afe87a58c766",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5b26662efc16499e02d816cc3aabe261c2419d820dcdd93cc4cde28aacbd052c",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "46f40ecbe96f2a4c238b87d074c7b440ba5968bb0167aa6e9a4627f5156477a9",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2b8b7e9ea72f8c330e3300428e54dacb97011ab72052c0c0a2b5e784498b1c39",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d647ab51b8a51480fe54ff06c02490bff13ee9ad1e1de27b75f8579711b347d8",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "abcbf0ceeecc203d3ae212df70f72cee29667cd9c489404508b3ca7bd0ed8f57",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "25142fcbecb28f07a64cdc4ae6ae1d8e1f2e001f6efa7294dc99fca2c381dd55",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "669bdaa42f5d530bc957f0318e3e9ac2c232b1cb16bdfa5932aa00ff5d7fa3f7",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5a1731e51f8fd85f30cc12c2fd846941fde7e44bf160f895f1c27e90fb989101",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "199e24315945c8f04fc439d1d5fa5cc25955bf7c8d956cd3b172c777b2885239",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "02588db579a0c3716189b38957902c6f855a42aec141b3be7f0e3c8c00a08e42",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8cf8776863c67a51f6f7b52ef6a9de05af8f5e9d4131871b9595a40fab1c7afb",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "555dce212c5578987d7a5d58271032b84952dd50a8e70ca82a532434d30fc23f",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b59a02f1fe71ef0cffbd9152126c1fd257c59c662ce7d4eae755b1cbe2a8df21",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "35b3890d1f9cb854087d4c157891d2e6bc171bab7f55d17c919402e9407ec3bd",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6844b8fac8c0cd469f554af6d7922d57cc11fd5bdf231707e4197eefc9bf2b79",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d63510f43cc634f04eea34bbf1208a2dd98e24fa2c9b4acce56064a6e4f4f30a",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-missing-effect/trial-02/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "2ee61b2ff948039f1f60289b0f0baa8a3c36dc6eb4e9222953c27fbb2378ac83",
+ "relative_path": "cases/fault-missing-effect/trial-02/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "da531a70cf546d36b9f63926e6f1f8d3a50018cae9762ba7a1a66954644ac3e5",
+ "relative_path": "cases/fault-missing-effect/trial-02/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-missing-effect.02",
+ "completed_at": "2026-10-20T02:54:02.196237+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "337BUOgoqHRNqe5mHT0AD9KknLsJntxb+yTvB0CJARGHrjNSUTw0UjMjUKYYlmkTewGMY4QgZGmWUfUCjVXxBw=="
+ },
+ {
+ "case_id": "fault-missing-effect",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "halted",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "f1d2ceeab7a3003494ba58a3886465c6c874c8dfdbb2c274dfe51045dfe3fa9a",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "8e2754de07d0b5470a159282a002e4ddd46a78a49bccf51c72e8343f57db4fb9",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/fault-missing-effect/trial-03/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "81569beebd7ca378d4cbb4f80bb94e8ad7fafac503e4e8d2bb15ac8c79b47f08",
+ "relative_path": "cases/fault-missing-effect/trial-03/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14c1f7cdffbb2c0d7ff2d462a2cfa882e2069dfad621de543ade242feb2e4332",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/.attended_capability.key"
+ },
+ {
+ "kind": "other",
+ "sha256": "eb51646e456c9a4f946fb947458b11ceb9ee8b0d4fd40e2905cc433781cd7606",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "112fc79273118c0571155a605bd9121269e22eb42f772f985d394abd9d1d2491",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "91eacbd368bdc0f691f801296e0e82c61b46f19841eb34aa8c05400f100c136f",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/attended_capability.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "49655229f01f9418dbb7050f57e59dc6740c22b7f307cc3ac0f7bc05d73a0f9f",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a1dea3114c0fe5ecec7a76d5bd8b08a1238b7950cdbb5456cc21afafff8ea44d",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "091746d9429af587eaa039d094a48f2651432e15a86e2dfacba49f1b3f059911",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bc0a5aa1cf8e2de935bebe07d8ef294f71635d7d30731163aac626b6bfe7df6c",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "743f43bb2f8c650b015424b0f36778fbed6a55aa97b732ca04425d2321220f93",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c8d2d69beff0a6b3a34c0fc8dfc631e9ec2b9ac5e87ee412c8195436d79eed8d",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "036b335862ac8a6474aaf4308d0bacb46b21cdee3bf13bd7e792fea8e74d1cde",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9bbd79b8455cc2bd874c1a1852fd0b7c119e8e2b21d90f9ecaee3c33b3967862",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c66c4dcb72ea251eff903e85cccd18a4cecadc4767c7427880d2e4a3b10a5e34",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7d385d8ee67a99d4b7a5dc414dca6c81f8f703fa41cb8ddda88290664e6edfb9",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8bb52fe0d0b71ea658f0abdab857d23798e86fec3eed36b767e9f5f477fb9815",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a94619c1fbdecc672b0bed67e7821d29f83da81b0fc5bd408921b31990a1e0e",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0114ecd055dd07bb4bf9ef9c99ef447f58403b6eedad44d11e3e3aefd2a16d67",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0c596e96133b6897185ae2c94e81aabe8613149553e3c0e555c9b4e2f904ec89",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "16c3e91682602b5aaa7673d1bdb819fffccbb3566a38900fac82f8e921dd62d1",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2c4abbb34cbe5d5e3c6be5e02e9ce7c08bb4f2e3efa6fe8491b2bf4800afef2c",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "af3063251538c392cc3a0b7e9b1c79192b8afc67bf00d162c022212dac4a0e5f",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ec3687e7b894f65967ae1ffcfaab7c873fe7fa7ce565c84c5d4a6c84bc72cf9",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6c6e46eeca6b797e7f5bcdd398d8b36727b231f71773ce4318759c2f53592970",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3cd0eee8dc886fda306b58810e8a0810964ebb99e3e2a05c309ac5d2d37a9a2",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5d3d014285f98dbeeb54b752d365d89295b8a0e78b6a02e3222c6a9149f34ae4",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7084391b3a2cffb4bf7d62d96d83a500a8d32492a2f149a9de58cfcb793a48c3",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c69b1f3d5d5ed7f168c2c98094808ae7d74f3b655cfdfda9748bf86ca34ae9c9",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "70a5307eff7765d36f8f416e31bffd6a15b676d7be02ca90da56f951a8610f3c",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d172969455a240fa492fe2fd2c999cabc096880d388cb4c172a6f9c974338fda",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "21f5e1294bf2f49636746a415f5ac71bcb205fe5cb724b5fd2175a989b94e153",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a9b22106583a30f16ac23036fbcddf9d93354a3a5507c5b4d204c2dd6f1f18ff",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d2b7bc58997b09d7bb068391b4df643525ca697630e4ca87d1149cb41b295e7b",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "76774b9b30a47a3628fe3467c3e7108ce32d3f0fe81ea935b156fbec9401a496",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6d0ccba4f0e3dc516b506e299aada7926d6e877deb761fcb8f77461b53b404bd",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/pending_escalation.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8a69623e8cfaffe5b0a19852153833e68feb5be50b26836f357639b040d28c4",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fad79bfa21dff3229684757c2b447ac400a8ffe95608dafc7f4b66d040e94f1a",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dc095f12231847ab79f0238a73fc7139080a892aebd4b9dbd6ae849d8f7fc52",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "eb3fa56cd07d10986c78110fb0d5a2fcb6924988b4b2be36230c7dcebe2e7533",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4e4483818578d14a267a7a029c6de9c00f34deffae91d146087b2a0c1c7ffc8f",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7ab2c13b4fe99634ca33509531e7617775e111cfdd46fdc20ce6d1616f0a09c",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "77d2104c9d6a774c259a4a209d959b55b5291e44860e2d16e883f43eaee803c3",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "54478040f999d47868259882cf1a9462fd595969c84455cf54d2d9a44beb551d",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "01421aeb90d82d9643226a50ca8c8dc93ec1df7c5869898f3be221502cc239a6",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50da6bf7f987f1965c1c9ec94f00e401350d4fa46f2e04fe1cc63cbb1b109abb",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6ab309d96feba8b28e08e93f99623ee1cf3ec71ab23c9d2ffe8072982cab3f46",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5d7df9ba0d80a372587bb5bbd25ec95ba2e7dc7cf7acc4837ed3f6f5c782943d",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1ac76ec5b9d242890203a323e19bbfbbc7849f5fe55eed83bd87da7ab11469d1",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c261fb3d04e15f77e04f2aba1689d9f86ddd0447e91f51410987d67a69970f02",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5feabfa31531807d42c9965c3b93375fb6f771fbf4a3d4d8a2cba602aa276e22",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2b8b7e9ea72f8c330e3300428e54dacb97011ab72052c0c0a2b5e784498b1c39",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d647ab51b8a51480fe54ff06c02490bff13ee9ad1e1de27b75f8579711b347d8",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a34f4ae9bb747ae5b6c27fd22f7f29997d8752fed1b92baaecd5351085945608",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "03e3c8fef205f311f21d2289c9de41f34f85697b8ac81fc0603335e676f8d6b5",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "454e3aaaed14ce51d3a594db063fb9e67c8ea111816debbe991b9900019588f3",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "376b753dc6c70aff88040f4f09cd16528685513a886e95ff0d51e422785bda60",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c61acda85253031d3a406078724c2b8f212a6acac73208a0fa263b9d91490df7",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fc7339429f82785d779635b19aea24e4c59b7bbd22b1660e6a2b3a189fddbbe1",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a84087b07fec6c8fd47da09a1a383dc6f0a14d165e7d3f956acd77158de8c6c",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "94e67af240fc73278558eabf92656804e358c0e52e4f7938e83ad943ee28b131",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7701f99f7b8b41dee9aa4be1f4dab18dbb8d173a9a2704025e4056be165dc750",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d4518e1d433aa4340fd158942921e83f90221436d306bfdea0ea0a959c09ea78",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "742fea75272e1130677ba70d5dd0640e022519beb2b37f96aa112b201e61993a",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "638c00f7ad9a109d7deabfb6d88702c112f57fe93f3cbcb0d61e2c967a0e7a63",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "90f99936e10bd0e946ed519bfa80c727864764e9555f4d4a56acea43a6dbba57",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e243fec2a0727b2f9ba3052b3b99351df4dc2782f32d5a0ceb75abe790c360ce",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f463ac968a47254d54e9200c49317b4f0222e6be21efbd1c8d862cd09eae181",
+ "relative_path": "cases/fault-missing-effect/trial-03/run/steps/step_040_before.png"
+ },
+ {
+ "kind": "fault_receipt",
+ "sha256": "946ba6106eca880c2a07611cd4d31141fd4faae95c7e4c708b8a18aaf72a8e10",
+ "relative_path": "cases/fault-missing-effect/trial-03/fault-receipt.json"
+ },
+ {
+ "kind": "fault_mutation",
+ "sha256": "da531a70cf546d36b9f63926e6f1f8d3a50018cae9762ba7a1a66954644ac3e5",
+ "relative_path": "cases/fault-missing-effect/trial-03/fault-mutation.bin"
+ }
+ ],
+ "detail_code": "fault-missing-effect.03",
+ "completed_at": "2026-10-20T02:54:23.045551+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "HTWM8w1HW5bW7hSTwfwkyksVO0CNaRfrA0+ltAD3etVJfP65Cyvss9LZktbRi8NmQXZJDIdwZaiHZKrjg8YdDg=="
+ }
+ ]
+ },
+ {
+ "id": "representative",
+ "kind": "representative",
+ "description": "Recorded workflow on OpenEMR (local fixture, made-up patients) under its qualified boundary",
+ "input_ref": null,
+ "runtime_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "action_targets": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui"
+ }
+ ],
+ "expected_outcome": "verified",
+ "required": true,
+ "results": [
+ {
+ "case_id": "representative",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "verified",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "8384828df9ce373829c3da48ddd3886bf7d889c21dee348d6576d1b46e8c001d",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "6544473f4e4eeb02b208a9889f3ffb049f1c2fd55608093ce81d3f0967f75925",
+ "relative_path": "cases/representative/trial-01/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/representative/trial-01/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "f08c7ef8e745fe6eab7d2b02ca50af9c553d00a4e01230e08bbecfcd7062e8b8",
+ "relative_path": "cases/representative/trial-01/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14745729f4f89c41d997bee525cf9058e9b22350a7db4f1fe8edf909b2173ca2",
+ "relative_path": "cases/representative/trial-01/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/representative/trial-01/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "c827bde55fd38182a3e94c8da4b242ab6120f20d3b8b0959d64996de789e5e73",
+ "relative_path": "cases/representative/trial-01/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f27062b08dccf2170cf53927f1354329a2f3c20e7fa4fda4e94da1eac23572c",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f3eae45a92a51323db290e746d8a028ce2d1a61dcb8afa19840c67e4a01dd6",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "774e369a96e33420fba38eb04d1228d01bb1392c6f0b25587e7834b1a0dda5a7",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0f9c4d2b1da166cf9d443e8eb98b60f68b730bf129b6482b9f12628020e02deb",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5229d13a4d3330e7f43d4d35fedd51e8494b3227457baf4c0caec1a362fa1907",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2fba8ece58c81029b8984fd4f9930239adad1af17cfece5144ce857864bb7659",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6a3f1c02208d9d30a05083bd10254c85db42fc826be5f40f967ee795e7a33b8c",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "106afe63e7e8b57745f09e8e3f9803263b9cd2d24a5a6d356f2539acc14d70ba",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "420f22a51cf5315b9ff30201386e85adc50951ce99bdc370631d0ee91b4b7300",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "dfcbe5c46f0dacc59a91db9d9483b8830227f04a4402d895e86e983f5d1c95eb",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f82f2b9ebd529380aae5fefbf8b9d5f09e2a90aab451599725c765e86b18dbfd",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f23b8ebc31a7f21d5336d69fb04473fd7c165f2e40dd087d8653d39fd63456a3",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "850c224aac9c29fdd08ea16746186e49910401e72b19c6016b168536c74ffb3a",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "617c4f58dfa2437cd90eb5e3c6c172058d9970270073f8d1137f58605424573a",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cc57523184034ae8395f42ad7f25becf91eb4c472eb2ca10abc5f9275077e1f3",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bfcc464f64a2cd5a75b49bfd100d5ab3c69c6fd0e7645040d32561364fcf9ddf",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "85b57dff055ade8b9981fca506ab52d17d7d58a2739bbb27d88ca6be19cfdea1",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b435fcd752c9f901a2da80926ee7bca352b0ad101168474c303781379322671b",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "4ddd24485860254b2e2b1e7cf4ca86c0869a9b2ab1f4ce9727eaf1c72c2e1d2a",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bf5d1075654c03255ad452df4e215b1eb9ee79e0519c303fd2b3b83af22ce815",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d6bfb1b703948cfdfea8ecd859c4b8d130eb7b3bdb78298ac74b2ff95d42042e",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ea8c212e02310e8353cf6cb0a834d59d56f4bc467006e99cb75b3a9ddcb4fd23",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c45f9905e50adb48d5fdee15af0ee74b9bfcc66d1c19dbb1aae5786b95fe4f5d",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "df27a83ddfb0249e35b8c0b5d33afaa05084ebba6385a23774fe07009f5340f8",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "239c6ac897e5b48bfc88286a22cfa4e82a6ecf8a0db8aa3c8a5f3c7cd840ba8b",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "eb224f72a847eee843ab1dfce1eafa3488448fe0ecd0023179c76032ec42dad2",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "54fd7346d2a1ef3414e0d2195c4692c731cbee53d90d6ea10918566d16fc2d19",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b74fffb81631feabb49be668f0eb23144e2149884ae5ed3f7e2c22e385b3ea0b",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "19bb53960d4f7bf595170a3996a1edfeac07ca81d2e4cc6b244baa85f1db4371",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6c74a8cb9658208d99b664bfdfa3c75000211f25f72a51f739d8a68699393419",
+ "relative_path": "cases/representative/trial-01/run/checkpoints/step_0028_step_040.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/representative/trial-01/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/representative/trial-01/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/representative/trial-01/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/representative/trial-01/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/representative/trial-01/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/representative/trial-01/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/representative/trial-01/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/representative/trial-01/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/representative/trial-01/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/representative/trial-01/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e5cb4442f1afb3551d0e67297061cd85be7eb9a67f00529a6d71ae9d0ffbb8e",
+ "relative_path": "cases/representative/trial-01/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/representative/trial-01/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7ab2c13b4fe99634ca33509531e7617775e111cfdd46fdc20ce6d1616f0a09c",
+ "relative_path": "cases/representative/trial-01/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c6f46132bd7422d9f189e16f0f1979154ba2d6be4371b69e478e2a14ba0f7fd6",
+ "relative_path": "cases/representative/trial-01/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c1258059df43e1599e1a91b014a0b353a5bcb1ee85ca0030fbcb60f3325f7ab2",
+ "relative_path": "cases/representative/trial-01/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dc095f12231847ab79f0238a73fc7139080a892aebd4b9dbd6ae849d8f7fc52",
+ "relative_path": "cases/representative/trial-01/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d5581d8ec8b17707e203d92b7739455f025ba70d53f7534ecd6a154e0de40375",
+ "relative_path": "cases/representative/trial-01/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5152230d112342fb5c77a66aa3cdb428f3f75d3150122dc896793f578010a3fd",
+ "relative_path": "cases/representative/trial-01/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f74a01c8851896553fb971acf44d10c0cf75c47852e09cc7b8c94561e41773fa",
+ "relative_path": "cases/representative/trial-01/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c7d09eb44412dfdda5e818888bfee9d7880b9e5eeeb4e3a3dd0be13dbafa65fc",
+ "relative_path": "cases/representative/trial-01/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7af4903dc2869ff399b45223d20e8d0f9805ff28b91837e072eddcf1c5d2560d",
+ "relative_path": "cases/representative/trial-01/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "95856ef070a6da98249e31fba0ba0b77160b206c5bde0c855755ee3d27501a84",
+ "relative_path": "cases/representative/trial-01/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/representative/trial-01/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "bb59b20a47410951f4bdd33715a26b6e8f8eaded759f6b5aba4e17d00f8268d0",
+ "relative_path": "cases/representative/trial-01/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/representative/trial-01/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/representative/trial-01/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/representative/trial-01/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/representative/trial-01/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "46f40ecbe96f2a4c238b87d074c7b440ba5968bb0167aa6e9a4627f5156477a9",
+ "relative_path": "cases/representative/trial-01/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/representative/trial-01/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/representative/trial-01/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/representative/trial-01/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/representative/trial-01/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/representative/trial-01/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/representative/trial-01/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/representative/trial-01/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "26afddce8a20c45951863ca4bcc6565529574ef09fe410f303f42773ff2d17de",
+ "relative_path": "cases/representative/trial-01/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/representative/trial-01/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/representative/trial-01/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "01a7fda08f8f4e006c0efb69ad043938b1982262453cc8632a8be167dea0f7b3",
+ "relative_path": "cases/representative/trial-01/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "19e55f32514dc1d970f6bb3d2700ae92bc25fd00fac2b399f384d869b8ebd76a",
+ "relative_path": "cases/representative/trial-01/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/representative/trial-01/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c5ce745806d53d5927d28b616151637f975ce6ccfe57f828be2513396ef0c98a",
+ "relative_path": "cases/representative/trial-01/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8ccd4cfbb01ee129480855fdd50ed171766430956f53c44aaab1b0ec1fc2594e",
+ "relative_path": "cases/representative/trial-01/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "edd990866c5521c814290ab9c4e6585ffaa6e9723f0d574ae8c2b61dd3171244",
+ "relative_path": "cases/representative/trial-01/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4027a6dd435e14e933ce88ca307a1dabc25566fa588dedb0381447bbdfffb2c8",
+ "relative_path": "cases/representative/trial-01/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/representative/trial-01/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b9800603d8af8394c14c1c58a757679d5c42ae6ec3000a5af845da7071069cfa",
+ "relative_path": "cases/representative/trial-01/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c783ada6829d100354aad3145a478aebbe39309ee690420b43343121299ff292",
+ "relative_path": "cases/representative/trial-01/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/representative/trial-01/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ab6d609985d071e28828dcc4df72681d2d55416d0c63fdf7617f21e8bd6bd87",
+ "relative_path": "cases/representative/trial-01/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "28aec824f9f15859669e6493e72143a57e75addba47e5ebbb44c6f8db58b8988",
+ "relative_path": "cases/representative/trial-01/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9cb7cd86fa45d143937708bb7a6cedbb729896e1a2d019f37eba00eb3a8ad1ac",
+ "relative_path": "cases/representative/trial-01/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c84e9bd78a834b5bc5b507fd5703c99f005fdc5942b55dd2f07237658aab94c5",
+ "relative_path": "cases/representative/trial-01/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "73496323fdb12640ad7440995e4c7c3e50eae3e23377508ec81cd97840c5f95d",
+ "relative_path": "cases/representative/trial-01/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2f8c42fdc0d4eaeb37bce6f0e600857be06996dae64e891037d3270ea93211fe",
+ "relative_path": "cases/representative/trial-01/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3b2c085a09be2ad4c3b76114f36642118da69abec9a5d8ef1768027a20882aa",
+ "relative_path": "cases/representative/trial-01/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/representative/trial-01/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "66e074f916bf2dc6d3f87035c30ae13eaff9354c91c797e5889f7af131bf108e",
+ "relative_path": "cases/representative/trial-01/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e243fec2a0727b2f9ba3052b3b99351df4dc2782f32d5a0ceb75abe790c360ce",
+ "relative_path": "cases/representative/trial-01/run/steps/step_040_before.png"
+ }
+ ],
+ "detail_code": "representative.01",
+ "completed_at": "2026-10-20T02:48:00.991131+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "GtzKLZ9wLMkBgGs29v4KxvxWH/wcdtVkmERvRbbO4zxXuiDml4fRppYuumqWWTCArHGDp3vNBbeEfDVPR3RICg=="
+ },
+ {
+ "case_id": "representative",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "verified",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "6a109585d93cc6fcd034e349d0eb9c29d96c08a4c67b9eb73ad7f96375b7bddc",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "ce7f4a54a3674a356f9206217240db48b5ea166947dfb904096e9874a26d0671",
+ "relative_path": "cases/representative/trial-02/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/representative/trial-02/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "f08c7ef8e745fe6eab7d2b02ca50af9c553d00a4e01230e08bbecfcd7062e8b8",
+ "relative_path": "cases/representative/trial-02/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7fa18b686d0aa9eef95d40bff4738b12a242ea6db36f44e472bc161fd9181902",
+ "relative_path": "cases/representative/trial-02/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/representative/trial-02/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "e6891524e4d949b5091653963f229716d9677c2e8845f2e8b4340d499a34d2e7",
+ "relative_path": "cases/representative/trial-02/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "e7c614adf41392afe4720a084e011c283595ac2a89559d3656419341f2586b1b",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bc8686df8322c7b98699f6b9cbc5316dd43e39afdff4ee00c109ce20c9ab1fa4",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "854f28dbf8e1fd55161727b697f8c3485eae5d073371664607a154dd519a99c5",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "66a9b724dfbcf3cdd58115bbecc7bc0ddd782c63b597476c977496239a1fc876",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a2b30b97149720f059e987e3b38a35388e8430c90f1aea981b6ddf0af6d43662",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c0734a7d9e76a45db3c3a38be148db634426b60ac219d6e7db315f3a4302dc33",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8fd937800586253420c2a2389aa5fc491fba95216b5f3017336c44c7741947e",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "34e77e71de25cede37f6e4c209b938791c148a6f6bcab5fe4a2b9839f1db129e",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f69f5ba33d286cc508b47347c024daa8ccc0c7a6fb22c9e9bae1dac4f748133b",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1005570ba179ef9be03d85a761eb01f54f73855aa53b77c06d2b3f83f111227",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "be815ec251676ea003a23bd8594eace68e5ed9ad06db83bf4fd81cfeed8a33cc",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "60f961521e3b5362cefd0dda80d20756328803e347387a8a3ea39f1524534018",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "bc2fb795209a6bc54290ca42e61c1e49f89dfbd0e2ed6a7a19dab68dea0c89fe",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "469ad977329078f4e8b83f8ce957545d80de4c16be5e1aee067170c14d5416f9",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "180c3caf30510dbb21a6cc62a7a08008d40f1a0e5107a1d149c5261cf950d0ae",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "637fa8e1f8ef5dba069dadd9e1a3588b7d07ee519d32b49dd6863d114353e791",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "8e51fefe3738901a36d6a569bf277746c3c3abbc13e9f746342087ff46e87357",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "025819caeee1011a8305ab9a5757680312e1c8cc4d44dd721c9f0a1793d0cb85",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "303ba10adc2aba4965d370235a29ed1e7316fe01bb5e9ae72a78b97a1aaa90f9",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5a04fb3dcbd002974077e1ccf1058e42b29f28a784888589ed0d046cb7d4d43f",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b20e995f633fa1cdd99d4380dd607a5e292367b7cedd6144bc25da215a93246a",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "de0fce51a140a429602143f48898385d19d7e2c63a4a78d533091c7af3b44326",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d4288a2e992439d3ef4b9f6d17cd520567b059882f5812212c5a96e0fa3d7306",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0105dc466572bf46e40605af0455b68734112f04b220f9ebbc345ce292b27a0d",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a72604f0df23b98a2a970df57b568ec7bcb73d37b88b3c932d9a698370fd595e",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "90f95d24807a3b41f7f3816c8614a6f72558e0250872b2299b58116847a32603",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9b30938c9ac2b7edd72fd3aaa73bb04a1e818dce1d61d86e66f24e1ea5c8beee",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "5beef493f3236caa1dff23233fc2ea29b994702b86a60cb24703a6d9f07775eb",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "23babfdea042968bafdeb17febc3f77a3745427b5441e0d13468857ea9f7ee70",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d1072419cc12a2c35c5a604f8ccefb9a54d750eabb05eda41706bec096a011f9",
+ "relative_path": "cases/representative/trial-02/run/checkpoints/step_0028_step_040.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/representative/trial-02/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/representative/trial-02/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1611ea353698b6d6ed55862caa771378787ec0869ae52c7abed506f760383f3c",
+ "relative_path": "cases/representative/trial-02/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/representative/trial-02/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/representative/trial-02/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/representative/trial-02/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5884a590c2a665b233f7867d9963cc095af069fc40cdf9579ba4bdb8ae99c4c9",
+ "relative_path": "cases/representative/trial-02/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/representative/trial-02/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/representative/trial-02/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "15789a0180c7522ed324e1bbf0d35bffed968fe4e8acdad59df2d468a8dacc22",
+ "relative_path": "cases/representative/trial-02/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e5cb4442f1afb3551d0e67297061cd85be7eb9a67f00529a6d71ae9d0ffbb8e",
+ "relative_path": "cases/representative/trial-02/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/representative/trial-02/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7ab2c13b4fe99634ca33509531e7617775e111cfdd46fdc20ce6d1616f0a09c",
+ "relative_path": "cases/representative/trial-02/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c6f46132bd7422d9f189e16f0f1979154ba2d6be4371b69e478e2a14ba0f7fd6",
+ "relative_path": "cases/representative/trial-02/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c1258059df43e1599e1a91b014a0b353a5bcb1ee85ca0030fbcb60f3325f7ab2",
+ "relative_path": "cases/representative/trial-02/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dc095f12231847ab79f0238a73fc7139080a892aebd4b9dbd6ae849d8f7fc52",
+ "relative_path": "cases/representative/trial-02/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d5581d8ec8b17707e203d92b7739455f025ba70d53f7534ecd6a154e0de40375",
+ "relative_path": "cases/representative/trial-02/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5152230d112342fb5c77a66aa3cdb428f3f75d3150122dc896793f578010a3fd",
+ "relative_path": "cases/representative/trial-02/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f74a01c8851896553fb971acf44d10c0cf75c47852e09cc7b8c94561e41773fa",
+ "relative_path": "cases/representative/trial-02/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c7d09eb44412dfdda5e818888bfee9d7880b9e5eeeb4e3a3dd0be13dbafa65fc",
+ "relative_path": "cases/representative/trial-02/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6040e433878e5016e4f065f4315af0e0624e6ed52da781857be737b5f60c85cf",
+ "relative_path": "cases/representative/trial-02/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c54beda44fa60a89f1c32a4160956c9ec32946c590d5618aa0294132a7bf3259",
+ "relative_path": "cases/representative/trial-02/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/representative/trial-02/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ae52ddd312e1347915c89511e2e6fee1624daee96fadbd749383625657370352",
+ "relative_path": "cases/representative/trial-02/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/representative/trial-02/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/representative/trial-02/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/representative/trial-02/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/representative/trial-02/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/representative/trial-02/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/representative/trial-02/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/representative/trial-02/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/representative/trial-02/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "62f15534900084af51932bd6b6418a1d8ed16df71d89f38ec6685bac99c0a34b",
+ "relative_path": "cases/representative/trial-02/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/representative/trial-02/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/representative/trial-02/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "c3d24dd1fd540365d611071f42e7f6d02c139ec4ef6d34e29aaba460a2ced22d",
+ "relative_path": "cases/representative/trial-02/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b99b1bfb47d1551452cf9dabc989a6eec0e269c3039382d1ce37300880523c60",
+ "relative_path": "cases/representative/trial-02/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/representative/trial-02/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "41a2a5d60cc04650b88e44a88fa5396bfe93fcb60917b76ed1da7971ed286bb1",
+ "relative_path": "cases/representative/trial-02/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f5861bae6cbb27dc409490dac254549ba35eafa7ac04376814ffb78ef253442",
+ "relative_path": "cases/representative/trial-02/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "abcbf0ceeecc203d3ae212df70f72cee29667cd9c489404508b3ca7bd0ed8f57",
+ "relative_path": "cases/representative/trial-02/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5cbcc7c1151e909b305848f317820422ea0bb1a83b2a15729558b70f984fbab0",
+ "relative_path": "cases/representative/trial-02/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/representative/trial-02/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3711cf7f656737657ee3e95e23e26deab0bc0205f1bb1415b5e79a0fe25c96dc",
+ "relative_path": "cases/representative/trial-02/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "edd990866c5521c814290ab9c4e6585ffaa6e9723f0d574ae8c2b61dd3171244",
+ "relative_path": "cases/representative/trial-02/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/representative/trial-02/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0ad64524bc70e5a0278a41c5bf26d326b0bc5349a1f11faa1d99a91b46488e53",
+ "relative_path": "cases/representative/trial-02/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b9800603d8af8394c14c1c58a757679d5c42ae6ec3000a5af845da7071069cfa",
+ "relative_path": "cases/representative/trial-02/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "db574a4aa61e7ac2ec532dd830eac3ef610ffdb5ff94711ac6adddc1c0de6d68",
+ "relative_path": "cases/representative/trial-02/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3bfe972b2a65f739f465ca05d1a1291f8b3ef3d660601efc4ffa1e486bd8a0d1",
+ "relative_path": "cases/representative/trial-02/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b3efdc8df122cb2f2fb1a98a3510e3e0b0633f3ff1221b20bb268b5e4eb2ba33",
+ "relative_path": "cases/representative/trial-02/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3b260a55479a181b37a92acbbeafb628fc14fb802b40823c0cbbacbbec2ea3a1",
+ "relative_path": "cases/representative/trial-02/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3cbc11fd03296cdd06efc8c1b8ac16b2eda4de82ae8a0d76ba3679a300d3fa27",
+ "relative_path": "cases/representative/trial-02/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "37099c55decc85a1975ecf3435d3724b9a7e1df1af1ad47f06aff44779387aaf",
+ "relative_path": "cases/representative/trial-02/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "06404ee26158ecf3716f837fbb71ab8e461e64b7a789ff7d08bd0ee6c517fd3d",
+ "relative_path": "cases/representative/trial-02/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9cb5c20d1451d15086a0bf84810cd2bb57d6ec2c64bf3764feb7b0e965061f4f",
+ "relative_path": "cases/representative/trial-02/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "113878767510b147873867389b607025d32b1bd7a00cfe4df7cde53193470f33",
+ "relative_path": "cases/representative/trial-02/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/representative/trial-02/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f5fb2c5d6e5c98281c5bb92da3d4f6b3111250baa9109623a57a97d756b8fbc",
+ "relative_path": "cases/representative/trial-02/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e243fec2a0727b2f9ba3052b3b99351df4dc2782f32d5a0ceb75abe790c360ce",
+ "relative_path": "cases/representative/trial-02/run/steps/step_040_before.png"
+ }
+ ],
+ "detail_code": "representative.02",
+ "completed_at": "2026-10-20T02:48:24.762406+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "jzJ9KYTUrmnOsbUhyLmkQztFyQgoEmKOvDPB/Rjz2db6R4TmP8VO6pIx8k2/Ijosf+Q5BVNcGFV7KN0UTH0bBA=="
+ },
+ {
+ "case_id": "representative",
+ "project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "environment_digest": "bc58b00659514f612afe715d218299138d344a7b95492af936e92c100006fda2",
+ "runtime_version": "2.2.0",
+ "runner_id": "openadapt-flow/qualify-web-headless",
+ "runner_capabilities": [
+ "headless_chromium",
+ "independent_system_of_record",
+ "playwright_dom"
+ ],
+ "status": "passed",
+ "observed_outcome": "verified",
+ "campaign_id_sha256": "606567e4df384a928929c6f3750dc927a69b2c67c53bf1b2d83dadcb1ac3c1a4",
+ "case_input_sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "run_id_sha256": "e7e9be1cf595c6a70314df1a605b9b4884671e8e271bb3b714680ca74fe81609",
+ "evidence": [
+ {
+ "kind": "run_report",
+ "sha256": "7642c8e5d8ecc6c0d7f8b15ab708fffb552fab7704282fe4dfb49123922ccc46",
+ "relative_path": "cases/representative/trial-03/run/report.json"
+ },
+ {
+ "kind": "case_input",
+ "sha256": "9091c896f230176667046cb0bdf4294243938f6e997353fce0e1ea8cbed87cd9",
+ "relative_path": "cases/representative/trial-03/case-input.json"
+ },
+ {
+ "kind": "effect",
+ "sha256": "f08c7ef8e745fe6eab7d2b02ca50af9c553d00a4e01230e08bbecfcd7062e8b8",
+ "relative_path": "cases/representative/trial-03/oracle.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "ec11ee4cc97e39c1b5a1426f9107a7fda56999eca2ab381534a3d2ebc3764676",
+ "relative_path": "cases/representative/trial-03/run/.durable_run.claim"
+ },
+ {
+ "kind": "other",
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "relative_path": "cases/representative/trial-03/run/.durable_state.lock"
+ },
+ {
+ "kind": "other",
+ "sha256": "a8dbb5406fdb445440e814c4f00a6c8fe0ba7fa26449114e583eb43fa107cf8d",
+ "relative_path": "cases/representative/trial-03/run/REPORT.md"
+ },
+ {
+ "kind": "other",
+ "sha256": "67e1c3b6e696605fb6146604f983bef7449faea3fc0932549910b1d968f51b70",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/_manifest.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "959f59b5b1cf754e9ffab8032d93843aa0e05e454d9415d3cd989d938dc8b5eb",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0000_step_000.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "36eee53ca8e82c004b352fdd20ec80e13e71a6056e5be5ed8919e90d6f34499e",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0001_step_001.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0c3ca9eac66531e54ec6e12b180e6cfa34da405a75136f6749a8472bb424cc7d",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0002_step_003.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0bdd2ee94ba6dcc8b48f1d7b20680a37ae5656162204de16f798228cd29a5248",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0003_step_005.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "3ab99bcd07d0d03bfee606112ac87ae6269b6fdb1f598d3ed0ffeb3dc94a2b51",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0004_step_006.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "d789a895a1235ffd1b73993e631b9e96899cfc85611ae32b37df07ff096b26df",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0005_step_008.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "679bbf1db7ba85c4a0469ac2c56149dbb33d335347863aa7cd6c7bdf8ca783a4",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0006_step_009.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a81aab1d4e5a4c24dc6e096aa82fd8c9e4cff1023b242f8f4f463661bdc5e61a",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0007_step_011.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cd18129cda3fef785117349c03bce359a2fc655ca1409a30ca73eda08a4fa723",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0008_step_012.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "2bf582f5ebc595a7c892d0629088f7dc6c701371ba97bc20e5bca9729cf3068e",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0009_step_013.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "fd849c84d0f34ba91699e23a5ee42868541b38fd362e4e0f805c290144b6b4d8",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0010_step_015.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "435d4d187fffcf2bc7486f16a483b8b10be040eeeeea0ae3a73be7945971a3d0",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0011_step_016.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "be7616e177566b587f3083bdac44c1a0f5a613bcbdfdb58e674a208079b39dda",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0012_step_017.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "f04ff82b08af5c19a247fc2e7a411b9934467f9a170ac0d5858e0ba1f2d17b39",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0013_step_018.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "a16823b33ceb3bf4cd44ea436e9bd536f2e0cf2d307a1c7963929bab3775d4cb",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0014_step_020.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f6a5fa20fb59244fc5eb9a556c189b7622fb25aa68dfe901bbc50330a3ec728",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0015_step_021.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "0095002b594d77a23cfa06e09569f3e1d411c68a085480345fad26fa63ad1c58",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0016_step_023.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "7306dd2a5eba389d92b0f048b5125d36f0c992a8fe3fd8cefd7156ce90f21a84",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0017_step_024.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "08064ead18e5e260063fe50172c77d615ad83462e46dafc7ff8cddc768813182",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0018_step_025.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b6e590433a6193e55a98505b6520dbd362c6b4d8b5ffd36eeb8e6db4e9c9b1f9",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0019_step_027.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "25512c889ec61e72a1c41905b9e1091e95d8b224414e5c1a4cd4ebc3f419c69e",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0020_step_029.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b625e9bbd14d1f4ab6176c59848e7d0596ce32f50edc08540d47756a6e1f26ed",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0021_step_030.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "115e353df214c895aa9c631683a9b03c8eaed971725953a614d5f2a147e5186a",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0022_step_032.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "6a3cc42da2a70c19d16b49dc72dc4ed93dd5aa5ef16b565a94ea0020ec1717b9",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0023_step_033.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "b0b6a60d39bc93cab2afff4d0374aa47496e0a18068464cb8ba0966f54c87bf7",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0024_step_035.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "13555edb4c32be3a1435fd89da2c01da459e774d5949e0a393abfddd586b44dd",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0025_step_036.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "aa214f3da660d0aa281f897379fffa0a975c647f54e42a59249d6ca45972ce36",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0026_step_037.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "cbd35c403a3a1d9201c0dba239a642c51dee8a5d45a4fbea4065770442c38e84",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0027_step_039.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "c0026068374750076dfa490da81104ab1027b1c87f810207e21558cf656acaff",
+ "relative_path": "cases/representative/trial-03/run/checkpoints/step_0028_step_040.json"
+ },
+ {
+ "kind": "other",
+ "sha256": "14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5",
+ "relative_path": "cases/representative/trial-03/run/private/identity-crops/14a873e4bbcb5868c0ad4ca733fbbaf8beee79ab5958cf519c11a2a85115d2a5.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "relative_path": "cases/representative/trial-03/run/private/identity-crops/457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "d8a69623e8cfaffe5b0a19852153833e68feb5be50b26836f357639b040d28c4",
+ "relative_path": "cases/representative/trial-03/run/steps/step_000_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a156fd7b9c7388e9def662ffbcb1c8a634f4ebdca2c80c01b89394642e1fc57",
+ "relative_path": "cases/representative/trial-03/run/steps/step_000_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/representative/trial-03/run/steps/step_001_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "924714d9a109090cf3c6bd452a019ae3804d86180d64e2fe27e556770dbee68f",
+ "relative_path": "cases/representative/trial-03/run/steps/step_001_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b90e6ea5d19d9e06108aebef97bcedd6cc00714bf243e8f864a8bf8c9b9800be",
+ "relative_path": "cases/representative/trial-03/run/steps/step_003_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0014b71fb993fa1745357828c0160bd50350bacf06701544eb8e445f328c50fa",
+ "relative_path": "cases/representative/trial-03/run/steps/step_003_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3a5b3c3f2093dce9be3e2e14ff56439dbdf04c3eda43b73d4b923020e21df2aa",
+ "relative_path": "cases/representative/trial-03/run/steps/step_005_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e1f53f3d751158c9647ed1af1f62b9c843f5af49ac6eadefe9852cad924303c7",
+ "relative_path": "cases/representative/trial-03/run/steps/step_005_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "fad79bfa21dff3229684757c2b447ac400a8ffe95608dafc7f4b66d040e94f1a",
+ "relative_path": "cases/representative/trial-03/run/steps/step_006_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "05b8aae9eb196f39cb6abe52ff0ae4305f4c9e66f1c723fffd25dcb0489f425d",
+ "relative_path": "cases/representative/trial-03/run/steps/step_006_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7dc095f12231847ab79f0238a73fc7139080a892aebd4b9dbd6ae849d8f7fc52",
+ "relative_path": "cases/representative/trial-03/run/steps/step_008_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "eb3fa56cd07d10986c78110fb0d5a2fcb6924988b4b2be36230c7dcebe2e7533",
+ "relative_path": "cases/representative/trial-03/run/steps/step_008_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4e4483818578d14a267a7a029c6de9c00f34deffae91d146087b2a0c1c7ffc8f",
+ "relative_path": "cases/representative/trial-03/run/steps/step_009_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a7ab2c13b4fe99634ca33509531e7617775e111cfdd46fdc20ce6d1616f0a09c",
+ "relative_path": "cases/representative/trial-03/run/steps/step_009_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "77d2104c9d6a774c259a4a209d959b55b5291e44860e2d16e883f43eaee803c3",
+ "relative_path": "cases/representative/trial-03/run/steps/step_011_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "54478040f999d47868259882cf1a9462fd595969c84455cf54d2d9a44beb551d",
+ "relative_path": "cases/representative/trial-03/run/steps/step_011_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "01421aeb90d82d9643226a50ca8c8dc93ec1df7c5869898f3be221502cc239a6",
+ "relative_path": "cases/representative/trial-03/run/steps/step_012_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50da6bf7f987f1965c1c9ec94f00e401350d4fa46f2e04fe1cc63cbb1b109abb",
+ "relative_path": "cases/representative/trial-03/run/steps/step_012_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6ab309d96feba8b28e08e93f99623ee1cf3ec71ab23c9d2ffe8072982cab3f46",
+ "relative_path": "cases/representative/trial-03/run/steps/step_013_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "5d7df9ba0d80a372587bb5bbd25ec95ba2e7dc7cf7acc4837ed3f6f5c782943d",
+ "relative_path": "cases/representative/trial-03/run/steps/step_013_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "0a9dd17fc8792ec1f34468ce6b1f378441f46c3c44b4918d68e1052ee4a14f05",
+ "relative_path": "cases/representative/trial-03/run/steps/step_015_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1ac76ec5b9d242890203a323e19bbfbbc7849f5fe55eed83bd87da7ab11469d1",
+ "relative_path": "cases/representative/trial-03/run/steps/step_015_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/representative/trial-03/run/steps/step_016_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "afec126c126594e8d319a8d437eb21e1fc196f2645ae33900052d3ec1852716b",
+ "relative_path": "cases/representative/trial-03/run/steps/step_016_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/representative/trial-03/run/steps/step_017_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "285d61c1629c51bb592e9ed4ee2c8b02905d518b2671ad989a00feafdb4710c3",
+ "relative_path": "cases/representative/trial-03/run/steps/step_017_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "4b10383228a181433e2f3065ccf0b302acce4c78a7f906594aed9072763000eb",
+ "relative_path": "cases/representative/trial-03/run/steps/step_018_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2daba928a164e6b63b67d6353274bc51fd6a406362c0df0cc367ebdb2f173331",
+ "relative_path": "cases/representative/trial-03/run/steps/step_018_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/representative/trial-03/run/steps/step_020_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "7ee0178cacb17010c13607b1b86c278468f87ac309ffbca5a84d6d2ee3c816cc",
+ "relative_path": "cases/representative/trial-03/run/steps/step_020_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ca7221a706d84998ef07edfd20277086a7bf48a0c9a3596519269fe5e059bdb8",
+ "relative_path": "cases/representative/trial-03/run/steps/step_021_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "93beb9b4ea8ca4074404d40482717e7114878882adfd9b69a52cfc34c4c1ad99",
+ "relative_path": "cases/representative/trial-03/run/steps/step_021_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9a37da33026d0fde654cd312ba521bcc4153d7e7827309da00c8918723965a2f",
+ "relative_path": "cases/representative/trial-03/run/steps/step_023_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9ca5ca69e0fe01285d93685670422b513915b422f4338ece1872bf256030cfca",
+ "relative_path": "cases/representative/trial-03/run/steps/step_023_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "26afddce8a20c45951863ca4bcc6565529574ef09fe410f303f42773ff2d17de",
+ "relative_path": "cases/representative/trial-03/run/steps/step_024_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "50bb53d291ca82f402dec3264039bc3b3813b3a7cdc6ae9f71772a5de55e05b1",
+ "relative_path": "cases/representative/trial-03/run/steps/step_024_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a37b07d0543dc9cceffa6afdad3d75362c18482346783e100513d3e83eb73b0a",
+ "relative_path": "cases/representative/trial-03/run/steps/step_025_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "a05e10a3211ca948e54d3d312412709d522f28e3e615b618d3f1ea68d9bd126c",
+ "relative_path": "cases/representative/trial-03/run/steps/step_025_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "387cb5eaba6671d00549e239cc1be85207caf52ab12d6f6c660c5e35c25a101f",
+ "relative_path": "cases/representative/trial-03/run/steps/step_027_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6efcf20bbecad392b31ee4e5573fb3706b50eb5b87abff7ce598599fa779a032",
+ "relative_path": "cases/representative/trial-03/run/steps/step_027_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "6df5c38b412add1793c9b98dd1166c2298258a08176f95ed228d79992be7e352",
+ "relative_path": "cases/representative/trial-03/run/steps/step_029_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3711cf7f656737657ee3e95e23e26deab0bc0205f1bb1415b5e79a0fe25c96dc",
+ "relative_path": "cases/representative/trial-03/run/steps/step_029_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "f1d1d1a999c75d45e0d6e3d6ebe573e21e1fa9a68a7c9f84a342c2f7c4e93aff",
+ "relative_path": "cases/representative/trial-03/run/steps/step_030_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "2237ae45174bd6cedfacbd23ff28f633bc9067bbb31541123f38254acd2574ca",
+ "relative_path": "cases/representative/trial-03/run/steps/step_030_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "14d42a082fe4e613d32466d4ac7dd78a5e7a18a2653d271ebedccb4875473d4d",
+ "relative_path": "cases/representative/trial-03/run/steps/step_032_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "ebd133f8fcb242541776c8a7699d8c36e960723d52f67f49b58dc4ae034e62b7",
+ "relative_path": "cases/representative/trial-03/run/steps/step_032_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "79837bf7a86fa6bb54f642d7adcc8b87d7dae1b382345a7c1836b1c4dc9d98f0",
+ "relative_path": "cases/representative/trial-03/run/steps/step_033_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "39f76fb2c885c0922ba35353c74c9a94a3938c58897a6d7a3d326e7dd10941a9",
+ "relative_path": "cases/representative/trial-03/run/steps/step_033_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8bf28bf858412777627ebe740d1f91a853bbd56b7edd5412bc415047fb9b508f",
+ "relative_path": "cases/representative/trial-03/run/steps/step_035_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "1a1456df6dcdfd7b9ee0d60d5bf5ad8fb8b8fe2cad3ea518f81bc1002c0ab39c",
+ "relative_path": "cases/representative/trial-03/run/steps/step_035_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "8a59b141bede60c3b8485d32a12d935c28c4e5c725ccbf66692a4120e7ecc933",
+ "relative_path": "cases/representative/trial-03/run/steps/step_036_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b8cd6b447da4d736a07edb66ca95f94fb9e05b8c06f228e3bfce184c0ff90974",
+ "relative_path": "cases/representative/trial-03/run/steps/step_036_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "00b14d48bbd43288f7fd2812da7054750371a9f84aaa1059d2f795df262b13c6",
+ "relative_path": "cases/representative/trial-03/run/steps/step_037_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "b1a6667113de963dd3fc63db7868b6bd873ae54b81165b291fb8a83c26725b7e",
+ "relative_path": "cases/representative/trial-03/run/steps/step_037_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "113878767510b147873867389b607025d32b1bd7a00cfe4df7cde53193470f33",
+ "relative_path": "cases/representative/trial-03/run/steps/step_039_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "3e180f908f159019de5d8ddbb9462420021cf9316ed239fdf859cdc7deef029e",
+ "relative_path": "cases/representative/trial-03/run/steps/step_039_before.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "9f5fb2c5d6e5c98281c5bb92da3d4f6b3111250baa9109623a57a97d756b8fbc",
+ "relative_path": "cases/representative/trial-03/run/steps/step_040_after.png"
+ },
+ {
+ "kind": "other",
+ "sha256": "e243fec2a0727b2f9ba3052b3b99351df4dc2782f32d5a0ceb75abe790c360ce",
+ "relative_path": "cases/representative/trial-03/run/steps/step_040_before.png"
+ }
+ ],
+ "detail_code": "representative.03",
+ "completed_at": "2026-10-20T02:48:49.918846+00:00",
+ "attestation_key_id": "openemr-local-patient-registration-v2-runner",
+ "attestation_signature": "VsCCHVWkFoDeLlHUSfB/0DyElpMGJwiF5nf/IUb3EczSsbkyDjrg2x3nxQf/rGg98oMdEw60dgGWM9p9Bc18CA=="
+ }
+ ]
+ }
+ ],
+ "exclusions": [],
+ "requalification_conditions": [],
+ "trusted_runner_keys": {
+ "openemr-local-patient-registration-v2-runner": "mcGnnCoDYhC/CTuvlEj3lDlMZ+4J8CtS6PQKvzLjPmE="
+ },
+ "trusted_fault_driver_keys": {
+ "openemr-local-patient-registration-v2-fault-driver": "fjjXEvMFoujEGc3TLmy9/YEBKTmBplTrKQvn3toqCzQ="
+ },
+ "lookup": {
+ "schema_version": "openadapt.qualified-lookup/v1",
+ "surface": "local",
+ "target_kind": "web",
+ "structure_offered": true,
+ "capabilities_used": [
+ "structure"
+ ],
+ "pixels_only": {
+ "role": "informational",
+ "cases": [
+ "representative",
+ "fault-ambiguity",
+ "fault-wrong-identity",
+ "fault-stale-identity",
+ "fault-weak-effect",
+ "fault-missing-effect"
+ ],
+ "trials_run": 18,
+ "trials_passed": 0,
+ "failures": [
+ "representative trial 1: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "representative trial 2: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "representative trial 3: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-ambiguity trial 1: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-ambiguity trial 2: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-ambiguity trial 3: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-wrong-identity trial 1: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-wrong-identity trial 2: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-wrong-identity trial 3: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-stale-identity trial 1: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-stale-identity trial 2: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-stale-identity trial 3: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-weak-effect trial 1: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-weak-effect trial 2: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-weak-effect trial 3: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-missing-effect trial 1: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-missing-effect trial 2: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path",
+ "fault-missing-effect trial 3: StateDiverged: refusing a durable checkpoint with invalid action evidence: production action lacks a closed runtime actuation path"
+ ]
+ }
+ },
+ "last_certification": {
+ "project_revision": 51,
+ "project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "policy_name": "clinical-write",
+ "policy_contract_sha256": "f35a6a94b3f2787165f071ce8571de07095169b9632d394e9df719b35da52c0f",
+ "policy_contract": {
+ "name": "clinical-write",
+ "description": "Strict gate for irreversible writes against a system of record: no unarmed clicks, no vacuous steps, identity required on every entity-navigation and write step, a real SYSTEM-OF-RECORD effect (not just a screen assertion) plus an idempotency key required on every write, no unconfirmed effect bindings, and human sign-off for any thinly-evidenced step.",
+ "prohibit_unarmed_clicks": true,
+ "prohibit_vacuous_postconditions": true,
+ "require_identity_for": [
+ "entity_navigation",
+ "write"
+ ],
+ "require_screen_postconditions_for": [
+ "write",
+ "save",
+ "submit",
+ "create",
+ "update",
+ "delete",
+ "confirm",
+ "send"
+ ],
+ "require_system_effects_for": [
+ "write"
+ ],
+ "require_effects_for_irreversible": false,
+ "require_idempotency_key_for": [
+ "write"
+ ],
+ "prohibit_unconfirmed_effect_bindings": true,
+ "require_effect_verification_for": [],
+ "max_unverified_steps": 0,
+ "require_human_approval_below_confidence": 0.8
+ },
+ "passed": true,
+ "report_sha256": "679cb95559a88b86ec4541c2e0b826699da17d4e0774745c1e930562b7b96463",
+ "case_evidence_contract_sha256": "8343336b83784d2904667591334a239cb2cc5f9b1d0d6fcb4c8564f698a144db",
+ "execution_profile": "standard",
+ "certified_at": "2026-10-20T02:56:35.080844+00:00",
+ "lookup_sha256": "18f744bb1731fa937cfcdb50f34434464fa2a84bdec04ceaf3aac8f3b94ce606"
+ }
+ },
+ "manifest": {
+ "schema_version": 2,
+ "content_digest": "ec096afa2b614326b00ec3155f256041c19d86f3998761ce9d772cfd911460b6",
+ "file_hashes": {
+ "templates/identifiers/step_016.png": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "templates/layout_fingerprint.json": "d7727e415947aa17cb2fa007be88f5cd1e56b9e913a64354f61c62b580459e0a",
+ "templates/step_000.png": "d7a431d729f4d525993bf1eb95bb66ad63f8a486d858a2e44666301d70b93011",
+ "templates/step_000_expect.png": "054fe016774a313989c92f999615bbf1f9c0bf6cf105a4ef8e1446fa290015d9",
+ "templates/step_003.png": "dce5569d4b131c367fe623aa1d6ed9526c12c1dbf7cc221c8efa8f237ea95a9b",
+ "templates/step_003_expect.png": "087fbc35f6f04062e7f557deea1c840d80623ae56998cd5f58de6c4aedf3b70a",
+ "templates/step_006.png": "bd23dd90a29b84df5589a7476448966a7710bf47074b727f313491da7158c98d",
+ "templates/step_006_expect.png": "7cb7eeda6806270a30bfd093255fd401cc3b20935f2435b8543af2b961b747fc",
+ "templates/step_009.png": "517c77489043a2dd9ac5bb089144dff4b3a112a7e34037aad40d1f9751aee85e",
+ "templates/step_009_expect.png": "ec0b79d0367c4958939efeb76ca5f20c6493ae71b1cd3fb3ad4d36be07159adc",
+ "templates/step_012.png": "ac4efcf5feba028428c2b253a582edb0af6471791520169a0de9baa0070c025c",
+ "templates/step_012_expect.png": "df173d42b500650f81d0871716a9efd38214140c4888122d6c3f64b33f1d5c28",
+ "templates/step_016.png": "457eccee597076f6e0d2b6fdd6b1fdd148dfc0eb72501442413c2020efc4ce15",
+ "templates/step_016_expect.png": "ce1cea546632622f1619810362446214fec79590a4ee5553a26f4ec197627107",
+ "templates/step_018.png": "84a5d61734af83336cac971cca1adb5bd76c56faef578b352528b177eb6557b3",
+ "templates/step_018_expect.png": "b325a8bc335bded3f3cf7b47830e0a24ebbaf08062de554fb5d5da63a56db05f",
+ "templates/step_021.png": "e9607624e6649bdb1548772a3e9e4577f5112d99ac962e3f8c77b44b80a356ef",
+ "templates/step_021_expect.png": "372a6705999c77fb3ceb959c616f5a40536e485b73eacf1756426581ddce67b6",
+ "templates/step_024.png": "3b8449493928ef24a570e1d7ac65b5b25584c8b3cd68eba071af842bfbae9399",
+ "templates/step_024_expect.png": "278236d24d497fe78a87483c8d60bd3fe9c926bdfad310630b58cff790a7ae91",
+ "templates/step_027.png": "014571a3a093215ed0ec9b812b1eb66efc274116d2be529d736a37301b92a95f",
+ "templates/step_027_expect.png": "5f1ea1d1b03efa9d0812b6d21155117cbfb75b47f6b643815a7041759529b0f6",
+ "templates/step_030.png": "0e551c8fa8f8e2eb4cfef0ccef68c35862e8a3c1dd6e654ec0185edcab047b28",
+ "templates/step_030_expect.png": "1b71bfe520e1b6c8a1d41b990bca4f2f6dd5e15a4bf931595917894ad56d1c46",
+ "templates/step_033.png": "28ee56d03479ba76a938532854fbca55bab26ed8ba738b9a44185f4db04368aa",
+ "templates/step_033_expect.png": "298a1691c7832c2eeb29e00a15457b005b5222f304d6c41530cfc2dc91cbc36c",
+ "templates/step_036.png": "3e21d6500e80bd6ce8c56f1dfc23e6de983e48e4835f341d7a59149049771673",
+ "templates/step_036_expect.png": "221dc30b588ef26b60326197e8ec510a84dc007201d57103c0100d9f06e5d641",
+ "templates/step_039.png": "01bd72ded2316233b66af4e50b63bdf54c3f2ca12d5aac2a5462a88893f30b43",
+ "templates/step_039_expect.png": "8782f2d5377eec7fbddbd9b0657f283207254be7eaa415d3204f10cdb13fdcb4",
+ "templates/step_040.png": "22dd0ae0fba63fbcaf4222de690199ef88fa71a386a186db9c03b813f981aa87",
+ "templates/step_040_expect.png": "194dcc5ba50edcfb2d4a5fb8a6e9ca1d6669654147c9f990715572992ddf8a6c"
+ },
+ "provenance": {
+ "compiler_version": "2.2.0",
+ "source_recording_sha256": "243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894",
+ "compiler_config_sha256": "a40fa088af6e27af7555bd066b216ac2b73da101e6e228470fb2dd994d754efd",
+ "created_at": "2026-10-20T02:34:27.692587+00:00",
+ "policy_name": "clinical-write",
+ "certified": true,
+ "certification_status": "certified",
+ "certified_at": "2026-10-20T02:56:35.080875+00:00",
+ "expires_at": null,
+ "certification_invalidated_at": null,
+ "certification_invalidation_reason": null,
+ "governed_authorization_template": {
+ "schema_version": "openadapt.governed-authorization-template/v1",
+ "bundle_content_digest": "ec096afa2b614326b00ec3155f256041c19d86f3998761ce9d772cfd911460b6",
+ "workflow_contract_sha256": "6e121e781ace28b143a50e20381f120e2e3da269b92ecc78fddf0679b9427f9f",
+ "qualification_project_id": "42abe878-ae09-4db1-84f1-0b487676098a",
+ "qualification_project_revision": 51,
+ "qualification_project_contract_sha256": "444b35017d26a85a86a35f05794756999b21f30cf44385c6d307edf778b3afa4",
+ "qualification_environment_contract_sha256": "66260fc857f5570d123ac120f0c03e9e7d7746d1d3348c780fde67193995d6d8",
+ "qualification_report_sha256": "679cb95559a88b86ec4541c2e0b826699da17d4e0774745c1e930562b7b96463",
+ "qualification_case_evidence_contract_sha256": "8343336b83784d2904667591334a239cb2cc5f9b1d0d6fcb4c8564f698a144db",
+ "policy_name": "clinical-write",
+ "policy_contract_sha256": "f35a6a94b3f2787165f071ce8571de07095169b9632d394e9df719b35da52c0f",
+ "execution_profile": "standard",
+ "minimum_effect_tier": 1,
+ "qualified_effect_requirements": [
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 0,
+ "effect_contract_hash": "sha256:f64985856097097954250be6523fa260daf9fc5db495671c2548ead9a388577b",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 1,
+ "effect_contract_hash": "sha256:206d1d6fc27df6f24c02bb6b6f4419e0612e7935ec7e744fc8cc446f54558385",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 2,
+ "effect_contract_hash": "sha256:8f295459bdd868daf117ca9f77dd948cdc2c8c034a65184cb5418ccfab7f60e7",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 3,
+ "effect_contract_hash": "sha256:52c6884d06d82c4ccc14600150f2890bcd25d92cb7eb26bc53ef54033075ba3c",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 4,
+ "effect_contract_hash": "sha256:7732675a6e6123c0c3f51512496f695fa4ce503ab989993c520fb8a469bbdc3d",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 5,
+ "effect_contract_hash": "sha256:598fb97e12d3c0b537f0453e7fdaad453b969e249e888424e67fcd85a06741f0",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 6,
+ "effect_contract_hash": "sha256:ba109cf90077d7b20a37c2848fa7bee8ea0039747a5ae47465617b2ea1039a2b",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 7,
+ "effect_contract_hash": "sha256:f508b7fd1536726db75a0814fc439c65dbd6c0b637a7b619855c73a571bcfca9",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 8,
+ "effect_contract_hash": "sha256:b311b51ece1670a60f793b29aa3d28d40da196ffbcd26f2fdd620e380dedf97a",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 9,
+ "effect_contract_hash": "sha256:a33cf54165b96ce6d48014e6e68bac94cdc8f9c9176bae6f5c955123d20683c2",
+ "minimum_tier": 1
+ },
+ {
+ "step_id": "step_040",
+ "actuation_path": "gui",
+ "effect_index": 10,
+ "effect_contract_hash": "sha256:d2516eb0f6aa365b812e84fd754127d053d8e0b1a4b349a0b8ce71936bcec199",
+ "minimum_tier": 1
+ }
+ ],
+ "required_identity_step_ids": [
+ "step_040"
+ ],
+ "identity_contract_sha256": "44f51284a45d149f9a7c9a034feab055eded47b89eb3910609c215005205f424",
+ "parameters": [
+ {
+ "name": "DOB",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "city",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "country_code",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "email",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "fname",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "lname",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "phone_home",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "postal_code",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "sex",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "state_label",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "street",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ },
+ {
+ "name": "title",
+ "type": "string",
+ "required": true,
+ "secret": false,
+ "has_default": true,
+ "choices_count": 0,
+ "choices_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
+ }
+ ],
+ "parameter_contract_sha256": "2a19e2c3ea6e0644cfe9a842aea8c53e036d18bed254b100cf23c88ea090d603",
+ "template_sha256": "074ac60fe06d201b0083c921b6c24b1d1b83b63b2b91cb140d55e319251d86cb"
+ }
+ },
+ "encrypted": false
+ }
+}
\ No newline at end of file
diff --git a/packages/flow/benchmark/openemr_local/referral_program/program/workflow.py b/packages/flow/benchmark/openemr_local/referral_program/program/workflow.py
new file mode 100644
index 000000000..245e563de
--- /dev/null
+++ b/packages/flow/benchmark/openemr_local/referral_program/program/workflow.py
@@ -0,0 +1,171 @@
+"""Generated by openadapt-flow. Human-readable rendering of
+workflow 'openemr-create-synthetic-patient' — for code review only; the replayer
+executes workflow.json, not this file."""
+
+WORKFLOW_NAME = 'openemr-create-synthetic-patient'
+RECORDING_ID = '243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894'
+PARAMS = {'title': 'Ms.', 'fname': 'OpenAdapt', 'lname': 'LoanParity', 'DOB': '1985-02-03', 'sex': 'Female', 'street': '101 SYNTHETIC WAY', 'city': 'EXAMPLETON', 'state_label': 'Massachusetts', 'postal_code': '02139', 'phone_home': '555-0107', 'email': 'openadapt.loan-parity@example.invalid', 'country_code': 'USA'} # param -> example/default value
+
+
+def run(flow, params=PARAMS):
+ # step_000: click 'Unassigned' [reversible]
+ # landmark: 'Birth First Name' (below, 111px)
+ # landmark: 'Middle' (right_of, 115px)
+ # identity: armed via PHI-free salted-hash template (0 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_000.png', click_point=(434, 282), region=(354, 250, 160, 64), ocr_text='Unassigned')
+ # expect region_stable region=(346, 233, 176, 99) phash='8b746995dc63344b' (tol 16)
+ # expect text_present text='CalendarFinderFlowRecallsMessagesPatientFeesModulesProceduresAdminReportsMiscellaneousPopups'
+
+ # step_001: type [reversible]
+ flow.type_text(params['title'])
+
+ # step_003: click 'First Name' [reversible]
+ # landmark: 'Birth First Name' (below, 76px)
+ # landmark: 'Middle' (right_of, 124px)
+ # identity: armed via PHI-free salted-hash template (4 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_003.png', click_point=(444, 317), region=(364, 296, 160, 50), ocr_text='First Name')
+ # expect region_stable region=(346, 300, 197, 67) phash='8969b532b2b3e88b' (tol 16)
+
+ # step_005: type [reversible]
+ flow.type_text(params['fname'])
+
+ # step_006: click 'Last Name' [reversible]
+ # landmark: 'Birth Last Name' (below, 79px)
+ # landmark: 'BirthSex:' (below, 109px)
+ # identity: armed via PHI-free salted-hash template (4 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_006.png', click_point=(671, 317), region=(591, 285, 160, 61), ocr_text='Last Name')
+ # expect region_stable region=(555, 268, 232, 99) phash='eb0c710eee7190c7' (tol 16)
+
+ # step_008: type [reversible]
+ flow.type_text(params['lname'])
+
+ # step_009: click recorded visual target [reversible]
+ # landmark: 'Unassigned' (below, 72px)
+ # landmark: 'Middle' (right_of, 122px)
+ # identity: armed via PHI-free salted-hash template (3 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_009.png', click_point=(427, 430), region=(347, 398, 160, 64))
+ # expect region_stable region=(346, 381, 310, 298) phash='80daeba3a383939b' (tol 16)
+ # expect text_present text='October-2026-'
+
+ # step_011: type [reversible]
+ flow.type_text(params['DOB'])
+
+ # step_012: click 'Unassigned' [reversible]
+ # landmark: 'Unassigned' (below, 72px)
+ # landmark: 'Unassigned' (below, 141px)
+ # identity: armed via PHI-free salted-hash template (3 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_012.png', click_point=(972, 430), region=(892, 398, 160, 64), ocr_text='Unassigned')
+ # expect region_stable region=(346, 446, 310, 233) phash='c0c391996e3e9ae3' (tol 16)
+
+ # step_013: type [reversible]
+ flow.type_text(params['sex'])
+
+ # step_015: scroll by (0, 300) [reversible]
+ flow.scroll(0, 300)
+
+ # step_016: click recorded visual target [reversible]
+ # landmark: 'Marital Status:' (above, 229px)
+ # landmark: 'Pronouns:' (above, 294px)
+ flow.click(template='templates/step_016.png', click_point=(634, 505), region=(554, 473, 160, 64))
+ # expect region_stable region=(53, 452, 1160, 348) phash='8d025ad2a695cf9d' (tol 16)
+ # expect text_present text='Address Line 2:'
+
+ # step_017: scroll by (0, 600) [reversible]
+ flow.scroll(0, 600)
+
+ # step_018: click recorded visual target [reversible]
+ # landmark: 'Unassigned' (below, 125px)
+ # landmark: 'CalendarFinderFlowRecallsMessagesPatientFeesModulesProceduresAdminReportsMiscellaneousPopups' (above, 132px)
+ # identity: armed via PHI-free salted-hash template (4 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_018.png', click_point=(479, 160), region=(399, 128, 160, 64))
+ # expect region_stable region=(346, 115, 267, 95) phash='c8ccc8c0b43eaf3e' (tol 16)
+
+ # step_020: type [reversible]
+ flow.type_text(params['street'])
+
+ # step_021: click recorded visual target [reversible]
+ # landmark: 'Search or Add Patient' (above, 68px)
+ # landmark: 'Unassigned' (below, 81px)
+ # identity: armed via PHI-free salted-hash template (4 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_021.png', click_point=(444, 195), region=(364, 172, 160, 55))
+ # expect region_stable region=(346, 176, 267, 69) phash='c8d9bcc1c11ce7c3' (tol 16)
+
+ # step_023: type [reversible]
+ flow.type_text(params['city'])
+
+ # step_024: click 'Jnassigned' [reversible]
+ # landmark: 'Searchbyanydemogra' (above, 168px)
+ # landmark: 'Show Inactive' (below, 278px)
+ # identity: armed via PHI-free salted-hash template (4 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_024.png', click_point=(1017, 195), region=(937, 163, 160, 64), ocr_text='Jnassigned')
+ # expect region_stable region=(885, 146, 265, 99) phash='a21d7d38eeb891c2' (tol 16)
+
+ # step_025: type [reversible]
+ flow.type_text(params['state_label'])
+
+ # step_027: click recorded visual target [reversible]
+ # landmark: 'SearchorAddPatient' (above, 111px)
+ # landmark: 'CalendarFinderFlowRecallsMessagesPatientFeesModulesProceduresAdminReportsMiscellaneousPopups' (above, 221px)
+ # identity: armed via PHI-free salted-hash template (5 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_027.png', click_point=(420, 234), region=(340, 207, 160, 59))
+ # expect region_stable region=(340, 207, 160, 59) phash='87968f8ea58de0a5' (tol 8)
+
+ # step_029: type [reversible]
+ flow.type_text(params['postal_code'])
+
+ # step_030: click recorded visual target [reversible]
+ # landmark: 'Unassigned' (above, 78px)
+ # landmark: 'SearchorAddPatient' (above, 222px)
+ # identity: armed via PHI-free salted-hash template (4 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_030.png', click_point=(462, 347), region=(382, 315, 160, 64))
+ # expect region_stable region=(346, 298, 232, 99) phash='c04af8933fa5c66c' (tol 16)
+
+ # step_032: type [reversible]
+ flow.type_text(params['phone_home'])
+
+ # step_033: click recorded visual target [reversible]
+ # landmark: 'Show Inactive' (below, 98px)
+ # landmark: 'Unassigned' (above, 161px)
+ # identity: armed via PHI-free salted-hash template (3 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_033.png', click_point=(1035, 382), region=(955, 350, 160, 64))
+ # expect region_stable region=(885, 333, 302, 99) phash='cad0ba36be2dc1c1' (tol 16)
+
+ # step_035: type [reversible]
+ flow.type_text(params['email'])
+
+ # step_036: click 'Jnassigned' [reversible]
+ # landmark: 'Search by any demogre' (above, 206px)
+ # landmark: 'Show Inactive' (below, 241px)
+ # identity: armed via PHI-free salted-hash template (5 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_036.png', click_point=(1017, 234), region=(937, 210, 160, 56), ocr_text='Jnassigned')
+ # expect region_stable region=(937, 210, 160, 56) phash='e76a9890e7f63811' (tol 8)
+
+ # step_037: type [reversible]
+ flow.type_text(params['country_code'])
+
+ # step_039: click 'Create New Patient' [reversible]
+ # landmark: 'Search' (left_of, 132px)
+ # landmark: 'Related' (left_of, 164px)
+ # identity: armed via PHI-free salted-hash template (0 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_039.png', click_point=(284, 772), region=(204, 736, 160, 64), ocr_text='Create New Patient')
+ # expect text_present text='Confirm Create New Patient'
+ # expect text_present text='No matches were found.'
+
+ # step_040: click 'Confirm Create New Patient' [irreversible]
+ # landmark: 'Name' (above, 151px)
+ # landmark: 'Name' (above, 152px)
+ # identity: armed via PHI-free salted-hash template (2 band tokens, structured); no patient identifier stored
+ flow.click(template='templates/step_040.png', click_point=(600, 280), region=(520, 248, 160, 64), ocr_text='Confirm Create New Patient')
+ # expect region_stable region=(0, 255, 1280, 545) phash='fe4b96c1c9196970' (tol 16)
+ # expect text_present text='Medical Record Dashboard'
+ # effect record_written match={'email': '{email}', 'lname': '{lname}'} count=1 idempotency_key='{email}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='title' value='{title}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='fname' value='{fname}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='DOB' value='{DOB}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='sex' value='{sex}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='street' value='{street}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='city' value='{city}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='state' value='MA' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='postal_code' value='{postal_code}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='phone_home' value='{phone_home}' [reversible]
+ # effect field_equals match={'email': '{email}', 'lname': '{lname}'} field='country_code' value='{country_code}' [reversible]
diff --git a/packages/flow/public-artifacts.json b/packages/flow/public-artifacts.json
index 2c6262d4c..f0b4d6c11 100644
--- a/packages/flow/public-artifacts.json
+++ b/packages/flow/public-artifacts.json
@@ -298,6 +298,45 @@
"benchmark/openemr_api_tier/spike/results/runs/block-05-browser.json",
"benchmark/openemr_live/docker-compose.yml",
"benchmark/openemr_local/environment.lock.json",
+ "benchmark/openemr_local/referral_program/demonstration.jsonl",
+ "benchmark/openemr_local/referral_program/program/api_proposal.json",
+ "benchmark/openemr_local/referral_program/program/benchmark-contract.json",
+ "benchmark/openemr_local/referral_program/program/compile_notes.json",
+ "benchmark/openemr_local/referral_program/program/manifest.json",
+ "benchmark/openemr_local/referral_program/program/param_hygiene.json",
+ "benchmark/openemr_local/referral_program/program/templates/identifiers/step_016.png",
+ "benchmark/openemr_local/referral_program/program/templates/layout_fingerprint.json",
+ "benchmark/openemr_local/referral_program/program/templates/step_000.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_000_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_003.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_003_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_006.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_006_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_009.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_009_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_012.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_012_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_016.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_016_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_018.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_018_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_021.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_021_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_024.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_024_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_027.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_027_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_030.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_030_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_033.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_033_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_036.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_036_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_039.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_039_expect.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_040.png",
+ "benchmark/openemr_local/referral_program/program/templates/step_040_expect.png",
+ "benchmark/openemr_local/referral_program/program/workflow.json",
"benchmark/openemr_local/verify.yaml",
"benchmark/openemr_referral_timing/figures.json",
"benchmark/openemr_referral_timing/runs.csv",
diff --git a/packages/flow/tests/test_openemr_quickstart_driver.py b/packages/flow/tests/test_openemr_quickstart_driver.py
new file mode 100644
index 000000000..b9e62a72d
--- /dev/null
+++ b/packages/flow/tests/test_openemr_quickstart_driver.py
@@ -0,0 +1,294 @@
+"""The OpenEMR driver behind ``openadapt quickstart --app openemr`` (no Docker).
+
+The fixture's commands run through a fake runner here; the real run is the
+launcher's opt-in ``test_real_openemr_quickstart``.
+"""
+
+from __future__ import annotations
+
+import json
+import subprocess
+from pathlib import Path
+
+import pytest
+
+from benchmark.openemr_local import fixture as fx
+from benchmark.openemr_local import quickstart as q
+from openadapt_flow.ir import PostconditionKind, Workflow
+
+#: The certified bundle's content digest (README, site Seals, #1409).
+DIGEST = "ec096afa2b614326b00ec3155f256041c19d86f3998761ce9d772cfd911460b6"
+RECORDING = "243fb7853b228a2e0fd93c51c1d43e7b84fff567f1aac917bdcd91a54d044894"
+
+
+def test_the_committed_program_is_the_certified_bundle(tmp_path):
+ workflow = q.copy_program(tmp_path / "bundle")
+ assert workflow.manifest is not None
+ assert workflow.manifest.content_digest == DIGEST
+ assert workflow.recording_id == RECORDING
+ assert workflow.name == "openemr-create-synthetic-patient"
+ assert len(workflow.steps) == 29
+ assert workflow.qualification is not None
+
+
+def test_the_program_carries_the_shared_duplicate_rule(tmp_path):
+ workflow = q.copy_program(tmp_path / "bundle")
+ create = next(
+ step
+ for step in workflow.steps
+ if step.anchor is not None
+ and step.anchor.structural is not None
+ and step.anchor.structural.selector == "#create"
+ )
+ texts = {p.text for p in create.expect if p.kind is PostconditionKind.TEXT_PRESENT}
+ assert texts == {"Confirm Create New Patient", "No matches were found."}
+ save = workflow.steps[workflow.steps.index(create) + 1]
+ assert save.risk == "irreversible" and save.effects
+
+
+def test_a_changed_program_file_is_refused(tmp_path):
+ q.copy_program(tmp_path / "bundle")
+ template = next((tmp_path / "bundle" / "templates").glob("step_*.png"))
+ template.write_bytes(template.read_bytes() + b"x")
+ with pytest.raises(Exception):
+ Workflow.load(tmp_path / "bundle")
+
+
+def test_committed_files_hold_no_urls_or_session_tokens():
+ for path in q.PROGRAM_DIR.rglob("*"):
+ if path.suffix in (".json", ".jsonl", ".py", ".md"):
+ text = path.read_text(encoding="utf-8")
+ assert "token_main" not in text, path
+ assert "csrf" not in text.lower(), path
+ assert "http" not in q.DEMONSTRATION.read_text()
+
+
+def test_the_demonstration_is_the_recordings_action_log():
+ events = q.demonstration()
+ assert [event["i"] for event in events] == list(range(41))
+ assert events[-1]["selector"] == "#confirmCreate"
+ typed = {
+ event["param"]: event["text"] for event in events if event["kind"] == "type"
+ }
+ assert typed["fname"] == "OpenAdapt" and typed["email"].endswith("@example.invalid")
+
+
+def test_act_two_and_three_use_the_referral_benchmarks_patients():
+ names = [q.referral(key) for key in q.REFERRALS]
+ assert len({spec.email for spec in names}) == 5
+ assert all(spec.email.endswith("@example.invalid") for spec in names)
+ duplicate, existing = q.referral(q.DUPLICATE), q.existing_chart()
+ assert (duplicate.fname, duplicate.lname) == (existing.fname, existing.lname)
+ assert duplicate.dob != existing.dob
+
+
+# -- the fixture ------------------------------------------------------------
+
+
+class _Runner:
+ """Records fixture commands; answers ``ps`` and ``exec`` as told."""
+
+ def __init__(self, running: bool = True, healthy: bool = True) -> None:
+ self.running = running
+ self.healthy = healthy
+ self.calls: list[list[str]] = []
+
+ def __call__(self, argv, **_kwargs):
+ self.calls.append(list(argv))
+ out = b""
+ code = 0
+ if "ps" in argv:
+ out = b"openemr\ndb\n" if self.running else b""
+ if "readyz" in " ".join(argv) and not self.healthy:
+ code = 1
+ return subprocess.CompletedProcess(argv, code, stdout=out, stderr=b"")
+
+
+def _bootstrapped(state: Path) -> None:
+ state.mkdir(parents=True, mode=0o700)
+ (state / "runtime.env").write_text(
+ "".join(
+ f"{k}={v}\n"
+ for k, v in {
+ "OPENEMR_IMAGE": json.loads(fx.LOCK_PATH.read_text())["services"][
+ "openemr"
+ ],
+ "MARIADB_IMAGE": json.loads(fx.LOCK_PATH.read_text())["services"][
+ "mariadb"
+ ],
+ "OPENEMR_ACTOR_USER": "openadapt_actor",
+ "OPENEMR_HTTP_PORT": q.UI_PORT,
+ "OPENEMR_HTTPS_PORT": q.API_PORT,
+ "MARIADB_ROOT_PASSWORD": "a" * 32,
+ "OPENEMR_DB_PASSWORD": "b" * 32,
+ "OPENEMR_ACTOR_PASSWORD": "c" * 32,
+ }.items()
+ )
+ )
+ for name in ("oauth-clients.json", "baseline.sql", "baseline.sql.sha256"):
+ (state / name).write_text("{}")
+
+
+def _fixture(tmp_path: Path, runner: _Runner, monkeypatch) -> q.QuickstartFixture:
+ fixture = q.QuickstartFixture(tmp_path / "state", runner=runner)
+ monkeypatch.setattr(fixture, "_compose_path", lambda: tmp_path / "compose.yml")
+ return fixture
+
+
+def test_ports_come_from_the_environment(tmp_path, monkeypatch):
+ monkeypatch.setenv("OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT", "9541")
+ monkeypatch.setenv("OPENADAPT_QUICKSTART_OPENEMR_HTTPS_PORT", "9540")
+ fixture = q.QuickstartFixture(tmp_path / "state")
+ assert fixture.ui_base_url == "http://127.0.0.1:9541"
+ assert fixture.api_base_url == "https://127.0.0.1:9540"
+ monkeypatch.setenv("OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT", "80; rm")
+ with pytest.raises(fx.FixtureError):
+ q.ports()
+
+
+def test_a_fixture_on_other_ports_is_removed_and_set_up_again(tmp_path, monkeypatch):
+ runner = _Runner()
+ fixture = _fixture(tmp_path, runner, monkeypatch)
+ _bootstrapped(fixture.state_dir)
+ monkeypatch.setenv("OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT", "9541")
+ moved = _fixture(tmp_path, runner, monkeypatch)
+ assert not moved.bootstrapped()
+ monkeypatch.setattr(q, "default_state_dir", lambda: moved.state_dir)
+ moved.discard()
+ assert any(call[-2:] == ["down", "--volumes"] for call in runner.calls)
+ assert not moved.state_dir.exists()
+
+
+def test_own_project_and_loopback_ports(tmp_path):
+ fixture = q.QuickstartFixture(tmp_path / "state")
+ assert (
+ fixture.lock["project"]
+ == q.PROJECT
+ != json.loads(fx.LOCK_PATH.read_text())["project"]
+ )
+ assert fixture.ui_base_url == f"http://127.0.0.1:{q.UI_PORT}"
+ assert fixture.api_base_url == f"https://127.0.0.1:{q.API_PORT}"
+
+
+def test_a_running_fixture_is_reused_and_reset(tmp_path, monkeypatch):
+ runner = _Runner()
+ fixture = _fixture(tmp_path, runner, monkeypatch)
+ _bootstrapped(fixture.state_dir)
+ resets = []
+ monkeypatch.setattr(fixture, "reset", lambda: resets.append(1))
+ said = []
+ assert q.bring_up(fixture, lambda phase, text: said.append(phase)) == "reused"
+ assert resets == [1]
+ assert not any("up" in call for call in runner.calls), (
+ "a running copy isn't restarted"
+ )
+ assert all(
+ "-p" in call and q.PROJECT in call for call in runner.calls if "compose" in call
+ )
+
+
+def test_a_stopped_fixture_is_started_not_rebuilt(tmp_path, monkeypatch):
+ runner = _Runner(running=False)
+ fixture = _fixture(tmp_path, runner, monkeypatch)
+ _bootstrapped(fixture.state_dir)
+ monkeypatch.setattr(fixture, "reset", lambda: None)
+ monkeypatch.setattr(fixture, "_wait_ready", lambda timeout_s=0: None)
+ monkeypatch.setattr(fixture, "bootstrap", lambda: pytest.fail("rebuilt"))
+ assert q.bring_up(fixture, lambda *a: None) == "restarted"
+ assert any(call[-2:] == ["up", "-d"] for call in runner.calls)
+
+
+def test_a_new_fixture_is_set_up_once(tmp_path, monkeypatch):
+ runner = _Runner()
+ fixture = _fixture(tmp_path, runner, monkeypatch)
+ order = []
+ for name in (
+ "runtime_preflight",
+ "prepare",
+ "image_identity",
+ "bootstrap",
+ "snapshot",
+ ):
+ monkeypatch.setattr(fixture, name, lambda name=name: order.append(name))
+ monkeypatch.setattr(
+ fixture, "_wait_ready", lambda timeout_s=0: order.append("ready")
+ )
+ monkeypatch.setattr(
+ fixture, "_verify_running_source", lambda: order.append("source")
+ )
+ monkeypatch.setattr(fixture, "_validate_runtime_env", lambda: None)
+ monkeypatch.setattr(
+ q, "pull", lambda image, label, say: order.append(f"pull {label}")
+ )
+ assert q.bring_up(fixture, lambda *a: None) == "created"
+ assert order == [
+ "runtime_preflight",
+ "prepare",
+ "pull OpenEMR 8.0.0.3",
+ "pull MariaDB 11.8",
+ "image_identity",
+ "ready",
+ "source",
+ "bootstrap",
+ "snapshot",
+ ]
+
+
+def test_pull_reports_layers_as_docker_finishes_them(monkeypatch):
+ monkeypatch.setattr(q, "_image_present", lambda image: False)
+
+ class _Proc:
+ stdout = iter(
+ [
+ "8.0.0.3: Pulling from openemr/openemr\n",
+ "aaaaaaaaaaaa: Pulling fs layer\n",
+ "bbbbbbbbbbbb: Already exists\n",
+ "aaaaaaaaaaaa: Pull complete\n",
+ ]
+ )
+
+ def wait(self):
+ return 0
+
+ said = []
+ q.pull(
+ "img",
+ "OpenEMR",
+ lambda phase, text: said.append(text),
+ popen=lambda *a, **k: _Proc(),
+ )
+ assert said[-1] == "OpenEMR: 2 of 2 layers"
+ assert "OpenEMR: 1 of 2 layers" in said
+
+
+def test_a_present_image_is_not_pulled(monkeypatch):
+ monkeypatch.setattr(q, "_image_present", lambda image: True)
+ said = []
+ q.pull(
+ "img",
+ "OpenEMR",
+ lambda phase, text: said.append(text),
+ popen=lambda *a, **k: pytest.fail("pulled"),
+ )
+ assert said == ["OpenEMR: already downloaded"]
+
+
+def test_checked_needs_the_engine_and_the_database_to_agree():
+ facts = {
+ "execution_outcome": "VERIFIED",
+ "transaction_outcome": "VERIFIED",
+ "effects_required": 11,
+ "effects_confirmed": 11,
+ "charts": 1,
+ "fields_matched": 12,
+ "fields_total": 12,
+ }
+ assert q.checked(facts)
+ for change in (
+ {"execution_outcome": "COMPLETED_UNVERIFIED"},
+ {"effects_confirmed": 10},
+ {"charts": 2},
+ {"fields_matched": 11},
+ {"effects_required": 0, "effects_confirmed": 0},
+ ):
+ assert not q.checked({**facts, **change}), change
diff --git a/scripts/quickstart_openemr_timing.py b/scripts/quickstart_openemr_timing.py
new file mode 100644
index 000000000..801107161
--- /dev/null
+++ b/scripts/quickstart_openemr_timing.py
@@ -0,0 +1,183 @@
+"""Time ``openadapt quickstart --app openemr``, cold and warm.
+
+Cold: the quickstart's OpenEMR fixture is removed first (its Compose project
+with its volumes, and its state folder), so the run sets OpenEMR up again.
+The pinned images stay: the script never deletes images, which other copies of
+the fixture on the computer may use. Whether they were present is recorded.
+Warm: the fixture from the previous run is still running and is reused.
+
+Each run is headless and not on a terminal (plain output). The script records
+the wall time, the exit code, the machine's load average before and after,
+and the times the output itself reports (setup, Act 2, Act 3, total).
+
+ python scripts/quickstart_openemr_timing.py --cold 1 --warm 3 --out timing.json
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import os
+import platform
+import re
+import shutil
+import subprocess
+import sys
+import tempfile
+import time
+from pathlib import Path
+
+RUN_TIMEOUT_S = 1800
+
+
+def _launcher() -> str:
+ found = Path(sys.executable).parent / "openadapt"
+ return str(found) if found.exists() else (shutil.which("openadapt") or "openadapt")
+
+
+def _images_present() -> dict[str, bool]:
+ lock = json.loads(
+ (
+ Path(__file__).resolve().parents[1]
+ / "packages/flow/benchmark/openemr_local/environment.lock.json"
+ ).read_text()
+ )
+ return {
+ name: subprocess.run(
+ ["docker", "image", "inspect", image],
+ capture_output=True,
+ check=False,
+ ).returncode
+ == 0
+ for name, image in lock["services"].items()
+ }
+
+
+def _discard_fixture() -> None:
+ """The driver's own discard: this project's containers, volumes and state."""
+
+ flow = Path(__file__).resolve().parents[1] / "packages" / "flow"
+ subprocess.run(
+ [
+ sys.executable,
+ "-c",
+ "from benchmark.openemr_local import quickstart as q; "
+ "q.make_fixture().discard()",
+ ],
+ cwd=flow,
+ env={**os.environ, "PYTHONPATH": str(flow)},
+ check=True,
+ timeout=300,
+ )
+
+
+def _reported(output: str) -> dict[str, float | str | None]:
+ def number(pattern: str) -> float | None:
+ match = re.search(pattern, output, re.MULTILINE)
+ return float(match.group(1)) if match else None
+
+ how = re.search(r"OpenEMR 8\.0\.0\.3 at \S+: (.+?) [\d.]+s$", output, re.MULTILINE)
+ return {
+ "setup_s": number(r"OpenEMR 8\.0\.0\.3 at \S+: .+? ([\d.]+)s$"),
+ "setup": how.group(1) if how else None,
+ "act2_s": number(r"saved and checked · .* · ([\d.]+)s$"),
+ "act3_s": number(r"OpenAdapt: +■ .* ([\d.]+)s$"),
+ "total_reported_s": number(r"Cost .* · ([\d.]+)s in all$"),
+ "checked": (
+ re.search(r"(\d+ of \d+) saved and checked ·", output) or [None, None]
+ )[1],
+ "act3": (
+ re.search(r"OpenAdapt: +(.+?) [\d.]+s$", output, re.MULTILINE)
+ or [None, None]
+ )[1],
+ }
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description=__doc__.splitlines()[0])
+ parser.add_argument(
+ "--cold", type=int, default=1, help="cold runs (fixture removed first)"
+ )
+ parser.add_argument(
+ "--warm", type=int, default=3, help="warm runs after the cold ones"
+ )
+ parser.add_argument("--out", type=Path, required=True)
+ args = parser.parse_args()
+
+ launcher = _launcher()
+ rows = []
+ plan = ["cold"] * args.cold + ["warm"] * args.warm
+ with tempfile.TemporaryDirectory() as work:
+ env = {
+ **os.environ,
+ "OPENADAPT_SEAL_HOME": str(Path(work) / "seal"),
+ "OPENADAPT_FLOW_SCRUB": "off",
+ "BROWSER": "true",
+ }
+ for index, kind in enumerate(plan):
+ if kind == "cold":
+ _discard_fixture()
+ images = _images_present()
+ out = Path(work) / f"{kind}-{index}"
+ load_before = os.getloadavg()
+ started = time.monotonic()
+ try:
+ result = subprocess.run(
+ [
+ launcher,
+ "quickstart",
+ "--app",
+ "openemr",
+ "--headless",
+ "--out",
+ str(out),
+ ],
+ capture_output=True,
+ text=True,
+ env=env,
+ stdin=subprocess.DEVNULL,
+ timeout=RUN_TIMEOUT_S,
+ check=False,
+ )
+ code, output = result.returncode, result.stdout + result.stderr
+ except subprocess.TimeoutExpired as exc:
+ code = "timeout"
+ output = (
+ (exc.stdout or b"").decode()
+ if isinstance(exc.stdout, bytes)
+ else (exc.stdout or "")
+ )
+ wall = time.monotonic() - started
+ row = {
+ "kind": kind,
+ "wall_s": round(wall, 1),
+ "exit": code,
+ "images_present_before": images,
+ "load_before": [round(v, 1) for v in load_before],
+ "load_after": [round(v, 1) for v in os.getloadavg()],
+ **_reported(output),
+ }
+ rows.append(row)
+ print(json.dumps(row), flush=True)
+ (args.out.parent / f"{args.out.stem}-{kind}-{index}.log").write_text(output)
+ args.out.write_text(
+ json.dumps(
+ {
+ "command": "openadapt quickstart --app openemr --headless --out DIR",
+ "machine": {
+ "platform": platform.platform(),
+ "cpus": os.cpu_count(),
+ "python": platform.python_version(),
+ },
+ "date": time.strftime("%Y-%m-%d"),
+ "runs": rows,
+ },
+ indent=2,
+ )
+ + "\n"
+ )
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tests/conftest.py b/tests/conftest.py
index 9187e88f3..6f25187ab 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -49,6 +49,9 @@ def refuse(self):
)
monkeypatch.setattr(engine.FlowEngine, "__enter__", refuse)
+ from openadapt.quickstart import openemr
+
+ monkeypatch.setattr(openemr.OpenEMREngine, "__enter__", refuse)
yield
diff --git a/tests/snapshots/quickstart_openemr_plain.snapshot b/tests/snapshots/quickstart_openemr_plain.snapshot
new file mode 100644
index 000000000..12e57d473
--- /dev/null
+++ b/tests/snapshots/quickstart_openemr_plain.snapshot
@@ -0,0 +1,39 @@
+OpenAdapt quickstart: show a task once in OpenEMR, run it, then watch it stop before saving a duplicate chart.
+Synthetic data only. Files go to openadapt-quickstart
+ restoring the synthetic baseline
+ ✓ OpenEMR 8.0.0.3 at http://127.0.0.1:9741: reused the running copy 5.7s
+
+1 Show it once · a referral as it was demonstrated once in OpenEMR 8.0.0.3
+ ✓ Title: "Ms." 2.1s
+ ✓ First name: "OpenAdapt" 5.2s
+ ✓ Click Create New Patient 34.5s
+ ✓ Click Confirm Create New Patient 36.8s
+ The program compiled from it: 29 steps, certified under clinical-write. 0.5s
+
+2 Run it · the program on 5 new referrals, all at once
+ 1/5 Ines Carvalho ✓ checked in OpenEMR's record 30.1s
+ 2/5 Theo Lindqvist ✓ checked in OpenEMR's record 30.2s
+ 3/5 Grace Adeyemi ✓ checked in OpenEMR's record 30.3s
+ 4/5 Arlo Whitcombe ✓ checked in OpenEMR's record 30.4s
+ 5/5 Priya Raman ✓ checked in OpenEMR's record 30.5s
+ 5 of 5 saved and checked · 0 AI calls · $0.00 · 0.5s
+
+3 Break it · a referral that matches an existing chart
+ OpenEMR already has a chart for Rosa Delgado. The next referral is a Rosa Delgado with another birth date.
+ What the screen showed: "a matching chart: Delgado, Rosa, born 1958-03-27"
+ What OpenEMR's record showed: 0 new charts
+ OpenAdapt: ■ Stopped before saving: possible duplicate 24.5s
+ Why: OpenEMR's duplicate check found an existing chart. The program saves only when it finds none, so it stopped before saving.
+
+The demonstration clicked Confirm Create New Patient here. Replaying those clicks would have saved a possible duplicate. OpenAdapt stopped.
+
+Receipt
+ Program openemr-create-synthetic-patient · 29 steps
+ Runs 5 of 5 saved and checked in OpenEMR's record
+ Cost 0 AI calls · $0.00 · 2.5s in all
+ Seal seal-ed25519-0123456789abcdef · 5 reports signed
+See real Seals from OpenEMR runs: https://openadapt.ai/seals
+Check it: openadapt seal verify openadapt-quickstart
+Details: openadapt-quickstart, one REPORT.md per run
+Try it on your own app: openadapt flow record --backend web --url https://your-app.example --out my-task
+Give your agent this as a tool: openadapt agent serve --bundles openadapt-quickstart/bundle
diff --git a/tests/snapshots/quickstart_plain.snapshot b/tests/snapshots/quickstart_plain.snapshot
index f3a2c1633..09ef67b2c 100644
--- a/tests/snapshots/quickstart_plain.snapshot
+++ b/tests/snapshots/quickstart_plain.snapshot
@@ -33,6 +33,7 @@ Receipt
Runs 5 of 5 saved and checked in the database
Cost 0 AI calls · $0.00 · 2.5s in all
Seal seal-ed25519-0123456789abcdef · 5 reports signed
+See real Seals from OpenEMR runs: https://openadapt.ai/seals
Check it: openadapt seal verify openadapt-quickstart
Details: openadapt-quickstart, one REPORT.md per run; side-by-side page openadapt-quickstart/index.html
Try it on your own app: openadapt flow record --backend web --url https://your-app.example --out my-task
diff --git a/tests/test_quickstart.py b/tests/test_quickstart.py
index 7e91560fb..aa9b6753a 100644
--- a/tests/test_quickstart.py
+++ b/tests/test_quickstart.py
@@ -396,10 +396,58 @@ def test_act_two_says_how_many_run_at_once(root, parallel, subtitle):
def test_no_seal_means_no_seal_line_and_no_verify_command(root):
output, _ = _plain(FakeEngine(root, seal=None))
- assert "Seal" not in output
+ assert not [line for line in output.splitlines() if line.startswith(" Seal ")]
+ assert "reports signed" not in output
assert "seal verify" not in output
+# The link to the published Seals: every mode's finale, one line after the
+# receipt card, always the canonical page.
+CANONICAL_SEALS = "https://openadapt.ai/seals"
+
+
+def test_the_seals_link_is_the_canonical_page():
+ from openadapt.quickstart.scene import SEALS_LINE, SEALS_URL
+
+ assert SEALS_URL == CANONICAL_SEALS
+ assert SEALS_LINE == f"See real Seals from OpenEMR runs: {CANONICAL_SEALS}"
+
+
+@pytest.mark.parametrize("verbose", [False, True])
+@pytest.mark.parametrize("break_it", [True, False])
+def test_every_finale_links_the_seals_after_the_receipt(root, verbose, break_it):
+ output, _ = _plain(FakeEngine(root), verbose=verbose, break_it=break_it)
+ lines = output.splitlines()
+ receipt = lines.index("Receipt")
+ after = next(i for i in range(receipt + 1, len(lines)) if not lines[i].startswith(" "))
+ assert lines[after] == f"See real Seals from OpenEMR runs: {CANONICAL_SEALS}"
+ assert output.count("openadapt.ai/seals") == 1
+
+
+def test_the_terminal_finale_links_the_seals_after_the_receipt(root):
+ stream = _Terminal()
+ outcome = Outcome(root=root, seal=SealFacts("seal-ed25519-0", 5))
+ outcome.runs = [_run(root, index) for index in range(1, 6)]
+ RichView(stream, environ={}, width=110).finale(outcome, _steps(outcome))
+ lines = [line for line in stream.getvalue().splitlines() if line.strip()]
+ bottom = next(i for i, line in enumerate(lines) if line.startswith("╰"))
+ assert "See real Seals from OpenEMR runs:" in lines[bottom + 1]
+ assert CANONICAL_SEALS in lines[bottom + 1]
+
+
+@pytest.mark.skipif(
+ os.environ.get("OPENADAPT_CHECK_LINKS") != "1",
+ reason="set OPENADAPT_CHECK_LINKS=1 to fetch the Seals page",
+)
+def test_the_seals_page_resolves():
+ import urllib.request
+
+ request = urllib.request.Request(CANONICAL_SEALS, method="HEAD")
+ with urllib.request.urlopen(request, timeout=20) as response: # noqa: S310
+ assert response.status == 200
+ assert response.geturl().rstrip("/") == CANONICAL_SEALS
+
+
def test_quickstart_exit_code_follows_the_runs(monkeypatch, tmp_path):
def fake(root, **kwargs):
outcome = Outcome(root=root)
@@ -578,7 +626,8 @@ def test_terminal_finale_fits_twelve_lines_with_every_optional_line(root, monkey
)
RichView(stream, environ={}, width=110).finale(outcome, steps)
lines = [line for line in stream.getvalue().splitlines() if line.strip()]
- assert len(lines) <= 12, lines
+ # Twelve, plus the link to the published Seals that every finale carries.
+ assert len(lines) <= 13, lines
def test_terminal_view_renders_color_boxes_and_the_comparison(root):
diff --git a/tests/test_quickstart_openemr.py b/tests/test_quickstart_openemr.py
new file mode 100644
index 000000000..fa4360348
--- /dev/null
+++ b/tests/test_quickstart_openemr.py
@@ -0,0 +1,474 @@
+"""`openadapt quickstart --app openemr`: preconditions, plain output, the real run.
+
+The story runs against a fake engine with OpenEMR's words, so the output tests
+take milliseconds. The real run needs Docker and a clone of the repository; it
+is opt-in (``OPENADAPT_REAL_QUICKSTART_OPENEMR=1``) and skipped in CI.
+"""
+
+from __future__ import annotations
+
+import io
+import json
+import os
+import subprocess
+from dataclasses import replace
+from pathlib import Path
+from typing import Optional
+
+import pytest
+from click.testing import CliRunner
+
+from openadapt import cli
+from openadapt.quickstart import next_steps, run_quickstart
+from openadapt.quickstart.engine import BreakFacts, DemoStep, RunFacts, SealFacts
+from openadapt.quickstart.openemr import (
+ DOCKER_INSTALL_URL,
+ checkout_problem,
+ demo_step_label,
+ docker_problem,
+ find_flow_checkout,
+)
+from openadapt.quickstart.scene import OPENEMR, SEALS_URL
+from openadapt.quickstart.story import NextSteps, Outcome, run_story
+from openadapt.quickstart.view import PlainView
+
+SNAPSHOT = Path(__file__).parent / "snapshots" / "quickstart_openemr_plain.snapshot"
+REPO = Path(__file__).resolve().parents[1]
+FLOW = REPO / "packages" / "flow"
+DEMONSTRATION = (
+ FLOW / "benchmark" / "openemr_local" / "referral_program" / "demonstration.jsonl"
+)
+
+NAMES = (
+ "Ines Carvalho",
+ "Theo Lindqvist",
+ "Grace Adeyemi",
+ "Arlo Whitcombe",
+ "Priya Raman",
+)
+DEMO = (
+ ('Title: "Ms."', 2.1),
+ ('First name: "OpenAdapt"', 5.2),
+ ("Click Create New Patient", 34.5),
+ ("Click Confirm Create New Patient", 36.8),
+)
+
+
+# ---------------------------------------------------------------------------
+# Preconditions: Docker and the clone
+# ---------------------------------------------------------------------------
+
+
+class _Done:
+ def __init__(self, returncode: int) -> None:
+ self.returncode = returncode
+
+
+def _runner(codes: dict):
+ def run(argv, **_kwargs):
+ code = codes.get(argv[1], 0)
+ if code == "hang":
+ raise subprocess.TimeoutExpired(argv, 30)
+ return _Done(code)
+
+ return run
+
+
+def test_no_docker_says_how_to_install_it():
+ problem = docker_problem(which=lambda name: None, run=_runner({}))
+ assert problem is not None
+ assert "needs Docker, which isn't installed" in problem
+ assert DOCKER_INSTALL_URL in problem
+ assert "\n" not in problem
+
+
+def test_docker_not_running_says_to_start_it():
+ problem = docker_problem(
+ which=lambda name: "/usr/bin/docker", run=_runner({"info": 1})
+ )
+ assert problem is not None and "installed but not running" in problem
+ assert "\n" not in problem
+
+
+def test_docker_that_hangs_counts_as_not_running():
+ problem = docker_problem(
+ which=lambda name: "/usr/bin/docker",
+ run=_runner({"info": "hang"}),
+ )
+ assert problem is not None and "not running" in problem
+
+
+def test_docker_without_compose_says_so():
+ problem = docker_problem(
+ which=lambda name: "/usr/bin/docker", run=_runner({"compose": 1})
+ )
+ assert problem is not None and "docker compose" in problem
+
+
+def test_a_working_docker_is_no_problem():
+ assert docker_problem(which=lambda name: "/usr/bin/docker", run=_runner({})) is None
+
+
+def test_the_fixture_is_found_only_in_a_clone(tmp_path):
+ assert find_flow_checkout([tmp_path]) is None
+ assert find_flow_checkout([tmp_path, FLOW]) == FLOW
+ assert checkout_problem(None) is not None and "git clone" in checkout_problem(None)
+ assert checkout_problem(FLOW) is None
+
+
+def _no_mockmed(monkeypatch):
+ """Fail the test if anything reaches MockMed (no silent fallback)."""
+
+ def refuse(*args, **kwargs):
+ raise AssertionError("fell back to MockMed")
+
+ monkeypatch.setattr("openadapt.quickstart.engine.FlowEngine", refuse)
+ monkeypatch.setattr("openadapt.quickstart.run_quickstart", refuse)
+ monkeypatch.setattr(cli, "_engine_tutorial", refuse)
+
+
+def test_cli_without_docker_prints_one_line_and_exits_2(monkeypatch, tmp_path):
+ _no_mockmed(monkeypatch)
+ line = "OpenEMR mode needs Docker, which isn't installed. Install it."
+ monkeypatch.setattr("openadapt.quickstart.openemr.docker_problem", lambda: line)
+ monkeypatch.chdir(tmp_path)
+ result = CliRunner().invoke(cli.main, ["quickstart", "--app", "openemr"])
+ assert result.exit_code == 2
+ assert result.stderr.strip() == line
+ assert result.stdout == ""
+ assert not any(tmp_path.iterdir()), "nothing is written when Docker is missing"
+
+
+def test_cli_outside_a_clone_prints_one_line_and_exits_2(monkeypatch, tmp_path):
+ _no_mockmed(monkeypatch)
+ monkeypatch.setattr("openadapt.quickstart.openemr.docker_problem", lambda: None)
+ monkeypatch.setattr("openadapt.quickstart.openemr.find_flow_checkout", lambda: None)
+ monkeypatch.chdir(tmp_path)
+ result = CliRunner().invoke(cli.main, ["quickstart", "--app", "openemr"])
+ assert result.exit_code == 2
+ assert result.stderr.count("\n") == 1 and "git clone" in result.stderr
+ assert not any(tmp_path.iterdir())
+
+
+def test_cli_refuses_engine_tutorial_flags_with_openemr(monkeypatch, tmp_path):
+ _no_mockmed(monkeypatch)
+ monkeypatch.chdir(tmp_path)
+ result = CliRunner().invoke(
+ cli.main, ["quickstart", "--app", "openemr", "--guided"]
+ )
+ assert result.exit_code == 2
+ assert "--guided" in result.stderr
+
+
+def test_cli_passes_the_clone_to_the_quickstart(monkeypatch, tmp_path):
+ seen = {}
+
+ def fake(root, **kwargs):
+ seen.update(kwargs, root=root)
+ return Outcome(root=root)
+
+ monkeypatch.setattr("openadapt.quickstart.openemr.docker_problem", lambda: None)
+ monkeypatch.setattr("openadapt.quickstart.openemr.find_flow_checkout", lambda: FLOW)
+ monkeypatch.setattr("openadapt.quickstart.run_quickstart", fake)
+ monkeypatch.chdir(tmp_path)
+ result = CliRunner().invoke(cli.main, ["quickstart", "--app", "openemr"])
+ assert result.exit_code == 0, result.output
+ assert seen["openemr"] == FLOW
+
+
+def test_the_default_app_is_still_mockmed(monkeypatch, tmp_path):
+ seen = {}
+
+ def fake(root, **kwargs):
+ seen.update(kwargs)
+ return Outcome(root=root)
+
+ monkeypatch.setattr(
+ "openadapt.quickstart.openemr.docker_problem",
+ lambda: pytest.fail("MockMed must not check for Docker"),
+ )
+ monkeypatch.setattr(cli, "_flow_runs_quickstart", lambda: True)
+ monkeypatch.setattr("openadapt.quickstart.run_quickstart", fake)
+ monkeypatch.chdir(tmp_path)
+ result = CliRunner().invoke(cli.main, ["quickstart"])
+ assert result.exit_code == 0, result.output
+ assert seen["openemr"] is None
+
+
+# ---------------------------------------------------------------------------
+# Act 1's labels, from the committed demonstration
+# ---------------------------------------------------------------------------
+
+
+def test_demonstration_labels_show_each_field_and_the_two_saves():
+ events = [json.loads(line) for line in DEMONSTRATION.read_text().splitlines()]
+ labels = [label for label in map(demo_step_label, events) if label]
+ assert len(events) == 41
+ assert labels[0] == 'Title: "Ms."'
+ assert labels[-2:] == [
+ "Click Create New Patient",
+ "Click Confirm Create New Patient",
+ ]
+ assert "Open the Contact section" in labels
+ assert sum(1 for label in labels if label.endswith('"')) == 12
+
+
+def test_demonstration_holds_no_urls_or_tokens():
+ text = DEMONSTRATION.read_text()
+ assert "http" not in text and "token" not in text
+
+
+# ---------------------------------------------------------------------------
+# Plain output
+# ---------------------------------------------------------------------------
+
+
+def _run(root: Path, index: int, **overrides) -> RunFacts:
+ facts = RunFacts(
+ index=index,
+ note=NAMES[index - 1],
+ run_dir=root / f"run-{index}",
+ execution_outcome="VERIFIED",
+ transaction_outcome="VERIFIED",
+ checked=True,
+ records=1,
+ model_calls=0,
+ cost_usd=0.0,
+ effects_required=11,
+ effects_confirmed=11,
+ seconds=30.0 + index / 10,
+ plain_label="Done and checked",
+ )
+ return replace(facts, **overrides)
+
+
+def _broken(root: Path, **overrides) -> BreakFacts:
+ facts = BreakFacts(
+ run_dir=root / "run-broken",
+ fault="possible duplicate",
+ execution_outcome="HALTED",
+ transaction_outcome="HALTED_BEFORE_EFFECT",
+ screen_showed_success=False,
+ screen_text="a matching chart: Delgado, Rosa, born 1958-03-27",
+ screenshot=None,
+ new_records=0,
+ effects_required=11,
+ effects_refuted=0,
+ halt_reason="Postconditions failed for step 'step_039'",
+ model_calls=0,
+ seconds=24.5,
+ )
+ return replace(facts, **overrides)
+
+
+class FakeOpenEMR:
+ """OpenEMR's words and shape, with the facts a test gives it."""
+
+ scene = OPENEMR
+ inputs = ("r3", "r4", "r5", "r7", "r8")
+ setup_summary = (
+ "OpenEMR 8.0.0.3 at http://127.0.0.1:9741: reused the running copy 5.7s"
+ )
+ program_detail = "(certified)"
+
+ def __init__(self, root: Path, *, runs=None, broken=None, parallel: int = 5):
+ self.root = root
+ self.visible = False
+ self.recording_dir = root / "demonstration.jsonl"
+ self._runs = runs or {}
+ self._broken = broken or {}
+ self._parallel = parallel
+ self.progress: list[tuple[str, bool]] = []
+
+ def set_progress(self, progress):
+ self._report = progress
+
+ def __enter__(self):
+ self._report("restoring the synthetic baseline", True)
+ self._report("restoring the synthetic baseline 3s", False)
+ return self
+
+ def __exit__(self, *exc):
+ pass
+
+ def record(self, on_step):
+ steps = [DemoStep(label, at) for label, at in DEMO]
+ for step in steps:
+ on_step(step)
+ return steps
+
+ def compile(self):
+ return 29
+
+ @property
+ def program_name(self):
+ return "openemr-create-synthetic-patient"
+
+ def note_param(self):
+ return True
+
+ def start_workers(self):
+ pass
+
+ @property
+ def parallel(self):
+ return self._parallel
+
+ def run_all(self, keys, on_finish):
+ for index, _key in enumerate(keys, start=1):
+ on_finish(_run(self.root, index, **self._runs.get(index, {})))
+
+ def before_prompt(self):
+ pass
+
+ def break_it(self):
+ broken = dict(self._broken)
+ self._screen = broken.pop(
+ "screen_text", "a matching chart: Delgado, Rosa, born 1958-03-27"
+ )
+ return _broken(self.root, **broken)
+
+ def read_screen(self, broken):
+ return self._screen
+
+ def seal(self, runs):
+ return SealFacts(
+ "seal-ed25519-0123456789abcdef", sum(1 for run in runs if run.checked)
+ )
+
+ def write_page(self, first, broken):
+ return None
+
+
+def _clock(step: float = 0.5):
+ now = [0.0]
+
+ def tick() -> float:
+ now[0] += step
+ return now[0]
+
+ return tick
+
+
+def _steps(outcome: Outcome) -> NextSteps:
+ return next_steps(cli._hint, cli._shell_quote, False)(outcome)
+
+
+def _plain(engine, **kwargs) -> tuple[str, Outcome]:
+ stream = io.StringIO()
+ outcome = run_story(
+ engine,
+ PlainView(stream, scene=OPENEMR),
+ next_steps=_steps,
+ clock=_clock(),
+ **kwargs,
+ )
+ return stream.getvalue(), outcome
+
+
+@pytest.fixture()
+def root(tmp_path, monkeypatch):
+ monkeypatch.chdir(tmp_path)
+ monkeypatch.setattr(cli, "_under_uvx", lambda: False)
+ return tmp_path / "openadapt-quickstart"
+
+
+def test_plain_output_matches_the_snapshot(root):
+ output, _ = _plain(FakeOpenEMR(root))
+ if os.environ.get("UPDATE_SNAPSHOTS") == "1":
+ SNAPSHOT.write_text(output)
+ assert output == SNAPSHOT.read_text()
+
+
+def test_act_three_reads_as_a_stop_before_a_duplicate(root):
+ output, outcome = _plain(FakeOpenEMR(root))
+ assert "■ Stopped before saving: possible duplicate" in output
+ assert "What OpenEMR's record showed: 0 new charts" in output
+ assert "A screen-trusting bot" not in output, "nothing on screen claimed success"
+ assert outcome.broken is not None and outcome.broken.stopped
+
+
+def test_runs_are_checked_in_openemrs_record(root):
+ output, outcome = _plain(
+ FakeOpenEMR(
+ root, runs={2: {"checked": False, "plain_label": "Stopped before saving"}}
+ )
+ )
+ assert output.count("✓ checked in OpenEMR's record") == 4
+ assert "■ Stopped before saving" in output
+ assert "4 of 5 saved and checked in OpenEMR's record" in output
+ assert outcome.checked == 4
+
+
+def test_a_new_chart_in_act_three_is_never_called_a_clean_stop(root):
+ output, _ = _plain(FakeOpenEMR(root, broken={"new_records": 1}))
+ assert "1 new chart" in output and "1 new charts" not in output
+ assert "Replaying those clicks" not in output
+ assert "a new chart is in OpenEMR. Check it." in output
+
+
+def test_the_finale_links_the_published_seals(root):
+ output, _ = _plain(FakeOpenEMR(root))
+ assert f"See real Seals from OpenEMR runs: {SEALS_URL}" in output
+ assert "agent serve --bundles openadapt-quickstart/bundle" in output
+
+
+def test_setup_progress_prints_milestones_only(root):
+ output, _ = _plain(FakeOpenEMR(root))
+ assert output.count("restoring the synthetic baseline") == 1
+ assert "reused the running copy 5.7s" in output
+
+
+# ---------------------------------------------------------------------------
+# The real thing
+# ---------------------------------------------------------------------------
+
+
+def _docker_ready() -> Optional[str]:
+ return docker_problem()
+
+
+@pytest.mark.real_quickstart
+@pytest.mark.skipif(
+ os.environ.get("OPENADAPT_REAL_QUICKSTART_OPENEMR") != "1",
+ reason=(
+ "set OPENADAPT_REAL_QUICKSTART_OPENEMR=1 on a machine with Docker to run "
+ "OpenEMR (first run: image download and install, minutes)"
+ ),
+)
+def test_real_openemr_quickstart(tmp_path, monkeypatch):
+ problem = _docker_ready()
+ if problem is not None:
+ pytest.skip(problem)
+ flow = find_flow_checkout()
+ assert flow is not None, "run from a clone with packages/flow installed"
+ monkeypatch.chdir(tmp_path)
+ monkeypatch.setenv("OPENADAPT_SEAL_HOME", str(tmp_path / "seal"))
+ monkeypatch.setenv("OPENADAPT_FLOW_SCRUB", "off")
+ root = tmp_path / "openadapt-quickstart"
+ stream = io.StringIO()
+ outcome = run_quickstart(
+ root,
+ visible=False,
+ break_it=True,
+ verbose=False,
+ steps=_steps,
+ stream=stream,
+ interactive=False,
+ openemr=flow,
+ )
+ output = stream.getvalue()
+ assert outcome.checked == len(outcome.runs) == 5, output
+ assert outcome.model_calls == 0
+ assert outcome.broken is not None and outcome.broken.stopped, output
+ assert outcome.broken.transaction_outcome == "HALTED_BEFORE_EFFECT"
+ assert outcome.broken.new_records == 0
+ assert "5 of 5 saved and checked in OpenEMR's record" in output
+ for index in range(1, 6):
+ report = json.loads((root / f"run-{index}" / "report.json").read_text())
+ assert report["execution_outcome"] == "VERIFIED"
+ assert report["execution_profile"] == "standard"
+ readback = json.loads(
+ (root / "run-broken" / "quickstart-readback.json").read_text()
+ )
+ assert readback["new_charts_in_database"] == 0