valent-pipeline 0.19.61 → 0.19.62

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valent-pipeline",
3
- "version": "0.19.61",
3
+ "version": "0.19.62",
4
4
  "description": "v3 multi-agent AI pipeline for software development lifecycle",
5
5
  "type": "module",
6
6
  "bin": {
@@ -63,7 +63,25 @@ Follow the on-missing-MCP behavior the orchestrator passed in your trigger:
63
63
  `mcpAvailable: false`, and return — the story proceeds without visual evidence.
64
64
 
65
65
  ### Step 3: Execute checkpoints (MCP available)
66
- Start the dev server. For each checkpoint: navigate to its route, establish the required state (seed
66
+ Start the dev server.
67
+
68
+ **Pre-flight — assert an INTEGER `devicePixelRatio` before driving any interaction.** Once the server
69
+ is up and you have navigated to the app, evaluate `window.devicePixelRatio`. If it is NOT an integer
70
+ (commonly `1.5` when the host display runs Windows/macOS scaling at 150%), the browser's
71
+ coordinate-based `click()`/`fill()` land OFF-TARGET: Playwright reports the click succeeded but the
72
+ app's `onClick`/`onInput` handlers never fire, so you can screenshot STATIC renders yet can NEVER
73
+ drive an interaction or a multi-step / WS flow. **Do NOT misread this as "the browser MCP cannot drive
74
+ WS events," and do NOT FAIL or `na` the interaction checkpoints** — it is an infrastructure config
75
+ bug, not an app or reachability defect (the e2e test runner pins the scale factor, which is why an
76
+ acceptance e2e can drive the same flow the MCP cannot). STOP and record an **infrastructure blocker**
77
+ in `pmcp-evidence.md` (`verdict: fail`, `mcpAvailable: true`) naming the cause and the fix: the
78
+ browser MCP must launch with **`deviceScaleFactor: 1`** (passing a fixed `--viewport-size` defaults
79
+ the scale factor to 1), a project `.mcp.json` / browser-MCP-config change that needs an MCP/session
80
+ **RESTART** to take effect. Static render-only checkpoints may still be captured; mark every
81
+ interaction-dependent checkpoint blocked-by-DPR, not FAIL. A non-integer DPR is the single most common
82
+ cause of "PMCP can render but can't drive."
83
+
84
+ For each checkpoint: navigate to its route, establish the required state (seed
67
85
  data, auth, form values), wait for the expected state using element/network conditions — **never hard
68
86
  waits** — capture a screenshot into `{story_output_dir}` using the checklist's filename convention,
69
87
  and evaluate it against the pass criteria. Record PASS or FAIL per checkpoint. Stop the server when done.