@skillcap/gdh 0.13.2 → 0.13.3

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.
Files changed (39) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/README.md +4 -4
  3. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +42 -0
  4. package/node_modules/@gdh/adapters/package.json +8 -8
  5. package/node_modules/@gdh/authoring/package.json +2 -2
  6. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  7. package/node_modules/@gdh/cli/dist/index.js +11 -7
  8. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  9. package/node_modules/@gdh/cli/package.json +10 -10
  10. package/node_modules/@gdh/core/dist/index.d.ts +7 -2
  11. package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
  12. package/node_modules/@gdh/core/dist/index.js.map +1 -1
  13. package/node_modules/@gdh/core/package.json +1 -1
  14. package/node_modules/@gdh/docs/dist/guidance.js +1 -1
  15. package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
  16. package/node_modules/@gdh/docs/package.json +2 -2
  17. package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
  18. package/node_modules/@gdh/mcp/dist/index.js +13 -0
  19. package/node_modules/@gdh/mcp/dist/index.js.map +1 -1
  20. package/node_modules/@gdh/mcp/package.json +8 -8
  21. package/node_modules/@gdh/observability/package.json +2 -2
  22. package/node_modules/@gdh/runtime/dist/bridge-surface.js +14 -9
  23. package/node_modules/@gdh/runtime/dist/bridge-surface.js.map +1 -1
  24. package/node_modules/@gdh/runtime/dist/docker-provider.d.ts +4 -2
  25. package/node_modules/@gdh/runtime/dist/docker-provider.d.ts.map +1 -1
  26. package/node_modules/@gdh/runtime/dist/docker-provider.js +21 -10
  27. package/node_modules/@gdh/runtime/dist/docker-provider.js.map +1 -1
  28. package/node_modules/@gdh/runtime/dist/index.d.ts +1 -1
  29. package/node_modules/@gdh/runtime/dist/index.d.ts.map +1 -1
  30. package/node_modules/@gdh/runtime/dist/index.js +174 -6
  31. package/node_modules/@gdh/runtime/dist/index.js.map +1 -1
  32. package/node_modules/@gdh/runtime/package.json +2 -2
  33. package/node_modules/@gdh/scan/package.json +3 -3
  34. package/node_modules/@gdh/verify/dist/scenarios.d.ts +1 -0
  35. package/node_modules/@gdh/verify/dist/scenarios.d.ts.map +1 -1
  36. package/node_modules/@gdh/verify/dist/scenarios.js +40 -51
  37. package/node_modules/@gdh/verify/dist/scenarios.js.map +1 -1
  38. package/node_modules/@gdh/verify/package.json +7 -7
  39. package/package.json +11 -11
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "product": "GDH",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "installMode": "packaged_install"
5
5
  }
package/README.md CHANGED
@@ -12,10 +12,10 @@ GDH detects your Godot project, configures your AI agents, and gives them the co
12
12
  ## Install
13
13
 
14
14
  ```sh
15
- npx -y @skillcap/gdh@0.13.2 setup
15
+ npx -y @skillcap/gdh@0.13.3 setup
16
16
  ```
17
17
 
18
- Replace `0.13.2` with the GDH version you want to pin this project to. `gdh setup` records the pinned version in `.gdh/project.yaml`; every managed surface generated from that config invokes GDH at that exact pinned version, so future sessions stay reproducible.
18
+ Replace `0.13.3` with the GDH version you want to pin this project to. `gdh setup` records the pinned version in `.gdh/project.yaml`; every managed surface generated from that config invokes GDH at that exact pinned version, so future sessions stay reproducible.
19
19
 
20
20
  From `0.9.0` onward, the shipped package also carries bounded release-span update metadata in `RELEASE-SPAN-UPDATE-CONTRACTS.json` so update flows can explain release-specific migration steps without reading repo-only `docs/releases/` files at target runtime.
21
21
 
