A browser agent that has already solved a task will happily solve it again from scratch, re-planning and re-inferring every step, every time. For a workflow that runs on a schedule, that is the same expensive reasoning repeated against a page that has not changed.
ParAgent records the successful trajectory once and compiles it into a deterministic replay script. Replay runs with no model in the loop at all.
Record → compile → replay → repair
Record. The agent solves the task the normal way, and the run is captured as a trajectory: the steps it took and the state it saw.
Compile. That trajectory becomes a replay script. Every step carries a post-condition — an assertion about what should be true once the step has succeeded.
Replay. The script executes directly. No planning, no inference, no model call.
Repair. When a UI change breaks a step, its assertion fails, and that failure triggers a model call-back scoped to that one step. The rest of the script is untouched. A button that moved costs one repair, not a full re-run.
The assertions are what make this more than a recording. Without a post-condition on every step, a replay script silently drifts the moment the page changes; with them, drift is a caught failure with a known location.
The CI is part of the design
It is a pre-seed project handling browser sessions, so the pipeline is merge-blocking rather than advisory: secret scanning, contract validation, lint, typecheck, unit and integration tests, and a privacy canary. Nothing lands without passing all of it.

