gflow-cli 0.77.1__tar.gz → 0.78.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 (1161) hide show
  1. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/AGENTS.md +1 -1
  3. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/CHANGELOG.md +122 -1
  4. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/KNOWN_ISSUES.md +5 -6
  5. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/PKG-INFO +1 -1
  6. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docker/Dockerfile +1 -1
  7. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/CONFIGURATION.md +4 -4
  8. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/INDEX.md +3 -2
  9. gflow_cli-0.78.0/docs/LIVE_VERIFICATION_v0.78.0.md +177 -0
  10. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/MCP.md +9 -4
  11. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/PROJECT_STATUS.md +64 -0
  12. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/USAGE.md +89 -20
  13. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +4 -3
  14. gflow_cli-0.78.0/docs/superpowers/plans/2026-09-17-gflow-docs-command/PLAN.md +150 -0
  15. gflow_cli-0.78.0/docs/superpowers/plans/2026-09-17-gflow-docs-command/SCENARIO.md +169 -0
  16. gflow_cli-0.78.0/docs/superpowers/plans/2026-09-17-project-create-bundle/PLAN.md +68 -0
  17. gflow_cli-0.78.0/docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md +71 -0
  18. gflow_cli-0.78.0/docs/superpowers/spikes/2026-09-17-project-create-on-flow-google-com.md +100 -0
  19. gflow_cli-0.78.0/hatch_build.py +59 -0
  20. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/llms.txt +1 -1
  21. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/.claude-plugin/plugin.json +1 -1
  22. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/gflow-cli/SKILL.md +8 -7
  23. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/SKILL.md +1 -1
  24. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/pyproject.toml +8 -1
  25. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_repo_hygiene.py +5 -0
  26. gflow_cli-0.78.0/scripts/dev/spike_create_project_401.py +127 -0
  27. gflow_cli-0.78.0/scripts/dev/spike_migrated_aspect_radios.py +92 -0
  28. gflow_cli-0.78.0/scripts/dev/spike_migrated_create_project.py +217 -0
  29. gflow_cli-0.78.0/scripts/dev/spike_migrated_end_frame.py +288 -0
  30. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/server.json +2 -2
  31. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/gflow-cli/SKILL.md +8 -7
  32. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/video-production/SKILL.md +1 -1
  33. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/__init__.py +1 -1
  34. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/client.py +62 -7
  35. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/migrated_composer.py +412 -92
  36. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli.py +2 -0
  37. gflow_cli-0.78.0/src/gflow_cli/cli_docs.py +191 -0
  38. gflow_cli-0.78.0/src/gflow_cli/docs_catalog.py +369 -0
  39. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/errors.py +4 -4
  40. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/server.py +26 -1
  41. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/tools.py +60 -28
  42. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/worker/daemon.py +6 -0
  43. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client.py +3 -1
  44. gflow_cli-0.78.0/tests/api/test_client_project_host.py +175 -0
  45. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_composer.py +301 -13
  46. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_dispatch.py +27 -9
  47. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_images.py +10 -10
  48. gflow_cli-0.78.0/tests/api/transports/test_migrated_project.py +213 -0
  49. gflow_cli-0.78.0/tests/cli/test_cli_docs.py +300 -0
  50. gflow_cli-0.78.0/tests/cli/test_docs_catalog_real_docs.py +100 -0
  51. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/conftest.py +6 -0
  52. gflow_cli-0.78.0/tests/e2e/test_blocking_dialog_dismissal_bdd.py +217 -0
  53. gflow_cli-0.78.0/tests/e2e/test_frame_picker_binding_bdd.py +209 -0
  54. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_i2v_flags_e2e.py +21 -20
  55. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_migrated_host_e2e.py +90 -0
  56. gflow_cli-0.78.0/tests/e2e/test_project_create_e2e.py +210 -0
  57. gflow_cli-0.78.0/tests/features/blocking_dialog_dismissal.feature +51 -0
  58. gflow_cli-0.78.0/tests/features/frame_picker_binding.feature +43 -0
  59. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/migrated_i2v.feature +4 -4
  60. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_migrated_i2v_steps.py +18 -13
  61. gflow_cli-0.78.0/tests/integration/test_docs_ships_in_wheel.py +115 -0
  62. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_cli_parity.py +11 -0
  63. gflow_cli-0.78.0/tests/mcp/test_mcp_profile_contention.py +163 -0
  64. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_migrated_i2v_parity.py +4 -2
  65. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_server.py +3 -0
  66. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/worker/test_daemon.py +27 -0
  67. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/uv.lock +1 -1
  68. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/CONFIGURATION.md +4 -4
  69. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/KNOWN_ISSUES.md +5 -6
  70. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/MCP.md +9 -4
  71. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/USAGE.md +89 -20
  72. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.agents/plugins/marketplace.json +0 -0
  73. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/README.md +0 -0
  74. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/active.md +0 -0
  75. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/branch-review.md +0 -0
  76. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/changelog.md +0 -0
  77. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/check.md +0 -0
  78. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/doc-review.md +0 -0
  79. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  80. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  81. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/known-issues.md +0 -0
  82. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/live-verify.md +0 -0
  83. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/llm-council.md +0 -0
  84. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/next.md +0 -0
  85. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/plan.md +0 -0
  86. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  87. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/predict.md +0 -0
  88. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/release.md +0 -0
  89. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/scenario.md +0 -0
  90. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/sonar.md +0 -0
  91. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/spike.md +0 -0
  92. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude/commands/gflow/status.md +0 -0
  93. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.claude-plugin/marketplace.json +0 -0
  94. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.env.template +0 -0
  95. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.gitattributes +0 -0
  96. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/CODEOWNERS +0 -0
  97. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/FUNDING.yml +0 -0
  98. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  99. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/copilot-instructions.md +0 -0
  100. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/dependabot.yml +0 -0
  101. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/ci.yml +0 -0
  102. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/deps-watch.yml +0 -0
  103. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/external-pr-triage.yml +0 -0
  104. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/governance-advisory.yml +0 -0
  105. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/governance-benchmark.yml +0 -0
  106. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/labels.yml +0 -0
  107. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/main-base-guard.yml +0 -0
  108. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/mcp-registry.yml +0 -0
  109. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/pages.yml +0 -0
  110. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/release.yml +0 -0
  111. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/scorecard.yml +0 -0
  112. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/selector-probe.yml +0 -0
  113. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/sponsors.yml +0 -0
  114. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.github/workflows/star-history-watch.yml +0 -0
  115. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.gitignore +0 -0
  116. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.gitleaks.toml +0 -0
  117. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.pre-commit-config.yaml +0 -0
  118. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/.secrets.baseline +0 -0
  119. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/CLAUDE.md +0 -0
  120. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/CONFIGURATION.md +0 -0
  121. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/CONTRIBUTING.md +0 -0
  122. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/DISCLAIMER.md +0 -0
  123. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/LICENSE +0 -0
  124. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/PLAN.md +0 -0
  125. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/README.md +0 -0
  126. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/RELEASE.md +0 -0
  127. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/ROADMAP.md +0 -0
  128. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/conftest.py +0 -0
  129. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/deploy/logrotate-pr-triage +0 -0
  130. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docker/Dockerfile.test +0 -0
  131. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docker/README.md +0 -0
  132. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docker/docker-compose.yml +0 -0
  133. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docker/dockerignore.example +0 -0
  134. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docker-compose.yml +0 -0
  135. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/ACCOUNT_SAFETY.md +0 -0
  136. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/AGENT_GUIDE.md +0 -0
  137. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/AGENT_UI_E2E.md +0 -0
  138. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/AGENT_UI_RECON.md +0 -0
  139. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/ARCHITECTURE.md +0 -0
  140. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  141. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/AUTHENTICATION.md +0 -0
  142. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/CHARACTER.md +0 -0
  143. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/CHARACTER_RECON.md +0 -0
  144. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/CONTAINER.md +0 -0
  145. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/DATA_LAYER.md +0 -0
  146. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/DEBUGGING.md +0 -0
  147. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/DEMOS.md +0 -0
  148. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/DEVELOPMENT.md +0 -0
  149. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/DISTRIBUTION.md +0 -0
  150. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/E2E_TESTING.md +0 -0
  151. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/EXTERNAL_STORAGE.md +0 -0
  152. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/GITHUB.md +0 -0
  153. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  154. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  155. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/INSTRUCTIONS.md +0 -0
  156. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  157. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  158. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  159. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  160. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  161. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  162. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  163. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  164. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  165. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  166. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  167. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  168. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  169. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  170. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  171. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  172. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  173. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  174. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  175. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  176. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  177. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  178. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  179. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  180. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  181. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  182. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  183. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  184. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  185. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  186. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  187. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  188. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  189. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  190. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  191. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  192. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  193. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  194. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  195. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  196. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  197. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  198. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  199. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  200. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  201. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  202. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  203. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  204. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  205. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  206. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  207. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  208. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  209. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  210. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  211. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  212. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  213. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  214. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  215. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  216. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  217. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  218. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  219. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  220. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  221. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  222. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  223. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  224. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  225. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  226. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  227. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  228. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  229. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  230. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  231. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  232. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
  233. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
  234. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
  235. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
  236. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
  237. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.75.0.md +0 -0
  238. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.76.0.md +0 -0
  239. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.77.0.md +0 -0
  240. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.77.1.md +0 -0
  241. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  242. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  243. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  244. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  245. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/MARKETPLACES.md +0 -0
  246. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/MEDIA_LIBRARY.md +0 -0
  247. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/MOVIE.md +0 -0
  248. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/PROMPT_EXPANSION.md +0 -0
  249. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  250. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/SECURITY.md +0 -0
  251. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/SPONSORS.md +0 -0
  252. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/TOOLS.md +0 -0
  253. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/USER_GUIDE.md +0 -0
  254. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/assets/demo-split-pf.gif +0 -0
  255. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/assets/example-run.gif +0 -0
  256. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/assets/examples.webp +0 -0
  257. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/medium_tutorial.md +0 -0
  258. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/schemas/movie-handoff.schema.json +0 -0
  259. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/sonar-cleanup-tracker.md +0 -0
  260. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/README.md +0 -0
  261. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  262. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  263. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  264. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  265. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  266. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  267. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  268. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  269. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  270. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  271. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  272. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  273. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  274. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  275. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  276. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  277. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  278. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  279. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  280. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  281. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
  282. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  283. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  284. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  285. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  286. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  287. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  288. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  289. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  290. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  291. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  292. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  293. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/release-signing.md +0 -0
  294. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  295. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  296. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  297. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  298. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  299. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  300. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  301. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  302. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  303. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  304. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  305. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  306. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  307. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  308. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  309. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  310. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  311. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  312. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  313. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  314. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  315. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  316. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  317. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  318. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  319. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  320. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  321. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  322. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  323. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  324. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  325. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  326. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  327. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  328. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  329. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  330. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  331. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  332. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  333. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  334. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  335. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  336. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  337. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  338. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  339. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  340. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  341. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  342. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  343. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  344. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  345. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  346. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  347. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  348. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  349. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  350. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  351. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  352. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  353. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  354. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
  355. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  356. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  357. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  358. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  359. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  360. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  361. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  362. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  363. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  364. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  365. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  366. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  367. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  368. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  369. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  370. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  371. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  372. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  373. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  374. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  375. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  376. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  377. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  378. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  379. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  380. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  381. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  382. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  383. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  384. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
  385. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  386. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
  387. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  388. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  389. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
  390. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
  391. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
  392. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
  393. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
  394. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
  395. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
  396. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
  397. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
  398. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
  399. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
  400. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +0 -0
  401. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +0 -0
  402. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-16-networkidle-costs-3x-it-does-not-hang.md +0 -0
  403. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/README.md +0 -0
  404. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/batch_from_config.py +0 -0
  405. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/multi_prompt_t2i.py +0 -0
  406. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/sample_config.json +0 -0
  407. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/sample_prompts.txt +0 -0
  408. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/single_image_t2i.py +0 -0
  409. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/examples/workflow_chain.py +0 -0
  410. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/glama.json +0 -0
  411. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/index.html +0 -0
  412. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/mempalace.yaml +0 -0
  413. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/README.md +0 -0
  414. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/.mcp.json +0 -0
  415. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
  416. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/composition.md +0 -0
  417. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
  418. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
  419. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
  420. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/README.md +0 -0
  421. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/01_upload_image.json +0 -0
  422. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  423. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  424. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/04_archive_workflow.json +0 -0
  425. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/05_createProject.json +0 -0
  426. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/06_batchGenerateImages.json +0 -0
  427. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  428. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  429. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  430. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  431. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  432. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/12_create_scene.json +0 -0
  433. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  434. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/14_get_scene_workflows.json +0 -0
  435. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  436. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/canary/register_task.ps1 +0 -0
  437. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/canary/run_canary.py +0 -0
  438. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_council_memory.py +0 -0
  439. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_doc_links.py +0 -0
  440. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_fork_pr_ci.py +0 -0
  441. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_materiality.py +0 -0
  442. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_release_artifacts.py +0 -0
  443. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_test_count.py +0 -0
  444. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/check_website_docs_pii.py +0 -0
  445. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/generate_plugin_skills.py +0 -0
  446. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/generate_website_docs.py +0 -0
  447. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/ci/update_sponsors.py +0 -0
  448. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/debug_editor.py +0 -0
  449. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/debug_gen_settings.py +0 -0
  450. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/debug_settings.py +0 -0
  451. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/_recording_client.py +0 -0
  452. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/_spike_common.py +0 -0
  453. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/acceptance/__init__.py +0 -0
  454. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/acceptance/bench.py +0 -0
  455. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/acceptance/domain.py +0 -0
  456. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/acceptance/judge.py +0 -0
  457. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/acceptance/settings.py +0 -0
  458. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/active_plan.py +0 -0
  459. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  460. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  461. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  462. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  463. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  464. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  465. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  466. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_locale_invariants.py +0 -0
  467. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  468. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  469. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  470. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  471. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  472. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  473. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  474. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  475. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_project_listing.py +0 -0
  476. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  477. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  478. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  479. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  480. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/character_create_spike.py +0 -0
  481. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/character_create_spike_v2.py +0 -0
  482. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/dump_character_selectors.js +0 -0
  483. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/README.md +0 -0
  484. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  485. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  486. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  487. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  488. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  489. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  490. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  491. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  492. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  493. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  494. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  495. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/incident_bundle_quality.py +0 -0
  496. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  497. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  498. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  499. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/make_project.py +0 -0
  500. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/materiality_backtest.py +0 -0
  501. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  502. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/measure_locale_probe.py +0 -0
  503. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  504. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/patch_character.py +0 -0
  505. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/skillopt/README.md +0 -0
  506. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/skillopt/harness.py +0 -0
  507. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/skillopt/tasks.json +0 -0
  508. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/sonar-local-scan.sh +0 -0
  509. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  510. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
  511. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
  512. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  513. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_changelog_capture.py +0 -0
  514. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  515. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  516. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  517. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  518. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_credits_migrated_surface.py +0 -0
  519. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  520. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  521. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  522. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  523. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  524. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  525. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_flow_unavailable_signal.py +0 -0
  526. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
  527. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
  528. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
  529. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_host_lane.py +0 -0
  530. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_image_model_attribution.py +0 -0
  531. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  532. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  533. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  534. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  535. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_incident_live.py +0 -0
  536. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  537. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  538. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  539. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  540. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  541. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  542. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_locale_poison.py +0 -0
  543. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  544. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  545. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  546. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  547. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  548. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  549. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
  550. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  551. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  552. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
  553. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  554. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  555. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  556. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  557. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  558. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
  559. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
  560. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  561. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
  562. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  563. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  564. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  565. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  566. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  567. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  568. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  569. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  570. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_model_inventory.py +0 -0
  571. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  572. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  573. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  574. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  575. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  576. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
  577. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_networkidle_bootstrap_cost.py +0 -0
  578. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  579. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_patch_entity.py +0 -0
  580. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_patchright.py +0 -0
  581. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
  582. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_project_media_status.py +0 -0
  583. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  584. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
  585. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  586. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  587. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/verify_language_agnostic.py +0 -0
  588. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  589. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/dev/verify_model_attribution.py +0 -0
  590. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/diag/README.md +0 -0
  591. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/diag/capture_flow_traffic.py +0 -0
  592. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  593. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/diag/memory_profile.py +0 -0
  594. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/diag/recaptcha_mint.py +0 -0
  595. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  596. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  597. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  598. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/probe/run_probe.py +0 -0
  599. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/probe/spike_auth_matrix.py +0 -0
  600. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/record_demo.ps1 +0 -0
  601. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/smoke_image.py +0 -0
  602. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/smoke_video_editor.py +0 -0
  603. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/smoke_worker_style.py +0 -0
  604. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/spike_waf_camoufox.py +0 -0
  605. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/scripts/verify_chrome_auth_viability.py +0 -0
  606. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/README.md +0 -0
  607. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/changelog/SKILL.md +0 -0
  608. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/check/SKILL.md +0 -0
  609. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/doc-review/SKILL.md +0 -0
  610. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/issue-assessment/SKILL.md +0 -0
  611. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/issue-resolve/SKILL.md +0 -0
  612. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/known-issues/SKILL.md +0 -0
  613. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/live-verify/SKILL.md +0 -0
  614. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/llm-council/SKILL.md +0 -0
  615. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/plan/SKILL.md +0 -0
  616. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/pr-council-review/SKILL.md +0 -0
  617. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/predict/SKILL.md +0 -0
  618. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/release/SKILL.md +0 -0
  619. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/scenario/SKILL.md +0 -0
  620. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/sonar/SKILL.md +0 -0
  621. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/spike/SKILL.md +0 -0
  622. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/status/SKILL.md +0 -0
  623. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/video-production/clip_qa.py +0 -0
  624. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/video-production/composition.md +0 -0
  625. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/video-production/consistency.md +0 -0
  626. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/video-production/failure-modes.md +0 -0
  627. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/skills/video-production/tasks.json +0 -0
  628. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/sonar-project.properties +0 -0
  629. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/__main__.py +0 -0
  630. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/_cli_helpers.py +0 -0
  631. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/__init__.py +0 -0
  632. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/_engine.py +0 -0
  633. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/_retry.py +0 -0
  634. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  635. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/character.py +0 -0
  636. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/credits.py +0 -0
  637. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/dto.py +0 -0
  638. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/extend_chain.py +0 -0
  639. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/image.py +0 -0
  640. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/image_upscale.py +0 -0
  641. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/recaptcha.py +0 -0
  642. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/routes.py +0 -0
  643. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/scene.py +0 -0
  644. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  645. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/_common.py +0 -0
  646. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  647. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/base.py +0 -0
  648. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  649. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  650. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  651. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  652. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  653. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  654. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  655. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  656. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  657. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  658. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  659. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  660. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  661. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/video.py +0 -0
  662. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/api/video_extend.py +0 -0
  663. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/__init__.py +0 -0
  664. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/base.py +0 -0
  665. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/cookies.py +0 -0
  666. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/factory.py +0 -0
  667. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  668. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  669. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/strategies.py +0 -0
  670. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/auth/verification.py +0 -0
  671. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/browser_manager.py +0 -0
  672. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/chain.py +0 -0
  673. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/chain_manifest.py +0 -0
  674. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_character.py +0 -0
  675. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_credits.py +0 -0
  676. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_data.py +0 -0
  677. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_doctor.py +0 -0
  678. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_image.py +0 -0
  679. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_instructions.py +0 -0
  680. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_models.py +0 -0
  681. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_movie.py +0 -0
  682. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_project.py +0 -0
  683. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_run.py +0 -0
  684. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_scene.py +0 -0
  685. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_tools.py +0 -0
  686. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_update.py +0 -0
  687. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/cli_video.py +0 -0
  688. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/composition.py +0 -0
  689. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/config.py +0 -0
  690. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/__init__.py +0 -0
  691. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/chain_repo.py +0 -0
  692. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  693. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  694. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  695. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  696. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  697. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  698. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  699. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  700. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  701. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  702. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/models.py +0 -0
  703. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/queries.py +0 -0
  704. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/recorder.py +0 -0
  705. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/redaction.py +0 -0
  706. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/repository.py +0 -0
  707. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/data/store.py +0 -0
  708. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/diagnostics.py +0 -0
  709. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/exceptions.py +0 -0
  710. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/file_integrity.py +0 -0
  711. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  712. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  713. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  714. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  715. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/image_batch.py +0 -0
  716. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/json_output.py +0 -0
  717. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/__init__.py +0 -0
  718. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/prompts.py +0 -0
  719. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/resources.py +0 -0
  720. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/setup.py +0 -0
  721. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  722. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/media.py +0 -0
  723. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/movie_manifest.py +0 -0
  724. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/observability.py +0 -0
  725. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/paths.py +0 -0
  726. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/profile_lease.py +0 -0
  727. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/profile_store.py +0 -0
  728. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/redaction.py +0 -0
  729. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/services/__init__.py +0 -0
  730. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  731. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/services/character_create.py +0 -0
  732. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/services/credits.py +0 -0
  733. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/services/doctor.py +0 -0
  734. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/services/mentions.py +0 -0
  735. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/storage.py +0 -0
  736. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/__init__.py +0 -0
  737. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/banned.py +0 -0
  738. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  739. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  740. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  741. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  742. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/expander.py +0 -0
  743. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/invocation.py +0 -0
  744. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/loader.py +0 -0
  745. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/registry.py +0 -0
  746. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/runtime.py +0 -0
  747. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/tools/spec.py +0 -0
  748. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/ui/app.py +0 -0
  749. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/ui/server.py +0 -0
  750. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/update_check.py +0 -0
  751. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/winsec.py +0 -0
  752. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/worker/codec.py +0 -0
  753. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/src/gflow_cli/worker/queue.py +0 -0
  754. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tasks/lessons.md +0 -0
  755. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/test_assets/sample_batch.json +0 -0
  756. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/test_assets/sample_batch.tsv +0 -0
  757. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/test_assets/sample_batch_invalid.tsv +0 -0
  758. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/__init__.py +0 -0
  759. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/__init__.py +0 -0
  760. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/fixtures/character_gen_response.json +0 -0
  761. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  762. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  763. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  764. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  765. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_bearer_redaction.py +0 -0
  766. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_bootstrap_chooser.py +0 -0
  767. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_character.py +0 -0
  768. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_character_readback_fallback.py +0 -0
  769. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_character.py +0 -0
  770. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_delete_characters.py +0 -0
  771. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_errors.py +0 -0
  772. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_extend.py +0 -0
  773. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_generate_character.py +0 -0
  774. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_image.py +0 -0
  775. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_incidents.py +0 -0
  776. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_launch_kwargs.py +0 -0
  777. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_locale_cache.py +0 -0
  778. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_migrated_mint.py +0 -0
  779. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_patch_entity.py +0 -0
  780. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_scene.py +0 -0
  781. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_client_upscale.py +0 -0
  782. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_concurrency.py +0 -0
  783. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_credits.py +0 -0
  784. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_credits_http.py +0 -0
  785. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_dto.py +0 -0
  786. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_engine.py +0 -0
  787. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_extend_chain.py +0 -0
  788. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_image.py +0 -0
  789. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_image_dto.py +0 -0
  790. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_image_upscale.py +0 -0
  791. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  792. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_recaptcha.py +0 -0
  793. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_retry.py +0 -0
  794. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_routes.py +0 -0
  795. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_routes_character.py +0 -0
  796. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_routes_locale.py +0 -0
  797. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_routes_scene.py +0 -0
  798. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_sapisidhash_helper.py +0 -0
  799. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_scene_models.py +0 -0
  800. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_video.py +0 -0
  801. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_video_extend.py +0 -0
  802. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_video_request.py +0 -0
  803. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/test_video_status_poll.py +0 -0
  804. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/__init__.py +0 -0
  805. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/conftest.py +0 -0
  806. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/drivers/__init__.py +0 -0
  807. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  808. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_classic.py +0 -0
  809. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_factory.py +0 -0
  810. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  811. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_agent_only_composer.py +0 -0
  812. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  813. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_base.py +0 -0
  814. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_batchexecute.py +0 -0
  815. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_bearer.py +0 -0
  816. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_character_model_picker.py +0 -0
  817. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_click_attribution.py +0 -0
  818. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_common.py +0 -0
  819. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  820. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_factory.py +0 -0
  821. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_fingerprint.py +0 -0
  822. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_flow_access_unavailable.py +0 -0
  823. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_ligature_carrier.py +0 -0
  824. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_locale_navigation.py +0 -0
  825. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  826. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_r2v.py +0 -0
  827. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_route.py +0 -0
  828. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_mode_control.py +0 -0
  829. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  830. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_navigation_settled.py +0 -0
  831. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  832. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  833. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_policy_400.py +0 -0
  834. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_sapisidhash.py +0 -0
  835. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  836. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_transport_timeout.py +0 -0
  837. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation.py +0 -0
  838. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  839. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  840. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  841. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  842. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  843. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/strategies/test_factory.py +0 -0
  844. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/strategies/test_strategies.py +0 -0
  845. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/test_account_autoselect.py +0 -0
  846. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/test_cookies.py +0 -0
  847. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/test_real_chrome.py +0 -0
  848. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/test_verification.py +0 -0
  849. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/auth/test_windows_acl.py +0 -0
  850. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/__init__.py +0 -0
  851. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_auth_status.py +0 -0
  852. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
  853. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_auth_list.py +0 -0
  854. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_character.py +0 -0
  855. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_character_create.py +0 -0
  856. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_credits.py +0 -0
  857. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_data.py +0 -0
  858. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_data_errors.py +0 -0
  859. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  860. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_data_sync.py +0 -0
  861. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_doctor.py +0 -0
  862. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_image.py +0 -0
  863. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  864. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  865. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_image_upscale.py +0 -0
  866. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  867. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_instructions.py +0 -0
  868. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_models.py +0 -0
  869. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_movie.py +0 -0
  870. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_run.py +0 -0
  871. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_scene.py +0 -0
  872. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_tools.py +0 -0
  873. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_video.py +0 -0
  874. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_video_chain.py +0 -0
  875. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_cli_video_extend.py +0 -0
  876. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_error_handling.py +0 -0
  877. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_failure_funnel.py +0 -0
  878. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_helpers.py +0 -0
  879. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_incident_output.py +0 -0
  880. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_movie_manifest.py +0 -0
  881. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  882. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_predictable_output.py +0 -0
  883. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  884. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  885. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_settings_validation.py +0 -0
  886. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  887. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/composition/test_character.py +0 -0
  888. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/composition/test_compose_prompt.py +0 -0
  889. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/composition/test_handoff.py +0 -0
  890. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/composition/test_style_variants.py +0 -0
  891. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/composition/test_style_variants_e2e.py +0 -0
  892. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/__init__.py +0 -0
  893. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_chain_repo.py +0 -0
  894. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_failure_recording.py +0 -0
  895. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_find_incomplete_character.py +0 -0
  896. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_models.py +0 -0
  897. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_null_columns_stay_null.py +0 -0
  898. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_packaging.py +0 -0
  899. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_recorder.py +0 -0
  900. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_recorder_character.py +0 -0
  901. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_redaction.py +0 -0
  902. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_repository.py +0 -0
  903. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_scene_persistence.py +0 -0
  904. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_settings_and_errors.py +0 -0
  905. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_store.py +0 -0
  906. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/data/test_store_migrations.py +0 -0
  907. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/dev/test_recording_client.py +0 -0
  908. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/__init__.py +0 -0
  909. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/conftest.py +0 -0
  910. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_account_chooser_e2e.py +0 -0
  911. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  912. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  913. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  914. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  915. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  916. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_chain_e2e.py +0 -0
  917. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_character_create_e2e.py +0 -0
  918. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  919. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  920. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
  921. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  922. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_credits_e2e.py +0 -0
  923. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  924. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_daemon_e2e.py +0 -0
  925. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  926. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  927. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
  928. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  929. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  930. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  931. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  932. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  933. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  934. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  935. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_json_output_e2e.py +0 -0
  936. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_landing_state_diagnosis_bdd.py +0 -0
  937. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  938. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  939. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  940. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  941. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  942. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_scene_compose_live.py +0 -0
  943. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  944. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_tools_e2e.py +0 -0
  945. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_transports_e2e.py +0 -0
  946. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  947. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  948. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  949. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/__init__.py +0 -0
  950. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/asset_tagging.feature +0 -0
  951. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/auth.feature +0 -0
  952. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/auth_login.feature +0 -0
  953. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/character_create.feature +0 -0
  954. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/character_read.feature +0 -0
  955. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/click_attribution.feature +0 -0
  956. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/conftest.py +0 -0
  957. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/credits.feature +0 -0
  958. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/duration_tab_drift.feature +0 -0
  959. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/entity_provenance.feature +0 -0
  960. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/image.feature +0 -0
  961. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/image_batch_references.feature +0 -0
  962. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/image_upscale.feature +0 -0
  963. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/incident_diagnostics.feature +0 -0
  964. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/instructions.feature +0 -0
  965. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/landing_state_diagnosis.feature +0 -0
  966. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/latched_locale_recovery.feature +0 -0
  967. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/locale_picker_include.feature +0 -0
  968. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/mcp_tasks.feature +0 -0
  969. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/media_picker_tiers.feature +0 -0
  970. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/migrated_driver.feature +0 -0
  971. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/migrated_host_gate.feature +0 -0
  972. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/migrated_host_images.feature +0 -0
  973. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/output_hardening.feature +0 -0
  974. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_asset_tagging_steps.py +0 -0
  975. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_auth_login_steps.py +0 -0
  976. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_auth_steps.py +0 -0
  977. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_character_create_steps.py +0 -0
  978. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_character_read_steps.py +0 -0
  979. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_credits_steps.py +0 -0
  980. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_e2e_binding_guard.py +0 -0
  981. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_image_steps.py +0 -0
  982. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_image_upscale_steps.py +0 -0
  983. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  984. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_instructions_steps.py +0 -0
  985. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  986. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  987. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  988. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_migrated_driver_steps.py +0 -0
  989. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  990. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_migrated_host_images_steps.py +0 -0
  991. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_output_hardening_steps.py +0 -0
  992. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_step_collision_guard.py +0 -0
  993. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  994. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/test_video_chain_steps.py +0 -0
  995. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/video_agent_ui.feature +0 -0
  996. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/features/video_chain.feature +0 -0
  997. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/__init__.py +0 -0
  998. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/changelog_modal_page.html +0 -0
  999. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/doctor_env.py +0 -0
  1000. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/flow_model_inventory.json +0 -0
  1001. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  1002. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/listing_payload.py +0 -0
  1003. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/fixtures/seeded_catalog.py +0 -0
  1004. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/flow_selectors/__init__.py +0 -0
  1005. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/flow_selectors/test_grading.py +0 -0
  1006. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/flow_selectors/test_model.py +0 -0
  1007. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/flow_selectors/test_model_governance.py +0 -0
  1008. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/flow_selectors/test_registry.py +0 -0
  1009. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/flow_selectors/test_report.py +0 -0
  1010. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/image_batch/__init__.py +0 -0
  1011. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/image_batch/test_image_manifest.py +0 -0
  1012. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/image_batch/test_jitter_config.py +0 -0
  1013. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/image_batch/test_observability_events.py +0 -0
  1014. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/integration/__init__.py +0 -0
  1015. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/integration/conftest.py +0 -0
  1016. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/integration/constants.py +0 -0
  1017. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/integration/test_expander_gateway.py +0 -0
  1018. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/integration/test_storage_gcs.py +0 -0
  1019. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/integration/test_storage_s3.py +0 -0
  1020. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/__init__.py +0 -0
  1021. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/conftest.py +0 -0
  1022. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_auth_status_tool.py +0 -0
  1023. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_character_tools.py +0 -0
  1024. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_credits_tool.py +0 -0
  1025. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_error_funnel.py +0 -0
  1026. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_http_transport.py +0 -0
  1027. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_known_issues_resource.py +0 -0
  1028. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_no_spend.py +0 -0
  1029. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_payload_key_round_trip.py +0 -0
  1030. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  1031. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  1032. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_resources.py +0 -0
  1033. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_serve_auth.py +0 -0
  1034. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_setup.py +0 -0
  1035. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_stdio_transport.py +0 -0
  1036. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_tasks_extension.py +0 -0
  1037. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_tools_helpers.py +0 -0
  1038. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_tools_instructions.py +0 -0
  1039. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/mcp/test_tools_wired.py +0 -0
  1040. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  1041. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_canary_classify.py +0 -0
  1042. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_canary_reexec.py +0 -0
  1043. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  1044. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  1045. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_council_memory.py +0 -0
  1046. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_fork_pr_ci.py +0 -0
  1047. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_materiality.py +0 -0
  1048. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  1049. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  1050. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_test_count.py +0 -0
  1051. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  1052. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_codex_plugin.py +0 -0
  1053. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_extract_har_summary.py +0 -0
  1054. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_frame_acceptance.py +0 -0
  1055. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_generate_website_docs.py +0 -0
  1056. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  1057. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_materiality_backtest.py +0 -0
  1058. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  1059. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_spike_page_pool.py +0 -0
  1060. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_spike_profile_lease.py +0 -0
  1061. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_update_sponsors.py +0 -0
  1062. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/scripts/test_workflow_hardening.py +0 -0
  1063. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/__init__.py +0 -0
  1064. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_catalog_sync.py +0 -0
  1065. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_character_create_redaction.py +0 -0
  1066. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_character_create_saga.py +0 -0
  1067. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  1068. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_credits.py +0 -0
  1069. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_doctor.py +0 -0
  1070. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_media_attribution.py +0 -0
  1071. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_mentions_observability.py +0 -0
  1072. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_mentions_parse.py +0 -0
  1073. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_mentions_resolve.py +0 -0
  1074. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/services/test_resolve_and_apply.py +0 -0
  1075. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/smoke/__init__.py +0 -0
  1076. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  1077. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/smoke/test_real_flow.py +0 -0
  1078. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_auth.py +0 -0
  1079. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_browser_manager.py +0 -0
  1080. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_chain.py +0 -0
  1081. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_chain_manifest.py +0 -0
  1082. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_cli_data.py +0 -0
  1083. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_cli_project.py +0 -0
  1084. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_cli_update.py +0 -0
  1085. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_config.py +0 -0
  1086. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_conftest_isolation.py +0 -0
  1087. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_data_queries.py +0 -0
  1088. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_diagnostics_bundle.py +0 -0
  1089. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_diagnostics_events.py +0 -0
  1090. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_diagnostics_journal.py +0 -0
  1091. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_diagnostics_recorder.py +0 -0
  1092. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_diagnostics_retention.py +0 -0
  1093. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_diagnostics_sanitize.py +0 -0
  1094. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_dockerfile_version_pin.py +0 -0
  1095. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_documentation_gate.py +0 -0
  1096. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_duration_tab_drift.py +0 -0
  1097. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_entity_provenance.py +0 -0
  1098. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_errors.py +0 -0
  1099. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_errors_classification.py +0 -0
  1100. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_glama_build_spec.py +0 -0
  1101. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_image_batch_references.py +0 -0
  1102. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_incident_generation_requests.py +0 -0
  1103. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_json_output.py +0 -0
  1104. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_marker_registry.py +0 -0
  1105. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_media.py +0 -0
  1106. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_observability.py +0 -0
  1107. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1108. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_paths.py +0 -0
  1109. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_playwright_pin.py +0 -0
  1110. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_plugin_manifests.py +0 -0
  1111. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_profile_lease.py +0 -0
  1112. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_profile_lease_subprocess.py +0 -0
  1113. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_profile_store.py +0 -0
  1114. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_profile_store_locale.py +0 -0
  1115. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_project_list_urls.py +0 -0
  1116. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_release_version_sites.py +0 -0
  1117. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_rich_markup_safety.py +0 -0
  1118. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_self_documenting_errors.py +0 -0
  1119. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_server_json.py +0 -0
  1120. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_smoke.py +0 -0
  1121. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/test_update_check.py +0 -0
  1122. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/__init__.py +0 -0
  1123. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_banned.py +0 -0
  1124. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_expander.py +0 -0
  1125. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_invocation.py +0 -0
  1126. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_loader.py +0 -0
  1127. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_registry.py +0 -0
  1128. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_runtime.py +0 -0
  1129. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/tools/test_spec.py +0 -0
  1130. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/ui/test_app.py +0 -0
  1131. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/worker/test_codec.py +0 -0
  1132. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1133. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/worker/test_queue.py +0 -0
  1134. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1135. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1136. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1137. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/ARCHITECTURE.md +0 -0
  1138. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/AUTHENTICATION.md +0 -0
  1139. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/CHARACTER.md +0 -0
  1140. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/DATA_LAYER.md +0 -0
  1141. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/DEBUGGING.md +0 -0
  1142. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/DEVELOPMENT.md +0 -0
  1143. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/E2E_TESTING.md +0 -0
  1144. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1145. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/INSTRUCTIONS.md +0 -0
  1146. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1147. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/MOVIE.md +0 -0
  1148. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1149. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/SECURITY.md +0 -0
  1150. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/SPONSORS.md +0 -0
  1151. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/TOOLS.md +0 -0
  1152. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/USER_GUIDE.md +0 -0
  1153. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/agents.md +0 -0
  1154. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/index.md +0 -0
  1155. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/installation.md +0 -0
  1156. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/onboarding-mockup.html +0 -0
  1157. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/onboarding.md +0 -0
  1158. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/docs/stylesheets/extra.css +0 -0
  1159. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/mkdocs.yml +0 -0
  1160. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/requirements.in +0 -0
  1161. {gflow_cli-0.77.1 → gflow_cli-0.78.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.77.1",
3
+ "version": "0.78.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -47,7 +47,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
47
47
  - Python CLI and MCP server for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, reference-to-video from local `--ref` files, and text-to-image/local-file image-to-image, today; `GFLOW_CLI_FLOW_HOST`).