@@ -36,7 +36,7 @@ The full install and update contract lives in [install-and-update.md](docs/devel
36
36
 
37
37
  ```sh
38
38
  # 1. Run setup in your Godot project
39
- npx -y @skillcap/gdh@0.13.2 setup
39
+ npx -y @skillcap/gdh@0.13.3 setup
40
40
 
41
41
  # 2. Open your AI agent (Claude, Cursor, Codex) in the repo
42
42
 
@@ -101,7 +101,7 @@ The CLI exists for advanced operators, debugging, and automation. Update preview
101
101
 
102
102
  ## Status
103
103
 
104
- GDH now ships the current `0.13.2` release line and remains ready for broader internal use within the documented support contract. The current release line is `0.13.2` at the `broader_internal_release` stage.
104
+ GDH now ships the current `0.13.3` release line and remains ready for broader internal use within the documented support contract. The current release line is `0.13.3` at the `broader_internal_release` stage.
105
105
  That line includes one first-class Docker-backed rendered runtime provider and bounded screenshot evidence on rendered-capable paths.
106
106
 
107
107
  The release-stage label applies only to the documented support window in [runtime-support-matrix.md](docs/development/runtime-support-matrix.md) and [runtime-release-readiness.md](docs/development/runtime-release-readiness.md). It is not a blanket claim that every Godot project shape is supported or that this implementation checkout should behave like a GDH-managed target repo.
@@ -891,6 +891,48 @@
891
891
  }
892
892
  ]
893
893
  }
894
+ },
895
+ {
896
+ "version": "0.13.3",
897
+ "releaseTag": "v0.13.3",
898
+ "migrationStatus": "no_op",
899
+ "summary": "v0.13.3 restores GDH-owned rendered screenshot verification after the v0.13.2 regression. Verification scenarios can again request one supporting screenshot artifact through the canonical `artifact_policy.screenshots: \"rendered\"` policy, legacy `\"fallback\"` remains a compatibility alias, the shipped Docker rendered-runtime image is rebuilt around current Node and Godot truth, and runtime-bridge screenshot capture now waits for real scene readiness before declaring success or failure. Existing targets do not require a new release-scoped managed-project migrate step for this release line.",
900
+ "releaseHighlights": {
901
+ "summary": "v0.13.3 is a patch release that restores GDH-owned rendered screenshot verification after the v0.13.2 regression. Verification scenarios can again request one supporting rendered screenshot artifact through the canonical `artifact_policy.screenshots: \"rendered\"` policy, legacy `\"fallback\"` remains accepted as a compatibility alias, and the shipped Docker plus runtime-bridge path is hardened enough to pass the real Beacon title-screen proof again.",
902
+ "operatorChanges": [
903
+ "**Rendered screenshot requests are reachable again through GDH's normal verification surfaces.** `gdh verify run` and `gdh run-config run` now share an explicit rendered-screenshot request contract, verification scenarios can declare `artifact_policy.screenshots: \"rendered\"`, and legacy `\"fallback\"` now normalizes to the same supporting-artifact behavior instead of blocking the run outright.",
904
+ "**The shipped Docker rendered-runtime image is rebuilt around the current toolchain truth.** The default image now targets `gdh-runtime-rendered:4.6-stable-r3`, uses Ubuntu 24.04 plus Node 22 and Godot 4.6, and exposes both `godot-linux` and `godot` inside the container for consistent GDH and manual debugging behavior.",
905
+ "**Rendered Docker launches are more resilient against real-target drift.** GDH now overlays sanitized `project.godot` and `.godot/extension_list.cfg` inputs for Docker Godot launches, rewrites stale UID-backed main-scene references when a resolvable `res://` path exists, forces dummy audio, and allows a longer Docker bridge handshake for slow real targets.",
906
+ "**Managed bridge screenshot capture is now honest about scene readiness.** The runtime bridge waits for a real current scene before attempting capture, keeps retrying until the viewport image is actually ready, and writes structured unavailability metadata when the session exits before capture completes."
907
+ ]
908
+ },
909
+ "updateContract": {
910
+ "summary": "No release-specific managed migration is required after self-update. v0.13.3 restores rendered screenshot verification and hardens the Docker plus bridge path; if a target still behaves like the older bridge template, use the ordinary `gdh bridge status` and `gdh bridge repair` flow before retrying rendered verification.",
911
+ "steps": [
912
+ {
913
+ "id": "repair_managed_bridge_if_rendered_verify_still_looks_stale",
914
+ "kind": "mechanical",
915
+ "summary": "If rendered verification still behaves like the older managed bridge files, run the ordinary bridge repair flow before retrying.",
916
+ "detail": "v0.13.3 does not bump a managed surface version, but it does ship a stricter runtime-bridge screenshot path. When a target still carries older managed bridge files or rendered verification exits before a scene becomes ready, use `gdh bridge status` and `gdh bridge repair` to rebake the managed bridge baseline. This is bounded ordinary repair, not a new release-scoped migrate step.",
917
+ "commands": [
918
+ "gdh bridge status",
919
+ "gdh bridge repair"
920
+ ],
921
+ "validationCommands": [
922
+ "gdh bridge status",
923
+ "gdh verify run <target> <run-config-id> --verification-scenario <scenario-id> --provider docker"
924
+ ]
925
+ },
926
+ {
927
+ "id": "prefer_canonical_rendered_policy_for_project_owned_scenarios",
928
+ "kind": "agent_reasoning",
929
+ "summary": "Project-owned screenshot scenarios should prefer `artifact_policy.screenshots: \"rendered\"` going forward.",
930
+ "detail": "Legacy `\"fallback\"` remains accepted as a compatibility alias in v0.13.3, but `\"rendered\"` is the canonical screenshot policy now and keeps docs, tests, and future migrations aligned. Scenario truth should still come from project-owned signals rather than image interpretation.",
931
+ "commands": [],
932
+ "validationCommands": []
933
+ }
934
+ ]
935
+ }
894
936
  }
