From 749ceefc90cba56f2cf03922ee15c4cea44787bf Mon Sep 17 00:00:00 2001 From: abrichr Date: Tue, 20 Oct 2026 12:28:58 -0400 Subject: [PATCH 1/5] feat(quickstart): --app openemr runs the three acts on a real OpenEMR openadapt quickstart --app openemr runs the same story on OpenEMR 8.0.0.3 in Docker, with the certified referral program behind the site's Seals: Act 1 shows the demonstration it was compiled from, Act 2 registers five synthetic referrals at once on clerk accounts through the certified run path (Standard run gate, REST record check, SQL read-back), and Act 3 adds an existing chart and shows the program stop before saving a possible duplicate, with 0 new charts in OpenEMR's database. The fixture is the repository's pinned OpenEMR fixture with its own Compose project and ports; a running copy is reused. Without Docker or a clone the command says so in one line and exits 2; it never falls back to MockMed. The default stays MockMed, byte for byte. Co-Authored-By: Claude Opus 5.5 --- docs/quickstart/README.md | 53 + openadapt/cli.py | 56 +- openadapt/quickstart/__init__.py | 24 +- openadapt/quickstart/engine.py | 40 +- openadapt/quickstart/openemr.py | 620 + openadapt/quickstart/scene.py | 195 + openadapt/quickstart/story.py | 81 +- openadapt/quickstart/view.py | 183 +- openadapt/quickstart/workers.py | 20 +- .../benchmark/openemr_local/quickstart.py | 666 + .../openemr_local/referral_program/README.md | 43 + .../referral_program/demonstration.jsonl | 41 + .../program/api_proposal.json | 7 + .../program/benchmark-contract.json | 22 + .../program/compile_notes.json | 151 + .../referral_program/program/manifest.json | 262 + .../program/param_hygiene.json | 25 + .../templates/identifiers/step_016.png | Bin 0 -> 324 bytes .../program/templates/layout_fingerprint.json | 2914 ++++ .../program/templates/step_000.png | Bin 0 -> 3518 bytes .../program/templates/step_000_expect.png | Bin 0 -> 6249 bytes .../program/templates/step_003.png | Bin 0 -> 3046 bytes .../program/templates/step_003_expect.png | Bin 0 -> 7872 bytes .../program/templates/step_006.png | Bin 0 -> 2227 bytes .../program/templates/step_006_expect.png | Bin 0 -> 6094 bytes .../program/templates/step_009.png | Bin 0 -> 1161 bytes .../program/templates/step_009_expect.png | Bin 0 -> 43115 bytes .../program/templates/step_012.png | Bin 0 -> 3413 bytes .../program/templates/step_012_expect.png | Bin 0 -> 10182 bytes .../program/templates/step_016.png | Bin 0 -> 324 bytes .../program/templates/step_016_expect.png | Bin 0 -> 65876 bytes .../program/templates/step_018.png | Bin 0 -> 1672 bytes .../program/templates/step_018_expect.png | Bin 0 -> 6717 bytes .../program/templates/step_021.png | Bin 0 -> 1079 bytes .../program/templates/step_021_expect.png | Bin 0 -> 1755 bytes .../program/templates/step_024.png | Bin 0 -> 2324 bytes .../program/templates/step_024_expect.png | Bin 0 -> 8331 bytes .../program/templates/step_027.png | Bin 0 -> 939 bytes .../program/templates/step_027_expect.png | Bin 0 -> 1363 bytes .../program/templates/step_030.png | Bin 0 -> 553 bytes .../program/templates/step_030_expect.png | Bin 0 -> 2377 bytes .../program/templates/step_033.png | Bin 0 -> 441 bytes .../program/templates/step_033_expect.png | Bin 0 -> 2614 bytes .../program/templates/step_036.png | Bin 0 -> 2385 bytes .../program/templates/step_036_expect.png | Bin 0 -> 2391 bytes .../program/templates/step_039.png | Bin 0 -> 3254 bytes .../program/templates/step_039_expect.png | Bin 0 -> 109805 bytes .../program/templates/step_040.png | Bin 0 -> 3573 bytes .../program/templates/step_040_expect.png | Bin 0 -> 113619 bytes .../referral_program/program/workflow.json | 14395 ++++++++++++++++ .../referral_program/program/workflow.py | 171 + .../tests/test_openemr_quickstart_driver.py | 270 + tests/conftest.py | 3 + .../quickstart_openemr_plain.snapshot | 39 + tests/test_quickstart_openemr.py | 474 + 55 files changed, 20622 insertions(+), 133 deletions(-) create mode 100644 openadapt/quickstart/openemr.py create mode 100644 openadapt/quickstart/scene.py create mode 100644 packages/flow/benchmark/openemr_local/quickstart.py create mode 100644 packages/flow/benchmark/openemr_local/referral_program/README.md create mode 100644 packages/flow/benchmark/openemr_local/referral_program/demonstration.jsonl create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/api_proposal.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/benchmark-contract.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/compile_notes.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/manifest.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/param_hygiene.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/identifiers/step_016.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/layout_fingerprint.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_000_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_003_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_006_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_009_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_012_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_016_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_018_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_021_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_024_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_027_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_030_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_033_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_036_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_039_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/templates/step_040_expect.png create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/workflow.json create mode 100644 packages/flow/benchmark/openemr_local/referral_program/program/workflow.py create mode 100644 packages/flow/tests/test_openemr_quickstart_driver.py create mode 100644 tests/snapshots/quickstart_openemr_plain.snapshot create mode 100644 tests/test_quickstart_openemr.py diff --git a/docs/quickstart/README.md b/docs/quickstart/README.md index e7ef7bd20..a6d0c8cba 100644 --- a/docs/quickstart/README.md +++ b/docs/quickstart/README.md @@ -10,3 +10,56 @@ - `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), 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, plus a link to the published + Seals at . + +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/openadapt/cli.py b/openadapt/cli.py index 9f00b71f5..7c9d12f4a 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..15ade54eb --- /dev/null +++ b/openadapt/quickstart/scene.py @@ -0,0 +1,195 @@ +"""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. +SEALS_URL = "https://openadapt.ai/seals" + + +@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 + #: 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 + #: A page of published Seals the finale links to, if any. + seals_url: Optional[str] = None + #: 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." + ), + 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." + ), + 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, + seals_url=SEALS_URL, + 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_URL", "Scene"] diff --git a/openadapt/quickstart/story.py b/openadapt/quickstart/story.py index 59d2597d3..65c91c0a9 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,7 +265,7 @@ 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() @@ -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..bbdfbe98e 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, 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,10 +292,12 @@ 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}") if steps.verify: self._say(f"Check it: {steps.verify}") + if self.scene.seals_url: + self._say(f"Published Seals: {self.scene.seals_url}") self._say(details_line(outcome)) for line in next_step_lines(steps): self._say(line) @@ -312,7 +318,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 +332,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 +341,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 +378,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 +395,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 +409,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 +426,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 +459,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 +473,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,7 +522,7 @@ 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( @@ -505,6 +530,10 @@ def finale(self, outcome: Outcome, steps: NextSteps) -> None: ) if steps.verify: self.console.print(f"[dim]Check it:[/] [bold]{_escape(steps.verify)}[/]") + if self.scene.seals_url: + self.console.print( + f"[dim]Published Seals:[/] [bold cyan]{self.scene.seals_url}[/]" + ) self.console.print(f"[dim]{_escape(details_line(outcome))}[/]") for line in next_step_lines(steps): label, _, command = line.partition(": ") 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..0bbdb4c24 --- /dev/null +++ b/packages/flow/benchmark/openemr_local/quickstart.py @@ -0,0 +1,666 @@ +"""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 loopback ports. +PROJECT = "openadapt-quickstart-openemr" +UI_PORT = "9741" +API_PORT = "9740" + +#: 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} + + @property + def ui_base_url(self) -> str: + return f"http://127.0.0.1:{UI_PORT}" + + @property + def api_base_url(self) -> str: + return f"https://127.0.0.1:{API_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": UI_PORT, + "OPENEMR_HTTPS_PORT": API_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 finished setting this fixture up.""" + + 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. + + Only for a setup that never finished (no baseline): nothing in it is + anyone's work. Another project or state folder is never touched. + """ + + if self.runtime_env.exists(): + with contextlib.suppress(fx.FixtureError): + self._compose("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 0000000000000000000000000000000000000000..9ad632eb8f22791d9a378dd0f0593ff9b07b2053 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^3xL>xg9%6qy?p(Hfq{|R)5S5Qg7NLaz}y22B1{ef zn?7u3VdVa|bj!+qbNLqQd$P;K-}7DWE^mK%bob#ekM1T`eSBxIx1xMT+#YKmeRS#1 zbu;2>?(tvlE;87w!9LKG{r-BWbI$)xtP12?CjK-5Cw1N4EXb|t)8XaYfT6?S>FVdQ I&MBb@0HVf-SpWb4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8435371ecc63aa563bd25890156a410ceeb2feac GIT binary patch literal 3518 zcmb_fXH-+!77i8=X+{MR2pQ1zL|$>e#~0$$GvB*bNAY3fBSrU@9*A+n;Hx37TXO1 zfdov>8dv~pHt^`|+6KJ$PR*iA4jJJGN@vAhRh53k-r0WmPKQ;i@f(z>c z#eyA-9vM5U-mAyE`lDu}l}lNoDVk}N2R+9fLvD=q!mtao1|OW%^`(WeaWGkMC^5NB z30Bgd#t!ZAz;}CepKM8Q>D0h7!?fd~vpvd1!Map`C8@|F`W1s6)=jn1yNaH~g27e_ z2M$XW*u#tr;IA+L3&S@47dAK}%I+J2-G=WCu09pg8z?UUq2-Ivrgp_m~pBt5Nf5xOPn| z7I8qPfOa|X!=0v8!$bS(bTom`_TZ=?TB^?WlNtqSvYNG`B1@S-0D1s0&D=Yt^M%ZCcWgOGWw{n1}=k7Ul2Vusn(e zgC8G0_o^lUuA01QxpAO`dD70zJ4JOmY9UN0ehpz6k!(vGlO4!Y z9h7o?^iX#28pBrzSL9j6v#hTiv^a82w_SCfi`}Q8k^Pewr{Pyr&GO(?O;_{Qt7R+P zJLYNNQ>UNlGtYL(xMKoeTmS0DElsFZ|3#zIZDEn6w-ueryLZ=c0shRTfR^0M_g;$v zyJ)1tH$ybg<9-}ne65A*3Q_xiJiMD>^gTMRApacE11mrg$7z16%ekuopiNMJW$mB* zep#F~bh4yzw3TNDR$pWm!<4dMP*tftI_|ykq>;D2tzkWwN@l^s+hk;U7mbz>y;o4e zLdoFqRL&1)W$&monpK~kvi$laF_cI57sV&PkH^NL`IPtfe{)amXU@nI)El-V^jIP}iq=^uDY8W#q5$mfH z!}Iq(_VvlHTxE4)IXDD|&QcH`Ul_i0Kr!m>hnT_r6w!XUa~T;Y^YSDbD}s(4@v@oC z7p?o~Xg)pLbxeT{&($^&$K&v_!K~SGP6Mx?prEpLS{lo{j$Q>lbt+I+uKC<1IlLi| z2q;N~smDUbO_bFY$EGqD%bQ~@DHHLM2OFYHlPo(sJ^M7 zUS8JZWVi)U+GDUzf#>skL)#Xj=Zu}5Rnm>M=ROy^axgNb?G=4RN&3c#iqvA#CKwb5 zQ+KbsYe4ZwCftvqx3SUNMAzrW9#XagsYu^{a&+;L%z+aYAgxf=fM;8SA>VkIig)85 z;Cv6zJ`P+z zmBwC1+Kbqfzm*(;nK<03H>kz7kw<1bs6lI}kt5lQPEU>QBoccl=rfQMvlK_NA8Bp; z%LJj0JN}%u1oE!d{ipHobeAEi@sHu^Jv@%)_T^A1<~50GcKfQng8MacOD2?+ZXBOFG&-2-U5Kj zBtmaY4ac3_(kJ8h5PX>Gp+Z)J6&}96=##zW!SiNM{l-3JE{;YHXt8g2Vx$fSfo%C= z?$n{Li3ywzt>Bkfg55d>y&%y>o+r9ids2(6mxhBt!M3{-GR~gP@Tu}H;$McQJ@MbA zLracyma#Cyiu)FcnQnXpQ7Zo^Ck!=F3@R4c&l4}y^c^tg`3}m#&s&*3Y{rvVY)66t6`9R}clDMdE))IEo4VK|TWLO-;T5mVAA+@R;da*Q zj#5s<-)jm!V}$=Y`wn%C#{R~YdcxZjXM;}?s+Tz;ImMV0QE}OE%Xz7=!B9@Q;}J7L zes=3#iHKvT(ToS~Tp8md;h5T-k>Abw1PI8WxyP}gQQ>E}-tTA{>Skm=XXE)HarDVW z-VlJeEEWqWf5-smGtibmf67eSmJFtDw!Iv%Pr9tPm)B*73JllgNb~B3t2=k3qy4Sr8zE_!qsDv(T~2964Rv$c$|g0rz^r34D{xnvKP?c5 z{<|c2zLzSZ_AI_EL0+b*$*_k+}<$t|(^5Hx`3p&$Y|NGD!UR~D56B9_hn7mnp z2eyiU9KV>D^Q*zLr43Fo_v2nh1*%3aFIYAI-G|b((ZIsXkJ<0cI!~} zb{R7X;xRSTN)`XP*(pNQHGu3~H*QXshR~DD#y_Y$RrqP|!jDM~N{~KigYR7!o9cA* zDc0u}Y9>8HrlMfxSkEia<;%F4=kLq{b~hrhbIip6%c0L zZ7tQ-2xDWAVQrql*eIh`RG*YPVj;D($hs1jb2}~ci=5BXdjgQP5qguFpdgUw5X?yT zTQ+hO`f8xC8WB)}D#?VLx~W5&XhlADAP-M>U@WnME7&cXYpqGy)}H$tPlOmLjxWQ? zBII|Uv89g}m6%bNg8H}A**Zkx!FrYJ(Cv;_;=oW`RL-C3Hc+ZtDBJ4uThP+7I}rR@ z)1H5!)}rk2-TMlMeis$vx3+|wS27g{Hp8^*90HWxvo7COA@PyX0V;2ix~)S1$AA6x z171wdhEi;aMsfKver}n!yYdd&s~I!+Wfi_ z3Y4QcU3lCxPgv2h`s-A?b3wQ;q>o4-`l{C85&>x(ejm`MmX1!alH)=L$Ef(&eOBb$ z=`2{e@dyC3{Q)=G#8X(8E)kiC>8S+azvri^`?EZGM|mKbYDgvgeC3o~Yr&{#ub zFKcG(+0Dj%>HhEk{O|qMx#!+<&$)BX%$)Ol-}m``-{<*!KF{;aMBLWXWM$%I0)arR zH??jU0^eo88_Gxvd{zbWg@ZsRF5bLx&Dfh}sfpbT;We%LbNhbV&A=1tyL@jns&<{; z+67+3QieZw`HGEpHBrOg*xz!L^`B0$?vS$5w|%Fmx2$%~Oa4sE6Q_!BX>Gk1lmflA znv^)UH|xZJ(vpRHrX>i+s z)BkGe{ocgnz7I7# z-WPx)-0;l9zL)g7?bXcGsQpm$THiGjT1BQk=v5e54l*~>H_UcAn^Ew{aQc)@zwSbd z5V;*CRf${HV?K1Vt^QP{!q8DzauSUm7rPg^pj6?i)p5bUEZ?JDu!=UAA*(><3WC8_ zGwIq|GQ~!%?`S00oc_w)T+IB$qzn5cgODTP*vGq*y_M|S_r1b1>;&?IW)7dwF*A6W zGUF1^m1p!NQ|}0eI^)w?mfQkZ_F^%fZ}tHOFqvv|WvM=GV>});3Utx}%#^zMzlgHQxN=y1UwU zwSrDsW&u%2z;rqlmD}m+(aW6G7t^9k%)&xMm=DKZ*Vzw4UvdgUhN~Eh%?zE1IAot` zc$p|_ElA@Q9s#6Vha^>5-kK#N&-0bQm@wB)wOKz^%Kd2l=VY@xUUF+;6lGDveJXl9 zu;JU|O=M}$!|+C@fZHxg3k%Xi*xsZ17kGO@{L}HmpBvoLj?PfJv&P}%urMDM#fUq5 z?nY;(V03B?@4^C@_Q7f}YC@iNz%yOv`_$N@Z(qL)3Fq1992U^a zAZ_)iw=|rTSS}^hP$Km;F#If;^JCACyO5s-hmp4Cl-CdwJ*xL-CQb>5IN_E%k9y#6 z$)OCaH^U*{A-yq2D(;}9HNV_3h4AuUJ}VgD6R6%0{5-6#m`9P=1=87Mb%m73LyP>y zul&SKG-kI2kOQdm&jRPXe$41Ir@nky|6`;Y%pn{_C3RT4`3QqZ88JnBDmm}pld4UF zRV<3Ow*3w_QpsHqc;)iL$wxV1mVF`R8RGZv7{9{f7Z7b)qaV(A&LvCw`clsSMEljz z)%q@x6fe8axh;`C-ML_+@q0)jqRmcJznj^?8l6*Z%KcCh@HzapuA$l|mXT)BpUY^! z6&+sgD`F47h3bMFy1`;x9gZ-)BUEZbq$kOXqnNU(2$h(M$9ucn`KQ~z1^vqA!0Tmrz6RK z3ctWQ5iIXeNxaq_{q=`v!*F^WR7`oSrG*$(E~V%N8|!NkZO|V3uhtaQ){O)9*eti- zKaO7fRC}SFL^*!44fQu?-2w?WX2at?)ukyFTRSCS2Ps8(1Tz(?C$Cr;5DK+-G<*h?vYlMc>T~TaMTza!Q-5SM1MP@_s|ACoA$hqb3*^2IK+*RhAn+ht@__36! zU#noDY&2Rqh8)P}aCAS7x5iUZXvp|?JI;4cwR>kuUq1iqv*3R!0@-JhN-48p z$DNyh^s}+KRVjEekyXbs+NCw&#}ECOmvvUaj^=GObhm(W`rgfj{O$uq(qI zR^*VV0JvYX(4XYrX%r)BgKY;+)zlpJ7Prmo^20RZoI07o2ThpdJW=DcO7UU&Ck&+1 z#4ISoFV2Lm!6CdX4;^aX8|CQ%AgIY*@$c=2b`l0@7P$h__9pX4&(e&nZ69oGoB;3u zLOmD22ksPLPT@CFDt|rvLcDB?uv6`A*CM}d7tpM_hJc7lz&|A89`yP-^RCx5T0#lV zy2BHboL5{H^Q&I6+9e`onzI8{85qLsrDt9A$#}(tRvN8uugk55O@Y(|V7?QAUYjSN z(daCQK-JMdrM=_7^$rAw8xG52KSmEcySBp^v?$=Qd1J^$;|;~**WNKs)Ju^sj-jD0jUb$1ClqwGVLE4nY^@wvmIPYM$Sv2a%UAaVyK4BHE>E(~S! z@wsK*n!M^*h-mX5vuhlP1Fz_Njpuqfc{;|DX?`DXBmIBKDUaRjc_X6N^Eo;i;pmiq zqwwxJ7uKqxSOmPgiW@<^{<<<)%CEeJ<3ojnRFAKWVeG$xOX*nz6dwoSxw=M}lO3|4 z(+&>0zk=ay_=i43;j@`ROD8oycOb+B+7_jAYxqlbBr}M;w6WGY65j&_rClw3G!uLDth=WtST~ml3eBT_*rgug4}^ zFWD4Cn4Cq<^vCR~YzO~?_u3#-#kz_Gavms1+UzY~Kzq}nMu6tVr^oT}fd_|fN0?O3 zipOKEER1Bwi0jLm8UCx&yBS{`R@<1Tk|gLKFYaJ@R(cxzR``R6>#xM^DM#TLpyg32 z_(R7Kh()B<%rAiH+4%`GgmAWtDJ4T4R&ZYwot;y?xEEn&YLTVU%s`!Sb$v7UJdcdwDV))68~#n0m_ojErhm*?6CxGn#ehDaOtm=$SMh5VLWhdOZ_296;F(OBNUY5n61RL8M|9S?N4dcu=^S7SZ7D}WD zC{d=nGs=K@?FeKu2MJiOL$;Q2{jBkMg!xU2oF8|B>3#QaKmbd)pCa2#(Na$up~_nOTI1aj4Nf2*@Sj0YCheXkmdz@ew6_Z=&>;uhpqfbhk*xi7iE zU|!QU)0t1xcOd!FGGj28E#Azk%F64ag*bC~d9GJ!`h8UGgeu+NyVCHtTr20u`f+tZl+^^&NAuBnZtPUWioe8qEl%%g!gUk%1c`n;ucTVwiQJwvE4Ts{A!^M!doC&(V_ zIOd0>sr~OdPEInNc_%z=pxz?viRX6G3Kx}-PZ3{CmGx1oQTA&ZO9A#-8Yw0dwIW&^ zSWiyvt$vhmW6i-9_#5?8F>qfv`t*k|3$LMksL9aisLVaor7!)^uJ=7OV;Fc?L{x-% z=IbL0^F65Tsua{M7He^FaY?dIPxPx?!XQKARL*KC1AAe9kwj_!8jsRNw{D%K=&`=F z7t7xsgzr9%&ggjvdXgK8NUctGm>=`2)lF5}EiON^T0ix7h(NT3>+9?mSNTuBPArS- zP~3D|iAxPUh3FZu&RG`!0@LgGD|3UuO`RM=lbIu9GK{;@9ylW1GRp`{tI*aMzB+YO z;h32Wp6Vrx+02css5ai6)U0yUICo zjD(&e>pVy6EadEh@bjD*w2YDARp!M2seI3qxONR$8oR2=sj#T?=at583Uz4RAKxJh zxT{c#+-<`OU@<6TsDkIz*R0RO9BqhJ_lUnmFaH^pOT?iFBfI9VYLusurOWQq%PJPh ziO8C(4f5jd{OdJyk2pY`uQ+fuHDnTOH!>^#V@4!QRu&@%chh^&^daixeUl6PInj4} zTUva81VQ%}7Jx!slUL;EGxYIB>kaYSx{Q2@WdZ%70g`Ct0G6PrqIy1gzbAJKKp#(^ zR#rX^Zn#f#%4T@p9hdyUVPIo%GAWS^C3P#y&tdKTyD@=$eJngY4uu>aUR~0 zNx!vERfOyTG5@Int0z_?unmbxZQ>En5ZO@Mj3zqwb@q3w!^onq=tHC~`xM2#cp&n0 zpSiZ|rQK0L4iqd2`GcYC@RsDP{IvRK&OGwSB4Z_OzRIk~$o1EEGUV=|RraQ>1+yX0 zl!i-jmkgMVIn*?(tIPsO#KCrV?s;&@o8tHMnH}1Pj&L27w>BjB@qPV(em`0JRL+b?XC#=GiJ#F-PJE$R05$P&b$w7d?+zOE zVnVq+fqW9vF{=@Acc`=x@7IyX07rcj09 zOJARqDV6xmZ<}Am3E(~N<=e#7_&c3`9-mMNH1Bd(j(ITrJD6-k^;39M4qf%PbSs|I z*6wovF|hO9Bs~H*SbrNqSm=QZLpr-WJ&y-9H}IFjYGtMUnf`>NoFAM32EC2{l@mrl zd`%X!B#~YVq~3Acx;jtD=2EK#qNc_H^9|MTczuA+5p!>9ddb?>mH`aNr-VeeqX|6P z#M-u70>LLH zXs*r`6}eeRb5hCU>|B^LCFx0Ck8wci%e8@_xWMf3-6dlp*HTG&HYC!dr{#B8f^Lq? z80Cq&^(Cz4k5TCC{Xa;E-Z9M_f0&w_)4{L2VUDQl9|xuu{sM!aSg zOi^*aomt@j_SUOe?N__u!NA7Ay1B5lOpi74+9c^V7gQz)N2!64bYa1vq)kt+=Is68 zcuiImkSv{p8oXd$a$4zGg@dr9qzv$4&dJQhFjURzoEa2vT9Jf8H`^-$DnMWtx93c#%pgE!xL90IeNvnxXl|M>2t1I zv>Wg2%rDK)8rmJ7mM=-smv~l4SOPv)Crnj0G*&t+?8pIJ{nk<=tHa`A_Z#Vi{xZ6^8WYi9n>Ek%C zS-xI5Rzz4}d&C>HbMQ>j_>-eb@ML{`MXg4t#LI?4GFrA*ah1aX?_%3EUc}tZnn*|p zS&k1_+TjPnNR$Lzmf~tmen%vamWreKtBmR=hD4D$k;k{l!o$>&miO>OImY^I$AA-H zm6*nI@YJ_|h?0l3UUjfg3!8rf__tp|=vg52upgv(KNox-8U=j4@L4Ez#qCk2o}A)p zV;r(dOd~)-3NF>0nnumh_V5iV-S6-)hGVpZ43BL(sqM*a((=mc>WdQrD5&vl{@26M zk?O*_nU%Kw~@MpkdnI`Cc zo@xe8egEjdZ)Gbj1RdHzfV zeZ5}52&m5<2GP$%$?xZcqfd*#*ttZ5w#leCWNT>Xgt}jpyJ2uxLGMD{liCj}@m(`C zkSK2c`DI8%db)Lbc5ZqK|6zexDtHgyJy0F0hdIAuN7S=UtVhojxyK3QAZi$kYlF)? zW815{QF-6TL>)+_mDr)WF&<66j9dy(W0mQ!Q3eX^W(DQ)o1igJNq&#%}kb1e^N#dIDshFSB!bf=8`S{L~#Y>P^D2E5y!V3@!^<=g5=B=6bNFKU#NA`V%$2_9i zYqY7?G*X{_UeUj#ryhC$CVR9aOKmDO)mlBMn&74&Q`K{apB~?`7;3K)A&4yE5)nqN zHMFHb%X~4rGWg1tmC*Qanx!4YnC}zt+L;^0awY5+!3R;`Hoowy7tQ@Fr$XG-&T0ft z+zrOCobaP;ys?@I7~c0v5}G8YaeegH1E4Q$_M5hd&XU!kf+U-4Nk+X3xw}%%8XUN= zL#OnMSlj8|1vT#m;3}#-3AmOxZDVF(nwhhH{>n2H%h!?KNKSLoy6Qk9PrEgG4dh2Y zl8Tp;uJB&G-hhQ!!_r76w%$Ax5hC*B+su#HTk;7J8SB`m7qn@eWoFv)#wmZ3j-Wg& z%wCCpYLqhZFPER{>Tiwo@xK8)VXt0&`FY1j;MU zedR1|=V_aAcT+UV=DqDV?e>u1W(an`Ga9Kx3Ibf7l=s13>&EVUvCekc-^35%L_P43 zq%;g7TN`fZ{a%ck=}gyms;1eBQrAZ^%JFt<^vxK88~7kHIa^3POGq37gg^W#G|Y)| z5!4hw?WHT`5pV$d*1ZY1FWB6dh!kkc>X!M6@jtVRyMMni{(G4-GT)%@tGNIgCQxsm z^wUyXANnbYixxzw*fk>n1mUS*)8<4HUxqjUNahrmxU#WtxVlz?h)Y2*QwJY%c@<@B zwWt`HAg+09XxU^fCFS`E_6S6;>gTcP-&^T;SGQDGHw!SVs;YV88BKicm809fI(;P6 z>2mx~VqWPXgWww3eV?|U>XGE_FUBVs{M$rWd-dfhyZcPMoO?X{k$f9n>E%Dg&bHAl3H_HWx*70WR+O$6 zwXV(ivg+_>U8rEfd?uzjeM@Nz`VWNM+4B+S)NS_HE(!W~~?4oEoSf}5%VTt0v z6G6;B+M6y#Uj&<}<~1d6#Rd8~V748n7k~cTsBl`#X^|MQzU!nxv3oJRMbhg|m;3Rt znx=0{i#LfH$SS0mAO5m1L)W!T5_%K6Wd+bw>{2zbKsCP4`bqM)H;zEgP3O|x@tT|q z?$HOh`|j|krCllLY&`WOZ2MhS6g$_q>_lF;$H&{j!OUr+ZE`8dG<$0Vpt|dyE|1`G zxG~(An2NJv{LPkN^6+Xp&_+n;7cy!Mg+c*Y%;w^7b_x9?xufTkxViMiOa5TJ|HGgE zza@ok!x!{!b;x>Q`Pm>QB9YxHwVyX?x|vTfI)%*$2SCXkuk(W=lE2OpEsv(~}1sw0Y6L-}O*eg0S)} z_2z7Cf_-?&QrU5d`}b`Zxd8m~v94L}g#V<`#B(8ekc(uV5+~3ti2sm(_y17Nl0Xf*#qxfA*RG|lz@@{ z(T#V%bV%~@whAy+1iAJtSo;!f9%zX*A3!oSb#n|G(Dvtu@S=W%g^o&wid?djp=xOX1;A;6NY{Jn2UgO5nX2{D@YJX`7QI(fy>tC*Eb{@?MZw;GJXo+D}ys^`Xq|zIuY9mxizb)%TY>c?B z)aUaepq;mL?XwDz5u--&dJfW<(4r{h(O8&)47ns@Kt8;y`l7ByfLf4Rpw{)&`Qido zc*;fSff%;X+gyGltMuF>yw5`S#07IroYi%dDTJ^CZ=mB@c#6wUsR(!$pr_nTQS3c_ zsB(o1=fdC-P2woB64RCV{Pp9^v_8|Nd&GCHP&jSprhS5|Av2VZ;|iYiQJ@%1J#Gjt zF$z+Un+@_bJ>l!sY&pUete)39nyWf!C$Ul2;i(m)PsP5|o6$}&-< zc8MULU^$DbFFL~5lu|$E#krVGN(KHPb(FB@^YfS0L#>lFoxLs$V%S^{E<{&poHZ1N zmi%B#vW6n7jUCan45}6Nn(U4*$l_E?0c`vEm?WHc8WEJJypr88biB z(22@!WkMh@b?%`ef%oIg_Rcl~SeK|t`sKE&#U$kKEt*Ql-jD89P|6{<;*X5Kq=+gnN)~X z8N$E4IYKw}VCE^ZHQ`d@Saw2IJ|U7Z6kx?oMBMci3E##cX(nmESD{x6QKt!#V;(1$ zi;}HOEMXmNx=9||A@+Z{try?STk!?kXYj&7e@7oOzpe9iq853FB=i*$3}(b!!*Dbo9o;^N{?_SS3YO)V5Si9Qn@URhr1%}o}h;WyP)i4pdG^9Ig3 zWir5jaI`<5Q*#b`u-9U7-9&*$MjAB&m>9yKh*(zvTS`c<8Nmo%y(k zD3_|7rlxZL;p3;I=~9rF%!MI*VJh0+N2;?&Z??ENn4o5rjsBrS(hlcL*fcReHrXY` z=iv^5Qw@aLBn=J1e^lZ+_Naxh!|)K#SRXd@=5G^n`x;rG^(1Rx z01h0cHNjfbwo+eXavUd~tm8m9mBV9oqQ+^2ovtI`RW2tAe}kGA_cR$QUDF{p z?3~=v{LG!5{D};0t21Q)5RVKXa4h22I;PQTrxeUd`C?R{f3HZ60R%5JJS9Kv9S~w zpuNtIH?t071P||x{(_)C26+@Wy0O&F2A9OMjLooD1n#=fVPQC9h#VcTf*L)H!6f10Igtb}K9GzKe>{YmUVic@y^u8WliGJw}T%u;`*+w_xR|N8HasdQ1T zFEvRgrHH*w*Zew!sV_W7a}l@;o!=^0G*&A-4sR@g>(|0)|D#d-Ydt#C>x4;37Hrtf zdA(PmxPbS$9{kB$z3**Pmz)#>xYT@|js7}ApaHz&9%mk}_m}KM7fjSDrzw4)x^3+C zyV{+sVlP#lg=sdSJw(@%56 zw|otf!0WEMuMb|388OAoYDQL9s5j>#o1~YQ>`kwFH;tE#9bems^7}&4av(MY|FsC2 zR3Yc*BYW|FCk}6(9uyn)cmY+&NYgyIT7z@7|rhW?qz) zcSVQL<4;A_j6~Ml5-ES8@}MvPzGaKzuxUup-(BFF6O|wtfo9%yv3_yGk?#ZtZqPY#qS~W9c^P8p6tb*DZ)3r%} zvbXu-NJ&c+l>dps~;(zUo z#!vTyG+pA|;$q)e9pt_|{pQW^{_j*XTBD$1n=KK?+)%|)EKmQK!@i%$-hKz4K5HR^ zUSz$!M57_59Es$C0DU7MI8HBji^)rgW#s1XN*_YptE#-}CQa$LuB}W?FmN;xtUGNI zo!QmY4>WpAt}Pc`dywrZNRT2!#=pqa60yt7sXUinIm}XrkP?j+;LtRYZ6j_35h%vMhGZY+TR9*-rT~1iPb~b*t}tB7;9Z! zotOp3&n|T15K5s_Q{dHCPt}{8ma{-ADI*gUU`KGui9i%G%|A8H`s#5KGe>0nixTK1 zCk})fg)*M(^FVnvD%WauWk)yd5D1A<$OQj7nl z)I?SdiURy#>1|=sWyMIpxaW80?9`Slfgg#BP|aZ|ctY2Pw{x}k`1!98%1`+>V)!gX z8vneUGmbg-1WW6$}7@YHDnJQCVJICqSQUS18t7`c+2 zu%p8_n*Q?^&R-*iH%iZy(#aN53>v+W{?2pkuN0WbVwkctRzfJn{MEacgLvjxj$`6e zl`n6)znH9jcZ$SFj^8oGrgSK_6|9M1liIzX$v1{c&KTX(3x#Hht`|ye`x`|fqi9dS z!ks5z;qwi-=GXM?z+AZ%F0(M^79lY63DU5%GNowK5tmD)@KSni7Y3D`?mhB6&{hkY z?dteC{L|Cz=SoMqihj>RK%Nlx0zY?)5uL*CqA#7PWboOPNN9uClMgCf6nKfgcYUW{ z=j19QYwpV7pyv~`ijdW~F70w>&b&?mUDUsF=@8Y`FTW=ulNWxuEi=cPK&-Ij%Zm|; zZJ~WoVWa^2>LHfI{(|-WK>vd+|93y|Z+*@xE&5I}wzqCD z*_Fd|UR2l4Bp2)!6SrHRom#%@^FH;CgRYk;eEIB?wxC?6tlZY}rOOrgX&QY1*RCMY ztDE%)w;U}r{jXEJ#ZTb#lK!B=-x+(Y{tsU=^|Eh^LvY80Ec>X&H7+&$h8WUv%S&6M z&b(RG5{Yh#iLz=`LcW@34LRJsENIft-UmeTqAEw?rZYrDLqnr^jy_e<|N8D;I6iKl z55VB~xOf8i6?BF_?8Z6blT>7qr=FtTIcfTv^l*W~d>xjpoym`1Jr}r4um9J762~l7 zHE|;0rODQMekUm{hs$h#Q`K5UIFFpuzI-Q*FPvVThA(b^XL$z#JOc&E0?mz2!=4MD zE1XJw-+?bLJJdnTK0nt88T;sz36SKef`!=KvXio$A{SOdt4|r9ioE?; zaPAji7rIwnm@OCU?KJh3nwy*3^O>?6%Y~Dwc;k@fJ~Qe8HU@R$?R!tU@WQZmE z9ADH1$*`6yi)9a(xbwN-MNe#P50yUAd%DNTsZ6xNu~<=TMbnXI5OOb4Re)#HthC8) za(uM(@7Gx;4b1XjFFM@tI10}$!fK%Yb;%Q%aN~=(1DH2oaqa1Y#o^4~uXboreJ9nxj5_njlT|6`jFNC6=xW?5scCt<3IO`f$E>Y94C7A=4sOEt{-6 zKJpH12$^LFgT=(`@-n`!wRGpU+P=c}#T-n@G+>)Hv)G=bVSGxCw`KODKw53F`pqJM z-Hlu=i+FsgwQ7)sS%2-hANuY}Ni?GH*>+hlP`!+u!Ut>3o3mk7*<;TUhJ2L>YN6JmLcUJV})nf0$F+j}Mo8mu(9I03`` zEdO9=c-TRkH@jNQa}WLnUK`(-K%V-Z9cn#+rfbE=-)l4XxK=?X=oLJjMO*hGGQ2T& zulD%Z73?NLwY6}PVWidBA%>IoEL#~=6Ht^!2({ft853iq`F;PA@n%9ByC2356!U8^ z1#1T%#P~hVN0McjgiX|((q{3U2y)LYz(g28U*!D zxd^2Xr*p18Wx9y7-_2BQh=H!bAU|6(cDFm99eV5%X{y5jkfQp&?eIBD(plC1`LV0( z19CNfE(*X+3qKhMA1ne(A0F?arM%o(aIq4EcojMVehzE*blKh=H4c3WdHk5>_^RXv z{+PZMpR3f!dDga3L)Ut)8u&(lWu;=H?4l*RfGEf?vk&0wFS3 zxEPMV$;ru$IbFkYx;G{Fo!w3BKd%EBv8IGjg~D`G3d!Q%+5ch?fg)rb-wXEiz`rIA z(X4Q?=s6#Wq(a)0NmVz4CdFTJesl|c`m|Yi-;18qi_9#gkme@&dXaJSTfNt4hn7d`wkMq2C8!JF3yYuJZ!LurDsuS^38mU#PXXvqjEBNe;lLkAHr z$m2|o%~=}jg!|!i!4u!eD5#e>t=DcrK9H-?dv><*6RPg#^bfExGj>kt5875YH!^+H zfYQzsKyt47uH}1u=U{bpHZ_zTO>dF*_k#c{%W0TxEE}JZosE@}d#q-+{2KJgL>2jW z9!%f$tt4HmnPsy593^XE2a3TB;%K45{2qQnG756#{Uy78y*q>8Y_b#*Kf9bULI7Wc zGR_0{Ai6GZx4biUETK3ErYoV4s-i;;5*M!#RcWKyrpMxJ*Q5cO5SdnS*<-dpr8n08 z+AVfVTZ6gP@#4Bj)pno}Ng@?6Im!Kf?*Q~8x=;RTu<-?d&9PaRde3@ol7-2bJlb@n z@lM7ygPJROKo|oY<(bP*ahmBLA{57x@;geO0HN1@Gq6m>2Eg1v#>U2;GYMR#vkE^m z*xx`7qNQ?Ij&w%&XGU?bibCn{+Hw-j5eYB&ZjN(wo9~8vJd^9{!lFe-$n-?Spa4!`X5I z!kxTcrNdP%Kv4zd;>ap3IDhx>O1-mPTZIXmd_0Fw8pCIeHnn~~`Ne+^iGE3a;f> zw*aK6l%k4vnG`rbE3LCTdf1oMC+#ZM=rY21&a!3ka+KF4jeAUyxcR8vZVvel;SL4u z3CU4mMB;=3)c$wn|79VZH!tQXZ`tYggm`*%s=CkN>CW;7-FY43rCFDmE)KhQz3tyN z5Ax*fvvL07{xqcLlBaC7ie37Bi>NK0F>92xbq*R1zP)1#jp6g&iKHDfy0G79?fd+V z_C!w374mW?YsjxE38=80pJ6rDpN3izTdj61oG+!$Ru$r{;nyr$MeydIYrZ@{XS0oG zr!(^@qU45%va-W=K=MN8v64R=_5V_MMzPs6XN)I|kutT~!gdKpw%#Uxl+e3#Z6Kh9 zvlcPVXNgTz|GJJEq;-K+c`|c(!_^2hJyEvJbcD&{y z+D5m@M-a9_JOzuoD|m~L7jzi}J^8oWx5w`2J^INeARzEw$>z2YEW^TjDIfQc)O$6q z3t++CXsg5QR!cAiDfui`324C!PY*EIzD`hU5(Vtz5C#AC#U`&Qz<@sw^FHSOUj=Z4bIx;97VDZ=2>x zw*TZ1XCpQzBQ{LigL9o)A3^|CIiBjY!2t(*nifD)EWVfwpm6}D5q7s7ZcFZ=`w;{{ zRD|=@Rx1Q~>m9(XKs1LfleqML?}1O26-o7Im!Bd~+ig6^(d=&H#f2lQg`Puuj3-TRsKdKe_9s)k8a61)AE;*+=cD=EDe@HXfCkj0F^*SR%hw% zc$fWH-E-#4h=hlSpxLKZz<$M~<#tg(+F&@ZdyO9AKoD@$T2Z?v^7FP-DD=n=r?Ct{ z%}y*5#|4v%OLV*&a-(6YI{nxT(Go`zf?wR%-N>}HnY94)p$a1j02X{1v3HZNWC zPosD^rE4*rgcj@>FZfJ!b?WkY=TC#0vRCn!4=2Kh=T*^U0!MejlWB;wq`X9dnC`3p E0iWM;#{d8T literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f5b0f308700197761d1125b4d625644c1a25a82d GIT binary patch literal 2227 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..874b0eb4e2f5079706cbe02e0a9bb191ae90b913 GIT binary patch literal 43115 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�~xRPW2B4s^|3=yd#8$tozSC^j^7y{U+soG&qlP}Uj6y`30~YxFj5S) z0WF;#%IlQu7x!TC*(w_>$8f6Yhrn>ckTVeoE#aa zNKIaVi8v^)Prgr@{xdfTl4nJ}mVpKo)FiQYIHHi@KNQ2-I|dcHtl-I$bQ5z| z0}#cANKO&v0BVd#1+q{nTXGG01h5K?cjLkNBBd$DoIt;go(ovco<^fJSbFm&d^lYg@!_weGZl;3 zG3-TUMiclWCF#dIwAb&ziQ$<4WToq{Iqk8k%w5uAPd^;s)O?6l97<+`zjU~dcUNPc zM`K?1iW|{(oE3bLk`!mC4l8(hul;NyV@)j?Oj%r|=Twp&d{DSEw4yl~8^EO^Rzaz? z7zSy#W^&ssrwi%e5qPtGQilcbdH+1(b?EO=rA#W8qKI$6oA8M}%?jq!WW^~eARi~U z<<@6&-)35NN0UdRZcs~jzlN2N=W;^Vu(f{S9wgVGapiAm=EW-E`f!G8>_nt1KPJ)Yx}DO{Stl^cS!{j7`ZTv0m5LXA_VLM&xcug?t4H^kwZB{8!{`~2=C&b?6~K3> zz3X}9?DRy(Gf9dy-fPUBOD@@3ncW$Y=aF-6tDBW4>&HmH;(|1Vbvg&{KY7f3(_9=B z6(O{zicimcM%r`@0e0!s;VBP>FS%l4Wp;2{9wqi-tPrh|V literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..eea382138da06da319193df4f9dcda57e3b06fe8 GIT binary patch literal 3413 zcmb_fc{G%JA0LznF_9uBZuV|6k!`HW7BW|n^$vyX%#94jG9;0uDNA-EuDz7Tl4WL4 zk$r2jWk!UoBgnwKs&G>9lBl;F_$Us{e*cgS7Go?gVCpwgy>;r5u-~fZt6Dqk ztT!CqzqZw^aiYLIxVCe=A?i@^;}~vkv$K4nB8Ap6dO9W*zsE*pyH)dZYmvNVMeY<& z*y|j)*7o)v1RB5gP;{3UD71|o^!VT+Zz3QnB4u0vsSYsO{XC6pZgMNMZKtRZ$d&Wx z)rINLb1uM%b0T+gZg28r5*)Jwe-k`oRJaox-CF!{whE;@tg1Ssb&7GO!uKm2+G?8v zmR1*6r>>cq!wH)uyOt2CyWHG~4vOify`3;Hm6Oz_5+r@T8=a_^8^*&(;!2JfhZ>O7 z#v^Vu3f+t46*qiY?_+|Oz7l^hEBxaBHzcx2EnvyaqOb}#KU8F@FE4fGd0|n}{Paw$ zgsHW)EkaRsVE74}*)?_P(`N;{i4fZ`sTSt0{q&^v&ZF(XejC-rO{nFuXJILKIj1T8 ztNQrwA-0NXmree-+hdt2J%8b-^6hoYH)F?G;avaV^{?|hxWT#iBTUAl-Jcw|V=VY@ zL)S5t5_4JnUl0zS5v+b^sCn-sCl7Q0e%UY3Ax75>6CJ~*x>J}l$v$_frFRGF0cQo; zK{1A1%E{Pd_*H9~)jPf$%g&Nw3)M(^Q#R8=nII8WQoeSLk6G_aswT)V>XTSS~ozgMf+ z0*Y*mo=wl^(X~k-;O7v< zH=f&WteOUU>1Q8dfFg0PO;2PGs^F&%QQ&N4VNBNYDZ+7yJ zILdiasv`y0YvVsyOCMTF&To| zn5huPp=Y`Yc&+4cO=Q(l7G^gwK3=Y1fvfo@Td3moG{QjlNYBoj9=hTO^L;2q>|s^M z;J80m-0ALVb^Y}P!zj+f-8l{0FA7&;eKrCHHxBA*kG>ws|P9z4weq37`@dzecjC;{$1b zXuN=g$v#G@IhDbMckIc&_@QzNx)o5UxTEC9=_EgtS>f zYC+feLXS?TZcF+smu8?laxzU3U87wZwyP8N01KaGy)D>fXo^`#fryy=(&sXSIuOJ> zIq#ASCt>obn#+B#!v9h^pK#*hX!GrqzaU?by zMdel6;WAUb zT^2#j=r41hl~M1b2*D^_z2|HknI{G0N(h9V_tQ_y6AJnsU`vah!Fjn~N~!(%x2s}O z%8f2h$>m-F#0Khu(a_k`EN8ukqF<$N%y%?=c^83mS^|{9iL$+ti}sT}wMlCdF#7Ge zlq;2$@a_w$$dxBl419CCl`)o!A7QsB#TDtCHQ+jcw!z>lwmznehik(G(m~GsF=xM_ zb3pfgy!0YifFUy{;Xu#{wZ+9Sxc>rrW(HLa>fd|-i=sTVGm(F9l%Djcw`+v+f_;3s zw{eD6@=;#!Bi~b7$=EJy%kq+vt&tC|^^A@WVqv=|_c37Dct(wC%H{lbH{BCJEddst zh~Ks+!|QLsMowOqF#Y_pq9xLCBn};MS4LK#WNn^o??BanSXy$^p`qzj?Bo+r84a)1 z^3zA>;A%Ode4S}6EUy?md0VtS5CTl*#>=_aW$0~sP)&;m&s5_0RAz*8TUvdjPE>#wm@=- zrHJL0InihG;5C+r*b$_>0$pz*0tgb~MEeCjT)gt85h~exURyLrwH$$9sKK$Qy&m&6 zMjeXYHw$$Dk!Wjz;;CDZtl4e?eKIA9!TNx|aBX$sH2vcUU~UM%TS6*hg~J~0&>VMg zjXCy!1c?U-QZXqkT%XHO)uy7iooiz(gv0{y!o&NYMGI)OFME6d;j{^_>{bDxHi&-T zk{pI`9cF)UPM{i7z zBF}bD7jT@aTH;{3?LrBe?RRh9*Z>?MZqSy+?LJkX*#47>0V{p+US$7ilx$XhkvJ{ZGL5{6K`wKM)ng$HYG z0wDHZqsJw?0RDj{yB)G;Mo`r`Cyx9$v+L+aM>$e|`f#OZxRdse-_Tlp`BOd2AV%Lq z9t?VD#3Q{L*LzIxPpO!j1gfTCZqEg_Jr7!L%10I&D2S;LH$&U%PSD#d5Sy5jO#7n9 z9%JOIdv7N=5Ls4vcc!bbunrrjP9eQ*XlXdUMnObW*scwoME<`&^P=1PmOOH=eOPem#Y#qme{9y*kfci8<=70 i?Z2`!q^YBc$fSS-w=etf^Dusw00z1+ozjcf@B9n>-gfK& literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bfa2011ffc01f27b121e38c5f66ea4f063c26cd5 GIT binary patch literal 10182 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 (yXW&7Er<*X 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 KRZKf$?D=2v7Z*(c literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9ad632eb8f22791d9a378dd0f0593ff9b07b2053 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^3xL>xg9%6qy?p(Hfq{|R)5S5Qg7NLaz}y22B1{ef zn?7u3VdVa|bj!+qbNLqQd$P;K-}7DWE^mK%bob#ekM1T`eSBxIx1xMT+#YKmeRS#1 zbu;2>?(tvlE;87w!9LKG{r-BWbI$)xtP12?CjK-5Cw1N4EXb|t)8XaYfT6?S>FVdQ I&MBb@0HVf-SpWb4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..41971b7bb202dd507cef85f6a1249d0716d8e0e3 GIT binary patch literal 65876 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..608442167419ecedeb5c210e520b37bc77f6296f GIT binary patch literal 1672 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ae6f6b77c8f19e2ea6b97d73808568116a26cf80 GIT binary patch literal 1079 zcmeAS@N?(olHy`uVBq!ia0vp^3xL?1g9%8ooV(V@z`*>^)5S5Qg7NJ^$NVX-GHf57 z{})>!E^v9uqzf08iE1kuvK;dCbeUAOB1NRHc=nOi_Yc1RxZl@C;)rLal3W)Xe_Ymz zOpoBmUA?ZsW;r~%nK!1LdmKLFW#avJWp(z7ohJPM-sr4-d)BT#``>FW*M5OX9-BX; zeEpr0G$E@T3!8@~hYHJ^Gd}P^Q93$o0R_ zq#M&El0!o^b}1c;2o?Rr>6wyca(#OEthsaVPM;mEvFp*3&d1Ho?&tk|efs*9+9$a5 zxfSod7_+~mFe{~k!&N+Y%dKv2?dNLe{eaRlfzs9A<>U6&B!VQb10}ip<<9%WI~yr> zrWhXEUCf_%e^28gweqy*`L%_yE)(25l-hqiSmPKd{PkdDbBdFY}=O)Lu1jW;@xUQUp>YVj3tv$J9ejWuh}s(SjA7Ak%=h z$$%8O`hrZG#Oe7Y0H{bKYZ1`22|mNtN|kQIe-__Qubn-A;fj;|n?J{&i&?MbCBSpbzi>LqV(4lfiAsU8G9pQe!bpX zeq8O?IZ&7{Tb_M>T6kD|d0AZEKBtSK@AuUHxv?=>eviGOVHulci^?}uP|E3A*I^hI z+FAoiR2sjgPjI=ozeT0%pQ=jW7k$OfMfIGXZ@hapuG0Fl7?j{%a61XjlsfzM>D09J z^zTofiT%2GQusJKd;h%ovu4Q1yY>Sk|6;~E^I5N_>-qKa@Gq=KPHBs#1LJf@`TvJk zPm8;?wO@E|7WKB(y+3`~`h`FlU^v{HTV3$`8LtcYi*S{-PjXm1835q)Ul mDzE^hqA#!%gH>|Ve@0;s{^0jncRm0M1O`u6KbLh*2~7Z0bMrR< literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cdeb30ceed48f03d41435536a92670f39a303880 GIT binary patch literal 1755 zcmeAS@N?(olHy`uVBq!ia0y~yVB`j}T{)P5!nyaK164LU#$K0f zV^oy$yk6Rtn9wZZ$)PCcH1UXA&6fNBe*2Zbw>zSC)A|*6zqG$?rh|=;tI({wyU%ae zH{bs6D&q?dXU7~jcL}cfmVb|)^qyCm;_momiHFnX?)T>M@3xx1I(gsTaQ3+!#S0Y7 z9<8|fR>J1@jf0uHZFgE%zTGL?F;B$v#g~V1)gS*pbF;nK{&TXp+Wj9wN7Q21eK@xJ zt)a}EZMUz_yKTACy77hc#1_A!TiM^oR(|-scW!*lj5*~BX6sjcxa|G*^zO6U&&ht8 zZ^v@6U5Rt9UTogFu(wBVw|~CQ+tIk^i(0&G;d{ySqKAL@T;#h{N=}_l+nP6hYU~-s zwnzE~#aZQ9Z1Y&bIzMfSTzfk;RlK-k;ScUJb8gL@)tK)1Wub@D@;y0WugfBD9+gSb z_{U_tyli>egGhl|jY$_Y^=Dt*6&qG&*e=nv|G=4*cUMYQh>cn^!UB!|-^G2Uzdu;7 zmlk0D`EB;y)#`SCZ)qBT(CM%PrtpxM>JRs(ve)0Z{qtvQ=X-~od+~V>)AP6MzcLsWF>pj9bq*x23;6d8Phr`P^N_2@W|&0yp0_ta!JvIk@cindxWW+hs%Y;qKD!r|r$Y^K&dv z=3(6^DVwNK^X$d*EBy2AYam%QN!jjJ{`dEr@;Ej+y6ec;TUEaDWPUVJW0HWAO^Xtz z;t^*|W+(5fUFQsVdICWuhC@%cQfKduy3g09t~Q_joBv<+bG>6PI*;4$-(39S&dtl| zewG5sz&y17wRwK*{>s-k*Uz&p{3CJf_2a#N_tzGDeQB(Ieom2so8!cmy8U~>u4Z{Ay=2m7w=0t zeNH*;DrX;Qv`DbJ3jISo3W~kV#+%)PXd2yqy3tNnr5;ppQVB mkCb_UOzH>>7(vc>Sf7%qv82*r{S08G#o+1c=d#Wzp$Pz{K0ko~ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..852f3e6fd291c0e92a51629c12c560de2fad8643 GIT binary patch literal 2324 zcmb7GXH=8f7X1JbMnRr9h!R1iMTU-4LD8YNAYBYiDN>{f0qLLv0R)s1Ayfqs3{BJ| zNDVlIPDDyTgh&gL5Q>sy2#^eK-qT<2tu^!Gp1amv>)dtsxqI(((yl^G1P_TF0suhJ z%+%0!e}A&SF7tEmN8uIf9{|8VZDx4I{w^1-GeK{hDZ#fv1Yhhoi)@ic&4?xcmYELy zG~ps5_FMz~;TrT8Be*ssJJ%~GK252=;hK$aW}0M&cS#*aYGH69^uo&4PNcX?j0>C@ zr^mRv1@Bpy?O9-ZGB^LYbcq0#k__qUPUSBSQI+HdyJV!|eiHqAM+1uIc>ZUC0``f( zKfDh3)W&>*#Rfk{@EQ-6=rRw&QwA-oZXD2yW9>3ZTEcufc!IQz4S_D{SCm3ygl*Q* zV?RrduSBOGeyzeiTznCnnMFj2d`|H+JaEQRvZmh8UT*1x>I^nWNKg<-PNxDu zy|>48UXvJ%aE^k9Na8ZVeQ~jbg?jUA12LxQEuNNf3M_mvfh`GMA9Jb{iEf*HH>44C zYf(Gq9 z=RE=yRSMz0Y^W2JTxHSk);^{f;o5Zm!fvJ(Ti|lcPLNAiC#EbfD~vWYINPt|R_!2< z6YNRlzg%GG=sH?$+wb5ic1u(lczTvfkKSusJvIPNkVe~0>Qp+W~ zubj0lsjq5Mp$^;=?qf8e*{3_$tN=fghdibhW?M|?4gZzNY2q?%h5SWjC&XVi5$dY1 zhCd>GYgIQ7<3l$&61Hl~&Xy5QYY(X3CE{?qk))1D&fJ6|D86+f-Z>uDnw{-f2WXv= zk_2uDJHxCh%;lV5e#Ne>5#6R;2KRy9`5YyCqI-*NpB%sEk9GKG~0gXYx@Ef}VdH6dq^tguFejT3;3Z4OxCcweT!H2+YK1hl}Kxp{{f z;=ZUJtmLV{@e1`C3p)I5<&xW)#M*;m@{o51Z?Y+@xpZ)gXa8MDKR(AgmxG^|EM^3# z+dojqK(&(L2f2LLzl75_0$(Vvb7)#Z>*J*sqEP2Tp7%mWe7wk~&C^?EVHMTSEWc3^ zBNZk*+K-B};}xv`s}z7VoT^&aGxpf{L-iK@;xW4@uO*0pd&;L>4eL|HdFqqJ3#jUR{Imn31 zu~=E3L02ui@tjEYjF1s2+cuurZqts1Lx^^d$}UZfDXDwK z#ja`s9WLw9#Bs2q%m^ts`9-DYZOh;BH~^rDm()wNE7F%d@fo4fg!56HHCVtNu*INz zdy$oQJp7`J=t+wL2-_gNQ0_!)p6;Ri_R+u0O)gKr%^ zqs18$O@pKTlgZ?|ajv2u-)64b>u(2fxF^-mYM-f0<2=TEHW^^+GOm~C#*bJNOh}TQ z!6>$f(ib7d&;YqG#@dt7rg->p(n4cHPj1F=8OE&%*t{0xS_a znwu0kn7QJ*Oox0H`6GRviUI+6&`Ix8W?wfMK*;XE=yXJE5-INZOA7VXx9e!`Pa(BC z6M>`H=W6&3{igcnO>&-DLmLAOFi-2Lsg|llZ+%HhO2RP8z{nFtNXR>R9v+@Rn!dG~ zs^a Vdxx@(_op4e%m`vw|EtHnKLG^9kbnRH literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1a503340f8fe2802dfb32b3ad9394e7a36e98656 GIT binary patch literal 8331 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9fae963d22c11d4a651efa1c90865efa4edfecfe GIT binary patch literal 939 zcmeAS@N?(olHy`uVBq!ia0vp^3xL>~g9%6$^N9UoU|=rtba4!+V0?SfKYOaX2>XNk zl?w}(=I(sLuhFZLd)cgu zG&!uQa*<~`LSTp1(vsMAMG(mz?j+=QY;yD4xhHS_ygvD|zr>>Vda-*79?p&rpEhlM zT%)ieC;#J<2P=v;l+~uzm9;#yvikSq+ud{ir|os(_cHN23CYc~yS=NnxD+V4&>ATD z>+Js5-~TtTD|W8bUTSlz=4ZiUxmO>)PZqCVd;jGwzF>8ghl-JXQUUELmRUemoct$? zt~6MwoDO8R;qa{Rn6{Yh3P}EeqsJlVO){nn_<-^ZAbTb~UBOrilCKb$^kIUIJMRjR z{DI~PEg+*DWI^(BEh;u3qh5jJKPU_ztCp>s@~PtU)#l#aD-PTH$Nkw^xBRu0&s?D2 z&pwadel1M=nVZC}#gF;d-_Kcp|Gz9K9Dqrq@B6*`JGN~yFh5ivD_dXj``!Ne^)WF~ zdw781=~wohe|!12eRJl{pHp{Cp!WaUqcdmDyk8d?1(a8ZCZxm;P;xpr6_I#wq$W_( zLrF*(zZ6v-CfZm^`14&`xBkrez6)R6fa&>idi3`Eb>~1_PmiQmUYh-8@pgB1v@c7C t#<1^sXcW$x#|cReCbq(m_|B;MW-prYpeE0%4wM}kJYD@<);T3K0RRGSon-(3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c6bdd0ff34510ed79f64f098a898e65945516d59 GIT binary patch literal 1363 zcmeAS@N?(olHy`uVBq!ia0vp^3xL>~g9%6$^N9UoU|^NlOuS#k8RlsDM{x-=PN7Lxq2#O22O6;ypdP8BzaYxWZK5lMq5G|$HDf;tET>0l~ z*OK>szxq!3%rs|@q@`_%1v2cLp9)Nx(K~&@k(@m(Drt{ZRSc!|6+3TM08Ksd-1^z+ zyANO6_RQF>cK_$J&sQe%g}Hbf+I6>1{a26=V*Y`^m-sd9%~G{km*~ zI?#Ey|5x0pwaoe2{of|2s-TRYCAq|fH=EC2*3RPP%;o0d&*#TCmpTcR)qXp$=d=Ib ztNLXN>b_rkbo~C&j=L{DJUgDo%&u-*{O{*hpxO=I9*5Sw`u0!V{QLh;32*t+#nWqg z;;ugYe*Ns~*}q!T`HtSVXW8AN@@7|^^Zi$6tiNABeO<=q@cH|XekRAy|0JG%e$7EW zMb6!)qRiK7TCG22AXwOU<^5p?)rs67U0T_9w=8?HN9(Z55zC} z>E&6AKCj{t7JTmU*N!JdXeZbqo38n0cb!{p8NZijT|LmpegI$Ev*d^+m=1|FUQ2&xt)^=k`AScEw-j&##u%X_nNN z1c4LQyZ`6^ynJ7^I{uBr-)~2cO3EvTl~#OC-rU(NJn!dM|Lf-a-yQ&_k=N_)U)cUX zd)u$0Yu#UcRM^eVckD%n)HNBq;vWxM((69he(k=jw?=rDP(J0#e1 z$-$y2e}`Ay=TpCg*B!6|<>Z>iKwH+*! z0cUsDcX#gYt9-rg-tGTc-xbqNE2?bdDu0)Ef9LMnU+v5LWbYox$!t*xd${+t{NE>M zHXrZHOW5Y)By^4U@Q3HwPuHK@+XN|Uo@$5d$L?t$n)6qFYt*#v+)3r8z`~Nj)78&q Iol`;+0JaLI3jhEB literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1c62f19314096e043e62d86c6d46415271763daa GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^3xL>xg9%6qy?p(Hfr0UZr;B4q1>@U;d%a{5CE6Z7 z|9N2Rr~aez8w6BZCKP*2)apIDWPV;>_O49kX0cmKHt?%VP?{iI5PR*=)kE?>-i0(; zwq5_ei$}xv%i$YadlwljFuBN|eBG?;P{Sn``<~d_8eGg?!ha3Qau;imtmxz0KfkYU zKEG6?HNoNK{-Z@-A3vYJS%1DrYkpq1JA1Ke=Ej)6zy5yzyL+ zzkWXb`tL7C&1rYvu04B}SAW{-!+&=MxpY6B3svo)smJV9C>hXox*;frZOS8~1tQZa zmAZdtT_4{wFG1aD+VL^5_O|=)te2mfbo2JjS!dJOveqsYSsDQ%q4qkg-8yBFh&PaY z1a$24>DPaMZ4T1eeLH&gZ0R_i@b=%uOFP6)TN8BUYk9sx`6zP(+2g<@z~JfX=d#Wz Gp$P!?Ndc1p literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8f321d693e45d46f3228a9d8ba1f1882b29f1038 GIT binary patch literal 2377 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 KT-G@yGywqIKo=eW literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..63eb6df7ac6fdf21f566e659195cea765b4911d6 GIT binary patch literal 2385 zcmaJ@c{tST7ynW&VJwmD3fZPCgREhQrb3L6>`hriA)cK_h-*2qv=D^#5h}~_*4ky14HA0%u zBqqqlC3vn!8G_9S=FN_iNxnGt5PYr;&_g|g9TdmdD3j({NyQ1gtR+lUTO8|(Ym8cs z2@HG@R4x7+>9eLn8d>kIGutHuItjRy^ptTZ%ie;?3O<}#pL9y6)LSy}nqPf^Z^&i3 zLoCWiGA=dC&w2(GWgml@L2nq2yEd)3@l7&%9K@Z#&Bu-oeh$S^;V)g<&T{QnLo~f1 z>ocuP%Hf!hFk}i%!pKxcFGBAL9&g|m!WCCB-3W%q$f;|6b6OfK-Hv>TPfed5&&2K{ z8Y5reGKXCsHXGbX&K4Q-iorV@Ceb_NERw!dFZ=}~&>I{5y}r$?RE zsdkv`*_qPgoff_JwZ^EKJ%&%sLIDP@(MvJ+LT46Yuf}e^-RtRPPmp)Mezs7Bvbxhq zK%$QQ=Vw*3kHu7AZR%?E^p- z>B8M)8Icx;@IF0|i6#^VS5nUO8PxHOD7)&mo=jLtTAXP$FI_rXQAA>=EMOKhV~=-hcA zO302+n)1Hv(BvA6-*Fq<&7x`udk5h%XXnF`G^{fBvoXhgWO7=^vL(xig-3|XYEEO& z`&OoO)80hwTz0|KJ5b5vus?{qre13!)o*HMl??E&W#u0y1wFj z6VoZ7`flIq-6Aom8DZLIHJf$^#_aS)EHVA31IIGMUz^dkZywdMz%G)zjSQ&+ih5*Y zh__~3QD9y4iTPmZ2Z?jS;|ID+(MpQD@)Lb{kZ)_fGXj@47Y?1%x8Q zo|by6IT6ZU)kX)pr&t`*mC}?T&Bi>=Ri^t7aIb8-*Ez)M1s$#2Od-@xwsXc7J@NAm z3krRKJDMHf0g{nBC(^8G{^VkN=W>rxVffSMWD@DJ_0-4l?beldq%um2bR?Dncf-YgMBL&2q3O?r<2PUhYzA;~j zB1C8hwxj`jy$V<2XM3=w3L0{E(OP~S5vZ39UDk(vJww$sCbm4nf&apX)vLCZKE|D? zyh;oSOkCa^s|;sTLDYMa9~^09CNitP9XZ9TlT>dQwaXq?m&sT<{5~>dk;SfOo+yrkvSOsB4p{`(7v^=@}N9(?v(Rai_Dkf9rU zBXoUp$u_wz(<^n8>KEImI(QvmrEAN#xcV)K;{kK6oMMCc7>@W3*{fg4|IxRQ8xyGh zaIkvkJN||X4Rmp1M-9t04sqoqJbUSa`cL&%+8$u>?=?L!nU6UEQu+vAi5O z46z2X5Ss2&RO~!;TPzfbJW#pt567mP`{&mx!?kEMnw`om_V^>aD_;ivDLZ#WMABKR zGr0psC#}q;!8+VB5%hEc4@2*7yQOk0u%2fGpKAL!2?EZ*zK1}4W0jK81`bF;68)Nw zq$Rqc(EGpy=`!rr9%lg@GrYkkZNy86Z~ujo|Ills3P#|6H2&90PG~7^Xc#7ufIYdt zy$CInl{SIA(z~MAa?`KoLVbZOx8LPQM~if|Xu0kIen!5sn|D}a#LcrVTVH=)(-l<< zhV7}#vIm|&VQ0%AMl{98vu(!zZD8@Nf=nOg*=bASBA6)HUHr5>pSXJkwtu2H?U?fF n#+vCrZrvG&m|K68#K!EKn}rrDHT<^D8kGR^({LEh^m4*qcaEnP literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..96aab951432039b053122cfecd887848a0bd06b2 GIT binary patch literal 2391 zcmZ`*c{tQtAO9sWXcDeuxk#3>FWttH>_lZLLzXdVtYZ(2ZOo8}i%BtV*^9(5u08vb zLAVB4vgRc_Gn0LHr+Rwd`#iVzk8{rRobx^BIiK_SobTrwZE9=)X60iA003-wP4^ak z%%nGE5Cgs6_`|^*09XVKb+ya`j;%DI&AWC4nQ2>gb)Q9j4$L1-_gM5L5BqN7 zx~sNQDMBmi2i??-dj_SeP1Caax|2RU=S665f9K!`7$ZFfU7_65WfVjyh%n%4K9;LB zgtftzQ<_iF1BNC39dVX}z8?Fy@&6q(**lHj+>AH0I5Q7n7rIKJEGR(uqe5v@B*JVI z?zQpG>Dr029LGRU+l@M9^PsHjDOk-s<01Tc6DeQ|W0M<8%geDJe_<4!zO(s->k~_CYzRJJATQKP z_`d&x7v=6GRjP?@5;UgM@)s(OUyALMaxnflAY#<{B%|vu%$h!AC~y-`n?!v=Gh-`u z%+})%e$yZ<=ia;w!Dz_9hyxdzmf|=#u)@&=Wy?>kb4($ZR8^w^chLIK(uTn;Twq{m zY69O;W?o?RE5c|kCMY;?tl)6RWtN3BqcmuNHyhoW8lK=YiTCudui#kv9MipmVow*yLhq?z^Z>Kp7tDIvnHA z;-k=sKJ(magq*6d;zKyIfbCqTV; z-`_WFS{}iNkQO%0|4=R_LE#!v7L{1GDG4}-g?RaK6*!BxkfgV)9GqO`hTn<@=m6M} z>L6zbH9w}g8;(rJq}Q2c>n zvaX*xLl{bO3|x%VH;^!Mw3={GvjJRrSAVUUD&w2k$jBe(3H3ZDpyAc6adp2@RS}si z8sPC~fIkYgwX@oxBsSyRjju%cMHrIov!*B%%Gyklvrz{*RfaAZ(6bo2=)TEor7?Z} zz0$0cqiE3E8eo25L4nsT2XVdrm;PADP%>$kz7iC z5p9#~FL&0A(Qv;5{f)vU9$L+R-}oyLyOz$m<>T%Nd$pe<&_4y?sF_)|8Z$MQA!%F95ovO$pO4s+^v_BaLtp|`xi)rJv z1W8tAcEM#D`_{+0Q41pNSkFXnLSkx_chi3JR3DuLWKy%kXAl72j+TS(n0-rcgzBJ` z$*jZ*}oDUPE&$JY=~0jHY#DNE=bPP@lIBftf8%mEu0Z#KaVg;41Z9 z(|I_g=RQI!o-65nb@P>o=&KtBo=@5ZHC*#9sI1Hu`>nftcmsNW;X?wyXi1xiwWN_T zGoz7zb%j7+3|y1;=yz!FJ%=;RUlMFk!#2+$<*4PmY&D-9`75!IIvK*Y8UL)Ul#OB&w?VH2h)c3}|wbeR~vv%TR4MH5O zbU7Y3{-1+r5cZ#l8hg9A;B5l^$i%p<6#Oo+YG@m1d`e;igTZu6zB74|kxXu+l#GS| zmd3$WB-wa)+3FOJ6y}c9#Qr|%I#6-hBKSdv6Zt*}l(^{Up|YBoTSyMiu^}hJ878-8 zN@5Yic~R`rhkjxIQ&|2eD%G|&^z9u7H^e|@RYNm8#1hTkD36%V)~Qif9|N*6!S`>s z3~i4m*I%zEYY@KWEp-><2gBcooTxVQYMbx48X`;~^7xad9y}uTH(A zzh%r_;IL<40D3z(I597}YFK&w0YTppso31#-_p~QSy!jyGHv>u&m$NLg_=ftI6Kej zUeD6J8=+AfdZ0hL-`;n>*)$BOJ&NGqIJE71ykf}>*=*H)9xLD@O!>+cT{!J7pnwDH z*LC_wF??54gKo zY2VC=!+N{#(H9n088C3UbuhgmVM_E13~MOj`M%Aly0-Dt5F2{UD>6}y;kH&I8@*rx N4E2n4iQ0F={|3<4v4H>p literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..95c811966b7e02245f52d5c2634a052af011440f GIT binary patch literal 3254 zcmb_fXH*kf5(eZ+LX#SL5v56o&=CX)5D1__QHqqHAs|wM6akSEN&-fj(m^Tl(Yp{q z=>!A}y$C8DL25t&5!~?hytjLH_t)jvoP{A($LVbKurwc z)crYiT>{WiEyv2&eHt3(hfqWPYk{=utxVTO{PJ41H#hZEm}#{mKuG{bU27I-Nie&L zdY@vMuk2O$tC25++3yVmyAj1zO#0pFYLd0Tx-f_^nP*m1532=1??5>7pWWnQ4hd^A z$T}b^HXrJ_zMu83vaRLGXHX<_wV7Zb7#b#=hA<&e!al6YkuC8k4Jy{(yME8 z+dc==7IZKV-L9s+l`1El1L+0frPh1)`a5%zDW+a<^afqrua4ZeOE1j@@K9%0)r_OK zG~RyIyQq!1W%dbiy|&V=v5zq9B4ONZV-D?+-MgkyaGT_)iOyJ<3+q>QbYLV z&$H^Q?#05!00dfNvWxp_k_B8=Ni)l1o>F8XD*;wr=G*27Wg;b~8aVv60QUgnhMWuX!Hr@W9vvl zeA2)mX9Fql?h?^Afc|b;kLD-NM~O+r5^y!2yr+enJ*I6oZ8DC}HTMJ)10zj666}m_JOg6cBK&FK$$?l7NERhWl022DnGj5blBO>W-m7mqj75*%LXP?GFyCq*_ zyG=+o7xOZcaylBr;WqCf$$odTITm;opb?56+3U`RAi%SCQLBi+=UWf=C76s zQEduDFPZV^fi$d<=>@Vfm^t$)&d4()`zVf0-7Den>xwf+lXeVo`+hM@;dw2-ciA>- zG`=U?lHy`p17KMoOQzRhm*iPxCC=hT54}Th$a~6`=ExnTr8ndiSX(5}9!rWLbXuT9 zai`2rNZ7I9UH!P!t|!OzAOJQIW|_nbnMCkw@iyUguSv=)yz=nZYZ-C&C_#)#{1qRK z$~26W^=A9FbVgl|j%s>8DQ!=;n6oZ3!Ic;wo4EwjDuF3uv|BS-* z#`rYF(`AeICEtj5ZcW)qX|z2vrP4)_ea+B?Bd~^e?JMMm9w|!$?aIy(mYV_y?>4ad zQ}Xgx_{v%5;Ndbp0mGSpfPai!F?7h%za>!eJ>f(E&)jRz>@T!c82Y8DEV&b+Y!*-* z!hww1lX(D6#Hddmik9*4QR#Go_s(Y^l6!7^mS8vJVj)PZ0RUSpO)-~lzihXlFv@2t}8!TO7^biw2sa9VbAR;p7G3oa>Dt^TbI$g zdcS`R?>B8_R};xE&7m+GIXwQi>>gVTmAeLW6S;T4LoR}%x?tbOl*M_PKipwvfl$+m zj0sVAI_ZPbx=!G^VoM_X_Oj_d0@P)0S6m&%e6F2cvkk)>m$(HCXF$TRPLiSPtRB|o z!Rf^k;CV5PwAP&FD#V#ZzL6}~4l|T2W3~)X@oe?LU+q*1Dk=SJS#Li5BMKIwVmbfK zXWjNs>;k?lB$3Mi@B{7wp23Y48T{n&i~z_ zkI^7uOCsj&KcP>3EuBPRc7LxjCk_Thy?;ud#%6>1Ae6=(k&Su>O5`=)=MTMzPepn! zfYpBrHz(cq6mE;<*}gxV*7M1hurPO{G5*C1DONCDBUq-%Pu&VZ)yG1=pDM2kefD^p zbdO(VD3HCa&iAylM?4J<^jF9jlcj^vYj4}7cN9-GJg0P>^{@uTliZOTAl%!$yWDU} zhrBGKrGf*$X4lgN}zAcmo)Fo|gQ<+9%#1<^|& zbxls|v6`Q>`%)NU^q&2d2lG@NW9o8IRS96SyD<32*aE&$*0#7fksmKa?I|-C`b2St@%H|gPQtd!ExOpj#)2YB9gReh;~1v88IP#0}nZ?7xiEp5T5%o(^z+*ta)Y}A=zTsU9&4?I-jGo z5ABIYE8_-Bb6fMVQgr6NJa#fYCM{pvt0UanCy6wWt?$mqE&^tfNh(5+nHz)M&CUAt z1!qRFy>W7x!l0;UvIcb2J{>tVz*Xo&=KWc4`?4lq=YBtL5B?ylv882su+)61s7Fu( zGIv^DRUyZ`C`>Fwn`x2^h%*;!D!zm+ZJNeMMUS59O+@*7sX63b_Ov%yIL9RLopF6*a ztMxfld@U~W@N!9 zRigoG9Fd{G|Hag=wmx@kD+^NmlImR|%=|-qx|o4_G*F0z KVYz`*#NPmW@G!9e literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3828429630f5d5e4e8ea751f27e0419b95813eba GIT binary patch literal 109805 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..918bb8f54db195a6333c72eb8042dc4bb2cb27c3 GIT binary patch literal 3573 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 QjB{7?wP9NCH6BL%4Q1@Z#sB~S literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..77a6cdaf352e0eb336999879759b387ccdcbf2d2 GIT binary patch literal 113619 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

RA@>XQSfFf77%g^*7?`H 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 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 <fname>", + "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 <lname>", + "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 <DOB>", + "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 <sex>", + "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 <street>", + "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 <city>", + "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 <state_label>", + "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 <postal_code>", + "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 <phone_home>", + "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 <email>", + "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 <country_code>", + "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 <title> [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 <fname> [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 <lname> [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 <DOB> [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 <sex> [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 <street> [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 <city> [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 <state_label> [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 <postal_code> [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 <phone_home> [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 <email> [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 <country_code> [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/tests/test_openemr_quickstart_driver.py b/packages/flow/tests/test_openemr_quickstart_driver.py new file mode 100644 index 000000000..48160a5ce --- /dev/null +++ b/packages/flow/tests/test_openemr_quickstart_driver.py @@ -0,0 +1,270 @@ +"""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_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/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..1039a5a90 --- /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 +Check it: openadapt seal verify openadapt-quickstart +Published Seals: https://openadapt.ai/seals +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/test_quickstart_openemr.py b/tests/test_quickstart_openemr.py new file mode 100644 index 000000000..599c065bc --- /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"Published Seals: {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 From 286b7f2a18505b92b036e7d28d0133bb35932b77 Mon Sep 17 00:00:00 2001 From: abrichr <richard.abrich@mldsai.com> Date: Tue, 20 Oct 2026 12:31:52 -0400 Subject: [PATCH 2/5] docs: CAPABILITIES row for quickstart --app openemr Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --- CAPABILITIES.md | 1 + llms-full.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/CAPABILITIES.md b/CAPABILITIES.md index 874ac4595..f4c1ea38f 100644 --- a/CAPABILITIES.md +++ b/CAPABILITIES.md @@ -128,6 +128,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/llms-full.txt b/llms-full.txt index 0ea008a4a..88da63119 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -525,6 +525,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/` | From 8cfc157d82e72c2e941a80dcdc17260e91b0e153 Mon Sep 17 00:00:00 2001 From: abrichr <richard.abrich@mldsai.com> Date: Tue, 20 Oct 2026 12:34:27 -0400 Subject: [PATCH 3/5] quickstart --app openemr: its own Act 3 prompt; timing script and VHS tape Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --- docs/quickstart/quickstart-openemr.tape | 35 ++++ openadapt/quickstart/scene.py | 4 + openadapt/quickstart/story.py | 2 +- .../benchmark/openemr_local/quickstart.py | 5 +- scripts/quickstart_openemr_timing.py | 183 ++++++++++++++++++ 5 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 docs/quickstart/quickstart-openemr.tape create mode 100644 scripts/quickstart_openemr_timing.py 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/openadapt/quickstart/scene.py b/openadapt/quickstart/scene.py index 15ade54eb..67097ac23 100644 --- a/openadapt/quickstart/scene.py +++ b/openadapt/quickstart/scene.py @@ -36,6 +36,8 @@ class Scene: 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"). @@ -153,6 +155,7 @@ def break_detail(self, broken: "BreakFacts") -> list[str]: 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", @@ -174,6 +177,7 @@ def break_detail(self, broken: "BreakFacts") -> list[str]: "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", diff --git a/openadapt/quickstart/story.py b/openadapt/quickstart/story.py index 65c91c0a9..55de74172 100644 --- a/openadapt/quickstart/story.py +++ b/openadapt/quickstart/story.py @@ -270,7 +270,7 @@ def finished(run: RunFacts) -> None: 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() diff --git a/packages/flow/benchmark/openemr_local/quickstart.py b/packages/flow/benchmark/openemr_local/quickstart.py index 0bbdb4c24..1122825b5 100644 --- a/packages/flow/benchmark/openemr_local/quickstart.py +++ b/packages/flow/benchmark/openemr_local/quickstart.py @@ -195,8 +195,9 @@ def healthy(self) -> bool: def discard(self) -> None: """Remove this project's containers and volumes and its state folder. - Only for a setup that never finished (no baseline): nothing in it is - anyone's work. Another project or state folder is never touched. + 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(): 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()) From 8d3f13fa8065e5f4584787774644bb7861e85ccb Mon Sep 17 00:00:00 2001 From: abrichr <richard.abrich@mldsai.com> Date: Tue, 20 Oct 2026 12:38:26 -0400 Subject: [PATCH 4/5] quickstart: every finale links the published Seals; OpenEMR ports from the environment Every mode prints 'See real Seals from OpenEMR runs: https://openadapt.ai/seals' right after the receipt card, tested to be the canonical page (an opt-in test fetches it). The OpenEMR fixture's ports can be moved with OPENADAPT_QUICKSTART_OPENEMR_HTTP_PORT / _HTTPS_PORT; a copy on other ports is removed with its volumes and set up again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --- docs/quickstart/README.md | 8 +-- openadapt/quickstart/scene.py | 9 ++-- openadapt/quickstart/view.py | 11 ++-- .../benchmark/openemr_local/quickstart.py | 49 ++++++++++++++--- .../tests/test_openemr_quickstart_driver.py | 24 +++++++++ .../quickstart_openemr_plain.snapshot | 2 +- tests/snapshots/quickstart_plain.snapshot | 1 + tests/test_quickstart.py | 53 ++++++++++++++++++- tests/test_quickstart_openemr.py | 2 +- 9 files changed, 133 insertions(+), 26 deletions(-) diff --git a/docs/quickstart/README.md b/docs/quickstart/README.md index a6d0c8cba..1df581762 100644 --- a/docs/quickstart/README.md +++ b/docs/quickstart/README.md @@ -34,7 +34,8 @@ about 22 seconds. 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), and its own Compose project + 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 @@ -54,8 +55,9 @@ about 22 seconds. 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, plus a link to the published - Seals at <https://openadapt.ai/seals>. +- **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 diff --git a/openadapt/quickstart/scene.py b/openadapt/quickstart/scene.py index 67097ac23..25905a196 100644 --- a/openadapt/quickstart/scene.py +++ b/openadapt/quickstart/scene.py @@ -14,8 +14,10 @@ if TYPE_CHECKING: from openadapt.quickstart.engine import BreakFacts -#: Where the site publishes Seals. +#: 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) @@ -56,8 +58,6 @@ class Scene: #: 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 - #: A page of published Seals the finale links to, if any. - seals_url: Optional[str] = None #: 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 @@ -184,7 +184,6 @@ def break_detail(self, broken: "BreakFacts") -> list[str]: stopped="Stopped before saving: possible duplicate", receipt_where="in OpenEMR's record", screen_claims_success=False, - seals_url=SEALS_URL, act1_live=False, compiled_template=( "The program compiled from it: {steps} steps, certified under clinical-write." @@ -196,4 +195,4 @@ def break_detail(self, broken: "BreakFacts") -> list[str]: SCENES = {"mockmed": MOCKMED, "openemr": OPENEMR} -__all__ = ["MOCKMED", "OPENEMR", "SCENES", "SEALS_URL", "Scene"] +__all__ = ["MOCKMED", "OPENEMR", "SCENES", "SEALS_LINE", "SEALS_URL", "Scene"] diff --git a/openadapt/quickstart/view.py b/openadapt/quickstart/view.py index bbdfbe98e..ff569fad6 100644 --- a/openadapt/quickstart/view.py +++ b/openadapt/quickstart/view.py @@ -16,7 +16,7 @@ from typing import IO, Any, Iterator, Mapping, Optional from openadapt.quickstart.engine import BreakFacts, DemoStep, RunFacts -from openadapt.quickstart.scene import MOCKMED, Scene +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. @@ -294,10 +294,9 @@ def finale(self, outcome: Outcome, steps: NextSteps) -> None: self._say("Receipt") 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}") - if self.scene.seals_url: - self._say(f"Published Seals: {self.scene.seals_url}") self._say(details_line(outcome)) for line in next_step_lines(steps): self._say(line) @@ -528,12 +527,10 @@ def finale(self, outcome: Outcome, steps: NextSteps) -> None: 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)}[/]") - if self.scene.seals_url: - self.console.print( - f"[dim]Published Seals:[/] [bold cyan]{self.scene.seals_url}[/]" - ) self.console.print(f"[dim]{_escape(details_line(outcome))}[/]") for line in next_step_lines(steps): label, _, command = line.partition(": ") diff --git a/packages/flow/benchmark/openemr_local/quickstart.py b/packages/flow/benchmark/openemr_local/quickstart.py index 1122825b5..f78e09470 100644 --- a/packages/flow/benchmark/openemr_local/quickstart.py +++ b/packages/flow/benchmark/openemr_local/quickstart.py @@ -43,11 +43,25 @@ HERE = Path(__file__).resolve().parent FLOW = HERE.parents[1] -#: The quickstart's own Compose project and loopback ports. +#: 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 = ( @@ -95,22 +109,23 @@ class QuickstartFixture(fx.OpenEMRFixture): 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:{UI_PORT}" + return f"http://127.0.0.1:{self.http_port}" @property def api_base_url(self) -> str: - return f"https://127.0.0.1:{API_PORT}" + 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": UI_PORT, - "OPENEMR_HTTPS_PORT": API_PORT, + "OPENEMR_HTTP_PORT": self.http_port, + "OPENEMR_HTTPS_PORT": self.https_port, } def _validate_runtime_env(self) -> None: @@ -152,8 +167,12 @@ def prepare(self) -> None: # -- state ------------------------------------------------------------ def bootstrapped(self) -> bool: - """True when a previous quickstart finished setting this fixture up.""" + """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 ( @@ -201,8 +220,24 @@ def discard(self) -> None: """ 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._compose("down", "--volumes", timeout_s=180.0) + 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" ): diff --git a/packages/flow/tests/test_openemr_quickstart_driver.py b/packages/flow/tests/test_openemr_quickstart_driver.py index 48160a5ce..b9e62a72d 100644 --- a/packages/flow/tests/test_openemr_quickstart_driver.py +++ b/packages/flow/tests/test_openemr_quickstart_driver.py @@ -135,6 +135,30 @@ def _fixture(tmp_path: Path, runner: _Runner, monkeypatch) -> q.QuickstartFixtur 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 ( diff --git a/tests/snapshots/quickstart_openemr_plain.snapshot b/tests/snapshots/quickstart_openemr_plain.snapshot index 1039a5a90..12e57d473 100644 --- a/tests/snapshots/quickstart_openemr_plain.snapshot +++ b/tests/snapshots/quickstart_openemr_plain.snapshot @@ -32,8 +32,8 @@ Receipt 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 -Published Seals: https://openadapt.ai/seals 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 index 599c065bc..fa4360348 100644 --- a/tests/test_quickstart_openemr.py +++ b/tests/test_quickstart_openemr.py @@ -409,7 +409,7 @@ def test_a_new_chart_in_act_three_is_never_called_a_clean_stop(root): def test_the_finale_links_the_published_seals(root): output, _ = _plain(FakeOpenEMR(root)) - assert f"Published Seals: {SEALS_URL}" in output + assert f"See real Seals from OpenEMR runs: {SEALS_URL}" in output assert "agent serve --bundles openadapt-quickstart/bundle" in output From a4254fe44003bf7fba4a0432b345c2e75302e517 Mon Sep 17 00:00:00 2001 From: abrichr <richard.abrich@mldsai.com> Date: Tue, 20 Oct 2026 13:33:54 -0400 Subject: [PATCH 5/5] flow: register the committed OpenEMR referral program in the public artifact inventory Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --- packages/flow/public-artifacts.json | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) 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",