48
48
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
49
49
  - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
50
- - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
50
+ - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow docs` (list/print/search the bundled documentation — read-only, offline, deliberately no MCP twin), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
51
51
  - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
52
52
 
53
53
  ## Headed-browser dependency (architectural reality)
@@ -7,6 +7,126 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.78.0] — 2026-09-17
11
+
12
+ ### Added
13
+
14
+ - **`--aspect 3:4` images now run on `flow.google.com`.** Flow's image settings there
15
+ render a fifth aspect radio (`3:4`) that the 2026-09-08 enumeration did not see, so gflow
16
+ refused it with exit 36. All five image aspects are now driven on both hosts.
17
+ ([#864](https://github.com/ffroliva/gflow-cli/issues/864))
18
+
19
+ - **`gflow docs` — the documentation, reachable from the terminal.** 126 pages in `docs/`
20
+ and nothing in the CLI pointed at any of them, so at the moment of use the knowledge was
21
+ unreachable and the reader guessed. `gflow docs` lists the topics, `gflow docs <topic>`
22
+ prints one as raw Markdown (it pipes), and `gflow docs --search <term>` returns the
23
+ matching lines with `docs/FILE.md:LINE` beside each one. Read-only and offline — no
24
+ network, no account, no credits.
25
+
26
+ **The pages now ship inside the wheel** (`gflow_cli/_docs`; 1.3 MB of Markdown, **+0.58 MB
27
+ compressed** — the wheel goes 0.74 MB → 1.32 MB), because the user this was filed for
28
+ installed from PyPI and has no checkout; a command that could only print GitHub links
29
+ would not solve it. A build hook globs `docs/*.md`, so the topic list cannot drift and
30
+ `assets/`/`superpowers/` stay out — measured, after `force-include` + `exclude` silently
31
+ shipped 148 files it was told to exclude. The hook **refuses to build** when it finds no
32
+ pages: `Path.glob` on a missing directory returns empty, and `release.yml` is `uv build`
33
+ then publish, with nothing in between that would notice a wheel whose `gflow docs` is
34
+ empty for every user.
35
+
36
+ Search returns a **line, windowed**, not a file name: the rule that prompted this issue
37
+ lives inside a 4 000-character bullet in `MCP.md`, and answering "it is in MCP.md" leaves
38
+ the reader where they started. Curated `INDEX.md` § Topic shortcuts rank above raw body
39
+ text, all query terms must appear on the line, and a vague query reports how many hits it
40
+ held back instead of quietly truncating. A topic resolves from its slug, its file name,
41
+ either case or an unambiguous prefix — and never by building a path from what was typed,
42
+ so `gflow docs ../../etc/passwd` is an ordinary unknown-topic refusal.
43
+
44
+ No MCP twin, deliberately (`gflow update` is the precedent); the reasoning is recorded in
45
+ `cli_docs.py` rather than left implicit.
46
+ ([#861](https://github.com/ffroliva/gflow-cli/issues/861))
47
+
48
+ - **`gflow video i2v --end-frame <local file>` now runs on `flow.google.com`.** Start+end
49
+ frame interpolation was the last i2v form the migrated composer refused: it exited 36
50
+ ("an end frame is not ported yet") on every account Flow has moved. Both frames are now
51
+ uploaded through the editor's own Upload entry and bound to the Start and End chips, and
52
+ the driver reads back two bound chips before it lets the app submit.
53
+
54
+ A bound end frame switches Flow to a different submit contract — rpc `nprQif`, an
55
+ interpolation model key, and both media ids in the body — which is why watching only the
56
+ classic submit rpcs made every start+end run time out *after* Flow had already accepted
57
+ the submit and billed it. The submit body is asserted before Flow acts on it, so a frame
58
+ that silently failed to bind is a refusal rather than a wrong generation you paid for.
59
+
60
+ The model key is **cohort-dependent** and matched by shape, not by literal:
61
+ `veo_3_1_interpolation_lite` and `omni_flash_i2v_8s_first_last` have both been captured
62
+ on live accounts (the second on 2026-09-17, see
63
+ `docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md`). Frames given
64
+ by media UUID or `@Name` are still not ported.
65
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639))
66
+
67
+ ### Fixed
68
+
69
+ - **The Frames picker could not bind the frame it had just uploaded.** On
70
+ `flow.google.com`, `video i2v` matched a picker option with an *anchored* regex
71
+ (`^\s*<name>\s*$`), but a picker tile is a `mat-icon` ligature followed by the file
72
+ name and a locator reads both nodes as one string — `imageshero-ab12cd34.png` for an
73
+ asset named `hero-ab12cd34.png`. The anchors could never hold, so every i2v run on this
74
+ cohort ended in exit 32, *"the frame picker lists no asset named …"*, while the picker
75
+ had been listing it the whole time. The match is now containment on the display name,
76
+ which is run-unique by construction ([#792](https://github.com/ffroliva/gflow-cli/issues/792))
77
+ and therefore still cannot bind a stale copy of the same file. Covered by a new $0
78
+ route-intercepted e2e (`tests/features/frame_picker_binding.feature`) that renders the
79
+ icon node for real — a mocked picker passes against the bug.
80
+ ([#860](https://github.com/ffroliva/gflow-cli/issues/860))
81
+
82
+ - **Flow's promo modal blocked the first click on a freshly loaded editor.** On
83
+ `flow.google.com` a `role="dialog"` panel over a new editor made `image t2i` fail as
84
+ exit 23 — *".settings-trigger-button did not accept a click within 5000 ms — it is
85
+ covered by div.cdk-overlay-backdrop"* — telling the user to file a selector-drift bug
86
+ when one click on the page fixes it permanently.
87
+
88
+ `_dismiss_dialog` already existed and its selector already matched. It was called at
89
+ the one moment it could not see anything: one frame after `domcontentloaded`, before
90
+ Angular has rendered the modal. That is why a blocked run logged **neither**
91
+ `migrated.dialog_dismissed` nor `migrated.dialog_not_dismissed` — the silence in the
92
+ incident's event stream was the evidence, not the absence of it. The dismissal now
93
+ also runs in `_open_pane`, where the image and video paths take their first click, the
94
+ same place the `glue` consent bar is already cleared. It stays best-effort: a modal
95
+ that refuses to go still falls through to the click post-mortem, which names the
96
+ backdrop, rather than becoming a second competing error path.
97
+ ([#859](https://github.com/ffroliva/gflow-cli/issues/859))
98
+
99
+ - **The migrated `--end-frame` lane rejected omni's interpolation key.** The start+end
100
+ submit validator pinned the model key to `veo_3_1_interpolation_lite`, so
101
+ `omni_flash_i2v_*_first_last` submits — what the second measured cohort actually sends —
102
+ were refused as wire-format errors before Flow could act on them. The check is now
103
+ key-shape based: a submit whose model key contains `interpolation` or `first_last`
104
+ counts as start+end interpolation for any model, and the submit observer accepts the
105
+ bare `batchexecute` reply (no `rpcids` param) that the interpolation rpc answers on.
106
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639))
107
+ - **Generating without a project works again on accounts Flow serves from
108
+ `flow.google.com`, and it no longer tells you to log in.** Every run without `--project`
109
+ (CLI) or `project` (MCP) starts by creating a project through labs.google's
110
+ `project.createProject`. Google has retired that route: it answers *"Flow RPCs have been
111
+ deprecated and disabled"* (404), or 401 for a session holding no labs token — measured
112
+ 12/12 on four profiles. gflow reported the 401 as *"Authentication expired — run `gflow
113
+ auth login`"*, which no login could fix. When that route refuses, gflow now creates the
114
+ project on flow.google.com's projects page and reads the new id and title from Flow's own
115
+ reply; `gflow project create` and `gflow project rename` work there the same way.
116
+ `GFLOW_CLI_FLOW_HOST=labs.google` keeps the labs route and its error. Video runs without a
117
+ project now get it created up front, like images, so they route exactly as if you had
118
+ passed `--project`; MCP `gflow_generate_video` also honours `project_name`, which it
119
+ accepted and then ignored. Thanks to @iceblue03 (#863) and @ChandraLiuswanto (#561) for
120
+ the reports. ([#864](https://github.com/ffroliva/gflow-cli/issues/864),
121
+ [#561](https://github.com/ffroliva/gflow-cli/issues/561))
122
+ - **An MCP server no longer fails a call because another call holds the profile.** Two
123
+ calls on one profile inside one server — a client retry, two agents sharing a server —
124
+ now run one after the other instead of the second failing with `ProfileLockedError`, and
125
+ a profile held by another process (a CLI run) is waited out for up to 180 s. A
126
+ `GFLOW_CLI_LEASE_WAIT_SECONDS` you set yourself, in the environment or a `.env`, still
127
+ wins. The CLI keeps failing fast. Thanks to @iceblue03 (#862).
128
+ ([#864](https://github.com/ffroliva/gflow-cli/issues/864))
129
+
10
130
  ## [0.77.1] — 2026-09-17
11
131
 
12
132
  ### Fixed
@@ -5349,7 +5469,8 @@ shell-script template that branches on these codes.
5349
5469
 
5350
5470
  First skeleton. Not functional end-to-end yet.
5351
5471
 
5352
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.77.1...HEAD
5472
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.78.0...HEAD
5473
+ [0.78.0]: https://github.com/ffroliva/gflow-cli/compare/v0.77.1...v0.78.0
5353
5474
  [0.77.1]: https://github.com/ffroliva/gflow-cli/compare/v0.77.0...v0.77.1
5354
5475
  [0.77.0]: https://github.com/ffroliva/gflow-cli/compare/v0.76.0...v0.77.0
5355
5476
  [0.76.0]: https://github.com/ffroliva/gflow-cli/compare/v0.75.0...v0.76.0
@@ -16,7 +16,7 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
16
16
 
17
17
  ### Flow is migrating to `flow.google.com`; generation coverage is partial but includes images
18
18
 
19
- - **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / Pro, the four aspect ratios its radiogroup was enumerated with (16:9, 4:3, 1:1, 9:16), and count 1–4; `3:4` had no radio in that enumeration and is refused before submit rather than reported as selector drift. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video end frames, video refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character` is NOT in that list any more** — `character create` and `character list` work on the migrated host. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
19
+ - **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / Pro, all five aspect ratios its radiogroup renders (16:9, 4:3, 1:1, 3:4, 9:16 3:4 appeared by 2026-09-17, #864), and count 1–4. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video frame refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character` is NOT in that list any more** — `character create` and `character list` work on the migrated host. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
20
20
  - **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
21
21
  - **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
22
22
  - **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
@@ -55,9 +55,8 @@ the clip). Two real clips were generated this way on 2026-09-05 — spike
55
55
  `docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`. Routing
56
56
  (`GFLOW_CLI_FLOW_HOST=auto`): flow.google.com is the **default** host for that
57
57
  command on every account — moved or not; `flow.google.com` forces it for
58
- everything, and `labs.google` switches the migrated composer off. Limits today: `--project` is required (project creation from the
59
- migrated editor is not ported), and `t2v`, `i2v` from a local `--initial-frame` (no end frame,
60
- no UUID/`@Name` frame — the migrated Frames picker exposes no media id in its DOM, so a frame is
58
+ everything, and `labs.google` switches the migrated composer off. Limits today: only `t2v`, `i2v` from local start (and end) frames (no UUID/`@Name` frame —
59
+ the migrated Frames picker exposes no media id in its DOM, so a frame is
61
60
  found by the run-unique name gflow uploads it under, #792), and `r2v` from local `--ref` files
62
61
  (see the next paragraph), plus `image t2i` and local-file `image i2i` — unsupported
63
62
  forms still exit 36.
@@ -108,7 +107,7 @@ with the distinct, non-retryable exit 36 instead of the misleading
108
107
  `UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
109
108
  accepts the migrated host, so a migrated load is no longer misread as a
110
109
  logged-out session. The generation forms listed above and characters are driven;
111
- scenes, extend, instructions, tools, project creation, and the named reference/model
110
+ scenes, extend, instructions, tools, and the named reference/model
112
111
  variants are the remaining work
113
112
  tracked here — no retry helps for those until each is ported.
114
113
 
@@ -1440,7 +1439,7 @@ key — surfaces as a `RuntimeError` that `auth/cookies.py` normalizes to
1440
1439
 
1441
1440
  - **Status:** Mitigated (crash → typed fail-fast rejection) · **Severity:** Low · **Affects:** all versions
1442
1441
 
1443
- Chromium refuses to open two persistent contexts on the same `user-data-dir` simultaneously. Historically this surfaced as an unhelpful Chromium "ProcessSingleton: profile is locked" error partway through a run. As of the profile-lease hardening (production-readiness plan, slice D1/D3), gflow-cli enforces this itself: a cross-process advisory lock (`ProfileLease`, kernel `flock` on POSIX / `msvcrt.locking` on Windows) guards every profile directory. A second `gflow` invocation, `gflow serve` daemon task, or MCP call against an already-leased profile is rejected **immediately** by default — before any Chrome process starts — with a typed `ProfileLockedError` (**exit code 11**); it never silently corrupts the profile. Since #478, setting [`GFLOW_CLI_LEASE_WAIT_SECONDS`](docs/CONFIGURATION.md#gflow_cli_lease_wait_seconds) opts a waiter into a bounded wait that takes over as soon as the current holder finishes (holders always run to completion and are never asked to release early; same-process contention still fails fast — waiting on yourself would deadlock).
1442
+ Chromium refuses to open two persistent contexts on the same `user-data-dir` simultaneously. Historically this surfaced as an unhelpful Chromium "ProcessSingleton: profile is locked" error partway through a run. As of the profile-lease hardening (production-readiness plan, slice D1/D3), gflow-cli enforces this itself: a cross-process advisory lock (`ProfileLease`, kernel `flock` on POSIX / `msvcrt.locking` on Windows) guards every profile directory. A second `gflow` invocation, `gflow serve` daemon task, or MCP call against an already-leased profile is rejected **immediately** by default — before any Chrome process starts — with a typed `ProfileLockedError` (**exit code 11**); it never silently corrupts the profile. Since #478, setting [`GFLOW_CLI_LEASE_WAIT_SECONDS`](docs/CONFIGURATION.md#gflow_cli_lease_wait_seconds) opts a waiter into a bounded wait that takes over as soon as the current holder finishes (holders always run to completion and are never asked to release early; same-process contention still fails fast — waiting on yourself would deadlock). Since #864 an MCP server waits 180 s by default, and queues its own calls on one profile rather than rejecting the second.
1444
1443
 
1445
1444
  **Workaround:** use different profiles for parallel work — different profiles acquire independent leases and run fully concurrently.
1446
1445
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.77.1
3
+ Version: 0.78.0
4
4
  Summary: CLI and MCP server for Google Flow — drive Veo text-to-video, image-to-video and Imagen image generation from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Documentation, https://ffroliva.github.io/gflow-cli/
@@ -45,7 +45,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
45
45
  # Deliberately NOT pinned: google-chrome-stable. Chrome's apt repo keeps only the current
46
46
  # build, so a pinned version stops resolving within weeks. The trade-off is that this
47
47
  # layer caches indefinitely and a rebuild is what picks up a newer Chrome.
48
- ARG GFLOW_VERSION=0.77.1
48
+ ARG GFLOW_VERSION=0.78.0
49
49
  RUN pip install --no-cache-dir "gflow-cli==${GFLOW_VERSION}"
50
50
 
51
51
  VOLUME ["/data"]
@@ -284,9 +284,9 @@ GFLOW_CLI_AUTH_LOGIN_TIMEOUT=120 gflow auth login # abort after 2 minutes
284
284
 
285
285
  **What:** How long a command waits for another gflow process to release the profile lease before giving up with `ProfileLockedError` (exit 11). The default `0` keeps the historical fail-fast behavior. With a positive value, the waiter polls the kernel lock (0.5 s cadence) and simply takes over when the current holder — a CLI command or a `gflow serve` daemon task, both of which release at their natural end — finishes. Holders are never interrupted or asked to release early.
286
286
  **Values:** `0`–`3600` seconds (fractions allowed)
287
- **Default:** `0` (fail fast)
287
+ **Default:** `0` (fail fast) for CLI commands; `180` under `gflow mcp run` / `gflow serve`, where no human is there to retry — unless you set it yourself, in the environment or a `.env` file.
288
288
  **Note:** Same-process contention always fails fast regardless of this setting — the holder is the same process, so waiting would deadlock. See [KNOWN_ISSUES § Same profile can't be used in parallel](../KNOWN_ISSUES.md#same-profile-cant-be-used-in-parallel).
289
- **Shipped in:** #478.
289
+ **Shipped in:** #478; MCP default #864.
290
290
 
291
291
  ### `GFLOW_CLI_DB_PATH`
292
292
 
@@ -361,11 +361,11 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
361
361
 
362
362
  **What:** Which Flow frontend gflow drives. Google has moved Flow from `labs.google/fx/tools/flow` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — measured 2026-09-14, the old labs URL answers **HTTP 308 Permanent Redirect** on every account we tested. The two are the same product (the new frontend's own root element is `aisandbox-root`) on different widget toolkits and different wire protocols, so each has its own driver. Which host you are served does **not** tell you which capabilities work — see [the survey](../docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md).
363
363
  **Values:**
364
- - `auto` (default) — **`flow.google.com` is the default host for every video request it can serve today** (`video t2v`, local-file `video i2v` and `video r2v`, all with `--project`). Image requests use the migrated composer for `image t2i` and local-file `image i2i` where `flow.google.com` is what Flow serves, and stay on labs where labs is. A request the new host cannot serve keeps the labs driver where labs is what Flow serves; where flow.google.com is, there is no labs fallback and unsupported forms exit 36/11 before submit.
364
+ - `auto` (default) — **`flow.google.com` is the default host for every video request it can serve today** (`video t2v`, local-file `video i2v` and `video r2v`; with no `--project`, one is created first, #864). Image requests use the migrated composer for `image t2i` and local-file `image i2i` where `flow.google.com` is what Flow serves, and stay on labs where labs is. A request the new host cannot serve keeps the labs driver where labs is what Flow serves; where flow.google.com is, there is no labs fallback and unsupported forms exit 36/11 before submit.
365
365
  - `flow.google.com` — force the migrated composer for everything, including what it cannot serve yet (those requests then exit 36/11 instead of falling back).
366
366
  - `labs.google` — never use the migrated composer; where Flow serves `flow.google.com`, requests fail with exit 36 (kill switch).
367
367
  **Default:** `auto`
368
- **Scope today:** the migrated composer covers `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i`. Images support Nano Banana 2 / Pro, the four aspect ratios enumerated on that host (16:9, 4:3, 1:1, 9:16 — `3:4` was not present and is refused before submit) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. An end frame, UUID/name references, character entities, Agent instructions, Imagen 4, scenes, extend, instructions and tools are not ported yet and fail before submit where Flow serves flow.google.com. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
368
+ **Scope today:** the migrated composer covers `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i`. Images support Nano Banana 2 / Pro, all five aspect ratios (16:9, 4:3, 1:1, 3:4, 9:16 — `3:4` was added to that host's radiogroup by 2026-09-17, #864) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. Local-file start+end frames (`--initial-frame` + `--end-frame`) are ported (#639). Frames or references given by UUID/`@Name`, character entities, Agent instructions, Imagen 4, scenes, extend, instructions and tools are not ported yet and fail before submit where Flow serves flow.google.com. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
369
369
 
370
370
  ### `GFLOW_CLI_PREFER_CLASSIC` *(deprecated — use `GFLOW_CLI_UI_MODE=classic`)*
371
371
 
@@ -105,6 +105,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
105
105
  **"Should I use an `@mention`, `--reference-entity`, or `--ref` to tag an asset?"** → [REFERENCE_STRATEGIES](REFERENCE_STRATEGIES.md) — saved named identity → `@Name`/`--reference-entity`; one-off image → `--ref`
106
106
  **"How does Flow's media library / picker actually behave (names, tabs, scrolling, listing)?"** → [MEDIA_LIBRARY](MEDIA_LIBRARY.md) — identity = UUID, names are async AI captions; grid is virtualized; full pitfall table
107
107
  **"How do I turn a terse prompt into a vivid one before generating?"** → `--tool creative-director:style=cinema` on any generation command — see [PROMPT_EXPANSION](PROMPT_EXPANSION.md) · framework: [TOOLS](TOOLS.md)
108
+ **"Where is the page that explains X, right now, without leaving the terminal?"** → run `gflow docs` (list), `gflow docs <topic>` (print), `gflow docs --search "<two words>"` (find the line) — see [USAGE § `gflow docs`](USAGE.md#gflow-docs). The pages ship inside the wheel, so it works with no checkout
108
109
  **"What tools are available and what styles do they support?"** → run `gflow tools list` / `gflow tools show creative-director` — see [TOOLS](TOOLS.md)
109
110
  **"How do I make Flow's agent follow a style/reference across a project's generations?"** → agent instruction cards — ephemeral `-i "text"` (shipped) or the persistent `gflow instructions` group with a generic `--ref` (image or character), see [INSTRUCTIONS](INSTRUCTIONS.md)
110
111
  **"What preset voices can a character use?"** → run `gflow character voices` — see [USAGE § `gflow character voices`](USAGE.md#gflow-character-voices)
@@ -160,7 +161,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
160
161
  **"`gflow auth status` says verified but `gflow credits` returns 401 — which is lying?"** → neither. [MCP § 6.1 Which cohort is this account in?](MCP.md#61-first-question-which-cohort-is-this-account-in) — Google moves accounts onto `flow.google.com` in more than one step, and on some cohorts labs still authenticates while the `ya29` Bearer that aisandbox REST needs is gone. Both raise sites behind it now name that cause; on a migrated account SAPISID is usually fine and **re-running `gflow auth login` does not help** ([#795](https://github.com/ffroliva/gflow-cli/issues/795), [#791](https://github.com/ffroliva/gflow-cli/issues/791))
161
162
 
162
163
  **"Which Flow UI arm does a run require, and why did it exit 2 or 28?"** → [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode) (`auto` ≡ `classic` for **both** images and video — video since v0.57.0/#299, images since #595; unreachable classic aborts pre-submit with exit 28, $0; explicit `agentic` on video exits 2)
163
- **"Which Flow frontend does a run drive — labs.google or the migrated flow.google.com — and why did it exit 36 or 11?"** → [CONFIGURATION § GFLOW_CLI_FLOW_HOST](CONFIGURATION.md#gflow_cli_flow_host) (`auto` = flow.google.com for every request it can serve — `t2v`, `i2v` from a local `--initial-frame`, `r2v` from local `--ref` files, `image t2i`, and `image i2i` from local files, with `--project`, on moved and unmoved accounts; `flow.google.com` forces it; `labs.google` is the kill switch. On a moved account an end frame, a UUID/`@Name` frame, references by `@Name`/`--reference-entity` and everything except `t2v`/`i2v`/`r2v` exit 36, non-retryable, and a missing `--project` exits 11) · recon: [character surface + reCAPTCHA mint](superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md), [migrated-host wire protocol](superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md), [handoff mechanism](superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md), [agent mode hides the settings trigger](superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md), [frames attach (i2v)](superpowers/spikes/2026-09-05-migrated-frames-attach.md) · evidence: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (t2v), [LIVE_VERIFICATION_v0.69.0](LIVE_VERIFICATION_v0.69.0.md) (i2v from a local start frame, v0.69.0), [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (r2v on the migrated host; character create verified there in #703)
164
+ **"Which Flow frontend does a run drive — labs.google or the migrated flow.google.com — and why did it exit 36 or 11?"** → [CONFIGURATION § GFLOW_CLI_FLOW_HOST](CONFIGURATION.md#gflow_cli_flow_host) (`auto` = flow.google.com for every request it can serve — `t2v`, `i2v` from a local `--initial-frame`, `r2v` from local `--ref` files, `image t2i`, and `image i2i` from local files, with `--project`, on moved and unmoved accounts; `flow.google.com` forces it; `labs.google` is the kill switch. On an account served flow.google.com a UUID/`@Name` frame, references by `@Name`/`--reference-entity` and everything except `t2v`/`i2v` (local start, and local start+end since #639)/`r2v` exit 36, non-retryable, and a missing `--project` exits 11) · recon: [character surface + reCAPTCHA mint](superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md), [migrated-host wire protocol](superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md), [handoff mechanism](superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md), [agent mode hides the settings trigger](superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md), [frames attach (i2v)](superpowers/spikes/2026-09-05-migrated-frames-attach.md) · evidence: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (t2v), [LIVE_VERIFICATION_v0.69.0](LIVE_VERIFICATION_v0.69.0.md) (i2v from a local start frame, v0.69.0), [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (r2v on the migrated host; character create verified there in #703)
164
165
  **"Will this get my Google account flagged or banned? What protects me?"** → [ACCOUNT_SAFETY.md](ACCOUNT_SAFETY.md) — the operational answer in one place: rate limit vs WAF block vs ban (they are different), what the tool does to stay unremarkable (headed real Chrome, ±25% interaction jitter, 0.5–1.5 s submission pacing, one project per run, isolated profiles, refuse-don't-retry), what it deliberately does **not** do (no proxies, no fingerprint spoofing, no headless unlock), the knobs, the [#241](https://github.com/ffroliva/gflow-cli/issues/241) field data on what actually triggers a 403, and what we cannot promise. Legal statement: [DISCLAIMER](../DISCLAIMER.md)
165
166
 
166
167
  **"I got a 403 / `PUBLIC_ERROR_UNUSUAL_ACTIVITY` — what now?"** → [ACCOUNT_SAFETY § When Google does push back](ACCOUNT_SAFETY.md#when-google-does-push-back) (stop, cool down 30–60 min, use real Chrome meanwhile, switch profile, widen jitter); cadence evidence in [DEBUGGING § WAF cadence](DEBUGGING.md#waf-cadence); full entry in [KNOWN_ISSUES](../KNOWN_ISSUES.md)
@@ -169,7 +170,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
169
170
  **"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)
170
171
  **"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
171
172
  **"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
172
- **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.77.1](LIVE_VERIFICATION_v0.77.1.md) (**a four-fix patch release, verified 2026-09-17 at ZERO cost.** The headline is #846: the published package could not run a single interactive command on a clean Windows install, because `ConsoleRenderer(colors=True)` needs `colorama` and nothing declared it. Verified as a controlled A/B on a fresh Python 3.13 venv — `SystemError` before, exit 33 after — plus an arm with stderr piped that shows why the AUTO/JSON split hid this from every CI job, and the MCP twin run separately. #848's import probe is exercised against a **deliberately broken venv** and an intact one, including the contract that a probe which cannot run reports nothing rather than reporting breakage. #852 is re-measured on the release head: 40 000 base64-shaped chars fall from 12.07 s to 0.020 ms with identical output on Workspace and custom domains. **#849 is a NAMED BLOCKER, not an omission** — its end-to-end behaviour needs a fresh interactive Google sign-in, which no agent can perform; its live A/B is recorded on PR #851 and its e2e file re-ran 4/4 here. **Seven live e2e failures are recorded rather than hidden**, and controlled: the release changes exactly four source files and none of them is a failing test's module.) · previous: [LIVE_VERIFICATION_v0.77.0](LIVE_VERIFICATION_v0.77.0.md) (**the migrated-host login lockout (#791), verified as a controlled A/B on a real Google **Workspace** account at ZERO cost — same profile, same cookies untouched between arms, so the only variable is the code: exit 8 with the Chrome marker rolled back and `channel_for_profile` collapsed to `None`, then exit 0 with the marker intact and the account recorded. The refusal path is measured too — of 10 local profiles, 5 reproduce #791 and exactly one carries both required cookies: 4 refusals, 1 upgrade, 0 false positives. v0.76.0 recorded this fix as **withdrawn**; the approach that shipped is a different one, server-attested on the landing URL rather than on client-rendered DOM. An earlier revision gated auth on an `@gmail.com`-only pattern that silently declined every custom domain — the account used here is one, which is why this is its verification. **#796 is reproduced and prevented**, not merely reported: it was filed as *'not yet reproduced end-to-end'*. **Two rows are named blockers, not omissions:** the MCP Registry publish (#841) cannot be rehearsed before a real tag push, so this release is its first exercise; and the migrated-host generation e2e cannot run here at all — every account bounces to `/about`, A/B-controlled against `develop` so it is not mistaken for a regression.) · previous: [LIVE_VERIFICATION_v0.76.0](LIVE_VERIFICATION_v0.76.0.md) (**a diagnostics-and-distribution release, verified 2026-09-16 at ZERO cost — no Veo credits, no image generation, no Flow submit.** The decisive arm is #833's **negative** control, run first-hand on two real accounts rather than relayed: `flow-pinhole-unavailable-screen` is **0** on both `ffroliva` and `denon82` while `aisandbox-root` is **1**, so the guard does not fire on accounts that HAVE Flow access and the zero is a real absence rather than a page that never booted — a guard with only a positive arm is indistinguishable from one that is permanently on. Both accounts settled at **`/about`**, which is the state that broke this release's *withdrawn* #791 oracle, and the exit-39 signal reads a component that only exists on the unavailable screen, so `/about` cannot mimic it. mcpservers.org is verified with a **404 negative control** because the listing 403s to `curl` and a naive check would have called the link dead. **#791 is NOT in this release and was withdrawn rather than deferred**: a fix passed eight council dimensions and was then refuted by a five-day-old spike nobody had routed to it — Flow's `/about` hop is decided client-side with zero requests to Flow, and *"the backend grants access while the frontend declines to open it"* (#756), so the probe would have reported authenticated users as logged out, reintroducing #791 as its own cure; the e2e caught it by going red on a live account whose state moved mid-session. **Two rows are blocked by the platform rather than by effort:** the Docker sign-in needs a WSL-integrated Docker host, and the MCP Registry publish cannot be observed until this very tag reaches `main`, since both triggers resolve the workflow from the default branch.) · previous: [LIVE_VERIFICATION_v0.75.0](LIVE_VERIFICATION_v0.75.0.md) (**a distribution-and-hardening release, verified 2026-09-15 on `ffroliva` at ZERO cost — no Veo credits, no image generation, no Flow submit.** The `gflow serve` token fix is an **A/B against the released 0.74.0 wheel from PyPI**, not a diff read: the token was *set* in both arms, so the probe measures whether it is checked — before, `no token 200/200` with 13 tools listed and `wrong 200/200`; after, `401/401` with zero tools and `WWW-Authenticate: Bearer realm="gflow"`, while the correct token still gets 200. Loopback DNS-rebinding was re-confirmed at **421**/**403** because the fix forwards the bind host and getting that wrong would silently disable protection that works today — and an earlier draft of the accompanying advisory claimed that protection was *disabled*, a false claim caught by measuring rather than re-reading. #813's guard is verified against a **real wheel in a real venv installed without extras**, the arm first proving it is in that state (`av present: False PIL present: False`); the decisive row is that a **nonexistent** manifest still exits **20** on the dependency error rather than file-not-found, which is what shows the guard precedes the manifest read and not merely the generation. The Rich escape fix is verified on the **console render separated from the structlog JSON** — matching the JSON line would have been a false pass, since `--json` was never affected — with a **neutered control** through the same Rich version reproducing the bug exactly: `UNESCAPED -> pip install 'gflow-cli'` against `ESCAPED -> pip install 'gflow-cli[chain]'`. Also: `gflow-cli.exe` exists in the built wheel so `uvx gflow-cli` resolves at all, and the wheel carries 138 entries with **zero** ZIP duplicates. **Three items recorded as NOT verified rather than omitted:** a successful multi-link `chain` run spends Veo credits and stays outstanding e2e debt on #813 — what changed is the refusal path, which *is* verified; `gflow credits` against a working balance is impossible here because the account still returns 401, pre-existing **#795** and unrelated to this release; and the SSE arm of the token fix was exercised on loopback only, a deliberate scope limit, since binding a LAN address to test it would put an authenticated daemon on a live network for the run. **Two rows are blocked by the platform rather than by effort:** the PyPI metadata and the MCP Registry listing are both unobservable until this release is uploaded — PyPI renders the last artefact's metadata, and `mcp-publisher` reads its ownership token out of the *published* README.) · previous: [LIVE_VERIFICATION_v0.74.0](LIVE_VERIFICATION_v0.74.0.md) (**the migrated driver's run-unique uploads and its Frames-picker confirm, plus the `credits` remediation, verified 2026-09-14 on `ffroliva` at ZERO cost — every arm is a read or an upload-and-stop.** The confirm branch is the interesting one: this cohort's picker closes on its own, so the branch would never execute against live Flow by accident, and the e2e drives `FRAME_COMMIT_GRACE_S` to **0.001** so the grace expires before Flow can auto-close and **every** run enters it — the difference between a named blocker and an unrun claim. A *genuinely stuck* picker still cannot be produced here and stays `Refs #792`, verifier the reporter. #795 was verified on the cohort it is for, because this account is now in it — `auth status` green, `credits user` exit **3** with `detail` `credits endpoint returned 401` and `route: credits`, where v0.73.2 printed the class-default *"SAPISID cookie missing… re-run `gflow auth login`"*, advice that is wrong in every word there and that can roll a profile's strategy marker back and start the #791 spiral; the `credits list --json` envelope carries the per-profile `remediation_hint` that used to be dropped. **Two items recorded as NOT verified rather than omitted:** #799's exit-25 raise site needs an account in the agent-only cohort — the maintainer's accounts are served `flow.google.com` but still have the recoverable agent chip, so the state is structurally unreachable on them, a named blocker and #799 stays open; and neither `r2v` nor `i2i` had its own attach path driven to completion — `r2v` was not attempted (its e2e spends Veo credits), while `i2i` **was** attempted twice and failed both times at exit 23, before reaching the code under test, because the `--project` UUID came from `gflow project list` (the aisandbox catalog) and those ids 404 on `flow.google.com` — a harness error, recorded rather than dropped, which left a side finding: gflow reports Flow's own `/404?reason=project` as `UiSelectorDriftError`, blaming our selectors for Flow's 404. **#791 is not fixed and was not attempted blind** — all nine local profiles were probed at $0 and none is in the #791 state (SAPISID + a live `flow.google.com` session + no labs NextAuth token); four print its exact symptom string and none of them is it, because that string is also what a stale profile says.) · previous: [LIVE_VERIFICATION_v0.73.2](LIVE_VERIFICATION_v0.73.2.md) (**the blank incident bundle, reproduced and then cured by a committed e2e test, 2026-09-12 on `ffroliva` at ZERO cost — every arm fails before submit.** The decisive layer is an **A/B run through the same instrument**, not an inspection: on `develop` the new test FAILS in 46.3 s and prints the bundle it got — `tag_counts.div = 0`, `title.length = 0`, `host_category = "other"`, a 4,254-byte screenshot — which is field-for-field the signature [#792](https://github.com/ffroliva/gflow-cli/issues/792) reported from a different account, a different OS and a different command; on the fix it PASSES in 37.8 s with `div` **25**, `title.length` **81**, `host_category` **`flow_app`**, `route` `/404` and a 38.4 KB screenshot. Both arms exit **23** on the same `.settings-trigger-button` drift at `flow.google.com/404?reason=project`, so the arms differ only in what was *captured*, never in what failed. **The reporter's own bundle contained the refutation of their diagnosis**: viewport 1280x720 is `client.py`'s client-owned page, not the 1920x1080 a stray transport tab would have — it was always the driven page, photographed one navigation too late, and the portrait correlation had no mechanism behind it. The existing quality benchmark could not have caught this: it captures deliberately on a **healthy** page, so it graded only bundles that were never at risk. **Recorded as NOT verified rather than omitted:** #796's `PROFILE_MARKER_MISSING` is offline-only because its live trigger is a cookie-store **decryption** failure, which does not occur on Windows/DPAPI — it is the macOS Keychain path of [#768](https://github.com/ffroliva/gflow-cli/issues/768), a **named external blocker**, and the issue stays open; a synthetic attempt to force it failed informatively, since a corrupt store raises `sqlite3.DatabaseError`, bypasses the marker gate and still prints "check network connectivity" — the same misdirection from a different trigger, untouched here. #795's remediation string is unit-asserted only, and the *other* half of #795 — `credits` being labs-only on migrated accounts — is **not fixed**.) · previous: [LIVE_VERIFICATION_v0.73.1](LIVE_VERIFICATION_v0.73.1.md) (**Google's `glue` consent bar covering the migrated composer, measured and then cured, 2026-09-11 on `ci-probe` for one image generation and no Veo credits.** The premise was nearly rejected: both prior sightings of that selector in this repo are labs.google, and the 2026-09-10 spike had read 159 DOM samples on this exact host and project and watched the click land 3/3 — it simply never looked for a cookie bar. Seventeen hours later the bar was up: `position: fixed`, `z-index: 1000`, spanning y 547-655 of a 655 px viewport, with `elementFromPoint` over the settings trigger AND over the image submit both returning `span#glue-cookie-notification-bar-1-label` in **0 of 5** rendered samples hit-testable. **The control arm is what makes it a cure rather than a coincidence**: the same probe re-run through the driver's own `_dismiss_cookie_bar` restored both controls to **4/4**, one attempt, no error. A full `gflow image t2i` then ran end to end on the merged code — `status: ok`, a 807,761-byte `ffd8ffe0` JPEG that Pillow reads as 1376x768 RGB, matching the requested 16:9 and the reply's own dimensions, with `migrated.editor_ready` at 2.0 s and **no** `cookie_bar_not_dismissed`. A side finding the control arm produced by accident: the bar's buttons are `__accept` then `__reject` in DOM order, so anything taking "the first button" accepts cookies for the operator — the shipped fix anchors on reject. **Three items recorded as NOT verified rather than omitted:** the cure against a live bar outside the browser, because this release's own control arm consumed the consent on the only profile that had it; **prevalence**, because the second profile never reached an editor (both arms redirected to `/about`) so it is one account blocked and one already-consented, and KNOWN_ISSUES says so rather than generalising from n=1; and the video path live, which shares the identical function on the identical control but spends Veo credits.) · previous: [LIVE_VERIFICATION_v0.73.0](LIVE_VERIFICATION_v0.73.0.md) (**four error paths that stopped lying about what went wrong, verified 2026-09-10 on `ci-probe` and `denon82` at $0 — no run below reaches a Veo submit.** The decisive arm is an **A/B**, not an inspection: the pre-fix run printed an `accounts.google.com` challenge URL together with the OAuth `state` and `client_id`, and the identical command after the fix gave the same exit 38 and the same landing named with **five secret matches down to zero** — reading the post-fix output alone would only have shown that *these* secrets were absent. A second arm **falsified a claim already written into PR #775's body**: it said the change fixed the RED canary, and the live run showed `denon82` had moved to `accounts.google.com` mid-run, a landing the classifier excluded **by design**, with a unit test encoding the wrong reason — the offline suite was green throughout and could not have caught it. #776's happy path is verified by a real `gflow image t2i` (exit 0, 367 135-byte JPEG, `image_settings_applied` and `prompt_typed` both present, so **three of the four converted click sites** clicked successfully through the new helper); its **failure** path is real Chromium driving a page we wrote, which proves the mechanism and explicitly **not** that Flow still produces that state. **Three items recorded as NOT verified rather than omitted:** the `/about` redirect stopped reproducing (**0/5**, reported as *unmeasured* rather than argued into a retry flag), the `/fx/api/auth/*` landing moved before the run reached it, and #764's *success* path — an external contribution whose error boundary this release verifies but whose auto-selection needs an account currently behind a Google password challenge. The fourth converted click site is the **video** submit, unrun because it spends Veo credits, named rather than implied.) · previous: [LIVE_VERIFICATION_v0.72.0](LIVE_VERIFICATION_v0.72.0.md) (**auto-closing `gflow auth login`, verified 2026-09-09 on a migrated account at $0 across six runs.** Four paths: auto-close fires (`probe=in_context` at `elapsed_s` **84.8**, reproduced 3x), a manual close still verifies from disk (exit 0, never exit 12), `--browser auto` selects and completes, and a window closed **mid-2FA** is noticed in **2 s** (exit 8) where it previously ran the full 600 s deadline with the session endpoint touched **zero** times. **Two runs were discarded rather than counted**, and that is the useful part: the first returned exit 0 at `elapsed_s: 0.2` because a throwaway profile had survived the previous session and nobody signed in — a cached session reading as a clean pass — and three attempts at the manual-close path all returned exit 0 while being the *auto-close* path in disguise, separable only by an **absent** `probe=in_context`. The manual path was obtained by widening the poll interval for one run so the competing branch could not fire; the 2FA path by killing the profile's own Chrome, because hand-timing lost every race on a host that completes passkey sign-in in ~15 s. **Recorded as NOT verified rather than omitted:** the migrated-host image slice (#692) was **re-run this cycle** — CLI `t2i` PASSED first-hand on a moved account, while the queued-MCP `i2i` twin failed with a typed non-retryable exit 27 whose **cause is unknown** — some dialog opened after the file was chosen and no `maseQ` left the page, on an account that has ALREADY consented, so the message's "most likely the one-time upload-terms dialog" does not fit; no incident bundle was written, so nothing names the dialog, and it is filed for a spike rather than guessed; the subprocess fallback is unit-tested only; and the OAuth-callback *mechanism* behind the poll fix is **inferred, not proven** — a host-only gate does not exclude NextAuth's callback, since it runs on the app's own origin, yet all four sign-ins passed under it, so #769 carries the spike that would settle it.) · previous: [LIVE_VERIFICATION_v0.71.1](LIVE_VERIFICATION_v0.71.1.md) (**two migrated-host error paths stopped blaming the wrong thing, 2026-09-08, $0 across three profiles.** The agent-mode recovery landed earlier in this same release (#749) and worked, but its first cut collapsed three outcomes into one message — chip clicked / chip found but click blocked / chip clicked and mode still on — so a modal eating the click sent users to toggle a chip that was never the problem, and genuine selector drift *after* the mode was left was filed under an account setting the driver had already changed. Verified by an e2e that drives the account INTO agent mode and carries its own neutered-selector control; run **twice**, because review fixes landed after the first run and it no longer covered the code. **The larger find:** an account's FIRST upload on this host is blocked by Flow's one-time *"Rights to use this image"* dialog, which renders *after* the file chooser hands the file over — so `_dismiss_dialog` never sees it and the driver spent 60 s waiting for a request the page had already declined to make, then advised re-encoding the image. Six runs on `ci-probe` close the chain: guard fires while the dialog is up → owner-authorised accept → uploads (`media_id 8914400f`) → fresh session uploads clean with `dialog: None`. The order was forced, because the dialog is one-off and accepting it destroys the failing state — so the guard was written and verified BEFORE anything was clicked, and its firing branch is now unrepeatable here. `maseQ` is confirmed **not** renamed (six uploads, three profiles), killing #719's top hypothesis. Also: Flow's queue listing is on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, and two `abra_r2v_8s` records sat at status 6 for ~20 h unseen by any CLI command (#741). Three documents are corrected rather than patched — a KNOWN_ISSUES entry that told #719's reader this dialog did not affect gflow-cli, and a v0.71.0 host label calling `ci-probe` *labs* when it is migrated, which helped a credit-based theory survive four runs. Recorded as NOT verified: #719's second failure shape — an upload request that leaves the page and is never answered, ~1 run in 4 — which is unfixed and keeps #719 open.) · previous: [LIVE_VERIFICATION_v0.71.0](LIVE_VERIFICATION_v0.71.0.md) (**`gflow character create --voice` verified end to end for the first time, 2026-09-07 on profile `ffroliva`.** Before this release a repo-wide grep for `--voice` across `tests/e2e/` matched **nothing** — every voice test was a unit test of the hardcoded `VOICES` constant and the one that looked live parsed a fixture, so a voice that silently failed to attach was invisible to the whole suite while the command exited 0. A live create + `character show` read-back settles a contradiction between two of our own documents: `sent='Charon' stored='Charon' identical=True`, so the Capitalized canonical form round-trips and `CHARACTER_RECON.md`'s "preset id is the lowercased name" does not describe today's wire. Both docs also now record that `personalityNotes` is **Agent-scoped** per Flow's own editor copy, not a control on the audio engine. **A claim that was in the code is overturned:** the `_unported_form` entity guard said the submit "never produces a reply" and that the backend refuses — in fact `MZZa6b` replies with a null payload and the generation is **accepted and queued** (Flow types it `abra_r2v_8s` and renders it); the failure is the *observer*, which waits out `SUBMIT_REPLY_BUDGET_S` (60 s, calibrated on 4.0–4.6 s replies against an idle queue) and exits 9 while the video is still rendering. The guard stays until the observer is fixed, because a timeout reported on a healthy generation is worse than an explicit refusal. Also verified: credit shortfall reports exit **37** with `_raise_if_out_of_credits` called from **both** give-up paths — and it is *short for the selected model*, not empty (the measured account held **50** and asked for `veo-quality`, which costs **100**); the "+ New project" CTA anchored structurally on `add` (Tier-1 matches **1** where every previous entry matched **0**, control 47 ligature nodes) after this same release first asserted the control did not exist and a $0 run disproved it in one click; and the incident-bundle DOM dump de-blinded — it queried `i.google-symbols` only, so **every bundle a migrated user sent carried an empty ligature list**, which is why #727 and #731 stayed invisible. One item recorded as NOT verified rather than omitted: whether a bound character's **voice reaches rendered audio** (#738) — attachment is proven, application is not, because no entity-bound generation has yet returned a file to measure. The blocker is no longer credits or account access but retrieval, and the measurement is pre-calibrated: plate-bound takes of one character gave **88 / 103 / 118 Hz** against a **4.3 Hz** engine noise floor, so an applied Algenib should sit near its sample's **163.3 Hz**.) · previous: [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (**reference-to-video on the migrated `flow.google.com` host, verified 2026-09-06 on profile `denon82`.** Three r2v runs bound their references every time; the decisive one is semantic rather than structural — two hand-drawn reference images went in and the clip came back carrying the same marker strokes, face and paper texture, which is what separates "Flow bound the reference" from "Flow accepted and ignored it". A four-beat, two-character piece was then produced end to end and joined with the concat filter: 19.000s, 1280x576, `clip_qa` **ok**, A/V **+0.000s**, both actors recognisable across every cut from one face plate plus the canon repeated verbatim. Also verified as exit-code corrections on the real CLI: `-o <existing directory>` now exits **2 in 0.8s** instead of exit 1 after ~2 min **and a billed, orphaned clip**; `character create` on a moved account exits **36 immediately** instead of a bare `RuntimeError` exit 1 after a 20s wait. Four items recorded as NOT verified rather than omitted: #692's original failure could not be reproduced [the reporter's own re-run was on a build without the fix, so it shows the failure is intermittent, not that the fix works]; Flow CHARACTER entities were never exercised because `character create` cannot run on any account available here; `image`/`scene`/`movie`/`extend` all exit 36 on the migrated host and no unmoved account exists here; and the sign-in-interstitial fidelity question from #699 has no bundle evidence either way.) · previous: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
173
+ **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.78.0](LIVE_VERIFICATION_v0.78.0.md) (**generating with no project on `flow.google.com` — and video from a start frame — verified 2026-09-17.** The release exists because labs.google's `project.createProject` is retired — 404 *"Flow RPCs have been deprecated and disabled"* with a labs token, 401 without, 0 successes in 12 across four profiles — and gflow reported the 401 as an expired login. Creation and rename are driven on flow.google.com and read back from Flow's own `jHPbke` / `o8DA4` replies; the CLI and the MCP twin are each exercised separately, and both video paths reach a real submit that is aborted before Flow can bill it. Two failures are recorded and re-tested rather than explained away — one MCP image reply that did not reproduce under a four-run A/B, and a Chrome launch starved by a concurrent coverage run that passed in 36 s alone. The 3:4 image aspect is re-measured on the live radiogroup, five radios where 2026-09-08 saw four. Three items are NOT verified and each names its blocker: no labs-served account, no entitled `/about` account, no non-`en` locale. **#860 is the one thing here that cost credits, deliberately:** the only proof that a start frame binds is a real generation, so ten i2v clips were generated and downloaded on a live migrated account — `migrated.frame_uploaded` → `frame_bound` → `submit_observed` → `download`, the middle event being the one that could not fire before this release. **#859 is recorded as UNOBSERVED, not verified** — its dismissal ran on every one of those runs and no promo modal ever appeared, so the $0 route-intercepted e2e is what covers it. `gflow docs` (#861) is verified from the built wheel, which is its whole contract: 127 topics, `docs/FILE.md:LINE` search hits, no network and no checkout.) · previous: [LIVE_VERIFICATION_v0.77.1](LIVE_VERIFICATION_v0.77.1.md) (**a four-fix patch release, verified 2026-09-17 at ZERO cost.** The headline is #846: the published package could not run a single interactive command on a clean Windows install, because `ConsoleRenderer(colors=True)` needs `colorama` and nothing declared it. Verified as a controlled A/B on a fresh Python 3.13 venv — `SystemError` before, exit 33 after — plus an arm with stderr piped that shows why the AUTO/JSON split hid this from every CI job, and the MCP twin run separately. #848's import probe is exercised against a **deliberately broken venv** and an intact one, including the contract that a probe which cannot run reports nothing rather than reporting breakage. #852 is re-measured on the release head: 40 000 base64-shaped chars fall from 12.07 s to 0.020 ms with identical output on Workspace and custom domains. **#849 is a NAMED BLOCKER, not an omission** — its end-to-end behaviour needs a fresh interactive Google sign-in, which no agent can perform; its live A/B is recorded on PR #851 and its e2e file re-ran 4/4 here. **Seven live e2e failures are recorded rather than hidden**, and controlled: the release changes exactly four source files and none of them is a failing test's module.) · previous: [LIVE_VERIFICATION_v0.77.0](LIVE_VERIFICATION_v0.77.0.md) (**the migrated-host login lockout (#791), verified as a controlled A/B on a real Google **Workspace** account at ZERO cost — same profile, same cookies untouched between arms, so the only variable is the code: exit 8 with the Chrome marker rolled back and `channel_for_profile` collapsed to `None`, then exit 0 with the marker intact and the account recorded. The refusal path is measured too — of 10 local profiles, 5 reproduce #791 and exactly one carries both required cookies: 4 refusals, 1 upgrade, 0 false positives. v0.76.0 recorded this fix as **withdrawn**; the approach that shipped is a different one, server-attested on the landing URL rather than on client-rendered DOM. An earlier revision gated auth on an `@gmail.com`-only pattern that silently declined every custom domain — the account used here is one, which is why this is its verification. **#796 is reproduced and prevented**, not merely reported: it was filed as *'not yet reproduced end-to-end'*. **Two rows are named blockers, not omissions:** the MCP Registry publish (#841) cannot be rehearsed before a real tag push, so this release is its first exercise; and the migrated-host generation e2e cannot run here at all — every account bounces to `/about`, A/B-controlled against `develop` so it is not mistaken for a regression.) · previous: [LIVE_VERIFICATION_v0.76.0](LIVE_VERIFICATION_v0.76.0.md) (**a diagnostics-and-distribution release, verified 2026-09-16 at ZERO cost — no Veo credits, no image generation, no Flow submit.** The decisive arm is #833's **negative** control, run first-hand on two real accounts rather than relayed: `flow-pinhole-unavailable-screen` is **0** on both `ffroliva` and `denon82` while `aisandbox-root` is **1**, so the guard does not fire on accounts that HAVE Flow access and the zero is a real absence rather than a page that never booted — a guard with only a positive arm is indistinguishable from one that is permanently on. Both accounts settled at **`/about`**, which is the state that broke this release's *withdrawn* #791 oracle, and the exit-39 signal reads a component that only exists on the unavailable screen, so `/about` cannot mimic it. mcpservers.org is verified with a **404 negative control** because the listing 403s to `curl` and a naive check would have called the link dead. **#791 is NOT in this release and was withdrawn rather than deferred**: a fix passed eight council dimensions and was then refuted by a five-day-old spike nobody had routed to it — Flow's `/about` hop is decided client-side with zero requests to Flow, and *"the backend grants access while the frontend declines to open it"* (#756), so the probe would have reported authenticated users as logged out, reintroducing #791 as its own cure; the e2e caught it by going red on a live account whose state moved mid-session. **Two rows are blocked by the platform rather than by effort:** the Docker sign-in needs a WSL-integrated Docker host, and the MCP Registry publish cannot be observed until this very tag reaches `main`, since both triggers resolve the workflow from the default branch.) · previous: [LIVE_VERIFICATION_v0.75.0](LIVE_VERIFICATION_v0.75.0.md) (**a distribution-and-hardening release, verified 2026-09-15 on `ffroliva` at ZERO cost — no Veo credits, no image generation, no Flow submit.** The `gflow serve` token fix is an **A/B against the released 0.74.0 wheel from PyPI**, not a diff read: the token was *set* in both arms, so the probe measures whether it is checked — before, `no token 200/200` with 13 tools listed and `wrong 200/200`; after, `401/401` with zero tools and `WWW-Authenticate: Bearer realm="gflow"`, while the correct token still gets 200. Loopback DNS-rebinding was re-confirmed at **421**/**403** because the fix forwards the bind host and getting that wrong would silently disable protection that works today — and an earlier draft of the accompanying advisory claimed that protection was *disabled*, a false claim caught by measuring rather than re-reading. #813's guard is verified against a **real wheel in a real venv installed without extras**, the arm first proving it is in that state (`av present: False PIL present: False`); the decisive row is that a **nonexistent** manifest still exits **20** on the dependency error rather than file-not-found, which is what shows the guard precedes the manifest read and not merely the generation. The Rich escape fix is verified on the **console render separated from the structlog JSON** — matching the JSON line would have been a false pass, since `--json` was never affected — with a **neutered control** through the same Rich version reproducing the bug exactly: `UNESCAPED -> pip install 'gflow-cli'` against `ESCAPED -> pip install 'gflow-cli[chain]'`. Also: `gflow-cli.exe` exists in the built wheel so `uvx gflow-cli` resolves at all, and the wheel carries 138 entries with **zero** ZIP duplicates. **Three items recorded as NOT verified rather than omitted:** a successful multi-link `chain` run spends Veo credits and stays outstanding e2e debt on #813 — what changed is the refusal path, which *is* verified; `gflow credits` against a working balance is impossible here because the account still returns 401, pre-existing **#795** and unrelated to this release; and the SSE arm of the token fix was exercised on loopback only, a deliberate scope limit, since binding a LAN address to test it would put an authenticated daemon on a live network for the run. **Two rows are blocked by the platform rather than by effort:** the PyPI metadata and the MCP Registry listing are both unobservable until this release is uploaded — PyPI renders the last artefact's metadata, and `mcp-publisher` reads its ownership token out of the *published* README.) · previous: [LIVE_VERIFICATION_v0.74.0](LIVE_VERIFICATION_v0.74.0.md) (**the migrated driver's run-unique uploads and its Frames-picker confirm, plus the `credits` remediation, verified 2026-09-14 on `ffroliva` at ZERO cost — every arm is a read or an upload-and-stop.** The confirm branch is the interesting one: this cohort's picker closes on its own, so the branch would never execute against live Flow by accident, and the e2e drives `FRAME_COMMIT_GRACE_S` to **0.001** so the grace expires before Flow can auto-close and **every** run enters it — the difference between a named blocker and an unrun claim. A *genuinely stuck* picker still cannot be produced here and stays `Refs #792`, verifier the reporter. #795 was verified on the cohort it is for, because this account is now in it — `auth status` green, `credits user` exit **3** with `detail` `credits endpoint returned 401` and `route: credits`, where v0.73.2 printed the class-default *"SAPISID cookie missing… re-run `gflow auth login`"*, advice that is wrong in every word there and that can roll a profile's strategy marker back and start the #791 spiral; the `credits list --json` envelope carries the per-profile `remediation_hint` that used to be dropped. **Two items recorded as NOT verified rather than omitted:** #799's exit-25 raise site needs an account in the agent-only cohort — the maintainer's accounts are served `flow.google.com` but still have the recoverable agent chip, so the state is structurally unreachable on them, a named blocker and #799 stays open; and neither `r2v` nor `i2i` had its own attach path driven to completion — `r2v` was not attempted (its e2e spends Veo credits), while `i2i` **was** attempted twice and failed both times at exit 23, before reaching the code under test, because the `--project` UUID came from `gflow project list` (the aisandbox catalog) and those ids 404 on `flow.google.com` — a harness error, recorded rather than dropped, which left a side finding: gflow reports Flow's own `/404?reason=project` as `UiSelectorDriftError`, blaming our selectors for Flow's 404. **#791 is not fixed and was not attempted blind** — all nine local profiles were probed at $0 and none is in the #791 state (SAPISID + a live `flow.google.com` session + no labs NextAuth token); four print its exact symptom string and none of them is it, because that string is also what a stale profile says.) · previous: [LIVE_VERIFICATION_v0.73.2](LIVE_VERIFICATION_v0.73.2.md) (**the blank incident bundle, reproduced and then cured by a committed e2e test, 2026-09-12 on `ffroliva` at ZERO cost — every arm fails before submit.** The decisive layer is an **A/B run through the same instrument**, not an inspection: on `develop` the new test FAILS in 46.3 s and prints the bundle it got — `tag_counts.div = 0`, `title.length = 0`, `host_category = "other"`, a 4,254-byte screenshot — which is field-for-field the signature [#792](https://github.com/ffroliva/gflow-cli/issues/792) reported from a different account, a different OS and a different command; on the fix it PASSES in 37.8 s with `div` **25**, `title.length` **81**, `host_category` **`flow_app`**, `route` `/404` and a 38.4 KB screenshot. Both arms exit **23** on the same `.settings-trigger-button` drift at `flow.google.com/404?reason=project`, so the arms differ only in what was *captured*, never in what failed. **The reporter's own bundle contained the refutation of their diagnosis**: viewport 1280x720 is `client.py`'s client-owned page, not the 1920x1080 a stray transport tab would have — it was always the driven page, photographed one navigation too late, and the portrait correlation had no mechanism behind it. The existing quality benchmark could not have caught this: it captures deliberately on a **healthy** page, so it graded only bundles that were never at risk. **Recorded as NOT verified rather than omitted:** #796's `PROFILE_MARKER_MISSING` is offline-only because its live trigger is a cookie-store **decryption** failure, which does not occur on Windows/DPAPI — it is the macOS Keychain path of [#768](https://github.com/ffroliva/gflow-cli/issues/768), a **named external blocker**, and the issue stays open; a synthetic attempt to force it failed informatively, since a corrupt store raises `sqlite3.DatabaseError`, bypasses the marker gate and still prints "check network connectivity" — the same misdirection from a different trigger, untouched here. #795's remediation string is unit-asserted only, and the *other* half of #795 — `credits` being labs-only on migrated accounts — is **not fixed**.) · previous: [LIVE_VERIFICATION_v0.73.1](LIVE_VERIFICATION_v0.73.1.md) (**Google's `glue` consent bar covering the migrated composer, measured and then cured, 2026-09-11 on `ci-probe` for one image generation and no Veo credits.** The premise was nearly rejected: both prior sightings of that selector in this repo are labs.google, and the 2026-09-10 spike had read 159 DOM samples on this exact host and project and watched the click land 3/3 — it simply never looked for a cookie bar. Seventeen hours later the bar was up: `position: fixed`, `z-index: 1000`, spanning y 547-655 of a 655 px viewport, with `elementFromPoint` over the settings trigger AND over the image submit both returning `span#glue-cookie-notification-bar-1-label` in **0 of 5** rendered samples hit-testable. **The control arm is what makes it a cure rather than a coincidence**: the same probe re-run through the driver's own `_dismiss_cookie_bar` restored both controls to **4/4**, one attempt, no error. A full `gflow image t2i` then ran end to end on the merged code — `status: ok`, a 807,761-byte `ffd8ffe0` JPEG that Pillow reads as 1376x768 RGB, matching the requested 16:9 and the reply's own dimensions, with `migrated.editor_ready` at 2.0 s and **no** `cookie_bar_not_dismissed`. A side finding the control arm produced by accident: the bar's buttons are `__accept` then `__reject` in DOM order, so anything taking "the first button" accepts cookies for the operator — the shipped fix anchors on reject. **Three items recorded as NOT verified rather than omitted:** the cure against a live bar outside the browser, because this release's own control arm consumed the consent on the only profile that had it; **prevalence**, because the second profile never reached an editor (both arms redirected to `/about`) so it is one account blocked and one already-consented, and KNOWN_ISSUES says so rather than generalising from n=1; and the video path live, which shares the identical function on the identical control but spends Veo credits.) · previous: [LIVE_VERIFICATION_v0.73.0](LIVE_VERIFICATION_v0.73.0.md) (**four error paths that stopped lying about what went wrong, verified 2026-09-10 on `ci-probe` and `denon82` at $0 — no run below reaches a Veo submit.** The decisive arm is an **A/B**, not an inspection: the pre-fix run printed an `accounts.google.com` challenge URL together with the OAuth `state` and `client_id`, and the identical command after the fix gave the same exit 38 and the same landing named with **five secret matches down to zero** — reading the post-fix output alone would only have shown that *these* secrets were absent. A second arm **falsified a claim already written into PR #775's body**: it said the change fixed the RED canary, and the live run showed `denon82` had moved to `accounts.google.com` mid-run, a landing the classifier excluded **by design**, with a unit test encoding the wrong reason — the offline suite was green throughout and could not have caught it. #776's happy path is verified by a real `gflow image t2i` (exit 0, 367 135-byte JPEG, `image_settings_applied` and `prompt_typed` both present, so **three of the four converted click sites** clicked successfully through the new helper); its **failure** path is real Chromium driving a page we wrote, which proves the mechanism and explicitly **not** that Flow still produces that state. **Three items recorded as NOT verified rather than omitted:** the `/about` redirect stopped reproducing (**0/5**, reported as *unmeasured* rather than argued into a retry flag), the `/fx/api/auth/*` landing moved before the run reached it, and #764's *success* path — an external contribution whose error boundary this release verifies but whose auto-selection needs an account currently behind a Google password challenge. The fourth converted click site is the **video** submit, unrun because it spends Veo credits, named rather than implied.) · previous: [LIVE_VERIFICATION_v0.72.0](LIVE_VERIFICATION_v0.72.0.md) (**auto-closing `gflow auth login`, verified 2026-09-09 on a migrated account at $0 across six runs.** Four paths: auto-close fires (`probe=in_context` at `elapsed_s` **84.8**, reproduced 3x), a manual close still verifies from disk (exit 0, never exit 12), `--browser auto` selects and completes, and a window closed **mid-2FA** is noticed in **2 s** (exit 8) where it previously ran the full 600 s deadline with the session endpoint touched **zero** times. **Two runs were discarded rather than counted**, and that is the useful part: the first returned exit 0 at `elapsed_s: 0.2` because a throwaway profile had survived the previous session and nobody signed in — a cached session reading as a clean pass — and three attempts at the manual-close path all returned exit 0 while being the *auto-close* path in disguise, separable only by an **absent** `probe=in_context`. The manual path was obtained by widening the poll interval for one run so the competing branch could not fire; the 2FA path by killing the profile's own Chrome, because hand-timing lost every race on a host that completes passkey sign-in in ~15 s. **Recorded as NOT verified rather than omitted:** the migrated-host image slice (#692) was **re-run this cycle** — CLI `t2i` PASSED first-hand on a moved account, while the queued-MCP `i2i` twin failed with a typed non-retryable exit 27 whose **cause is unknown** — some dialog opened after the file was chosen and no `maseQ` left the page, on an account that has ALREADY consented, so the message's "most likely the one-time upload-terms dialog" does not fit; no incident bundle was written, so nothing names the dialog, and it is filed for a spike rather than guessed; the subprocess fallback is unit-tested only; and the OAuth-callback *mechanism* behind the poll fix is **inferred, not proven** — a host-only gate does not exclude NextAuth's callback, since it runs on the app's own origin, yet all four sign-ins passed under it, so #769 carries the spike that would settle it.) · previous: [LIVE_VERIFICATION_v0.71.1](LIVE_VERIFICATION_v0.71.1.md) (**two migrated-host error paths stopped blaming the wrong thing, 2026-09-08, $0 across three profiles.** The agent-mode recovery landed earlier in this same release (#749) and worked, but its first cut collapsed three outcomes into one message — chip clicked / chip found but click blocked / chip clicked and mode still on — so a modal eating the click sent users to toggle a chip that was never the problem, and genuine selector drift *after* the mode was left was filed under an account setting the driver had already changed. Verified by an e2e that drives the account INTO agent mode and carries its own neutered-selector control; run **twice**, because review fixes landed after the first run and it no longer covered the code. **The larger find:** an account's FIRST upload on this host is blocked by Flow's one-time *"Rights to use this image"* dialog, which renders *after* the file chooser hands the file over — so `_dismiss_dialog` never sees it and the driver spent 60 s waiting for a request the page had already declined to make, then advised re-encoding the image. Six runs on `ci-probe` close the chain: guard fires while the dialog is up → owner-authorised accept → uploads (`media_id 8914400f`) → fresh session uploads clean with `dialog: None`. The order was forced, because the dialog is one-off and accepting it destroys the failing state — so the guard was written and verified BEFORE anything was clicked, and its firing branch is now unrepeatable here. `maseQ` is confirmed **not** renamed (six uploads, three profiles), killing #719's top hypothesis. Also: Flow's queue listing is on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, and two `abra_r2v_8s` records sat at status 6 for ~20 h unseen by any CLI command (#741). Three documents are corrected rather than patched — a KNOWN_ISSUES entry that told #719's reader this dialog did not affect gflow-cli, and a v0.71.0 host label calling `ci-probe` *labs* when it is migrated, which helped a credit-based theory survive four runs. Recorded as NOT verified: #719's second failure shape — an upload request that leaves the page and is never answered, ~1 run in 4 — which is unfixed and keeps #719 open.) · previous: [LIVE_VERIFICATION_v0.71.0](LIVE_VERIFICATION_v0.71.0.md) (**`gflow character create --voice` verified end to end for the first time, 2026-09-07 on profile `ffroliva`.** Before this release a repo-wide grep for `--voice` across `tests/e2e/` matched **nothing** — every voice test was a unit test of the hardcoded `VOICES` constant and the one that looked live parsed a fixture, so a voice that silently failed to attach was invisible to the whole suite while the command exited 0. A live create + `character show` read-back settles a contradiction between two of our own documents: `sent='Charon' stored='Charon' identical=True`, so the Capitalized canonical form round-trips and `CHARACTER_RECON.md`'s "preset id is the lowercased name" does not describe today's wire. Both docs also now record that `personalityNotes` is **Agent-scoped** per Flow's own editor copy, not a control on the audio engine. **A claim that was in the code is overturned:** the `_unported_form` entity guard said the submit "never produces a reply" and that the backend refuses — in fact `MZZa6b` replies with a null payload and the generation is **accepted and queued** (Flow types it `abra_r2v_8s` and renders it); the failure is the *observer*, which waits out `SUBMIT_REPLY_BUDGET_S` (60 s, calibrated on 4.0–4.6 s replies against an idle queue) and exits 9 while the video is still rendering. The guard stays until the observer is fixed, because a timeout reported on a healthy generation is worse than an explicit refusal. Also verified: credit shortfall reports exit **37** with `_raise_if_out_of_credits` called from **both** give-up paths — and it is *short for the selected model*, not empty (the measured account held **50** and asked for `veo-quality`, which costs **100**); the "+ New project" CTA anchored structurally on `add` (Tier-1 matches **1** where every previous entry matched **0**, control 47 ligature nodes) after this same release first asserted the control did not exist and a $0 run disproved it in one click; and the incident-bundle DOM dump de-blinded — it queried `i.google-symbols` only, so **every bundle a migrated user sent carried an empty ligature list**, which is why #727 and #731 stayed invisible. One item recorded as NOT verified rather than omitted: whether a bound character's **voice reaches rendered audio** (#738) — attachment is proven, application is not, because no entity-bound generation has yet returned a file to measure. The blocker is no longer credits or account access but retrieval, and the measurement is pre-calibrated: plate-bound takes of one character gave **88 / 103 / 118 Hz** against a **4.3 Hz** engine noise floor, so an applied Algenib should sit near its sample's **163.3 Hz**.) · previous: [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (**reference-to-video on the migrated `flow.google.com` host, verified 2026-09-06 on profile `denon82`.** Three r2v runs bound their references every time; the decisive one is semantic rather than structural — two hand-drawn reference images went in and the clip came back carrying the same marker strokes, face and paper texture, which is what separates "Flow bound the reference" from "Flow accepted and ignored it". A four-beat, two-character piece was then produced end to end and joined with the concat filter: 19.000s, 1280x576, `clip_qa` **ok**, A/V **+0.000s**, both actors recognisable across every cut from one face plate plus the canon repeated verbatim. Also verified as exit-code corrections on the real CLI: `-o <existing directory>` now exits **2 in 0.8s** instead of exit 1 after ~2 min **and a billed, orphaned clip**; `character create` on a moved account exits **36 immediately** instead of a bare `RuntimeError` exit 1 after a 20s wait. Four items recorded as NOT verified rather than omitted: #692's original failure could not be reproduced [the reporter's own re-run was on a build without the fix, so it shows the failure is intermittent, not that the fix works]; Flow CHARACTER entities were never exercised because `character create` cannot run on any account available here; `image`/`scene`/`movie`/`extend` all exit 36 on the migrated host and no unmoved account exists here; and the sign-in-interstitial fidelity question from #699 has no bundle evidence either way.) · previous: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
173
174
  **"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).
174
175
  **"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)).
175
176
  **"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of what was then read as a flapping rollout** (superseded 2026-09-04: the handoff is a one-way per-account flag and exit 36 is non-retryable since). On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true` (then; `false` since 2026-09-04), `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.