Record each surface, then compose
You record intake on the EMR. You record posting on billing. OpenAdapt copies patient_id from the first program into the second only after intake ends VERIFIED. openadapt-flow compose \ --child intake=./intake-bundle \ --child posting=./posting-bundle \ --handoff intake.patient_id=posting.patient_id \ --out composed That’s a two-app workflow with one named fact. Child B doesn’t start on a guess. If the fact is missing, the parent HALTs. Computer-use agents do something else. They treat the whole desktop as one environment, screenshot in and click out, and they stall when the work crosses a window. ...