@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.
package/loops/docs/diagrams.md
CHANGED
|
@@ -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
|
+
```
|