gflow-cli 0.57.1__tar.gz → 0.58.0__tar.gz

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 (766) hide show
  1. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/CHANGELOG.md +46 -1
  3. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/KNOWN_ISSUES.md +22 -0
  4. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/PKG-INFO +1 -1
  5. {gflow_cli-0.57.1/website → gflow_cli-0.58.0}/docs/CONFIGURATION.md +8 -0
  6. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/INDEX.md +1 -1
  7. gflow_cli-0.58.0/docs/LIVE_VERIFICATION_v0.58.0.md +93 -0
  8. {gflow_cli-0.57.1/website → gflow_cli-0.58.0}/docs/MCP.md +1 -1
  9. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/PROJECT_STATUS.md +20 -1
  10. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/REFERENCE_STRATEGIES.md +20 -5
  11. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/USAGE.md +8 -4
  12. gflow_cli-0.58.0/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +103 -0
  13. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/pyproject.toml +1 -1
  14. gflow_cli-0.58.0/scripts/dev/capture_lower_priority_model_cost.py +188 -0
  15. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/__init__.py +1 -1
  16. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/image.py +6 -2
  17. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/ui_automation.py +8 -2
  18. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/ui_automation_video.py +168 -134
  19. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/video.py +39 -9
  20. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_image.py +32 -18
  21. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_video.py +59 -46
  22. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/recorder.py +4 -1
  23. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/repository.py +23 -1
  24. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/errors.py +2 -1
  25. gflow_cli-0.58.0/src/gflow_cli/file_integrity.py +19 -0
  26. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/tools.py +40 -27
  27. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/worker/codec.py +25 -0
  28. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_video.py +18 -0
  29. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation.py +27 -0
  30. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation_video.py +338 -337
  31. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +121 -40
  32. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_video.py +193 -33
  33. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_recorder.py +10 -0
  34. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_repository.py +43 -1
  35. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_image_uuid_ref_e2e.py +83 -3
  36. gflow_cli-0.58.0/tests/e2e/test_video_r2v_uuid_name_e2e.py +165 -0
  37. gflow_cli-0.58.0/tests/features/media_picker_tiers.feature +38 -0
  38. gflow_cli-0.58.0/tests/features/test_media_picker_tiers_steps.py +222 -0
  39. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_tools_helpers.py +50 -10
  40. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/worker/test_codec.py +30 -0
  41. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/uv.lock +1 -1
  42. {gflow_cli-0.57.1 → gflow_cli-0.58.0/website}/docs/CONFIGURATION.md +8 -0
  43. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/KNOWN_ISSUES.md +22 -0
  44. {gflow_cli-0.57.1 → gflow_cli-0.58.0/website}/docs/MCP.md +1 -1
  45. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/USAGE.md +8 -4
  46. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.agents/plugins/marketplace.json +0 -0
  47. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/README.md +0 -0
  48. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/active.md +0 -0
  49. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/branch-review.md +0 -0
  50. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/changelog.md +0 -0
  51. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/check.md +0 -0
  52. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/doc-review.md +0 -0
  53. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  54. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  55. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/known-issues.md +0 -0
  56. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/live-verify.md +0 -0
  57. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/llm-council.md +0 -0
  58. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/next.md +0 -0
  59. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/plan.md +0 -0
  60. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  61. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/predict.md +0 -0
  62. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/release.md +0 -0
  63. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/scenario.md +0 -0
  64. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/sonar.md +0 -0
  65. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.claude/commands/gflow/status.md +0 -0
  66. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.env.template +0 -0
  67. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.gitattributes +0 -0
  68. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/CODEOWNERS +0 -0
  69. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  70. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/copilot-instructions.md +0 -0
  71. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/dependabot.yml +0 -0
  72. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/ci.yml +0 -0
  73. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/deps-watch.yml +0 -0
  74. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/external-pr-triage.yml +0 -0
  75. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/governance-advisory.yml +0 -0
  76. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/governance-benchmark.yml +0 -0
  77. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/labels.yml +0 -0
  78. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/main-base-guard.yml +0 -0
  79. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/pages.yml +0 -0
  80. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/release.yml +0 -0
  81. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.github/workflows/scorecard.yml +0 -0
  82. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.gitignore +0 -0
  83. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.gitleaks.toml +0 -0
  84. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.pre-commit-config.yaml +0 -0
  85. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/.secrets.baseline +0 -0
  86. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/AGENTS.md +0 -0
  87. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/CLAUDE.md +0 -0
  88. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/CONFIGURATION.md +0 -0
  89. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/CONTRIBUTING.md +0 -0
  90. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/DISCLAIMER.md +0 -0
  91. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/LICENSE +0 -0
  92. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/PLAN.md +0 -0
  93. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/README.md +0 -0
  94. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/RELEASE.md +0 -0
  95. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/ROADMAP.md +0 -0
  96. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/conftest.py +0 -0
  97. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  98. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docker-compose.yml +0 -0
  99. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/AGENT_GUIDE.md +0 -0
  100. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/AGENT_UI_E2E.md +0 -0
  101. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/AGENT_UI_RECON.md +0 -0
  102. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/ARCHITECTURE.md +0 -0
  103. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  104. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/AUTHENTICATION.md +0 -0
  105. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/CHARACTER.md +0 -0
  106. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/CHARACTER_RECON.md +0 -0
  107. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/DATA_LAYER.md +0 -0
  108. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/DEBUGGING.md +0 -0
  109. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/DEMOS.md +0 -0
  110. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/DEVELOPMENT.md +0 -0
  111. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/E2E_TESTING.md +0 -0
  112. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/EXTERNAL_STORAGE.md +0 -0
  113. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/GITHUB.md +0 -0
  114. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  115. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  116. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/INSTRUCTIONS.md +0 -0
  117. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  118. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  119. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  120. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  121. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  122. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  123. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  124. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  125. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  126. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  127. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  128. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  129. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  130. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  131. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  132. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  133. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  134. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  135. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  136. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  137. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  138. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  139. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  140. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  141. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  142. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  143. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  144. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  145. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  146. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  147. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  148. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  149. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  150. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  151. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  152. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  153. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  154. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  155. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  156. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  157. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  158. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  159. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  160. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  161. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  162. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  163. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  164. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  165. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  166. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  167. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  168. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  169. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  170. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  171. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  172. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  173. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  174. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  175. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  176. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  177. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/MOVIE.md +0 -0
  178. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/PROMPT_EXPANSION.md +0 -0
  179. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/SECURITY.md +0 -0
  180. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/TOOLS.md +0 -0
  181. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/USER_GUIDE.md +0 -0
  182. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/assets/demo-split-pf.gif +0 -0
  183. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/assets/example-run.gif +0 -0
  184. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/assets/examples.webp +0 -0
  185. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/medium_tutorial.md +0 -0
  186. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/schemas/movie-handoff.schema.json +0 -0
  187. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/sonar-cleanup-tracker.md +0 -0
  188. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  189. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  190. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  191. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  192. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  193. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  194. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  195. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  196. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  197. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  198. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  199. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  200. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  201. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  202. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  203. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  204. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  205. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  206. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  207. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  208. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  209. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  210. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  211. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  212. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  213. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  214. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  215. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  216. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  217. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  218. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  219. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  220. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  221. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  222. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  223. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  224. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  225. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  226. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  227. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  228. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  229. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  230. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  231. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  232. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  233. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  234. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  235. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  236. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  237. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  238. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  239. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  240. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/eval/pr_triage_eval.py +0 -0
  241. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/eval/pr_triage_fixtures.json +0 -0
  242. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/README.md +0 -0
  243. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/batch_from_config.py +0 -0
  244. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/multi_prompt_t2i.py +0 -0
  245. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/sample_config.json +0 -0
  246. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/sample_prompts.txt +0 -0
  247. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/single_image_t2i.py +0 -0
  248. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/examples/workflow_chain.py +0 -0
  249. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/index.html +0 -0
  250. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/llms.txt +0 -0
  251. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/README.md +0 -0
  252. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/01_upload_image.json +0 -0
  253. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  254. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  255. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/04_archive_workflow.json +0 -0
  256. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/05_createProject.json +0 -0
  257. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/06_batchGenerateImages.json +0 -0
  258. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  259. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  260. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  261. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  262. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  263. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/12_create_scene.json +0 -0
  264. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  265. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/14_get_scene_workflows.json +0 -0
  266. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  267. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/Dockerfile.triage +0 -0
  268. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/entrypoint.sh +0 -0
  269. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/package-lock.json +0 -0
  270. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/package.json +0 -0
  271. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  272. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  273. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  274. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/check_doc_links.py +0 -0
  275. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/check_materiality.py +0 -0
  276. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/check_release_artifacts.py +0 -0
  277. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/check_repo_hygiene.py +0 -0
  278. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/check_test_count.py +0 -0
  279. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/check_website_docs_pii.py +0 -0
  280. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/ci/generate_website_docs.py +0 -0
  281. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/debug_editor.py +0 -0
  282. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/debug_gen_settings.py +0 -0
  283. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/debug_settings.py +0 -0
  284. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/_recording_client.py +0 -0
  285. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/_spike_common.py +0 -0
  286. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/active_plan.py +0 -0
  287. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  288. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  289. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  290. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  291. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  292. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  293. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  294. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_locale_invariants.py +0 -0
  295. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  296. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  297. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  298. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  299. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/character_create_spike.py +0 -0
  300. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/character_create_spike_v2.py +0 -0
  301. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/dump_character_selectors.js +0 -0
  302. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/incident_bundle_quality.py +0 -0
  303. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  304. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/make_project.py +0 -0
  305. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/materiality_backtest.py +0 -0
  306. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/patch_character.py +0 -0
  307. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/skillopt/README.md +0 -0
  308. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/skillopt/harness.py +0 -0
  309. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/skillopt/tasks.json +0 -0
  310. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/sonar-local-scan.sh +0 -0
  311. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  312. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  313. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  314. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  315. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  316. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  317. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  318. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  319. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_incident_live.py +0 -0
  320. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  321. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  322. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  323. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  324. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  325. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  326. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  327. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  328. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  329. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  330. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  331. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  332. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  333. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_patch_entity.py +0 -0
  334. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/dev/spike_patchright.py +0 -0
  335. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/diag/README.md +0 -0
  336. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/diag/capture_flow_traffic.py +0 -0
  337. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/diag/memory_profile.py +0 -0
  338. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/diag/recaptcha_mint.py +0 -0
  339. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  340. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  341. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  342. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/record_demo.ps1 +0 -0
  343. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/smoke_image.py +0 -0
  344. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/smoke_video_editor.py +0 -0
  345. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/smoke_worker_style.py +0 -0
  346. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/spike_waf_camoufox.py +0 -0
  347. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/scripts/verify_chrome_auth_viability.py +0 -0
  348. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/README.md +0 -0
  349. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/changelog/SKILL.md +0 -0
  350. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/check/SKILL.md +0 -0
  351. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/doc-review/SKILL.md +0 -0
  352. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/gflow-cli/SKILL.md +0 -0
  353. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/issue-assessment/SKILL.md +0 -0
  354. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/issue-resolve/SKILL.md +0 -0
  355. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/known-issues/SKILL.md +0 -0
  356. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/live-verify/SKILL.md +0 -0
  357. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/llm-council/SKILL.md +0 -0
  358. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/plan/SKILL.md +0 -0
  359. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/pr-council-review/SKILL.md +0 -0
  360. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/predict/SKILL.md +0 -0
  361. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/release/SKILL.md +0 -0
  362. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/scenario/SKILL.md +0 -0
  363. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/sonar/SKILL.md +0 -0
  364. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/skills/status/SKILL.md +0 -0
  365. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/sonar-project.properties +0 -0
  366. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/__main__.py +0 -0
  367. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/_cli_helpers.py +0 -0
  368. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/__init__.py +0 -0
  369. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/_engine.py +0 -0
  370. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/_retry.py +0 -0
  371. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  372. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/character.py +0 -0
  373. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/client.py +0 -0
  374. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/dto.py +0 -0
  375. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/image_upscale.py +0 -0
  376. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/recaptcha.py +0 -0
  377. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/routes.py +0 -0
  378. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/scene.py +0 -0
  379. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  380. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/_common.py +0 -0
  381. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  382. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/base.py +0 -0
  383. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  384. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  385. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  386. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  387. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  388. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  389. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  390. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  391. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  392. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  393. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/__init__.py +0 -0
  394. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/base.py +0 -0
  395. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/cookies.py +0 -0
  396. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/factory.py +0 -0
  397. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  398. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  399. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/strategies.py +0 -0
  400. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/auth/verification.py +0 -0
  401. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/browser_manager.py +0 -0
  402. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/chain.py +0 -0
  403. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/chain_manifest.py +0 -0
  404. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli.py +0 -0
  405. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_character.py +0 -0
  406. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_data.py +0 -0
  407. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_instructions.py +0 -0
  408. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_models.py +0 -0
  409. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_movie.py +0 -0
  410. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_project.py +0 -0
  411. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_run.py +0 -0
  412. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_scene.py +0 -0
  413. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/cli_tools.py +0 -0
  414. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/composition.py +0 -0
  415. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/config.py +0 -0
  416. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/__init__.py +0 -0
  417. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/chain_repo.py +0 -0
  418. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  419. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  420. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  421. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  422. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  423. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  424. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  425. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  426. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  427. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  428. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/models.py +0 -0
  429. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/queries.py +0 -0
  430. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/redaction.py +0 -0
  431. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/data/store.py +0 -0
  432. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/diagnostics.py +0 -0
  433. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/exceptions.py +0 -0
  434. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/image_batch.py +0 -0
  435. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/json_output.py +0 -0
  436. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/__init__.py +0 -0
  437. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/prompts.py +0 -0
  438. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/resources.py +0 -0
  439. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/server.py +0 -0
  440. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/setup.py +0 -0
  441. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  442. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/media.py +0 -0
  443. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/movie_manifest.py +0 -0
  444. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/observability.py +0 -0
  445. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/paths.py +0 -0
  446. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/profile_lease.py +0 -0
  447. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/profile_store.py +0 -0
  448. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/redaction.py +0 -0
  449. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/services/__init__.py +0 -0
  450. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/services/character_create.py +0 -0
  451. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/services/mentions.py +0 -0
  452. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/storage.py +0 -0
  453. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/__init__.py +0 -0
  454. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/banned.py +0 -0
  455. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  456. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  457. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  458. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  459. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/expander.py +0 -0
  460. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/invocation.py +0 -0
  461. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/loader.py +0 -0
  462. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/registry.py +0 -0
  463. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/runtime.py +0 -0
  464. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/tools/spec.py +0 -0
  465. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/ui/app.py +0 -0
  466. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/ui/server.py +0 -0
  467. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/update_check.py +0 -0
  468. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/winsec.py +0 -0
  469. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/worker/daemon.py +0 -0
  470. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/src/gflow_cli/worker/queue.py +0 -0
  471. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tasks/lessons.md +0 -0
  472. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/test_assets/sample_batch.json +0 -0
  473. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/test_assets/sample_batch.tsv +0 -0
  474. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/test_assets/sample_batch_invalid.tsv +0 -0
  475. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/__init__.py +0 -0
  476. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/__init__.py +0 -0
  477. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/fixtures/character_gen_response.json +0 -0
  478. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  479. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  480. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  481. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_bearer_redaction.py +0 -0
  482. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_character.py +0 -0
  483. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client.py +0 -0
  484. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_character.py +0 -0
  485. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_delete_characters.py +0 -0
  486. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_errors.py +0 -0
  487. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_generate_character.py +0 -0
  488. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_image.py +0 -0
  489. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_incidents.py +0 -0
  490. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_launch_kwargs.py +0 -0
  491. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_patch_entity.py +0 -0
  492. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_scene.py +0 -0
  493. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_client_upscale.py +0 -0
  494. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_concurrency.py +0 -0
  495. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_dto.py +0 -0
  496. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_engine.py +0 -0
  497. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_image.py +0 -0
  498. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_image_dto.py +0 -0
  499. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_image_upscale.py +0 -0
  500. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  501. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_recaptcha.py +0 -0
  502. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_retry.py +0 -0
  503. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_routes.py +0 -0
  504. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_routes_character.py +0 -0
  505. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_routes_scene.py +0 -0
  506. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_sapisidhash_helper.py +0 -0
  507. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_scene_models.py +0 -0
  508. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/test_video_request.py +0 -0
  509. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/__init__.py +0 -0
  510. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/conftest.py +0 -0
  511. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/drivers/__init__.py +0 -0
  512. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  513. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_classic.py +0 -0
  514. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_factory.py +0 -0
  515. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  516. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  517. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_base.py +0 -0
  518. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_bearer.py +0 -0
  519. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_common.py +0 -0
  520. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  521. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_factory.py +0 -0
  522. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_fingerprint.py +0 -0
  523. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_mode_control.py +0 -0
  524. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_sapisidhash.py +0 -0
  525. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  526. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_transport_timeout.py +0 -0
  527. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  528. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  529. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  530. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/auth/strategies/test_factory.py +0 -0
  531. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/auth/strategies/test_strategies.py +0 -0
  532. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/auth/test_cookies.py +0 -0
  533. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/auth/test_real_chrome.py +0 -0
  534. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/auth/test_verification.py +0 -0
  535. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/auth/test_windows_acl.py +0 -0
  536. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  537. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/__init__.py +0 -0
  538. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_auth_status.py +0 -0
  539. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_auth_list.py +0 -0
  540. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_character.py +0 -0
  541. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_character_create.py +0 -0
  542. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_data.py +0 -0
  543. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_data_errors.py +0 -0
  544. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  545. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_image.py +0 -0
  546. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  547. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  548. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_image_upscale.py +0 -0
  549. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_instructions.py +0 -0
  550. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_models.py +0 -0
  551. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_movie.py +0 -0
  552. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_run.py +0 -0
  553. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_scene.py +0 -0
  554. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_tools.py +0 -0
  555. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_cli_video_chain.py +0 -0
  556. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_error_handling.py +0 -0
  557. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_failure_funnel.py +0 -0
  558. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_helpers.py +0 -0
  559. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_incident_output.py +0 -0
  560. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_movie_manifest.py +0 -0
  561. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  562. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_predictable_output.py +0 -0
  563. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_settings_validation.py +0 -0
  564. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  565. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/composition/test_character.py +0 -0
  566. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/composition/test_compose_prompt.py +0 -0
  567. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/composition/test_handoff.py +0 -0
  568. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/composition/test_style_variants.py +0 -0
  569. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/composition/test_style_variants_e2e.py +0 -0
  570. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/conftest.py +0 -0
  571. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/__init__.py +0 -0
  572. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_chain_repo.py +0 -0
  573. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_failure_recording.py +0 -0
  574. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_find_incomplete_character.py +0 -0
  575. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_models.py +0 -0
  576. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_packaging.py +0 -0
  577. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_recorder_character.py +0 -0
  578. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_redaction.py +0 -0
  579. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_scene_persistence.py +0 -0
  580. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_settings_and_errors.py +0 -0
  581. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/data/test_store_migrations.py +0 -0
  582. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/dev/test_recording_client.py +0 -0
  583. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/__init__.py +0 -0
  584. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/conftest.py +0 -0
  585. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  586. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  587. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  588. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  589. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  590. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_chain_e2e.py +0 -0
  591. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_character_create_e2e.py +0 -0
  592. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  593. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  594. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_daemon_e2e.py +0 -0
  595. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  596. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  597. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  598. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  599. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  600. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  601. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  602. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_json_output_e2e.py +0 -0
  603. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  604. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  605. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  606. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_scene_compose_live.py +0 -0
  607. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  608. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_tools_e2e.py +0 -0
  609. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_transports_e2e.py +0 -0
  610. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  611. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  612. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/__init__.py +0 -0
  613. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/asset_tagging.feature +0 -0
  614. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/auth.feature +0 -0
  615. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/auth_login.feature +0 -0
  616. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/character_create.feature +0 -0
  617. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/character_read.feature +0 -0
  618. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/conftest.py +0 -0
  619. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/duration_tab_drift.feature +0 -0
  620. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/entity_provenance.feature +0 -0
  621. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/image.feature +0 -0
  622. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/image_batch_references.feature +0 -0
  623. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/image_upscale.feature +0 -0
  624. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/incident_diagnostics.feature +0 -0
  625. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/instructions.feature +0 -0
  626. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/locale_picker_include.feature +0 -0
  627. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/mcp_tasks.feature +0 -0
  628. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/output_hardening.feature +0 -0
  629. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_asset_tagging_steps.py +0 -0
  630. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_auth_login_steps.py +0 -0
  631. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_auth_steps.py +0 -0
  632. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_character_create_steps.py +0 -0
  633. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_character_read_steps.py +0 -0
  634. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_image_steps.py +0 -0
  635. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_image_upscale_steps.py +0 -0
  636. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  637. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_instructions_steps.py +0 -0
  638. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  639. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  640. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_output_hardening_steps.py +0 -0
  641. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_step_collision_guard.py +0 -0
  642. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  643. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/test_video_chain_steps.py +0 -0
  644. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/video_agent_ui.feature +0 -0
  645. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/features/video_chain.feature +0 -0
  646. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/fixtures/__init__.py +0 -0
  647. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/fixtures/seeded_catalog.py +0 -0
  648. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/image_batch/__init__.py +0 -0
  649. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/image_batch/test_image_manifest.py +0 -0
  650. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/image_batch/test_jitter_config.py +0 -0
  651. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/image_batch/test_observability_events.py +0 -0
  652. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/integration/__init__.py +0 -0
  653. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/integration/conftest.py +0 -0
  654. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/integration/constants.py +0 -0
  655. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/integration/test_expander_gateway.py +0 -0
  656. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/integration/test_storage_gcs.py +0 -0
  657. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/integration/test_storage_s3.py +0 -0
  658. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/__init__.py +0 -0
  659. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/conftest.py +0 -0
  660. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_auth_status_tool.py +0 -0
  661. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_cli_parity.py +0 -0
  662. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_error_funnel.py +0 -0
  663. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_http_transport.py +0 -0
  664. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_known_issues_resource.py +0 -0
  665. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_no_spend.py +0 -0
  666. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  667. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_resources.py +0 -0
  668. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_server.py +0 -0
  669. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_setup.py +0 -0
  670. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_stdio_transport.py +0 -0
  671. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_tasks_extension.py +0 -0
  672. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_tools_instructions.py +0 -0
  673. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/mcp/test_tools_wired.py +0 -0
  674. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  675. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  676. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_check_materiality.py +0 -0
  677. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  678. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  679. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_check_test_count.py +0 -0
  680. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  681. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_codex_plugin.py +0 -0
  682. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_generate_website_docs.py +0 -0
  683. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  684. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/scripts/test_materiality_backtest.py +0 -0
  685. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/__init__.py +0 -0
  686. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_character_create_redaction.py +0 -0
  687. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_character_create_saga.py +0 -0
  688. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  689. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_mentions_observability.py +0 -0
  690. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_mentions_parse.py +0 -0
  691. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_mentions_resolve.py +0 -0
  692. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/services/test_resolve_and_apply.py +0 -0
  693. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/smoke/__init__.py +0 -0
  694. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  695. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/smoke/test_real_flow.py +0 -0
  696. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_auth.py +0 -0
  697. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_browser_manager.py +0 -0
  698. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_chain.py +0 -0
  699. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_chain_manifest.py +0 -0
  700. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_cli_data.py +0 -0
  701. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_cli_project.py +0 -0
  702. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_config.py +0 -0
  703. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_conftest_isolation.py +0 -0
  704. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_data_queries.py +0 -0
  705. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_diagnostics_bundle.py +0 -0
  706. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_diagnostics_events.py +0 -0
  707. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_diagnostics_journal.py +0 -0
  708. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_diagnostics_recorder.py +0 -0
  709. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_diagnostics_retention.py +0 -0
  710. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_diagnostics_sanitize.py +0 -0
  711. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_documentation_gate.py +0 -0
  712. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_duration_tab_drift.py +0 -0
  713. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_entity_provenance.py +0 -0
  714. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_errors.py +0 -0
  715. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_errors_classification.py +0 -0
  716. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_image_batch_references.py +0 -0
  717. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_json_output.py +0 -0
  718. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_marker_registry.py +0 -0
  719. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_media.py +0 -0
  720. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_observability.py +0 -0
  721. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_overlay_banner_dismissal.py +0 -0
  722. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_paths.py +0 -0
  723. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_playwright_pin.py +0 -0
  724. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_profile_lease.py +0 -0
  725. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_profile_lease_subprocess.py +0 -0
  726. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_profile_store.py +0 -0
  727. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_self_documenting_errors.py +0 -0
  728. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_smoke.py +0 -0
  729. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/test_update_check.py +0 -0
  730. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/__init__.py +0 -0
  731. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_banned.py +0 -0
  732. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_expander.py +0 -0
  733. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_invocation.py +0 -0
  734. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_loader.py +0 -0
  735. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_registry.py +0 -0
  736. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_runtime.py +0 -0
  737. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/tools/test_spec.py +0 -0
  738. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/ui/test_app.py +0 -0
  739. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/worker/test_daemon.py +0 -0
  740. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  741. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/worker/test_queue.py +0 -0
  742. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/worker/test_queue_multiprocess.py +0 -0
  743. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/tests/worker/test_queue_reconciliation.py +0 -0
  744. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/ARCHITECTURE.md +0 -0
  745. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/AUTHENTICATION.md +0 -0
  746. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/CHARACTER.md +0 -0
  747. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/DATA_LAYER.md +0 -0
  748. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/DEBUGGING.md +0 -0
  749. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/DEVELOPMENT.md +0 -0
  750. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/E2E_TESTING.md +0 -0
  751. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  752. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/INSTRUCTIONS.md +0 -0
  753. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/MOVIE.md +0 -0
  754. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  755. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/SECURITY.md +0 -0
  756. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/TOOLS.md +0 -0
  757. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/USER_GUIDE.md +0 -0
  758. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/agents.md +0 -0
  759. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/index.md +0 -0
  760. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/installation.md +0 -0
  761. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/onboarding-mockup.html +0 -0
  762. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/onboarding.md +0 -0
  763. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/docs/stylesheets/extra.css +0 -0
  764. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/mkdocs.yml +0 -0
  765. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/requirements.in +0 -0
  766. {gflow_cli-0.57.1 → gflow_cli-0.58.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.57.1",
3
+ "version": "0.58.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -7,6 +7,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.58.0] — 2026-08-16
11
+
12
+ ### Fixed
13
+
14
+ - **R2V named remote references (`ref_names`) work again after Flow's picker
15
+ redesign — live-verified end to end (#529 follow-up).** Two UI drifts had
16
+ silently broken the name-attach path on every locale: the picker dialog no
17
+ longer exposes an accessible tree, so the old ARIA role+name tile match could
18
+ never find a result (the tile is now matched by its text, anchored so a
19
+ substring name still cannot attach the wrong asset, tolerating the localized
20
+ media-type badge the tile text appends, e.g. `…Imagem` on a pt profile); and
21
+ clicking a result tile now attaches directly and closes the picker — the
22
+ legacy include-button flow runs only if the dialog stays open. Proven by a
23
+ new live e2e that seeds a t2i image, reads its recorded `displayName` back
24
+ from the catalog by UUID, and generates a real R2V video with it
25
+ (`tests/e2e/test_video_r2v_uuid_name_e2e.py`), alongside a new same-project
26
+ image-picker e2e pinning the #529 exact-UUID-tile happy path.
27
+
28
+ ### Changed
29
+
30
+ - **Catalog image UUIDs now resolve through Flow display names instead of
31
+ scrolling or UUID/prompt searches (#529).** A headed-Chrome spike against a
32
+ populated Compiled Growth story project proved the picker contract:
33
+ catalog UUID → `workflows[].metadata.displayName` → browser name search →
34
+ exact UUID-in-thumbnail tile. A duplicate-name search surfaced two distinct
35
+ UUIDs and the exact matcher selected the requested identity, with zero scroll
36
+ calls or generation requests. The UI response collector now preserves the
37
+ sibling workflow name so new generated-image catalog rows retain the picker
38
+ search key when prompt history is stored (`history_prompts=redacted` omits the
39
+ potentially prompt-derived caption); image `--ref <uuid>` and I2V frame UUIDs
40
+ are enriched with that name before browser work. UUID, UUID-stem, prompt-hint,
41
+ and unfiltered-grid scroll fallbacks are removed from this path. Image refs
42
+ retain their recorded local-file upload fallback; CLI and MCP I2V frames keep
43
+ the UUID, name, and fallback together for both slots. Local fallbacks are used
44
+ only when their recorded byte count/SHA-256 still matches. A missing/stale
45
+ name or unavailable search input falls through to that verified upload or a
46
+ typed failure—never an unfiltered viewport click, grid scan, or implicit
47
+ Playwright scroll. UUID-backed I2V requests now also activate the post-submit
48
+ route guard that rejects a credit-spent T2V response.
49
+ This supersedes #287's prompt-hint and UUID-grid-scroll guidance; the sanitized
50
+ evidence is recorded in the [#529 picker spike](docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md),
51
+ and [#541](https://github.com/ffroliva/gflow-cli/issues/541) records the refuted
52
+ prompt-hint hypothesis.
53
+
10
54
  ## [0.57.1] — 2026-08-14
11
55
 
12
56
  ### Fixed
@@ -2977,7 +3021,8 @@ shell-script template that branches on these codes.
2977
3021
 
2978
3022
  First skeleton. Not functional end-to-end yet.
2979
3023
 
2980
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.57.1...HEAD
3024
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.58.0...HEAD
3025
+ [0.58.0]: https://github.com/ffroliva/gflow-cli/compare/v0.57.1...v0.58.0
2981
3026
  [0.57.1]: https://github.com/ffroliva/gflow-cli/compare/v0.57.0...v0.57.1
2982
3027
  [0.57.0]: https://github.com/ffroliva/gflow-cli/compare/v0.56.0...v0.57.0
2983
3028
  [0.56.0]: https://github.com/ffroliva/gflow-cli/compare/v0.55.0...v0.56.0
@@ -133,6 +133,28 @@ upload). Negative check: a foreign UUID exits 9 pre-generation with a
133
133
  project must be entered via `--project`, and projects that open in the
134
134
  full-page media-library UI (#174) can fail earlier at `mode_switch_trigger`.
135
135
 
136
+ > **Superseded (v0.58.0, [#529](https://github.com/ffroliva/gflow-cli/issues/529)):**
137
+ > the scroll-tier/UUID-search picker mechanics described above are gone. Frame
138
+ > and image UUIDs now resolve through the catalog's recorded Flow
139
+ > `display_name` (name search → exact UUID-in-thumbnail tile), with an
140
+ > integrity-verified local-file upload as the only fallback. This entry is
141
+ > retained as the historical record of the #287-era behavior.
142
+
143
+ ### Fresh generations may record without a `display_name` (async Flow caption)
144
+
145
+ - **Status:** Open — tracked in [#543](https://github.com/ffroliva/gflow-cli/issues/543) (backfill command)
146
+ - **Affected:** UUID `--ref` / frame references to *just-generated* assets (v0.58.0+)
147
+
148
+ Flow computes an asset's caption (`displayName`) asynchronously server-side, so
149
+ a generation's response occasionally lacks it and the recorder correctly
150
+ stores no name (observed live 2026-08-16 during the r2v e2e). Such rows skip
151
+ the picker-selection path and use the integrity-verified local-file upload
152
+ fallback instead — correct but a duplicate upload. Also by design, rows
153
+ recorded before v0.58.0 and all rows under
154
+ `GFLOW_CLI_HISTORY_PROMPTS=redacted` have no stored name. #543 proposes a
155
+ credit-free, privacy-gated `gflow data backfill-names` command; #542's
156
+ `gflow doctor` will surface the affected-row count.
157
+
136
158
  ### Video duration tab probe misses on the current Frames-submode DOM
137
159
 
138
160
  - **Status:** Open ([#288](https://github.com/ffroliva/gflow-cli/issues/288))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.57.1
3
+ Version: 0.58.0
4
4
  Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
@@ -312,6 +312,14 @@ mode also records the submitted `expanded_prompt` and a full `metadata_json.tool
312
312
  `redacted` withholds the expanded prompt and reduces the descriptor to
313
313
  `{name, version, params_hash, config_hash}`. See [PROMPT_EXPANSION.md](PROMPT_EXPANSION.md).
314
314
 
315
+ **Reference-resolution trade-off (v0.58.0, #529):** `redacted` also withholds the
316
+ catalog `display_name` Flow assigns to generated images (the caption can closely
317
+ paraphrase the prompt). Since UUID `--ref`/frame references resolve through that
318
+ name in the media picker, redacted-mode catalog rows skip the picker-selection
319
+ path and fall back to the integrity-verified local-file upload — or a typed
320
+ failure when no verified file exists. This is deliberate: the privacy boundary
321
+ outranks picker convenience.
322
+
315
323
  ```bash
316
324
  GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
317
325
  ```
@@ -140,7 +140,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
140
140
  **"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
141
141
  **"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
142
142
  **"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
143
- **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.57.1](LIVE_VERIFICATION_v0.57.1.md) (**#493 and #451/#288 root-caused and fixed from live evidence, verified 2026-08-14 on profile `denon82` (pt-BR — the #493 reporter's locale), ZERO credits** — #493 was NOT an unrecognized "third editor variant": "Inicial"/"Final" are the Frames sub-mode's Start/End slots and the "Agente" pill is the ordinary Agent button, both stock classic features. The real trigger is Flow's **expanded chat sidebar**, which removes the classic composer entirely [`crop_* = 0` AND `Agent pill = 0` simultaneously] — one state producing both reported symptoms, and the reason the failure was exit 23 rather than the retryable 25 [no agentic indicator on screen, so the cohort detector matched nothing]. Recovery hinged on a close button scoped to the sidebar's `edit_square` affordance, a single point of failure for any cohort lacking that ligature; an unscoped fallback now fires only from the demonstrably stuck state, **A/B-proven three ways** [scoped broken + fallback present → rescued; both broken → NOT recovered, which is what proves the fallback rescues rather than the surrounding loop]. #451/#288 were never selector drift either — Flow's settings popover is **model-conditional**, only `omni-flash` renders a duration row, so `--duration` on a Veo model hunted a control that is never drawn [verified on 2 accounts × 2 locales]; it now exits 2 before any browser work. Two #493 hypotheses were tested and **refuted** first and are committed so they are not re-derived [a `crop_free` sub-mode trigger — the trigger reflects the *aspect*, not the sub-mode; and a hydration race — a wait was written, A/B-neutered, and cold loads passed 3/3 BOTH ways, so it was reverted rather than shipped]. Recorded not-verified: the `veo_3_1_lite_lower_priority` picker miss is **inconclusive** [the capture came after the menu closed] so that selector was deliberately left untouched, and `chain.py`'s per-link duration aborts mid-run after billing — deferred with the finding recorded). Prior: [LIVE_VERIFICATION_v0.57.0](LIVE_VERIFICATION_v0.57.0.md) (**#299 video UI-mode policy + the #496/#497/#498/#501 MCP wave live-verified 2026-08-14 on profile `ffroliva`, ZERO credits** — three real video-editor loads bound the classic driver through `get_ui_driver` [`ui_driver.bound mode=classic`, 1.2–1.7 s, aborted pre-submit], `--ui-mode agentic` is refused with **exit 2 before any browser launch** [deliberately not exit 28, whose "retry may land it" hint would mislead for a driver that does not exist], and a real-editor classic→agent→classic round-trip proved `ensure_agent_mode`'s aria-verified real click [`{"agent_acted":true,"after_agent":"agent","after_media":"media"}`]; the MCP surfaces were driven over the **real stdio JSON-RPC wire** [subprocess `gflow mcp run`, so registration *and* stream routing are covered]: `--no-spend` cut `tools/list` from 11 tools to 9 with both generate tools genuinely unregistered rather than refused, zero-arg `gflow_auth_status` returned `authenticated` off a live `GET /fx/api/auth/session` **200**, `gflow_list_projects` returned **different project IDs** on offset 0 vs offset 2 [proving the offset is honored — catalogs larger than `limit` were previously unreachable] with `limit=0`→1 and `offset=-5`→0 clamps holding, and the known-issues resource served a **7,543-byte index** against a ~70 KB source file with a **111-byte** capped unknown-slug reply. The #498 rate-limited problem-details envelope is recorded **not live-verified with reason** — exhausting the token bucket needs ≥9 accepted generate calls, so the error path cannot be reached credit-free; it is unit-pinned for both tools instead). Prior: [LIVE_VERIFICATION_v0.56.0](LIVE_VERIFICATION_v0.56.0.md) (**#477 downgrade guard, #478 bounded lease wait, and the #493 mode-switch path live-verified 2026-08-13 on profile `denon82`, images only** — a fresh-project 16:9 `t2i` exercised the #493-touched mode-switch path end-to-end [valid `ff d8` JPEG 1376×768, `image_mode_entered` → `batch_response_captured`]; the #477 guard refused a scratch profile claiming Chromium 999 with **exit 11 pre-auth, pre-credits** at the generation-client call site; #478 was proven with three concurrent runs — `WAIT=0` control failed fast with `ProfileLockedError` exit 11 while the holder held, and the `WAIT=180` waiter polled ~11 s past the holder's natural release then generated successfully; the #493 drift branch itself is a named skip [only an affected account's new-editor cohort can reach it — the fix's message text is unit-pinned], and #479's update notice is deferred-with-reason to a post-release check [it needs a published newer version on PyPI and skips editable installs by design]; an expired denon82 session 401'd the first two attempts [external state, re-login fixed it, recorded not omitted]). Prior: [LIVE_VERIFICATION_v0.55.0](LIVE_VERIFICATION_v0.55.0.md) (**Tier-1 quick wins #471–#476 verified 2026-08-13 on profile `ffroliva`, ZERO credits** — `gflow auth status` probed the real Flow session endpoint live [`Flow session verified as ffroliva@gmail.com.`, exit 0, fail-closed contract pinned]; `gflow mcp setup` ran end-to-end with the real CLI against a scratch copy of the real Claude Desktop config [correct merged entry, pristine original]; the Windows profile-DACL two-step `icacls` idiom was derived empirically [the naive `/t` form broke file access] and is pinned by a real-icacls round-trip test on every Windows host; the incident bug-report template, MCP error funnel [all 11 tools guarded, raw exception text masked], and SecretStr settings are suite-verified with no live-Flow surface — reasons recorded, not omitted). Prior: [LIVE_VERIFICATION_v0.54.0](LIVE_VERIFICATION_v0.54.0.md) (**close-browser guidance #470, character-composer focus fix, overlay/jitter hardening, and SonarCloud-S2245 RNG swap live-verified 2026-08-12 on profile `ffroliva`, ZERO credits** — the new #470 login wording printed verbatim and the manual-close → `auth_flow_session_verified` round-trip worked end-to-end; a Classic-UI `t2i` produced a real 1024×1024 JPEG [`ff d8 ff e0`] exercising overlay dismissal + jitter + image-composer submit + mode controller, and a credit-free `character create` [entity `da3cd647…`, face 1376×768 JPEG] exercised the character-composer path directly [`entering_character_editor` → `prompt_submitted` → `entity_patched` → `completed`]; the first `t2i` hit the known agentic-cohort video-for-image condition [correctly refused via `WireFormatError`, tracked by #299, not a regression] and Classic UI worked around it. First mainline release after the orphaned v0.53.0/v0.53.1 tags — CHANGELOG restores honest 0.53.x sections). Prior: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
143
+ **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.58.0](LIVE_VERIFICATION_v0.58.0.md) (**#529 catalog-UUID→displayName picker contract + r2v named-reference fixes, verified 2026-08-15/16 on profile `denon82` (pt-BR) via four committed e2e tests, ~7 Imagen + 1 veo-lite generation** — same-project exact-UUID tile attach, cross-project verified upload fallback, loud abort on unresolvable UUIDs, and a real r2v video generated from a catalog name; the r2v e2e caught and fixed two live UI drifts: the picker exposes no accessible tree so tiles are now text-matched, and a tile click attaches directly with the include button demoted to legacy fallback); previously: [LIVE_VERIFICATION_v0.57.1](LIVE_VERIFICATION_v0.57.1.md) (**#493 and #451/#288 root-caused and fixed from live evidence, verified 2026-08-14 on profile `denon82` (pt-BR — the #493 reporter's locale), ZERO credits** — #493 was NOT an unrecognized "third editor variant": "Inicial"/"Final" are the Frames sub-mode's Start/End slots and the "Agente" pill is the ordinary Agent button, both stock classic features. The real trigger is Flow's **expanded chat sidebar**, which removes the classic composer entirely [`crop_* = 0` AND `Agent pill = 0` simultaneously] — one state producing both reported symptoms, and the reason the failure was exit 23 rather than the retryable 25 [no agentic indicator on screen, so the cohort detector matched nothing]. Recovery hinged on a close button scoped to the sidebar's `edit_square` affordance, a single point of failure for any cohort lacking that ligature; an unscoped fallback now fires only from the demonstrably stuck state, **A/B-proven three ways** [scoped broken + fallback present → rescued; both broken → NOT recovered, which is what proves the fallback rescues rather than the surrounding loop]. #451/#288 were never selector drift either — Flow's settings popover is **model-conditional**, only `omni-flash` renders a duration row, so `--duration` on a Veo model hunted a control that is never drawn [verified on 2 accounts × 2 locales]; it now exits 2 before any browser work. Two #493 hypotheses were tested and **refuted** first and are committed so they are not re-derived [a `crop_free` sub-mode trigger — the trigger reflects the *aspect*, not the sub-mode; and a hydration race — a wait was written, A/B-neutered, and cold loads passed 3/3 BOTH ways, so it was reverted rather than shipped]. Recorded not-verified: the `veo_3_1_lite_lower_priority` picker miss is **inconclusive** [the capture came after the menu closed] so that selector was deliberately left untouched, and `chain.py`'s per-link duration aborts mid-run after billing — deferred with the finding recorded). Prior: [LIVE_VERIFICATION_v0.57.0](LIVE_VERIFICATION_v0.57.0.md) (**#299 video UI-mode policy + the #496/#497/#498/#501 MCP wave live-verified 2026-08-14 on profile `ffroliva`, ZERO credits** — three real video-editor loads bound the classic driver through `get_ui_driver` [`ui_driver.bound mode=classic`, 1.2–1.7 s, aborted pre-submit], `--ui-mode agentic` is refused with **exit 2 before any browser launch** [deliberately not exit 28, whose "retry may land it" hint would mislead for a driver that does not exist], and a real-editor classic→agent→classic round-trip proved `ensure_agent_mode`'s aria-verified real click [`{"agent_acted":true,"after_agent":"agent","after_media":"media"}`]; the MCP surfaces were driven over the **real stdio JSON-RPC wire** [subprocess `gflow mcp run`, so registration *and* stream routing are covered]: `--no-spend` cut `tools/list` from 11 tools to 9 with both generate tools genuinely unregistered rather than refused, zero-arg `gflow_auth_status` returned `authenticated` off a live `GET /fx/api/auth/session` **200**, `gflow_list_projects` returned **different project IDs** on offset 0 vs offset 2 [proving the offset is honored — catalogs larger than `limit` were previously unreachable] with `limit=0`→1 and `offset=-5`→0 clamps holding, and the known-issues resource served a **7,543-byte index** against a ~70 KB source file with a **111-byte** capped unknown-slug reply. The #498 rate-limited problem-details envelope is recorded **not live-verified with reason** — exhausting the token bucket needs ≥9 accepted generate calls, so the error path cannot be reached credit-free; it is unit-pinned for both tools instead). Prior: [LIVE_VERIFICATION_v0.56.0](LIVE_VERIFICATION_v0.56.0.md) (**#477 downgrade guard, #478 bounded lease wait, and the #493 mode-switch path live-verified 2026-08-13 on profile `denon82`, images only** — a fresh-project 16:9 `t2i` exercised the #493-touched mode-switch path end-to-end [valid `ff d8` JPEG 1376×768, `image_mode_entered` → `batch_response_captured`]; the #477 guard refused a scratch profile claiming Chromium 999 with **exit 11 pre-auth, pre-credits** at the generation-client call site; #478 was proven with three concurrent runs — `WAIT=0` control failed fast with `ProfileLockedError` exit 11 while the holder held, and the `WAIT=180` waiter polled ~11 s past the holder's natural release then generated successfully; the #493 drift branch itself is a named skip [only an affected account's new-editor cohort can reach it — the fix's message text is unit-pinned], and #479's update notice is deferred-with-reason to a post-release check [it needs a published newer version on PyPI and skips editable installs by design]; an expired denon82 session 401'd the first two attempts [external state, re-login fixed it, recorded not omitted]). Prior: [LIVE_VERIFICATION_v0.55.0](LIVE_VERIFICATION_v0.55.0.md) (**Tier-1 quick wins #471–#476 verified 2026-08-13 on profile `ffroliva`, ZERO credits** — `gflow auth status` probed the real Flow session endpoint live [`Flow session verified as ffroliva@gmail.com.`, exit 0, fail-closed contract pinned]; `gflow mcp setup` ran end-to-end with the real CLI against a scratch copy of the real Claude Desktop config [correct merged entry, pristine original]; the Windows profile-DACL two-step `icacls` idiom was derived empirically [the naive `/t` form broke file access] and is pinned by a real-icacls round-trip test on every Windows host; the incident bug-report template, MCP error funnel [all 11 tools guarded, raw exception text masked], and SecretStr settings are suite-verified with no live-Flow surface — reasons recorded, not omitted). Prior: [LIVE_VERIFICATION_v0.54.0](LIVE_VERIFICATION_v0.54.0.md) (**close-browser guidance #470, character-composer focus fix, overlay/jitter hardening, and SonarCloud-S2245 RNG swap live-verified 2026-08-12 on profile `ffroliva`, ZERO credits** — the new #470 login wording printed verbatim and the manual-close → `auth_flow_session_verified` round-trip worked end-to-end; a Classic-UI `t2i` produced a real 1024×1024 JPEG [`ff d8 ff e0`] exercising overlay dismissal + jitter + image-composer submit + mode controller, and a credit-free `character create` [entity `da3cd647…`, face 1376×768 JPEG] exercised the character-composer path directly [`entering_character_editor` → `prompt_submitted` → `entity_patched` → `completed`]; the first `t2i` hit the known agentic-cohort video-for-image condition [correctly refused via `WireFormatError`, tracked by #299, not a regression] and Classic UI worked around it. First mainline release after the orphaned v0.53.0/v0.53.1 tags — CHANGELOG restores honest 0.53.x sections). Prior: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
144
144
  **"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
145
145
  **"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
146
146
  **"What was live-verified for the data layer (PR #58)?"** → [LIVE_VERIFICATION_data_layer](LIVE_VERIFICATION_data_layer.md) — 1 Imagen + 1 Veo credit on denon82, 6-layer ledger (file + magic + Pillow + DB rows + CLI round-trip + structlog)
@@ -0,0 +1,93 @@
1
+ # Live verification — v0.58.0
2
+
3
+ > Hand-run against real Flow on Windows 11, profile `denon82` (chrome strategy,
4
+ > **pt-BR**), 2026-08-15/16. This release's features are the #529 picker
5
+ > contract and the r2v named-reference fixes discovered while live-verifying
6
+ > it — every claim below is backed by a committed, re-runnable e2e test.
7
+ > Credits spent: ~7 Imagen (seed/i2i generations across runs) + 1 veo-lite
8
+ > video generation (standing e2e credit grant).
9
+
10
+ ## Environment
11
+
12
+ | | |
13
+ |---|---|
14
+ | Branch | `develop` @ `8411b27` (merge of PR #540) |
15
+ | Local version | `0.57.1` editable (pre-bump tree) |
16
+ | Profile | `denon82` (pt-BR, natively agentic) |
17
+ | Date | 2026-08-15 → 2026-08-16 |
18
+ | OS | Windows 11 |
19
+ | Credits spent | ~7 Imagen + 1 veo-lite generation |
20
+
21
+ ## Pre-tag gates
22
+
23
+ - Scoped offline suites on the release tree: **2058 passed / 3 skipped**
24
+ (`tests/api tests/cli tests/data tests/features tests/mcp tests/worker`);
25
+ full matrix green in CI on the same tree (PR #540, 3.11/3.12/3.13).
26
+ - `pyright src`: **0 errors**. ruff check + `ruff format --check` (368 files),
27
+ hygiene (764), doc links, website PII, mirror sync — all green.
28
+ - SonarCloud quality gate: **GREEN** (zero new issues) on both #540 pushes.
29
+ - `/gflow:pr-council-review`: consensus green (run during the #529 cycle).
30
+ - `/gflow:doc-review` council: GREEN / GREEN / YELLOW across the 3 auditors;
31
+ 0 Tier 1 findings; 7 Tier 2 findings all fixed in the release-prep commit
32
+ (USAGE/MCP superseded #287 semantics, CONFIGURATION redacted-mode
33
+ display_name trade-off, KNOWN_ISSUES superseded note + async-caption entry,
34
+ INDEX credits figure, `_remote_option_tile` docstring). Council reports at
35
+ `tmp/council/0{1,2,3}-*.md` (local-only).
36
+
37
+ ## Matrix
38
+
39
+ All four live paths are committed as opt-in e2e tests and passed against real
40
+ Flow (events asserted from structlog JSON, artifacts verified on disk):
41
+
42
+ | # | Feature | Test | Result |
43
+ |---|---|---|---|
44
+ | 1 | #529 same-project UUID ref → displayName search → exact-UUID tile attach, no duplicate upload | `tests/e2e/test_image_uuid_ref_e2e.py::test_e2e_same_project_uuid_ref_selected_in_picker` | ✅ `image_ref_selected_existing` (resolved_by=display_name); `image_ref_upload_fallback` absent; `ref_count == 1` |
45
+ | 2 | #393 cross-project UUID ref → verified local-file upload fallback | `...::test_e2e_cross_project_uuid_ref_falls_back_to_upload` | ✅ `image_ref_upload_fallback` fired; exit 0; `ref_count == 1` |
46
+ | 3 | Unresolvable UUID ref → loud typed abort, zero generation | `...::test_e2e_unresolvable_uuid_ref_fails_loud` | ✅ non-zero exit, typed no-fallback error, no generated media on disk (assertion updated to the #529 no-UUID-search contract) |
47
+ | 4 | r2v named remote reference from a catalog UUID's recorded displayName → real video | `tests/e2e/test_video_r2v_uuid_name_e2e.py` | ✅ seed t2i → catalog `display_name` read back by UUID → `remote_reference_attached` → SUCCEEDED VideoResult, mp4 on disk (`ftyp` magic bytes), 110 s |
48
+
49
+ ## 5-layer ledger (r2v path, the deepest chain)
50
+
51
+ 1. **File count** — exactly one downloaded `.mp4` in the pytest out dir.
52
+ 2. **Magic bytes** — `ftyp` present in the first 32 bytes (asserted).
53
+ 3. **Shape** — terminal `VideoStatus.succeeded` with non-empty `media_id`.
54
+ 4. **Structlog invariants** — `remote_reference_attached` fired with the exact
55
+ catalog `display_name`; the recorder had persisted that name from the seed
56
+ generation's UI response (the #529 fix under test).
57
+ 5. **User-confirmable artifact** — the generated video is in the Flow project
58
+ library of the `denon82` account (project auto-created by the seed run).
59
+
60
+ ## Live findings fixed during verification (shipped in this release)
61
+
62
+ The r2v e2e was not a rubber stamp — it caught two real UI drifts that had
63
+ silently broken `ref_names` on every locale, both root-caused with a
64
+ credit-free spike (`aria_snapshot`, DOM walks incl. shadow roots, screenshots):
65
+
66
+ 1. **Picker exposes no accessible tree** (`aria_snapshot` = bare `- dialog:`),
67
+ so the historical ARIA role+name tile match could never succeed. Fixed:
68
+ `_remote_option_tile` matches the option's text with an anchored regex that
69
+ tolerates only the localized media-type badge (`…mapImagem` on pt), keeping
70
+ the PR #245 guarantee that a substring name cannot attach the wrong asset.
71
+ 2. **Single-click attach** — clicking a result tile now attaches directly and
72
+ closes the picker; the `Incluir no comando` include button exists only in
73
+ the hover-preview pane. Fixed: `_pick_option_and_include` treats a closed
74
+ dialog as success and keeps the legacy include-button flow as fallback.
75
+
76
+ Operational facts recorded for future e2e (memory + test hardening): the
77
+ agentic account can answer a t2i with a video (`WireFormatError` — seeds now
78
+ run with `GFLOW_CLI_PREFER_CLASSIC=1` and bounded retry), and Flow computes
79
+ the caption asynchronously, so a fresh generation may record without a
80
+ `display_name` (seed retry handles it; backfill tracked in #543).
81
+
82
+ ## Not verified this cycle
83
+
84
+ - Non-pt locales for the badge-suffix regex (the regex is locale-agnostic by
85
+ construction — anchored name + single capitalized suffix word — but only
86
+ `Imagem` was observed live). Watch post-release.
87
+ - MCP-layer r2v UUID→local-upload merge (`_resolve_ref_local_path`): covered
88
+ by unit tests; the transport upload path it feeds is #393-verified (row 2).
89
+
90
+ ## Post-tag evidence
91
+
92
+ _To be filled after the v0.58.0 tag publishes: release workflow run link, PyPI
93
+ listing, and `pipx install gflow-cli==0.58.0` smoke check._
@@ -83,7 +83,7 @@ The server registers three protocol surfaces:
83
83
 
84
84
  ### Tools (Executable actions)
85
85
  * `gflow_generate_image(prompt, model, aspect, count, seed, reference_images, tools, profile, project, project_name, instructions, ui_mode, output, wait)`: Triggers text-to-image / image-to-image (Imagen / Nano Banana). `instructions` is an optional list of ephemeral agent-instruction strings (agentic cohort only). `reference_images` switches to i2i and accepts **either a local file path or a generated image's Flow media UUID**. A UUID reference is attached by **selecting the already-existing asset in Flow's reference picker — no duplicate copy is uploaded** (locating the tile by the media id in its thumbnail URL, and searching the recorded display name to surface it when needed); gflow falls back to uploading the asset's on-disk local file only when it can't be located in place (e.g. it lives in a different project's picker). `project` generates into an existing Flow project id (mirrors CLI `--project`) — pass the reference's project to keep it selectable in place. `ui_mode` selects the Flow UI arm (`auto`/`classic`/`agentic`, mirroring CLI `--ui-mode`, matched case-insensitively); passing `instructions` forces `agentic` automatically, so `ui_mode="classic"` + `instructions` is a hard conflict rather than a silent drop. An unknown value returns a 400 problem-details envelope. See [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode).
86
- * `gflow_generate_video(prompt, mode, aspect, initial_frame, end_frame, reference_images, model, duration, count, tools, profile, project, project_name, ui_mode, output, wait)`: Triggers vertical or landscape video generation (Veo). `mode` is `t2v`/`i2v`/`r2v`; `model` (`veo_lite`/`veo_fast`/`veo_quality`/`omni_flash`, aliases accepted), `duration` (seconds), and `count` mirror the CLI `gflow video` flags — an omitted `model` lets the transport apply its i2v veo-lite default (issue #125), and `omni_flash` is rejected for i2v-with-frames; `i2v` requires `initial_frame`, `r2v` requires `reference_images`; `project` generates into an existing Flow project id (mirrors CLI `--project`). `initial_frame`, `end_frame`, and `reference_images` each accept **either a local file path or the Flow image UUID of a generated asset** — pass a generated image's id straight in to chain image→video, and gflow attaches it for you (the UUID is resolved to the asset's already-on-disk local file and uploaded as the frame; no manual download/re-upload step). A UUID that isn't in your local asset catalog is rejected up front with a clear "Reference Not Found" error; a catalogued asset whose local file is no longer on disk gives a "Reference Not On Disk" error (re-generate it or pass a local path). Note the CLI's semantics diverge here (#287): `gflow video i2v --initial-frame <UUID>` selects the asset **in the project's media picker with no upload** and needs no local catalog entry — so the same UUID input can succeed on one surface and fail on the other. `ui_mode` selects the Flow UI arm (#299 PR-A, mirroring CLI `--ui-mode`) and **applies to every mode of this tool, including `r2v`** — unlike the CLI, where `video r2v`/`chain` have no flag and follow the env-only path. Video generation has **only a classic driver**, so `auto` ≡ `classic`: both verify the classic editor pre-submit and abort before spending credits if it is unreachable. `ui_mode="agentic"` is rejected with a 400 problem-details envelope, because no agentic video driver exists yet. Values are matched case-insensitively. (MCP tools return envelopes, never process exit codes — the CLI equivalents of these aborts are exit 28 and exit 2 respectively.) See [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode).
86
+ * `gflow_generate_video(prompt, mode, aspect, initial_frame, end_frame, reference_images, model, duration, count, tools, profile, project, project_name, ui_mode, output, wait)`: Triggers vertical or landscape video generation (Veo). `mode` is `t2v`/`i2v`/`r2v`; `model` (`veo_lite`/`veo_fast`/`veo_quality`/`omni_flash`, aliases accepted), `duration` (seconds), and `count` mirror the CLI `gflow video` flags — an omitted `model` lets the transport apply its i2v veo-lite default (issue #125), and `omni_flash` is rejected for i2v-with-frames; `i2v` requires `initial_frame`, `r2v` requires `reference_images`; `project` generates into an existing Flow project id (mirrors CLI `--project`). `initial_frame`, `end_frame`, and `reference_images` each accept **either a local file path or the Flow image UUID of a generated asset** — pass a generated image's id straight in to chain image→video, and gflow attaches it for you. Since v0.58.0 (#529) the CLI and MCP surfaces are unified for i2v frames: the UUID keeps its identity and is enriched with the catalog's recorded display name plus an integrity-verified local fallback, so the transport prefers **selecting the exact asset in the project's media picker** (no duplicate upload) and re-uploads the recorded local file only when the tile is unreachable — and only if its byte count/SHA-256 still match. A UUID that isn't in your local asset catalog is rejected up front with a clear "Reference Not Found" error; a catalogued asset with neither a display name nor a verified local file gives a "Reference Not Usable" error (re-generate it or pass a local path). `r2v` UUID refs are resolved to the recorded local file for upload. `ui_mode` selects the Flow UI arm (#299 PR-A, mirroring CLI `--ui-mode`) and **applies to every mode of this tool, including `r2v`** — unlike the CLI, where `video r2v`/`chain` have no flag and follow the env-only path. Video generation has **only a classic driver**, so `auto` ≡ `classic`: both verify the classic editor pre-submit and abort before spending credits if it is unreachable. `ui_mode="agentic"` is rejected with a 400 problem-details envelope, because no agentic video driver exists yet. Values are matched case-insensitively. (MCP tools return envelopes, never process exit codes — the CLI equivalents of these aborts are exit 28 and exit 2 respectively.) See [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode).
87
87
  * `gflow_auth_status(profile)`: Credit-free, non-interactive Flow session probe (#497) — wraps the same fail-closed `verify_flow_profile` check as `gflow auth status`. Returns `{"status": "authenticated", "profile", "user_email"}` or a problem-details error with a `remediation_hint`; a `verification_error` outcome means a network/endpoint problem, which re-login does not fix. Call it before a generation tool to fail fast on dead auth (the queue is async — without it, an auth failure surfaces only later from the daemon). Login/logout remain CLI-only (genuinely interactive).
88
88
  * `gflow_list_projects(profile, limit, offset)`: Queries the SQLite catalog for recent generation folders, paginated — the response carries `count` (rows in this page), `offset`, `has_more`, and `next_offset` (pass it back as `offset` for the next page; `null` on the last page).
89
89
  * `gflow_list_tools()`: Lists the prompt tools (name/title/description/category) accepted by the generate tools' `tools` param.
@@ -4,6 +4,23 @@
4
4
 
5
5
  ## Current release
6
6
 
7
+ **v0.58.0 — alpha.** **Catalog UUIDs resolve through Flow display names (#529) + r2v named references un-broken after Flow's picker redesign.** The picker
8
+ contract is now `catalog UUID → workflows[].metadata.displayName → picker name
9
+ search → exact UUID-in-thumbnail tile`: the UI response collector preserves the
10
+ sibling workflow name so generated-image catalog rows retain the search key
11
+ (store-mode history only), image `--ref <uuid>` and I2V frame UUIDs are enriched
12
+ with it, and UUID/UUID-stem/prompt-hint/grid-scroll fallbacks are gone from that
13
+ path — a missing name falls through to the SHA-verified local-file upload or a
14
+ typed error, never an unfiltered click. Live-verifying the r2v surface caught
15
+ two silent UI drifts and fixed them: the picker dialog exposes no accessible
16
+ tree (tiles are now text-matched with an anchored, locale-badge-tolerant
17
+ regex), and clicking a result now attaches directly (include button demoted to
18
+ legacy fallback). Four committed e2e tests pin all of it against real Flow,
19
+ including a real r2v video generated from a catalog name. See
20
+ [LIVE_VERIFICATION_v0.58.0.md](LIVE_VERIFICATION_v0.58.0.md).
21
+
22
+ <details><summary>v0.57.1 — two long-open UI bugs root-caused from live evidence (#493, #451/#288)</summary>
23
+
7
24
  **v0.57.1 — alpha.** **Two long-open UI bugs root-caused from live evidence (#493, #451/#288).**
8
25
  #493 was reported as an unrecognized "third editor variant"; it is not. Flow's
9
26
  **expanded chat sidebar** removes the classic composer entirely — no `crop_*`
@@ -23,13 +40,15 @@ Playwright timeout, and `gflow models` stops advertising a duration users cannot
23
40
  set. Everything verified at **zero credits**. See
24
41
  [LIVE_VERIFICATION_v0.57.1.md](LIVE_VERIFICATION_v0.57.1.md).
25
42
 
43
+ </details>
44
+
26
45
  <details><summary>v0.57.0 — video joins the UI-mode policy + MCP truthfulness wave</summary>
27
46
 
28
47
  **v0.57.0 — alpha.** **Video joins the UI-mode policy (#299) + an MCP truthfulness wave (#496–#501).** `gflow video t2v`/`i2v` and MCP `gflow_generate_video` now take `--ui-mode`/`ui_mode` and bind their driver through `get_ui_driver` after editor mount instead of a hardcoded classic bind; video has only a classic driver, so `auto` ≡ `classic`, an env-sourced `agentic` degrades with a warning, and an explicit `--ui-mode agentic` is refused with exit 2 before any browser work. When Flow serves the agentic editor and classic cannot be recovered, video now fails fast pre-submit (`UiModeUnavailableError`, exit 28, zero credits) instead of burning 30–40 s of doomed selector timeouts. The agentic direction was hardened to match the classic one: `mode_control.ensure_agent_mode` replaces `_force_agent_mode` (deleted) with real-click-first + `aria-pressed` verification, no `tune`-ligature check, unknown editor variants no-op with a warning, and the sanctioned reload carries an explicit 15 s timeout. On the MCP side: `gflow mcp run --no-spend` (#496) unregisters both generate tools so an agent cannot even see them; `gflow_auth_status` (#497) gives agents a credit-free pre-flight session probe; `gflow_list_projects` paginates honestly with `offset`/`has_more`/`next_offset` (#498); the stub `gflow_list_characters` — which always answered "no characters", an active lie — is gone (#499); and `gflow://docs/known-issues` is bounded to a small index plus a per-issue templated read (#501) instead of injecting ~70 KB on every read. On the supply-chain side the release finishes the Scorecard hardening tail: every workflow now runs with a least-privilege token and every `uses:` action is pinned to a full commit SHA, the remaining in-workflow package installs are hash- or digest-pinned (`website/requirements.txt`, `Dockerfile.triage`, `pip-audit`), CI enforces a test-count floor so "a green build that ran nothing" cannot pass, `check_repo_hygiene.py` fails on version disagreement between `pyproject.toml`/`__init__.py`/`plugin.json`, and a self-run OpenSSF Scorecard workflow publishes the score as a README/website badge with a [SECURITY.md](SECURITY.md) section explaining it. Everything in this release was verified at **zero credits**. See [LIVE_VERIFICATION_v0.57.0.md](LIVE_VERIFICATION_v0.57.0.md).
29
48
 
30
49
  </details>
31
50
 
32
- **Develop (unreleased, post-v0.57.1):** post-release doc-review fixes only — see `CHANGELOG.md` `[Unreleased]` for the authoritative list. `develop` is the staging branch for the next release; this line is not a substitute for the changelog.
51
+ **Develop (unreleased, post-v0.58.0):** nothing queued yet — see `CHANGELOG.md` `[Unreleased]` for the authoritative list. `develop` is the staging branch for the next release; this line is not a substitute for the changelog.
33
52
 
34
53
  <details><summary>v0.56.0 — ops-hardening batch + honest mode-switch evidence (#477/#478/#479, #493)</summary>
35
54
 
@@ -14,7 +14,7 @@ transports.
14
14
  - A **saved, named asset** in the project — a `gflow character` entity, or a generated/uploaded
15
15
  media asset with a `display_name` → reference it *by identity*: `@Name` or `--reference-entity`.
16
16
  - An **arbitrary / one-off image** (a local file, or a look/style you don't intend to reuse) →
17
- `--ref` (local path or in-project media UUID).
17
+ `--ref` (local path; image `i2i` also accepts an in-project media UUID).
18
18
 
19
19
  2. **HOW you author it** (only matters once you've chosen "by identity")
20
20
  - Inline, readable, agent-friendly → `@Name` in the prompt.
@@ -28,7 +28,7 @@ transports.
28
28
  | Reference a **saved Character** by name, inline | `@Name` in the prompt | Resolves to `referenceEntities`; the model anchors on that entity. Works on every generation path. |
29
29
  | Reference a Character by **explicit id** in a script | `--reference-entity <entityId>` (`t2i`/`i2i`/`t2v`/`r2v`) | Same wire as `@Name`, no name-resolution ambiguity. **Not available on `i2v`** (its DTO rejects reference entities). |
30
30
  | Reference a **saved media asset** (generated/uploaded) by name | `@Name` in the prompt | Resolves to the asset's UUID → `referenceImages`, zero re-upload. |
31
- | Reference a **one-off / arbitrary image** or a look | `--ref <path-or-uuid>` (`i2i`, `r2v`) | Stages `referenceImages` directly; no saved identity needed. |
31
+ | Reference a **one-off / arbitrary image** or a look | `--ref <path>` (`i2i`, `r2v`) or `--ref <uuid>` (`i2i` only) | Stages `referenceImages` directly; no saved identity needed. |
32
32
  | Reuse the **same subject** across many generations | `gflow character` once → then `@Name` everywhere | A Character is the durable, name-addressable identity. See [CHARACTER.md](CHARACTER.md). |
33
33
  | Anchor an **identity *and* a look** in one shot | Both — a Character mention **and** a `--ref` | They complement (entity + image), and identical references dedupe, within the model's reference cap. |
34
34
 
@@ -43,6 +43,19 @@ reference caps are enforced before submit.
43
43
  `--ref` is the odd one out: it always stages `referenceImages` (an image), never `referenceEntities`
44
44
  (a saved identity). That's the whole distinction — *identity* vs *image*.
45
45
 
46
+ For a catalog-backed `--ref <uuid>`, gflow resolves the UUID to Flow's recorded
47
+ `display_name`, searches that name in the browser picker, and then verifies the
48
+ exact UUID in the surfaced tile. The name is discovery; the UUID remains identity,
49
+ so duplicate names cannot select the wrong asset. This path does not scan the
50
+ unfiltered picker grid. If the named tile is unavailable, `image i2i` can still
51
+ use the catalog's recorded local file as its upload fallback. I2V start/end
52
+ frames carry the same fallback even when they have a name, so a picker miss can
53
+ upload the exact recorded bytes without scanning. The fallback is discarded if
54
+ its catalog byte count or SHA-256 no longer matches the file on disk. A stale
55
+ name or missing picker search never enables an unfiltered tile click. Redacted
56
+ prompt history deliberately does not persist Flow captions because they may
57
+ paraphrase the prompt.
58
+
46
59
  ## Per-generation-path support matrix
47
60
 
48
61
  Which reference methods each path accepts (design spec §2, verified against `cli_image.py` /
@@ -53,6 +66,7 @@ Which reference methods each path accepts (design spec §2, verified against `cl
53
66
  | `image t2i` | `@Name` · `--reference-entity <id>` | `@Name` (in-project UUID → `referenceImages`) |
54
67
  | `image i2i` | `@Name` · `--reference-entity <id>` | `@Name` · `--ref <path-or-uuid>` |
55
68
  | `video t2v` | `@Name` · `--reference-entity <id>` | ❌ — media mentions on the video path are Phase 3 |
69
+ | `video i2v` | ❌ — start/end frames replace ingredients | local path or catalog UUID via `IMAGE` / `--initial-frame` · optional `--end-frame` |
56
70
  | `video r2v` | `@Name` · `--reference-entity <id>` | `--ref <path>` (local ingredients); `@media` is Phase 3 |
57
71
 
58
72
  Notes:
@@ -99,9 +113,10 @@ Pick with one rule:
99
113
 
100
114
  - **Referencing a saved, named Character or asset?** Put `@Name` in the prompt. On `t2i`/`i2i` you may
101
115
  instead pass `--reference-entity <entityId>` when you have the id and want no name ambiguity — it's
102
- the **same wire** and dedupes. There is **no** `--reference-entity` flag on `t2v`/`r2v`; use `@Name`.
103
- - **Referencing a one-off image or a look/style you won't reuse?** Use `--ref <path-or-uuid>`
104
- (`i2i`, `r2v`).
116
+ the **same wire** and dedupes. The explicit entity flag is also available on `t2v`/`r2v`; it is
117
+ deliberately absent from `i2v`, whose inputs are start/end frames.
118
+ - **Referencing a one-off image or a look/style you won't reuse?** Use `--ref <path>` on `i2i` or
119
+ `r2v`; a media UUID is accepted by image `i2i` only.
105
120
  - **Need the subject reused across many generations?** Create it once with `gflow character`, then
106
121
  `@Name` it everywhere.
107
122
  - **Prerequisite:** a Character must have a reference image before `@Name` will resolve — an
@@ -74,7 +74,7 @@ See [AUTHENTICATION § Commands](AUTHENTICATION.md#commands).
74
74
 
75
75
  ## `gflow image upload`
76
76
 
77
- Upload a local PNG/JPEG/WebP/GIF into a fresh Flow project and print the asset UUID + dimensions Flow inferred. The UUID is what later subcommands (`gflow image i2i --ref UUID`, `video i2v`) accept as an initial frame. Note for `video i2v`: the UUID is selected from the generation project's media picker, and `upload` puts the asset in a *fresh scratch project* — so pass `--project <id>` of the project that holds the asset, or the picker lookup fails with exit 9 (#287).
77
+ Upload a local PNG/JPEG/WebP/GIF into a fresh Flow project and print the asset UUID + dimensions Flow inferred. The UUID is what later subcommands (`gflow image i2i --ref UUID`, `video i2v`) accept as an initial frame. Note for `video i2v`: the UUID is preferentially selected from the generation project's media picker, and `upload` puts the asset in a *fresh scratch project* — pass `--project <id>` of the project that holds the asset to select it in place. Since v0.58.0 (#529) a picker miss falls back to re-uploading the catalog's recorded local file (integrity-verified); exit 9 now only occurs when neither the tile nor a verified local file is available.
78
78
 
79
79
  ```text
80
80
  gflow image upload PATH [OPTIONS]
@@ -316,7 +316,7 @@ Options:
316
316
 
317
317
  **Path-or-UUID semantics.** Each `--ref` value is classified at the CLI boundary:
318
318
 
319
- - **Looks like a Flow asset UUID** (case-insensitive 8-4-4-4-12 hex, e.g. `ddb6ef97-262d-49f4-8269-4a28c0fae6a2`) → passed through verbatim. No upload, no extra round-trip.
319
+ - **Looks like a Flow asset UUID** (case-insensitive 8-4-4-4-12 hex, e.g. `ddb6ef97-262d-49f4-8269-4a28c0fae6a2`) → resolved through the local catalog (v0.58.0, #529): the asset's recorded Flow display name is searched in the project's reference picker and the **exact UUID tile** is selected — no duplicate upload, no grid scrolling, no UUID/prompt-text searches. When the tile can't be reached (different project, missing/stale name), the catalog's recorded local file is uploaded instead — only after its byte count and SHA-256 still match the recording; otherwise the run aborts with a typed error rather than attaching the wrong bytes.
320
320
  - **Anything else** → treated as a local path. The CLI canonicalises it (resolving symlinks once at validation time, closing the symlink-laundering vector where `./hero.png -> ~/.ssh/id_rsa` could exfiltrate secrets), then attaches it — **deduplicated by filename since v0.38.0 (#314):** if the target project's library already holds an asset with the exact same filename, that existing tile is selected in the picker instead of re-uploading, so repeating a ref across runs no longer piles up duplicate library entries. On a picker miss the file is uploaded as before. Caveat: the match is by exact filename only — a *different* image that happens to share the name of one already in the project will be reused, not uploaded; rename the file if you need a fresh upload. (Video `r2v` refs keep upload-only behavior.)
321
321
 
322
322
  Mix and match in a single call. UUIDs and paths can co-exist on the same command line; order is preserved so `imageInputs[]` matches the order you typed.
@@ -591,7 +591,8 @@ Options:
591
591
  ```bash
592
592
  gflow video i2v --initial-frame ./hero.png "Slow camera arc, soft golden light"
593
593
  gflow video i2v --initial-frame ./first.png --end-frame ./last.png "morph between scenes" --model veo-quality
594
- # Reference an existing in-project asset by media UUID (no re-upload, #287):
594
+ # Reference an existing in-project asset by media UUID (picker-selected via its
595
+ # catalog display name + exact-UUID tile since v0.58.0/#529; no re-upload):
595
596
  gflow video i2v --initial-frame d6f1927a-3eae-4626-bc90-9a6ea7637bab "pan left" --project f6caf027-...
596
597
  # Back-compat positional form:
597
598
  gflow video i2v ./hero.png "Slow camera arc, soft golden light"
@@ -601,7 +602,10 @@ Exit codes specific to this surface: **27** — Flow's upload endpoint rejected
601
602
  local frame file (`MediaUploadRejectedError`; try re-encoding, e.g.
602
603
  `ffmpeg -i in.jpg -q:v 2 -map_metadata -1 out.jpg`, or reference the asset by
603
604
  UUID instead); **9** — a frame UUID could not be located in the project's media
604
- picker (`TransportTimeoutError`; wrong `--project` or foreign UUID).
605
+ picker **and** had no integrity-verified local fallback to upload
606
+ (`TransportTimeoutError`; wrong `--project`, foreign UUID, or the recorded
607
+ local file is missing/changed — since v0.58.0 a reachable verified local file
608
+ rescues a picker miss instead of failing).
605
609
 
606
610
  ## `gflow video r2v`
607
611