@plainconceptsplatform/workflows 0.28.12 → 0.28.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -442,53 +442,6 @@ The version bump, the tag and the Release are deterministic on purpose. The agen
442
442
  a file on disk, so a confused model cannot publish a release.
443
443
 
444
444
 
445
- ---
446
-
447
- ## agent-visual-verify.md
448
-
449
- Runs after the merge gate decides auto-merge and before the merge itself. The agent reads the
450
- change, writes a verification plan as JSON waypoints, and a post-agent shell step drives
451
- agent-browser to capture screenshots at each waypoint. A final step attaches the screenshots
452
- to the linked issue as a comment. Failures never block the merge.
453
-
454
- ```mermaid
455
- flowchart TD
456
- vvStart("Merge Gate<br/>auto-merge verdict") --> vvSubject
457
- vvSubject{"subject (rung 4)<br/>PR open? Visual<br/>verify enabled?"}
458
- vvSubject -.->|"no"| vvIdle
459
- vvSubject -->|"yes"| vvActivation
460
- vvActivation("Activation (rung 3)<br/>Checkout, load issue context,<br/>build the prompt") --> vvAgent
461
- vvAgent("Agent (rung 5)<br/>Explore the change, write<br/>plan.json with waypoints<br/>(url + selector per step)") --> vvBuild
462
- vvBuild("Build and start app<br/>VISUAL_VERIFY_BUILD_COMMAND,<br/>then VISUAL_VERIFY_START_COMMAND<br/>on the configured port") --> vvAppUp{"App up on<br/>the port?"}
463
- vvAppUp -.->|"no"| vvWarn
464
- vvAppUp -->|"yes"| vvCapture
465
- vvCapture["Capture screenshots<br/>agent-browser opens each waypoint,<br/>waits for selectors,<br/>screenshot --full --no-sandbox"] --> vvGotShots{"Any captured?"}
466
- vvGotShots -->|"yes"| vvAttach
467
- vvGotShots -.->|"no, all failed"| vvWarn
468
- vvAttach("Attach to issue<br/>post plan + screenshots<br/>as a single comment") --> vvDone
469
- vvDone(("Screenshots posted<br/>visual evidence on the issue"))
470
- vvWarn(("Warning posted<br/>no screenshots, merge proceeds"))
471
- vvIdle(("Idle<br/>not enabled or not our PR"))
472
-
473
- classDef start fill:#ffffff,stroke:#172033,stroke-width:2px,color:#172033
474
- classDef action fill:#eef0ff,stroke:#554cff,stroke-width:2px,color:#172033
475
- classDef decision fill:#fff8e8,stroke:#c75b00,stroke-width:2px,color:#172033
476
- classDef idle fill:#202c40,stroke:#738198,stroke-width:2px,color:#ffffff
477
- classDef failure fill:#fff0f0,stroke:#ef2929,stroke-width:2px,color:#8b1a1a
478
- classDef success fill:#e8f8ec,stroke:#18883c,stroke-width:2px,color:#145a32
479
- class vvStart start
480
- class vvActivation,vvAgent,vvBuild,vvCapture,vvAttach action
481
- class vvSubject,vvAppUp,vvGotShots decision
482
- class vvIdle idle
483
- class vvWarn failure
484
- class vvDone success
485
- ```
486
-
487
- The agent does not take screenshots itself. It writes a plan; a shell step runs agent-browser
488
- against the running app. Chromium needs --no-sandbox on CI runners (set via
489
- AGENT_BROWSER_ARGS), and the explicit apt-get install covers libraries gent-browser
490
- install --with-deps misses on ubuntu-24.04.
491
-
492
445
  ---
493
446
 
494
447
  ## housekeeping
@@ -657,3 +610,52 @@ The route matrix asserts the scanner exists, that both exit paths call `setFaile
657
610
  at least as many scans as upstream writes, that each individual check is still present, and that no
658
611
  model or `OPENAI_API_KEY` has appeared in the action. Every one of those was mutation-tested; three
659
612
  earlier versions of them passed against a deliberately broken guard and were rewritten.
613
+
614
+ ---
615
+
616
+ ## agent-visual-verify.md
617
+
618
+ Runs after merge-gate decides to auto-merge, before the actual merge, and produces **evidence, not
619
+ code changes**: it writes a verification plan, drives a real browser through the app, and attaches
620
+ screenshots to the linked issue. It is called directly by merge-gate's `conclude` job, so it is not
621
+ a router route. Failures never block the merge — a browser that will not start or an app that never
622
+ comes up emits a warning comment and the merge proceeds.
623
+
624
+ ```mermaid
625
+ flowchart TD
626
+ vvStart("merge-gate conclude<br/>calls agent-visual-verify") --> vvSubject
627
+ vvSubject["subject (rung 4)<br/>PR open? linked issue found?"] --> vvConfig
628
+ vvConfig{"config (rung 4)<br/>VISUAL_VERIFY_ENABLED and<br/>START_COMMAND set?"}
629
+ vvConfig -.->|"no"| vvIdle
630
+ vvConfig -->|"yes"| vvFacts
631
+ vvFacts["Facts (rung 3)<br/>PR branch checked out,<br/>issue context loaded"] --> vvPlan
632
+ vvPlan{"/repo-verify (rung 5)<br/>reachable UI surface?"}
633
+ vvPlan -.->|"not-applicable"| vvNoUi
634
+ vvPlan -->|"yes"| vvStartCmd
635
+ vvStartCmd{"start command set?<br/>VISUAL_VERIFY_START_COMMAND"}
636
+ vvStartCmd -.->|"empty"| vvNoStart
637
+ vvStartCmd -->|"yes"| vvAgent
638
+ vvAgent["Agent (rung 5)<br/>parse waypoints into plan.json,<br/>one add_comment on the issue"] --> vvCapture
639
+ vvCapture["post-agent (rung 6)<br/>build + start the app,<br/>agent-browser captures per waypoint"] --> vvAttach
640
+ vvAttach["attach-screenshots (rung 6)<br/>always(), subject found + enabled"] --> vvShutdown
641
+ vvShutdown["shut down the app"] --> vvDone
642
+ vvCapture -.->|"app never started,<br/>no plan, or all waypoints failed"| vvPartial
643
+ vvDone(("Verified<br/>screenshots attached,<br/>merge proceeds"))
644
+ vvPartial(("Attach what exists<br/>no-capture explanation,<br/>run stays green"))
645
+ vvNoUi(("No UI surface<br/>summary comment, stop"))
646
+ vvNoStart(("Not configured<br/>warning comment, stop"))
647
+ vvIdle(("Idle<br/>unconfigured or PR not open"))
648
+
649
+ classDef start fill:#ffffff,stroke:#172033,stroke-width:2px,color:#172033
650
+ classDef action fill:#eef0ff,stroke:#554cff,stroke-width:2px,color:#172033
651
+ classDef decision fill:#fff8e8,stroke:#c75b00,stroke-width:2px,color:#172033
652
+ classDef idle fill:#202c40,stroke:#738198,stroke-width:2px,color:#ffffff
653
+ classDef failure fill:#fff0f0,stroke:#ef2929,stroke-width:2px,color:#8b1a1a
654
+ classDef success fill:#e8f8ec,stroke:#18883c,stroke-width:2px,color:#145a32
655
+ class vvStart start
656
+ class vvSubject,vvFacts,vvCapture,vvAttach,vvShutdown action
657
+ class vvConfig,vvPlan,vvStartCmd decision
658
+ class vvIdle idle
659
+ class vvNoUi,vvNoStart,vvPartial failure
660
+ class vvDone success
661
+ ```