895
937
  ]
896
938
  }
@@ -11,13 +11,13 @@
11
11
  }
12
12
  },
13
13
  "dependencies": {
14
- "@gdh/authoring": "0.13.2",
15
- "@gdh/core": "0.13.2",
16
- "@gdh/docs": "0.13.2",
17
- "@gdh/observability": "0.13.2",
18
- "@gdh/runtime": "0.13.2",
19
- "@gdh/scan": "0.13.2",
20
- "@gdh/verify": "0.13.2"
14
+ "@gdh/authoring": "0.13.3",
15
+ "@gdh/core": "0.13.3",
16
+ "@gdh/docs": "0.13.3",
17
+ "@gdh/observability": "0.13.3",
18
+ "@gdh/runtime": "0.13.3",
19
+ "@gdh/scan": "0.13.3",
20
+ "@gdh/verify": "0.13.3"
21
21
  },
22
- "version": "0.13.2"
22
+ "version": "0.13.3"
23
23
  }
@@ -14,7 +14,7 @@
14
14
  "test": "vitest run"
15
15
  },
16
16
  "dependencies": {
17
- "@gdh/core": "0.13.2"
17
+ "@gdh/core": "0.13.3"
18
18
  },
19
- "version": "0.13.2"
19
+ "version": "0.13.3"
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2EA,OAAO,EAIL,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AA4C5B,eAAO,MAAM,UAAU,wCAerB,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACpD;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAA0D,GAC7D,OAAO,CAAC,MAAM,CAAC,CA4HjB;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,KAAK,EACT,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,IAAI,CAGN;AAw/ID,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAyDD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAchG;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,GACA,MAAM,GAAG,IAAI,CAcf;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,GACA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CA4CA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5D,GACA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAeA;AAuBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CAef;AAiFD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,SAAS,MAAM,EAAE,CAuBnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2EA,OAAO,EAIL,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AA4C5B,eAAO,MAAM,UAAU,wCAerB,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACpD;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAA0D,GAC7D,OAAO,CAAC,MAAM,CAAC,CA4HjB;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,KAAK,EACT,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,IAAI,CAGN;AA6/ID,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAyDD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAchG;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,GACA,MAAM,GAAG,IAAI,CAcf;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,GACA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CA4CA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5D,GACA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAeA;AAuBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CAef;AAiFD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,SAAS,MAAM,EAAE,CAuBnB"}
@@ -1431,7 +1431,7 @@ async function runRecipeCommand(args, io) {
1431
1431
  "Usage: gdh run-config list [target]",
1432
1432
  "Usage: gdh run-config show [target] <run-config-id>",
1433
1433
  "Usage: gdh run-config check [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value]",
1434
- "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
1434
+ "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]",
1435
1435
  ].join("\n") + "\n");
1436
1436
  return 1;
1437
1437
  }
@@ -1849,16 +1849,16 @@ async function runRecipeCheckCommand(args, io) {
1849
1849
  async function runRecipeRunCommand(args, io) {
1850
1850
  if (args.includes("--help")) {
1851
1851
  io.stdout.write([
1852
- "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
1852
+ "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]",
1853
1853
  "",
1854
1854
  "Run one run configuration and print structured process evidence as JSON.",
1855
1855
  ].join("\n") + "\n");
1856
1856
  return 0;
1857
1857
  }
1858
1858
  const unsupportedOptionsError = findUnsupportedOptionsError(args, {
1859
- usage: "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]\n",
1859
+ usage: "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]\n",
1860
1860
  optionsWithValues: ["--provider", "--param", "--feature", "--no-feature", "--env"],
1861
- booleanOptions: ["--live-workspace"],
1861
+ booleanOptions: ["--live-workspace", "--rendered-screenshot"],
1862
1862
  });
1863
1863
  if (unsupportedOptionsError !== null) {
1864
1864
  io.stderr.write(unsupportedOptionsError);
@@ -1885,6 +1885,7 @@ async function runRecipeRunCommand(args, io) {
1885
1885
  disabledFeatures: collectOptionValues(args, "--no-feature"),
1886
1886
  environment: collectAssignmentOptionValues(args, "--env"),
1887
1887
  workspaceMode: args.includes("--live-workspace") ? "live_workspace" : "isolated_copy",
1888
+ screenshotCapture: args.includes("--rendered-screenshot") ? "rendered" : "never",
1888
1889
  });
1889
1890
  await recordSessionEvent(effectiveTargetPath, {
1890
1891
  commandStartedAtMs,
@@ -2446,14 +2447,14 @@ async function runVerifyDoneCommand(args, io) {
2446
2447
  async function runVerifyRunCommand(args, io) {
2447
2448
  if (args.includes("--help")) {
2448
2449
  io.stdout.write([
2449
- "Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
2450
+ "Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]",
2450
2451
  "",
2451
2452
  "Execute one verification scenario over a selected run configuration and print the structured run record as JSON.",
2452
2453
  ].join("\n") + "\n");
2453
2454
  return 0;
2454
2455
  }
2455
2456
  const unsupportedOptionsError = findUnsupportedOptionsError(args, {
2456
- usage: "Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]\n",
2457
+ usage: "Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]\n",
2457
2458
  optionsWithValues: [
2458
2459
  "--verification-scenario",
2459
2460
  "--scenario",
@@ -2463,7 +2464,7 @@ async function runVerifyRunCommand(args, io) {
2463
2464
  "--no-feature",
2464
2465
  "--env",
2465
2466
  ],
2466
- booleanOptions: ["--live-workspace"],
2467
+ booleanOptions: ["--live-workspace", "--rendered-screenshot"],
2467
2468
  });
2468
2469
  if (unsupportedOptionsError !== null) {
2469
2470
  io.stderr.write(unsupportedOptionsError);
@@ -2505,6 +2506,9 @@ async function runVerifyRunCommand(args, io) {
2505
2506
  disabledFeatures: collectOptionValues(args, "--no-feature"),
2506
2507
  environment: collectAssignmentOptionValues(args, "--env"),
2507
2508
  workspaceMode: args.includes("--live-workspace") ? "live_workspace" : "isolated_copy",
2509
+ screenshotCapture: args.includes("--rendered-screenshot") || readSingleOptionValue(args, "--provider") === "docker"
2510
+ ? "rendered"
2511
+ : "never",
2508
2512
  });
2509
2513
  await recordSessionEvent(effectiveTargetPath, {
2510
2514
  commandStartedAtMs,