gflow-cli 0.71.1__tar.gz → 0.73.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 (1070) hide show
  1. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.env.template +3 -2
  3. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/AGENTS.md +13 -6
  4. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/CHANGELOG.md +268 -1
  5. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/KNOWN_ISSUES.md +102 -16
  6. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/PKG-INFO +3 -3
  7. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/README.md +2 -2
  8. {gflow_cli-0.71.1/website → gflow_cli-0.73.0}/docs/ARCHITECTURE.md +7 -7
  9. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/AUTHENTICATION.md +40 -8
  10. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/CHARACTER_RECON.md +3 -1
  11. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/CONFIGURATION.md +2 -2
  12. {gflow_cli-0.71.1/website → gflow_cli-0.73.0}/docs/DEBUGGING.md +15 -6
  13. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/E2E_TESTING.md +69 -0
  14. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/INDEX.md +4 -2
  15. gflow_cli-0.73.0/docs/LIVE_VERIFICATION_v0.72.0.md +217 -0
  16. gflow_cli-0.73.0/docs/LIVE_VERIFICATION_v0.73.0.md +144 -0
  17. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/MCP.md +7 -1
  18. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/PROJECT_STATUS.md +101 -0
  19. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/SECURITY.md +12 -0
  20. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/USAGE.md +22 -6
  21. {gflow_cli-0.71.1/website → gflow_cli-0.73.0}/docs/USER_GUIDE.md +10 -4
  22. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/medium_tutorial.md +3 -3
  23. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +20 -6
  24. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +29 -0
  25. gflow_cli-0.73.0/docs/superpowers/memory/real-browser-auth-mandatory.md +32 -0
  26. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +39 -0
  27. gflow_cli-0.73.0/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +131 -0
  28. gflow_cli-0.73.0/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +64 -0
  29. gflow_cli-0.73.0/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +68 -0
  30. gflow_cli-0.73.0/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +132 -0
  31. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/llms.txt +1 -1
  32. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/pyproject.toml +1 -1
  33. gflow_cli-0.73.0/scripts/dev/spike_about_redirect_stability.py +144 -0
  34. gflow_cli-0.73.0/scripts/dev/spike_migrated_click_blocked.py +376 -0
  35. gflow_cli-0.73.0/scripts/dev/spike_migrated_image_submit.py +282 -0
  36. gflow_cli-0.73.0/scripts/dev/spike_playwright_chrome_login.py +272 -0
  37. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/gflow-cli/SKILL.md +5 -1
  38. gflow_cli-0.73.0/skills/issue-resolve/SKILL.md +265 -0
  39. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/scenario/SKILL.md +21 -2
  40. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/spike/SKILL.md +40 -1
  41. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/video-production/SKILL.md +1 -1
  42. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/video-production/failure-modes.md +2 -2
  43. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/__init__.py +1 -1
  44. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/client.py +155 -41
  45. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/_common.py +182 -0
  46. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/batchexecute.py +103 -0
  47. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/migrated_composer.py +494 -22
  48. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/ui_automation.py +86 -4
  49. gflow_cli-0.73.0/src/gflow_cli/auth/internal_chromium.py +319 -0
  50. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/real_chrome.py +205 -37
  51. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/browser_manager.py +16 -14
  52. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli.py +29 -1
  53. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/config.py +3 -2
  54. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/redaction.py +33 -11
  55. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/diagnostics.py +7 -2
  56. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/errors.py +92 -18
  57. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/tools.py +2 -0
  58. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/profile_store.py +19 -5
  59. gflow_cli-0.73.0/tests/api/test_bootstrap_chooser.py +312 -0
  60. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_locale_cache.py +34 -0
  61. gflow_cli-0.73.0/tests/api/transports/test_click_attribution.py +274 -0
  62. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_common.py +96 -0
  63. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_migrated_composer.py +313 -4
  64. gflow_cli-0.73.0/tests/api/transports/test_migrated_images.py +361 -0
  65. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/auth/strategies/test_strategies.py +286 -5
  66. gflow_cli-0.73.0/tests/auth/test_account_autoselect.py +192 -0
  67. gflow_cli-0.73.0/tests/auth/test_real_chrome.py +744 -0
  68. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_error_handling.py +19 -4
  69. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/conftest.py +35 -0
  70. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_redaction.py +24 -1
  71. gflow_cli-0.73.0/tests/e2e/test_account_chooser_e2e.py +297 -0
  72. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_auth_verification_e2e.py +24 -0
  73. gflow_cli-0.73.0/tests/e2e/test_click_attribution_bdd.py +263 -0
  74. gflow_cli-0.73.0/tests/e2e/test_landing_state_diagnosis_bdd.py +208 -0
  75. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_migrated_host_e2e.py +42 -27
  76. gflow_cli-0.73.0/tests/features/click_attribution.feature +71 -0
  77. gflow_cli-0.73.0/tests/features/landing_state_diagnosis.feature +37 -0
  78. gflow_cli-0.73.0/tests/features/migrated_host_images.feature +21 -0
  79. gflow_cli-0.73.0/tests/features/test_e2e_binding_guard.py +161 -0
  80. gflow_cli-0.73.0/tests/features/test_migrated_host_images_steps.py +157 -0
  81. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_browser_manager.py +49 -13
  82. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_config.py +12 -2
  83. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_diagnostics_recorder.py +10 -0
  84. gflow_cli-0.73.0/tests/test_errors_classification.py +279 -0
  85. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_marker_registry.py +50 -3
  86. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/worker/test_daemon.py +73 -1
  87. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/uv.lock +20 -10
  88. {gflow_cli-0.71.1 → gflow_cli-0.73.0/website}/docs/ARCHITECTURE.md +7 -7
  89. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/AUTHENTICATION.md +40 -8
  90. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/CONFIGURATION.md +2 -2
  91. {gflow_cli-0.71.1 → gflow_cli-0.73.0/website}/docs/DEBUGGING.md +15 -6
  92. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/E2E_TESTING.md +69 -0
  93. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/KNOWN_ISSUES.md +102 -16
  94. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/MCP.md +7 -1
  95. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/SECURITY.md +12 -0
  96. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/USAGE.md +22 -6
  97. {gflow_cli-0.71.1 → gflow_cli-0.73.0/website}/docs/USER_GUIDE.md +10 -4
  98. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/onboarding-mockup.html +4 -4
  99. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/onboarding.md +3 -3
  100. gflow_cli-0.71.1/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -10
  101. gflow_cli-0.71.1/skills/issue-resolve/SKILL.md +0 -136
  102. gflow_cli-0.71.1/src/gflow_cli/auth/internal_chromium.py +0 -185
  103. gflow_cli-0.71.1/tests/auth/test_real_chrome.py +0 -145
  104. gflow_cli-0.71.1/tests/test_errors_classification.py +0 -158
  105. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.agents/plugins/marketplace.json +0 -0
  106. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/README.md +0 -0
  107. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/active.md +0 -0
  108. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/branch-review.md +0 -0
  109. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/changelog.md +0 -0
  110. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/check.md +0 -0
  111. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/doc-review.md +0 -0
  112. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  113. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  114. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/known-issues.md +0 -0
  115. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/live-verify.md +0 -0
  116. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/llm-council.md +0 -0
  117. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/next.md +0 -0
  118. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/plan.md +0 -0
  119. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  120. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/predict.md +0 -0
  121. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/release.md +0 -0
  122. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/scenario.md +0 -0
  123. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/sonar.md +0 -0
  124. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/spike.md +0 -0
  125. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.claude/commands/gflow/status.md +0 -0
  126. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.gitattributes +0 -0
  127. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/CODEOWNERS +0 -0
  128. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/FUNDING.yml +0 -0
  129. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  130. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/copilot-instructions.md +0 -0
  131. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/dependabot.yml +0 -0
  132. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/ci.yml +0 -0
  133. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/deps-watch.yml +0 -0
  134. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/external-pr-triage.yml +0 -0
  135. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/governance-advisory.yml +0 -0
  136. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/governance-benchmark.yml +0 -0
  137. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/labels.yml +0 -0
  138. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/main-base-guard.yml +0 -0
  139. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/pages.yml +0 -0
  140. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/release.yml +0 -0
  141. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/scorecard.yml +0 -0
  142. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/selector-probe.yml +0 -0
  143. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.github/workflows/star-history-watch.yml +0 -0
  144. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.gitignore +0 -0
  145. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.gitleaks.toml +0 -0
  146. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.pre-commit-config.yaml +0 -0
  147. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/.secrets.baseline +0 -0
  148. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/CLAUDE.md +0 -0
  149. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/CONFIGURATION.md +0 -0
  150. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/CONTRIBUTING.md +0 -0
  151. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/DISCLAIMER.md +0 -0
  152. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/LICENSE +0 -0
  153. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/PLAN.md +0 -0
  154. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/RELEASE.md +0 -0
  155. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/ROADMAP.md +0 -0
  156. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/conftest.py +0 -0
  157. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/deploy/logrotate-pr-triage +0 -0
  158. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docker-compose.yml +0 -0
  159. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/ACCOUNT_SAFETY.md +0 -0
  160. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/AGENT_GUIDE.md +0 -0
  161. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/AGENT_UI_E2E.md +0 -0
  162. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/AGENT_UI_RECON.md +0 -0
  163. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  164. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/CHARACTER.md +0 -0
  165. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/DATA_LAYER.md +0 -0
  166. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/DEMOS.md +0 -0
  167. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/DEVELOPMENT.md +0 -0
  168. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/EXTERNAL_STORAGE.md +0 -0
  169. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/GITHUB.md +0 -0
  170. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  171. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  172. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/INSTRUCTIONS.md +0 -0
  173. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  174. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  175. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  176. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  177. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  178. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  179. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  180. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  181. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  182. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  183. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  184. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  185. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  186. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  187. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  188. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  189. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  190. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  191. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  192. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  193. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  194. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  195. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  196. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  197. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  198. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  199. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  200. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  201. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  202. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  203. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  204. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  205. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  206. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  207. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  208. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  209. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  210. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  211. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  212. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  213. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  214. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  215. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  216. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  217. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  218. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  219. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  220. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  221. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  222. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  223. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  224. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  225. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  226. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  227. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  228. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  229. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  230. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  231. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  232. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  233. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  234. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  235. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  236. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  237. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  238. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  239. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  240. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  241. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  242. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  243. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  244. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  245. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  246. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  247. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  248. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  249. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  250. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  251. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  252. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  253. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/MEDIA_LIBRARY.md +0 -0
  254. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/MOVIE.md +0 -0
  255. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/PROMPT_EXPANSION.md +0 -0
  256. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  257. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/TOOLS.md +0 -0
  258. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/assets/demo-split-pf.gif +0 -0
  259. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/assets/example-run.gif +0 -0
  260. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/assets/examples.webp +0 -0
  261. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/schemas/movie-handoff.schema.json +0 -0
  262. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/sonar-cleanup-tracker.md +0 -0
  263. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/README.md +0 -0
  264. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  265. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  266. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  267. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  268. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  269. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  270. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  271. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  272. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  273. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  274. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  275. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  276. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  277. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  278. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  279. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  280. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  281. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  282. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  283. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  284. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  285. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  286. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  287. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  288. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  289. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  290. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  291. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  292. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  293. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  294. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/release-signing.md +0 -0
  295. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  296. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  297. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  298. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  299. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  300. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  301. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  302. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  303. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  304. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  305. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  306. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  307. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  308. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  309. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  310. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  311. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  312. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  313. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  314. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  315. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  316. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  317. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  318. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  319. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  320. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  321. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  322. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  323. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  324. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  325. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  326. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  327. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  328. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  329. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  330. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  331. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  332. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  333. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  334. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  335. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  336. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  337. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  338. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  339. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  340. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  341. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  342. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  343. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  344. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  345. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  346. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  347. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  348. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  349. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  350. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  351. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  352. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  353. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  354. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  355. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  356. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  357. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  358. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  359. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  360. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  361. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  362. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  363. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  364. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  365. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  366. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  367. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  368. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  369. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  370. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  371. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  372. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  373. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  374. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  375. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  376. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  377. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  378. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  379. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  380. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  381. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  382. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  383. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  384. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  385. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  386. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/README.md +0 -0
  387. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/batch_from_config.py +0 -0
  388. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/multi_prompt_t2i.py +0 -0
  389. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/sample_config.json +0 -0
  390. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/sample_prompts.txt +0 -0
  391. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/single_image_t2i.py +0 -0
  392. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/examples/workflow_chain.py +0 -0
  393. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/index.html +0 -0
  394. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/README.md +0 -0
  395. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/01_upload_image.json +0 -0
  396. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  397. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  398. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/04_archive_workflow.json +0 -0
  399. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/05_createProject.json +0 -0
  400. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/06_batchGenerateImages.json +0 -0
  401. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  402. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  403. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  404. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  405. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  406. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/12_create_scene.json +0 -0
  407. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  408. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/14_get_scene_workflows.json +0 -0
  409. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  410. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/canary/register_task.ps1 +0 -0
  411. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/canary/run_canary.py +0 -0
  412. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_council_memory.py +0 -0
  413. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_doc_links.py +0 -0
  414. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_materiality.py +0 -0
  415. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_release_artifacts.py +0 -0
  416. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_repo_hygiene.py +0 -0
  417. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_test_count.py +0 -0
  418. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/check_website_docs_pii.py +0 -0
  419. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/ci/generate_website_docs.py +0 -0
  420. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/debug_editor.py +0 -0
  421. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/debug_gen_settings.py +0 -0
  422. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/debug_settings.py +0 -0
  423. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/_recording_client.py +0 -0
  424. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/_spike_common.py +0 -0
  425. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/acceptance/__init__.py +0 -0
  426. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/acceptance/bench.py +0 -0
  427. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/acceptance/domain.py +0 -0
  428. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/acceptance/judge.py +0 -0
  429. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/acceptance/settings.py +0 -0
  430. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/active_plan.py +0 -0
  431. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  432. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  433. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  434. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  435. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  436. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  437. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  438. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_locale_invariants.py +0 -0
  439. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  440. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  441. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  442. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  443. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  444. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  445. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  446. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  447. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_project_listing.py +0 -0
  448. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  449. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  450. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  451. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  452. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/character_create_spike.py +0 -0
  453. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/character_create_spike_v2.py +0 -0
  454. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/dump_character_selectors.js +0 -0
  455. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/README.md +0 -0
  456. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  457. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  458. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  459. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  460. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  461. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  462. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  463. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  464. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  465. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  466. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  467. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/incident_bundle_quality.py +0 -0
  468. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  469. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  470. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  471. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/make_project.py +0 -0
  472. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/materiality_backtest.py +0 -0
  473. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  474. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/measure_locale_probe.py +0 -0
  475. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  476. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/patch_character.py +0 -0
  477. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/skillopt/README.md +0 -0
  478. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/skillopt/harness.py +0 -0
  479. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/skillopt/tasks.json +0 -0
  480. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/sonar-local-scan.sh +0 -0
  481. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  482. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  483. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_changelog_capture.py +0 -0
  484. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  485. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  486. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  487. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  488. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  489. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  490. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  491. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  492. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  493. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  494. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
  495. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_host_lane.py +0 -0
  496. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  497. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  498. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  499. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  500. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_incident_live.py +0 -0
  501. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  502. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  503. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  504. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  505. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  506. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  507. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_locale_poison.py +0 -0
  508. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  509. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  510. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  511. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  512. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  513. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  514. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  515. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  516. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  517. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  518. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  519. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  520. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  521. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
  522. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  523. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
  524. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  525. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  526. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  527. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  528. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  529. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  530. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  531. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  532. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_model_inventory.py +0 -0
  533. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  534. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  535. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  536. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  537. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  538. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  539. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_patch_entity.py +0 -0
  540. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_patchright.py +0 -0
  541. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_project_media_status.py +0 -0
  542. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  543. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  544. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  545. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/verify_language_agnostic.py +0 -0
  546. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  547. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/dev/verify_model_attribution.py +0 -0
  548. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/diag/README.md +0 -0
  549. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/diag/capture_flow_traffic.py +0 -0
  550. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  551. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/diag/memory_profile.py +0 -0
  552. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/diag/recaptcha_mint.py +0 -0
  553. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  554. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  555. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  556. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/probe/run_probe.py +0 -0
  557. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/probe/spike_auth_matrix.py +0 -0
  558. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/record_demo.ps1 +0 -0
  559. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/smoke_image.py +0 -0
  560. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/smoke_video_editor.py +0 -0
  561. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/smoke_worker_style.py +0 -0
  562. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/spike_waf_camoufox.py +0 -0
  563. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/scripts/verify_chrome_auth_viability.py +0 -0
  564. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/README.md +0 -0
  565. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/changelog/SKILL.md +0 -0
  566. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/check/SKILL.md +0 -0
  567. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/doc-review/SKILL.md +0 -0
  568. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/issue-assessment/SKILL.md +0 -0
  569. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/known-issues/SKILL.md +0 -0
  570. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/live-verify/SKILL.md +0 -0
  571. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/llm-council/SKILL.md +0 -0
  572. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/plan/SKILL.md +0 -0
  573. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/pr-council-review/SKILL.md +0 -0
  574. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/predict/SKILL.md +0 -0
  575. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/release/SKILL.md +0 -0
  576. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/sonar/SKILL.md +0 -0
  577. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/status/SKILL.md +0 -0
  578. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/video-production/clip_qa.py +0 -0
  579. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/video-production/composition.md +0 -0
  580. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/video-production/consistency.md +0 -0
  581. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/skills/video-production/tasks.json +0 -0
  582. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/sonar-project.properties +0 -0
  583. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/__main__.py +0 -0
  584. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/_cli_helpers.py +0 -0
  585. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/__init__.py +0 -0
  586. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/_engine.py +0 -0
  587. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/_retry.py +0 -0
  588. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  589. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/character.py +0 -0
  590. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/credits.py +0 -0
  591. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/dto.py +0 -0
  592. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/extend_chain.py +0 -0
  593. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/image.py +0 -0
  594. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/image_upscale.py +0 -0
  595. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/recaptcha.py +0 -0
  596. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/routes.py +0 -0
  597. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/scene.py +0 -0
  598. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  599. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  600. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/base.py +0 -0
  601. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  602. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  603. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  604. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  605. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  606. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  607. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  608. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  609. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  610. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  611. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  612. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/video.py +0 -0
  613. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/api/video_extend.py +0 -0
  614. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/__init__.py +0 -0
  615. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/base.py +0 -0
  616. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/cookies.py +0 -0
  617. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/factory.py +0 -0
  618. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/strategies.py +0 -0
  619. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/auth/verification.py +0 -0
  620. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/chain.py +0 -0
  621. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/chain_manifest.py +0 -0
  622. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_character.py +0 -0
  623. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_credits.py +0 -0
  624. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_data.py +0 -0
  625. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_doctor.py +0 -0
  626. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_image.py +0 -0
  627. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_instructions.py +0 -0
  628. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_models.py +0 -0
  629. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_movie.py +0 -0
  630. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_project.py +0 -0
  631. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_run.py +0 -0
  632. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_scene.py +0 -0
  633. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_tools.py +0 -0
  634. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_update.py +0 -0
  635. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/cli_video.py +0 -0
  636. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/composition.py +0 -0
  637. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/__init__.py +0 -0
  638. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/chain_repo.py +0 -0
  639. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  640. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  641. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  642. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  643. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  644. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  645. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  646. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  647. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  648. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  649. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/models.py +0 -0
  650. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/queries.py +0 -0
  651. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/recorder.py +0 -0
  652. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/repository.py +0 -0
  653. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/data/store.py +0 -0
  654. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/exceptions.py +0 -0
  655. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/file_integrity.py +0 -0
  656. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  657. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  658. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  659. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  660. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/image_batch.py +0 -0
  661. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/json_output.py +0 -0
  662. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/__init__.py +0 -0
  663. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/prompts.py +0 -0
  664. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/resources.py +0 -0
  665. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/server.py +0 -0
  666. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/setup.py +0 -0
  667. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  668. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/media.py +0 -0
  669. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/movie_manifest.py +0 -0
  670. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/observability.py +0 -0
  671. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/paths.py +0 -0
  672. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/profile_lease.py +0 -0
  673. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/redaction.py +0 -0
  674. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/services/__init__.py +0 -0
  675. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  676. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/services/character_create.py +0 -0
  677. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/services/credits.py +0 -0
  678. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/services/doctor.py +0 -0
  679. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/services/mentions.py +0 -0
  680. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/storage.py +0 -0
  681. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/__init__.py +0 -0
  682. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/banned.py +0 -0
  683. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  684. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  685. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  686. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  687. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/expander.py +0 -0
  688. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/invocation.py +0 -0
  689. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/loader.py +0 -0
  690. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/registry.py +0 -0
  691. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/runtime.py +0 -0
  692. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/tools/spec.py +0 -0
  693. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/ui/app.py +0 -0
  694. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/ui/server.py +0 -0
  695. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/update_check.py +0 -0
  696. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/winsec.py +0 -0
  697. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/worker/codec.py +0 -0
  698. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/worker/daemon.py +0 -0
  699. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/src/gflow_cli/worker/queue.py +0 -0
  700. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tasks/lessons.md +0 -0
  701. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/test_assets/sample_batch.json +0 -0
  702. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/test_assets/sample_batch.tsv +0 -0
  703. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/test_assets/sample_batch_invalid.tsv +0 -0
  704. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/__init__.py +0 -0
  705. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/__init__.py +0 -0
  706. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/fixtures/character_gen_response.json +0 -0
  707. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  708. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  709. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  710. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  711. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_bearer_redaction.py +0 -0
  712. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_character.py +0 -0
  713. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_character_readback_fallback.py +0 -0
  714. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client.py +0 -0
  715. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_character.py +0 -0
  716. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_delete_characters.py +0 -0
  717. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_errors.py +0 -0
  718. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_extend.py +0 -0
  719. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_generate_character.py +0 -0
  720. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_image.py +0 -0
  721. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_incidents.py +0 -0
  722. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_launch_kwargs.py +0 -0
  723. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_migrated_mint.py +0 -0
  724. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_patch_entity.py +0 -0
  725. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_scene.py +0 -0
  726. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_client_upscale.py +0 -0
  727. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_concurrency.py +0 -0
  728. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_credits.py +0 -0
  729. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_credits_http.py +0 -0
  730. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_dto.py +0 -0
  731. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_engine.py +0 -0
  732. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_extend_chain.py +0 -0
  733. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_image.py +0 -0
  734. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_image_dto.py +0 -0
  735. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_image_upscale.py +0 -0
  736. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  737. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_recaptcha.py +0 -0
  738. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_retry.py +0 -0
  739. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_routes.py +0 -0
  740. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_routes_character.py +0 -0
  741. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_routes_locale.py +0 -0
  742. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_routes_scene.py +0 -0
  743. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_sapisidhash_helper.py +0 -0
  744. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_scene_models.py +0 -0
  745. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_video.py +0 -0
  746. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_video_extend.py +0 -0
  747. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_video_request.py +0 -0
  748. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/test_video_status_poll.py +0 -0
  749. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/__init__.py +0 -0
  750. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/conftest.py +0 -0
  751. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/drivers/__init__.py +0 -0
  752. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  753. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/drivers/test_classic.py +0 -0
  754. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/drivers/test_factory.py +0 -0
  755. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  756. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  757. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_base.py +0 -0
  758. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_batchexecute.py +0 -0
  759. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_bearer.py +0 -0
  760. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_character_model_picker.py +0 -0
  761. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  762. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_factory.py +0 -0
  763. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_fingerprint.py +0 -0
  764. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_ligature_carrier.py +0 -0
  765. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_locale_navigation.py +0 -0
  766. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
  767. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  768. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_migrated_r2v.py +0 -0
  769. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_migrated_route.py +0 -0
  770. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_mode_control.py +0 -0
  771. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  772. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_navigation_settled.py +0 -0
  773. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  774. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  775. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_policy_400.py +0 -0
  776. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_sapisidhash.py +0 -0
  777. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  778. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_transport_timeout.py +0 -0
  779. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_ui_automation.py +0 -0
  780. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  781. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  782. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  783. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  784. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  785. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/auth/strategies/test_factory.py +0 -0
  786. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/auth/test_cookies.py +0 -0
  787. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/auth/test_verification.py +0 -0
  788. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/auth/test_windows_acl.py +0 -0
  789. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/__init__.py +0 -0
  790. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_auth_status.py +0 -0
  791. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_auth_list.py +0 -0
  792. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_character.py +0 -0
  793. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_character_create.py +0 -0
  794. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_credits.py +0 -0
  795. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_data.py +0 -0
  796. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_data_errors.py +0 -0
  797. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  798. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_data_sync.py +0 -0
  799. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_doctor.py +0 -0
  800. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_image.py +0 -0
  801. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  802. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  803. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_image_upscale.py +0 -0
  804. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  805. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_instructions.py +0 -0
  806. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_models.py +0 -0
  807. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_movie.py +0 -0
  808. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_run.py +0 -0
  809. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_scene.py +0 -0
  810. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_tools.py +0 -0
  811. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_video.py +0 -0
  812. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_video_chain.py +0 -0
  813. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_cli_video_extend.py +0 -0
  814. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_failure_funnel.py +0 -0
  815. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_helpers.py +0 -0
  816. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_incident_output.py +0 -0
  817. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_movie_manifest.py +0 -0
  818. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  819. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_predictable_output.py +0 -0
  820. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  821. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  822. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_settings_validation.py +0 -0
  823. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  824. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/composition/test_character.py +0 -0
  825. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/composition/test_compose_prompt.py +0 -0
  826. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/composition/test_handoff.py +0 -0
  827. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/composition/test_style_variants.py +0 -0
  828. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/composition/test_style_variants_e2e.py +0 -0
  829. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/__init__.py +0 -0
  830. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_chain_repo.py +0 -0
  831. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_failure_recording.py +0 -0
  832. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_find_incomplete_character.py +0 -0
  833. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_models.py +0 -0
  834. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_null_columns_stay_null.py +0 -0
  835. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_packaging.py +0 -0
  836. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_recorder.py +0 -0
  837. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_recorder_character.py +0 -0
  838. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_repository.py +0 -0
  839. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_scene_persistence.py +0 -0
  840. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_settings_and_errors.py +0 -0
  841. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_store.py +0 -0
  842. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/data/test_store_migrations.py +0 -0
  843. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/dev/test_recording_client.py +0 -0
  844. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/__init__.py +0 -0
  845. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/conftest.py +0 -0
  846. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  847. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  848. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  849. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  850. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_chain_e2e.py +0 -0
  851. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_character_create_e2e.py +0 -0
  852. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  853. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  854. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  855. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_credits_e2e.py +0 -0
  856. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  857. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_daemon_e2e.py +0 -0
  858. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  859. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  860. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
  861. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  862. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  863. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  864. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  865. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  866. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  867. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  868. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  869. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_json_output_e2e.py +0 -0
  870. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  871. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  872. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  873. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  874. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  875. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_scene_compose_live.py +0 -0
  876. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  877. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_tools_e2e.py +0 -0
  878. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_transports_e2e.py +0 -0
  879. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  880. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  881. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  882. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/__init__.py +0 -0
  883. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/asset_tagging.feature +0 -0
  884. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/auth.feature +0 -0
  885. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/auth_login.feature +0 -0
  886. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/character_create.feature +0 -0
  887. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/character_read.feature +0 -0
  888. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/conftest.py +0 -0
  889. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/credits.feature +0 -0
  890. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/duration_tab_drift.feature +0 -0
  891. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/entity_provenance.feature +0 -0
  892. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/image.feature +0 -0
  893. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/image_batch_references.feature +0 -0
  894. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/image_upscale.feature +0 -0
  895. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/incident_diagnostics.feature +0 -0
  896. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/instructions.feature +0 -0
  897. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/latched_locale_recovery.feature +0 -0
  898. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/locale_picker_include.feature +0 -0
  899. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/mcp_tasks.feature +0 -0
  900. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/media_picker_tiers.feature +0 -0
  901. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/migrated_driver.feature +0 -0
  902. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/migrated_host_gate.feature +0 -0
  903. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/migrated_i2v.feature +0 -0
  904. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/output_hardening.feature +0 -0
  905. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_asset_tagging_steps.py +0 -0
  906. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_auth_login_steps.py +0 -0
  907. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_auth_steps.py +0 -0
  908. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_character_create_steps.py +0 -0
  909. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_character_read_steps.py +0 -0
  910. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_credits_steps.py +0 -0
  911. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_image_steps.py +0 -0
  912. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_image_upscale_steps.py +0 -0
  913. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  914. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_instructions_steps.py +0 -0
  915. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  916. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  917. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  918. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_migrated_driver_steps.py +0 -0
  919. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  920. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_migrated_i2v_steps.py +0 -0
  921. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_output_hardening_steps.py +0 -0
  922. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_step_collision_guard.py +0 -0
  923. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  924. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/test_video_chain_steps.py +0 -0
  925. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/video_agent_ui.feature +0 -0
  926. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/features/video_chain.feature +0 -0
  927. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/__init__.py +0 -0
  928. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/changelog_modal_page.html +0 -0
  929. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/doctor_env.py +0 -0
  930. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/flow_model_inventory.json +0 -0
  931. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  932. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/listing_payload.py +0 -0
  933. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/fixtures/seeded_catalog.py +0 -0
  934. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/flow_selectors/__init__.py +0 -0
  935. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/flow_selectors/test_grading.py +0 -0
  936. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/flow_selectors/test_model.py +0 -0
  937. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/flow_selectors/test_model_governance.py +0 -0
  938. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/flow_selectors/test_registry.py +0 -0
  939. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/flow_selectors/test_report.py +0 -0
  940. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/image_batch/__init__.py +0 -0
  941. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/image_batch/test_image_manifest.py +0 -0
  942. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/image_batch/test_jitter_config.py +0 -0
  943. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/image_batch/test_observability_events.py +0 -0
  944. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/integration/__init__.py +0 -0
  945. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/integration/conftest.py +0 -0
  946. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/integration/constants.py +0 -0
  947. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/integration/test_expander_gateway.py +0 -0
  948. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/integration/test_storage_gcs.py +0 -0
  949. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/integration/test_storage_s3.py +0 -0
  950. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/__init__.py +0 -0
  951. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/conftest.py +0 -0
  952. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_auth_status_tool.py +0 -0
  953. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_character_tools.py +0 -0
  954. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_cli_parity.py +0 -0
  955. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_credits_tool.py +0 -0
  956. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_error_funnel.py +0 -0
  957. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_http_transport.py +0 -0
  958. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_known_issues_resource.py +0 -0
  959. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  960. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_no_spend.py +0 -0
  961. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  962. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  963. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_resources.py +0 -0
  964. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_server.py +0 -0
  965. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_setup.py +0 -0
  966. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_stdio_transport.py +0 -0
  967. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_tasks_extension.py +0 -0
  968. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_tools_helpers.py +0 -0
  969. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_tools_instructions.py +0 -0
  970. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/mcp/test_tools_wired.py +0 -0
  971. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  972. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_canary_classify.py +0 -0
  973. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_canary_reexec.py +0 -0
  974. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  975. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  976. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_check_council_memory.py +0 -0
  977. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_check_materiality.py +0 -0
  978. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  979. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  980. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_check_test_count.py +0 -0
  981. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  982. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_codex_plugin.py +0 -0
  983. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_extract_har_summary.py +0 -0
  984. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_frame_acceptance.py +0 -0
  985. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_generate_website_docs.py +0 -0
  986. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  987. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_materiality_backtest.py +0 -0
  988. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  989. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_spike_page_pool.py +0 -0
  990. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_spike_profile_lease.py +0 -0
  991. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/scripts/test_workflow_hardening.py +0 -0
  992. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/__init__.py +0 -0
  993. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_catalog_sync.py +0 -0
  994. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_character_create_redaction.py +0 -0
  995. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_character_create_saga.py +0 -0
  996. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  997. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_credits.py +0 -0
  998. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_doctor.py +0 -0
  999. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_media_attribution.py +0 -0
  1000. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_mentions_observability.py +0 -0
  1001. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_mentions_parse.py +0 -0
  1002. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_mentions_resolve.py +0 -0
  1003. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/services/test_resolve_and_apply.py +0 -0
  1004. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/smoke/__init__.py +0 -0
  1005. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  1006. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/smoke/test_real_flow.py +0 -0
  1007. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_auth.py +0 -0
  1008. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_chain.py +0 -0
  1009. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_chain_manifest.py +0 -0
  1010. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_cli_data.py +0 -0
  1011. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_cli_project.py +0 -0
  1012. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_cli_update.py +0 -0
  1013. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_conftest_isolation.py +0 -0
  1014. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_data_queries.py +0 -0
  1015. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_diagnostics_bundle.py +0 -0
  1016. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_diagnostics_events.py +0 -0
  1017. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_diagnostics_journal.py +0 -0
  1018. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_diagnostics_retention.py +0 -0
  1019. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_diagnostics_sanitize.py +0 -0
  1020. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_documentation_gate.py +0 -0
  1021. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_duration_tab_drift.py +0 -0
  1022. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_entity_provenance.py +0 -0
  1023. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_errors.py +0 -0
  1024. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_image_batch_references.py +0 -0
  1025. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_incident_generation_requests.py +0 -0
  1026. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_json_output.py +0 -0
  1027. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_media.py +0 -0
  1028. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_observability.py +0 -0
  1029. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1030. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_paths.py +0 -0
  1031. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_playwright_pin.py +0 -0
  1032. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_profile_lease.py +0 -0
  1033. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_profile_lease_subprocess.py +0 -0
  1034. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_profile_store.py +0 -0
  1035. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_profile_store_locale.py +0 -0
  1036. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_project_list_urls.py +0 -0
  1037. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_self_documenting_errors.py +0 -0
  1038. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_smoke.py +0 -0
  1039. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/test_update_check.py +0 -0
  1040. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/__init__.py +0 -0
  1041. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_banned.py +0 -0
  1042. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_expander.py +0 -0
  1043. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_invocation.py +0 -0
  1044. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_loader.py +0 -0
  1045. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_registry.py +0 -0
  1046. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_runtime.py +0 -0
  1047. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/tools/test_spec.py +0 -0
  1048. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/ui/test_app.py +0 -0
  1049. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/worker/test_codec.py +0 -0
  1050. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1051. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/worker/test_queue.py +0 -0
  1052. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1053. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1054. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1055. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/CHARACTER.md +0 -0
  1056. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/DATA_LAYER.md +0 -0
  1057. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/DEVELOPMENT.md +0 -0
  1058. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1059. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/INSTRUCTIONS.md +0 -0
  1060. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1061. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/MOVIE.md +0 -0
  1062. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1063. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/TOOLS.md +0 -0
  1064. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/agents.md +0 -0
  1065. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/index.md +0 -0
  1066. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/installation.md +0 -0
  1067. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/docs/stylesheets/extra.css +0 -0
  1068. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/mkdocs.yml +0 -0
  1069. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/requirements.in +0 -0
  1070. {gflow_cli-0.71.1 → gflow_cli-0.73.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.71.1",
3
+ "version": "0.73.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -183,8 +183,9 @@
183
183
  # GFLOW_CLI_UI_MODE=auto
184
184
 
185
185
  # Which Flow frontend gflow drives (#639). auto (default): flow.google.com is the
186
- # default host for what it can serve today (video t2v, and video i2v from a local
187
- # --initial-frame, with --project) on every
186
+ # default host for what it can serve today (video t2v; video i2v from a local
187
+ # --initial-frame; video r2v from local --ref files; image t2i; and image i2i from
188
+ # local files — all with --project) on every
188
189
  # account; requests it cannot serve yet keep the labs driver on an unmoved
189
190
  # account, and a moved account gets the migrated composer for everything ported.
190
191
  # flow.google.com: force the migrated composer for everything.
@@ -16,6 +16,8 @@ that did not run.
16
16
  |---|---|---|
17
17
  | Claim a Flow surface is broken, missing, or impossible | `/gflow:spike <question>` | A selector that misses is evidence about the SELECTOR; "labs-only, ever" came from one 20 s timeout and cost a day |
18
18
  | Touch a GitHub issue | `/gflow:issue-assessment <N>` | Read-only triage precedes any fix; classification changes what "fixing" means |
19
+ | Explain a symptom, or fix a bug whose cause is not yet proven | The **Bug Lane** — [`skills/issue-resolve/SKILL.md`](skills/issue-resolve/SKILL.md) | The issue names a symptom; the cause is usually a caller above it. Skipping to the fix patches one path and leaves its siblings broken |
20
+ | Write the test for a scenario that can only happen in a browser | [`docs/E2E_TESTING.md`](docs/E2E_TESTING.md) § BDD-bound e2e | A mocked page asserts *our* code; the bug was that Flow did something else. The Gherkin tag is what makes it an e2e test |
19
21
  | Propose a transport, auth, selector, or schema change | `/gflow:predict <proposal>` | Five adversarial personas return GO / CAUTION / STOP before code exists |
20
22
  | Start a feature | `/gflow:scenario` → `/gflow:plan` | Edge cases before tasks; tasks before code |
21
23
  | Resume work / ask "where are we?" | `/gflow:status` | The current plan's next unchecked task is the answer, not your guess |
@@ -42,7 +44,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
42
44
 
43
45
  ## Project at a glance
44
46
 
45
- - Unofficial Python CLI 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`, and reference-to-video from local `--ref` files, today; `GFLOW_CLI_FLOW_HOST`).
47
+ - Unofficial Python CLI 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`).
46
48
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
47
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`.
48
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,7 +52,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
50
52
 
51
53
  ## Headed-browser dependency (architectural reality)
52
54
 
53
- gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects Playwright's bundled Chromium and most headless approaches. This is the project's defining trade-off:
55
+ gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects browsers that advertise automation, and most headless approaches. This is the project's defining trade-off:
54
56
 
55
57
  - ✅ Works end-to-end against live Google accounts.
56
58
  - ❌ Requires a saved Chrome profile, a display server for one-time login, and ~150 MB for Chromium.
@@ -106,7 +108,7 @@ the five other mirror axes), which no command here can check and no CI gate can
106
108
 
107
109
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
108
110
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
109
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–37, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
111
+ - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–38, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
110
112
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
111
113
  - **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
112
114
  - **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
@@ -159,7 +161,10 @@ captured, and it cannot prove the surface an agent or a user actually calls is w
159
161
  the code under test. Everything not exercised is unknown, and unknown ships as a bug.
160
162
 
161
163
  If no e2e test covers the change, **write one** — that is part of the change, not
162
- follow-up work.
164
+ follow-up work. For a bug, the lane that gets you there — spike → debug → BDD → TDD →
165
+ fix → e2e, and which steps a given bug may skip — is
166
+ [`skills/issue-resolve/SKILL.md`](skills/issue-resolve/SKILL.md) § The Bug Lane. It is
167
+ written once, there; this section states the law, that one states the route.
163
168
 
164
169
  **The only permitted exception is a named external blocker** you cannot remove: an
165
170
  exhausted API quota, hardware you do not have, an account you do not control, a cohort
@@ -235,8 +240,9 @@ All AI agents and harnesses working on `gflow-cli` follow this standard 10-phase
235
240
  |---|---|---|---|
236
241
  | 0. Spike | `/gflow:spike <question>` | Evidence from the live surface (DOM / network / HAR) whenever a claim of absence is in play | `scripts/dev/spike_*.py` + `docs/superpowers/spikes/<date>-<slug>.md` |
237
242
  | 1. Triage | `/gflow:issue-assessment <N>` | Read-only issue analysis & root cause hypothesis | `issue_assessment_<N>.md` |
243
+ | 1b. Root cause | `superpowers:systematic-debugging` (the **Bug Lane**, [`skills/issue-resolve`](skills/issue-resolve/SKILL.md)) | Turn the triage *hypothesis* into a proven cause at `<file>:<line>`, then grep every caller so the fix lands at the root | Root cause + the callers it covers |
238
244
  | 2. Pre-Implementation | `/gflow:predict <proposal>` | Adversarial audit (D14 YAGNI, security, risks) | GO / CAUTION / STOP verdict |
239
- | 3. BDD Scaffolding | `/gflow:scenario <feature>` | Edge-case explorer & BDD Gherkin spec | `Scenario:` blocks & test scaffold |
245
+ | 3. BDD Scaffolding | `/gflow:scenario <feature>` | Edge-case explorer & BDD Gherkin spec | `Scenario:` blocks + the binding its **surface** dictates: a browser-only scenario is tagged `@e2e @e2e_<tier>` and bound from `tests/e2e/`, everything else stays offline in `tests/features/` |
240
246
  | 4. Implementation Plan | `/gflow:plan <feature>` | Task-by-task atomic implementation plan | `docs/superpowers/plans/<date>-<slug>/PLAN.md` |
241
247
  | 5. Council Review | `/gflow:pr-council-review` / `llm-council` | Multi-dimensional audit across 6 core dimensions | Consensus verdict report |
242
248
  | 6. Task Execution | `/gflow:status` | Track unchecked tasks during TDD execution | Next unchecked task |
@@ -251,7 +257,8 @@ Every AI agent executing any phase of this pipeline MUST proactively state the c
251
257
 
252
258
  | Current Phase | Completed Artifact / Gate | Next Sequential Phase & Command |
253
259
  |---|---|---|
254
- | Phase 1: Triage | `issue_assessment_<N>.md` | ➔ Phase 2: Pre-Implementation (`/gflow:predict <proposal>`) |
260
+ | Phase 1: Triage | `issue_assessment_<N>.md` | ➔ Phase 1b: Root cause (`superpowers:systematic-debugging`) — skip only when the cause is already proven, and say so |
261
+ | Phase 1b: Root cause | Proven cause at `<file>:<line>` + its callers | ➔ Phase 2 (`/gflow:predict`) **if the fix touches a transport, auth, selectors or a schema** — a proven cause does not make the remedy safe; otherwise straight to Phase 3: BDD Scaffolding (`/gflow:scenario`), written at the **root**, not the symptom |
255
262
  | Phase 2: Pre-Implementation | Verdict `GO` or `CAUTION` | ➔ Phase 3: BDD Scaffolding (`/gflow:scenario <feature>`) |
256
263
  | Phase 3: BDD Scaffolding | `Scenario:` blocks & test scaffold | ➔ Phase 4: Implementation Plan (`/gflow:plan <feature>`) |
257
264
  | Phase 4: Implementation Plan | `PLAN.md` created & approved | ➔ Phase 6: Task Execution (`/gflow:status`) |
@@ -7,6 +7,271 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.73.0] — 2026-09-10
11
+
12
+ ### Security
13
+
14
+ - **Google auth URLs no longer reach user-facing error messages with their query
15
+ intact.** `client._handle_account_chooser`'s three raise sites interpolated
16
+ `page.url` verbatim, and Google's auth URLs carry `state`, `code_challenge`,
17
+ `client_id` and challenge tokens (`TL=…`). That text is the artifact users are
18
+ asked to paste into a GitHub issue.
19
+ - **Measured, not theorised:** a real `gflow image t2i --profile <name>` on
20
+ 2026-09-10 exited 38 and printed
21
+ `accounts.google.com/v3/signin/challenge/pwd?TL=ACv9tzFkh8ZJ…` along with the
22
+ OAuth `state` and `client_id`. Re-running the identical command after the fix:
23
+ same exit 38, same landing named, **zero** secret matches.
24
+ - New `safe_page_url()` in `api/transports/_common.py` keeps scheme+host+path and
25
+ drops query+fragment; all four raise sites (the three in `client.py` plus
26
+ `raise_if_known_landing`) route through it rather than stripping inline.
27
+ - The landing is still named — knowing *where* the session stopped is the whole
28
+ value of the message; only the credentials are gone.
29
+
30
+ ### Fixed
31
+ - **A click that never lands now says what was true instead of nothing at all**
32
+ ([#776](https://github.com/ffroliva/gflow-cli/issues/776)). On `flow.google.com`,
33
+ `video r2v` reached `migrated.editor_ready` and died 5.039 s later as a bare
34
+ Playwright `TimeoutError` — exit 1, no locator, no cause, no MP4. By elimination that
35
+ is `migrated_composer.py`'s `trigger.click(timeout=5000)`: the `wait_for(visible)` one
36
+ line above it is guarded and would have raised exit 23, so the control was *visible*
37
+ and the *click* expired. [#752](https://github.com/ffroliva/gflow-cli/issues/752)
38
+ finding #7 predicted exactly this, at exactly this function, before #776 was filed —
39
+ its `count()`→visibility half was fixed and the click half was not, leaving a comment
40
+ that describes the failure the next line went on producing.
41
+ - **It reads; it does not diagnose.** Two causes were live and *neither could be
42
+ measured*: Flow's announcement overlay ([#593](https://github.com/ffroliva/gflow-cli/issues/593),
43
+ measured on labs.google, never on this host) and a mid-run agent-mode flip. A guard
44
+ built on either would answer confidently and be wrong half the time. So on a timeout
45
+ the driver reads Playwright's four actionability conditions back — agent chip,
46
+ `hidden`/`disabled`, body pointer-events, and a hit-test naming what is on top — and
47
+ reports the ones that fired. When every reading is healthy it **says so**, which
48
+ eliminates three conditions and leaves *stable*, rather than inventing a fourth.
49
+ - **Costs nothing when healthy** — the read runs only in the `except` branch, the rule
50
+ `raise_if_known_landing` already states: a guard ahead of the probe deletes the
51
+ evidence that would correct it.
52
+ - **MCP gains more than the CLI.** A non-`GFlowError` on the queued path shipped
53
+ `"detail": "sha256:…"` — a hash, not even the class name. The typed error routes it
54
+ to the Problem Details branch instead, so an agent now gets the locator and exit 23.
55
+ - Applied to four sites with a named reason each, not all nineteen: the reported one,
56
+ the composer click `_close_pane`'s own docstring records as failing this way, and
57
+ both submit sites, where a bare timeout left "did it submit?" unanswerable — the
58
+ video one spends Veo credits, the image one spends only daily quota.
59
+ - **The occluder report is a closed allowlist** — tag name plus at most three
60
+ framework-prefixed class tokens, never `aria-label`, `title`, `src` or `outerHTML`.
61
+ Typing the error moves the text from SHA-256-hashed telemetry to a message printed
62
+ raw, logged, and invited into a GitHub issue; a signed-in Flow page carries the
63
+ account email and signed media URLs on exactly the elements that occlude things.
64
+ - `retryable` is unchanged and **preserved, not measured** — the condition did not
65
+ reproduce, and a flag that moves as a side effect of retyping is a claim nobody made.
66
+ - **A known Flow landing page is no longer reported as selector drift**
67
+ ([#756](https://github.com/ffroliva/gflow-cli/issues/756), and the 2026-09-10 RED
68
+ nightly canary). `flow_host_kind()` classifies the *origin*; `/about`,
69
+ `/project/<id>` and `/fx/api/auth/signin?error=Callback` all share one, so when a
70
+ readiness wait timed out it had nothing left to blame but its own anchor — sending
71
+ the operator to "check for a newer release, then file a bug" over a session state
72
+ no release changes. The fourth instance of one pattern (after #721 credits, #749
73
+ agent mode, and `FlowAppError`'s own crash page), so it is fixed once, shared:
74
+ - New `flow_landing_kind()` beside `flow_host_kind()` in `api/transports/_common.py`
75
+ names a known non-app landing (`"signin"` / `"public"` / `None`), and
76
+ `raise_if_known_landing()` converts the diagnosis at **three** raise sites — the
77
+ migrated readiness wait, the labs gallery sweep, and the labs prompt-box sweep,
78
+ where a bare `RuntimeError` was being SHA-256 hashed into "Unexpected error" with
79
+ the URL destroyed. Consulted **only inside an already-failed branch** — never ahead of a probe, which would delete the evidence
80
+ that corrects a wrong absence claim, and never as a new bounded wait after `goto`,
81
+ which reads the URL before Flow's client-side redirect lands
82
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).
83
+ - `flow.google.com/about` instead of the project → `FlowAppError` (exit 31), naming
84
+ the landing and the project it did not open. It deliberately does **not** say why:
85
+ #756 measured the redirect and not its cause, and `gflow auth status` reports the
86
+ session verified while it happens.
87
+ - `labs.google/fx/api/auth/signin?error=Callback` instead of the gallery →
88
+ `AuthExpiredError` (exit 3), remediation `gflow auth login`. This is the exact
89
+ page behind the 2026-09-10 RED canary, which reported
90
+ `Could not find 'New project' CTA`.
91
+ - `auth/internal_chromium.py` drops its private `_NEXTAUTH_ROUTE_PREFIX` and reuses
92
+ the shared classifier — the knowledge existed there since #767 and no transport
93
+ could reach it.
94
+ - `FlowAppError`'s docstring and `docs/USAGE.md`'s exit-code table now describe both
95
+ shapes; previously both stated the crash page as the only one. `docs/USAGE.md`'s
96
+ exit-3 row and `docs/MCP.md`'s retryable list are corrected to match, and
97
+ `docs/DEBUGGING.md` records that the sign-in landing is now capture-exempt —
98
+ deliberate (a bundle there would screenshot a Google auth surface into the artifact
99
+ users attach to issues), but a class swap switches capture off silently.
100
+ - The landing URL is stripped to scheme+host+path before it reaches the message or
101
+ the log: the NextAuth family includes `/fx/api/auth/callback/google?state=…&code=…`,
102
+ and this message is precisely what users paste into issues.
103
+ - `"public"` is scoped to the migrated host, the only one where `/about` was measured.
104
+ - **`accounts.google.com` is recognised too — found by live-verifying, not by
105
+ reasoning.** The first version returned `None` there on the grounds that "the
106
+ chooser has its own handler", which is true at bootstrap
107
+ (`client._handle_account_chooser`) and false for a hop that happens *after* it. A
108
+ live A/B on profile `denon82` (2026-09-10, $0) landed exactly there mid-run and
109
+ still produced `RuntimeError: Could not find 'New project' CTA` — with the OAuth
110
+ `state`, `code_challenge` and `client_id` interpolated into the message. It now
111
+ raises `FlowAccountChooserError` (38) for a chooser and `AuthExpiredError` (3) for
112
+ other Google sign-in surfaces, URL stripped. The bot-rejection hop
113
+ (`/v3/signin/rejected`) keeps returning `None` — it has its own error.
114
+ - **`gflow auth list` no longer fails on a profile whose `.gflow_account` is damaged**
115
+ (PR [#764](https://github.com/ffroliva/gflow-cli/pull/764)). The reader decoded as
116
+ UTF-8 and caught only `OSError`, so a non-UTF-8 or truncated file raised out of
117
+ `list_profiles()` and broke the listing for *every* profile, not just the damaged one.
118
+ The value is also interpolated into a DOM attribute selector, where a stray quote
119
+ produced an untyped failure. Unusable content now reads as "no account recorded",
120
+ which every caller already handles.
121
+ - **Google's post-migration account chooser no longer stalls a run**
122
+ ([#763](https://github.com/ffroliva/gflow-cli/issues/763), PR
123
+ [#764](https://github.com/ffroliva/gflow-cli/pull/764) — thanks @stgmt). When Google
124
+ hands the session to `flow.google.com` and redirects to a chooser, `FlowApiClient`
125
+ now auto-selects the profile's recorded account from `.gflow_account` instead of
126
+ stalling into an opaque `RecaptchaError`/exit 1.
127
+ - The row match is exact and case-insensitive on both tiers, and **anchored so the
128
+ chooser's `Remove <email>` / `Sign out of <email>` rows can never be clicked**.
129
+ - A chooser is identified *positively* (chooser path, or account rows), so an
130
+ ordinary expired session still classifies as `AuthExpiredError` (exit 3) rather
131
+ than being swept into the new class.
132
+ - Cases that cannot be selected raise a typed, non-retryable
133
+ `FlowAccountChooserError` (**exit 38**) naming the URL the session actually
134
+ landed on.
135
+ - `.gflow_account` is treated as untrusted input — this fixes an untyped failure in
136
+ the selector and a crash in `gflow auth list` on a damaged file.
137
+ - Follow-up hardening is tracked in
138
+ [#773](https://github.com/ffroliva/gflow-cli/issues/773).
139
+
140
+ ### Added
141
+ - **`gflow auth login --account <email>`** asserts the login authenticated as the
142
+ required account, failing closed on a mismatch rather than leaving a profile signed
143
+ in as somebody else (PR [#764](https://github.com/ffroliva/gflow-cli/pull/764)).
144
+ - **`FlowAppError.retryable`** — a per-instance override of that class's
145
+ `RETRYABLE_ERRORS` membership. `None` (the default) keeps the class answer, so no
146
+ existing raise changes. Scoped to the one class that needs it: `is_retryable()` reads
147
+ it by `getattr`, so a base-class field would have sat on every error in the project
148
+ to serve a single raise site.
149
+ - It exists because routing `/about` to exit 31 would otherwise have silently flipped
150
+ that shape from non-retryable (its exit-23 past) to retryable, asserting on every
151
+ occurrence that a retry is worth making. **That was measured, and could not be
152
+ settled:** the redirect stopped reproducing on `ci-probe` between 2026-09-08 and
153
+ 2026-09-10 (5/5 attempts reached the editor —
154
+ [spike](docs/superpowers/spikes/2026-09-10-about-redirect-stability.md)), which is
155
+ equally consistent with "transient" and with "a session state changed". So the
156
+ `/about` raise site passes `retryable=False` to **preserve** the previous answer,
157
+ not to claim a retry fails. Flip it when someone catches the redirect live and
158
+ measures whether a second attempt wins.
159
+ - `is_retryable()` pins the override with `isinstance(..., bool)` rather than a
160
+ truthiness test: a `MagicMock` answers every attribute with a truthy child mock, so
161
+ a truthiness test would report **every** mocked error as retryable with nothing in
162
+ the suite noticing. Covered by a test that asserts that precondition explicitly.
163
+ - **BDD scenarios can now be bound as e2e tests**, with no new machinery: pytest-bdd
164
+ converts Gherkin tags into pytest markers, so a Feature tagged `@e2e @e2e_auth`
165
+ is filtered by the existing `addopts` and selected by the existing `-m <tier>`.
166
+ Feature files stay in `tests/features/`; their step module lives in `tests/e2e/`
167
+ so it inherits that suite's profile-gating fixtures. See
168
+ [docs/E2E_TESTING.md § BDD-bound e2e](docs/E2E_TESTING.md#bdd-bound-e2e).
169
+ - `tests/features/test_e2e_binding_guard.py` — offline guard (no browser, runs in
170
+ hosted CI) for three ways that binding breaks silently: an `@e2e` scenario nobody
171
+ wrote a test for, an `@e2e` Feature with no cost sub-marker (invisible to the
172
+ nightly canary), and the inverse hazard — a Feature bound from `tests/e2e/` but
173
+ left untagged, which escapes `addopts` and makes hosted CI try to drive Chrome.
174
+ It carries its own fire-test, so a green run means "no orphans", not "never looked".
175
+
176
+ ### Changed
177
+ - **Workflow: the Bug Lane is now the documented route from symptom to fix.**
178
+ `skills/issue-resolve/SKILL.md` gains a canonical `spike → systematic-debugging →
179
+ BDD → TDD → fix → e2e` chain, gated by *surface* (steps 0–2 are skippable for a
180
+ one-line fix whose cause is proven — but a skip is a claim and must be stated;
181
+ steps 3–5 never are). AGENTS.md, `skills/spike`, `skills/scenario`,
182
+ `docs/E2E_TESTING.md` and `docs/INDEX.md` cite it; none restate it.
183
+ - Removes a real contradiction: `issue-resolve` step 3 previously permitted "the
184
+ closest browser-free proxy" while AGENTS.md's Iron Law said a change with no e2e
185
+ coverage must get one and listed "covered by unit tests" among the excuses that
186
+ are *not* blockers. Two disjoint files, no merge conflict, no gate that could
187
+ see it.
188
+ - "Browser-free" is no longer accepted as a verification blocker: only a **named**
189
+ external blocker is (an account you do not control, a Mac, an exhausted quota).
190
+
191
+ ## [0.72.0] — 2026-09-09
192
+
193
+ ### Added
194
+
195
+ - **`gflow image t2i` and local-file `i2i` now run on migrated `flow.google.com`
196
+ accounts** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). The Angular
197
+ composer binds Image mode, Nano Banana 2 / Pro, the four aspect ratios measured on that
198
+ host (16:9, 4:3, 1:1, 9:16) and counts 1–4,
199
+ then observes the page-owned `ogiZ0b` `batchexecute` reply and returns the same
200
+ `GeneratedImage` contract as the labs driver. Local references reuse the measured
201
+ `maseQ` upload + mention path and are verified in the outgoing submit body before the
202
+ result is trusted. The migrated page owns reCAPTCHA minting, avoiding the root-grid
203
+ `RecaptchaError`; unsupported UUID/entity/instruction/Imagen-4 forms still fail before
204
+ submit rather than silently dropping options.
205
+
206
+ - **`gflow image batch` is refused on the migrated host instead of failing as selector
207
+ drift** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). The batch path
208
+ drives labs selectors only; it now raises `FlowHostMigratedError` (exit 36) before any
209
+ submit, rather than running those selectors against `flow.google.com` and reporting
210
+ exit 23 — which told the user to file a frontend-drift bug about a frontend that was
211
+ behaving correctly.
212
+
213
+ ### Changed
214
+
215
+ - **`gflow auth login` closes the browser for you.** It drives your real Google Chrome
216
+ through Playwright, watches for the completed Flow sign-in, and closes the window itself —
217
+ the "now close Chrome" step is gone. Closing the window yourself still works and still
218
+ verifies; it is not an error. On a machine where Playwright cannot resolve a Chrome
219
+ channel, or where Google rejects the browser anyway, login falls back automatically to the
220
+ previous flow (Chrome as a plain subprocess, you close the window). **There is no new flag
221
+ and nothing to choose.**
222
+ ([spike](docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md))
223
+
224
+ ### Fixed
225
+
226
+ - **The second image in one session no longer falls back to the labs reCAPTCHA mint**
227
+ ([#673](https://github.com/ffroliva/gflow-cli/issues/673)). Every migrated image run
228
+ parks its page on `about:blank`, which routes as `labs` — so the page-owned-mint
229
+ capability, derived from `page.url`, answered `False` on the next call and sent it
230
+ back to minting on the pooled bootstrap page. The transport now latches the observed
231
+ host: `gflow image batch`, which runs every prompt through one `FlowApiClient`,
232
+ generated its first prompt and failed the rest with the exact `RecaptchaError` this
233
+ release exists to remove.
234
+ - **`--aspect 3:4` is refused on the migrated host rather than reported as selector
235
+ drift.** The composer's aspect radiogroup was enumerated there with four radios —
236
+ `crop_16_9`, `crop_landscape`, `crop_square`, `crop_9_16` — and no `crop_portrait`, so
237
+ a 3:4 request missed its selector and raised exit 23. It is now an unported form
238
+ (exit 36). The "all five aspect ratios" claim has been corrected to the four measured
239
+ wherever it appeared.
240
+ - **The exit-36 remediation no longer contradicts the error it accompanies.**
241
+ `FlowHostMigratedError._default_remediation` still described the migrated host as
242
+ driving only t2v and local-frame i2v, so an image refusal printed a `detail` saying
243
+ t2i/i2i are driven directly above a remediation saying they are not. Both it and the
244
+ class docstring now name the full ported matrix.
245
+ - **`gflow auth login --browser internal` launched a browser configuration measured as
246
+ rejected.** The bundled-Chromium path shipped with no anti-automation flags, which leaves
247
+ `navigator.webdriver` set. On 2026-09-08 a browser in that state — real Chrome with the
248
+ flags removed — was rejected at `/v3/signin/rejected` 17.5 s into the flow, while the same
249
+ browser *with* the flags signed in normally. Bundled Chromium was measured only in the
250
+ flagged configuration, so its unflagged rejection is inferred from the shared signal, not
251
+ observed directly. It now passes
252
+ `--disable-blink-features=AutomationControlled`, `ignore_default_args=["--enable-automation"]`
253
+ and `chromium_sandbox=True` — the last of which also removes Chrome's cosmetic *"You are
254
+ using an unsupported command-line flag"* banner — and signs in on the real OS window
255
+ instead of an emulated 1920×1080 viewport that pushed Google's sign-in form off-screen on
256
+ smaller or scaled displays.
257
+ - **Setting `CHROME_BINARY` no longer makes Playwright's `channel="chrome"` look resolvable
258
+ when it is not.** The availability check treated the variable as proof, passed, and then
259
+ failed at launch with *"Chromium distribution 'chrome' is not found"*. Playwright honours a
260
+ custom binary only via `executable_path=`, never via `channel=`, so the variable is now
261
+ ignored by that check (it still resolves a Chrome binary everywhere else).
262
+
263
+ ### Security
264
+
265
+ - **`httpx2` / `httpcore2` bumped to 2.12.0, clearing five newly published CVEs**
266
+ ([#766](https://github.com/ffroliva/gflow-cli/pull/766)). `httpcore2` CVE-2026-84381 and
267
+ `httpx2` CVE-2026-84378 / -84379 / -84380 / -84382, all against 2.9.1; both arrive
268
+ transitively through `mcp`. The advisories were published against an unchanged lockfile —
269
+ `Dependency audit (pip-audit)` went red on `develop` without any dependency change — so
270
+ this is not a regression introduced by a feature PR. `uvx pip-audit` on the exported
271
+ requirements now reports no known vulnerabilities. The bump also adds `httpx2-jsfetch`
272
+ 1.0 to the lock, marked `sys_platform == 'emscripten'` (Pyodide/WASM only); it is never
273
+ installed on any platform gflow supports.
274
+
10
275
  ## [0.71.1] — 2026-09-08
11
276
 
12
277
  ### Fixed
@@ -4580,7 +4845,9 @@ shell-script template that branches on these codes.
4580
4845
 
4581
4846
  First skeleton. Not functional end-to-end yet.
4582
4847
 
4583
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...HEAD
4848
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.73.0...HEAD
4849
+ [0.73.0]: https://github.com/ffroliva/gflow-cli/compare/v0.72.0...v0.73.0
4850
+ [0.72.0]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...v0.72.0
4584
4851
  [0.71.1]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...v0.71.1
4585
4852
  [0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
4586
4853
  [0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
@@ -14,13 +14,13 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
14
14
 
15
15
  ## Open
16
16
 
17
- ### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v, i2v from a local start frame, and r2v from local reference files (rest of the matrix pending)
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 everything except text-to-video, local-file image-to-video and local-file reference-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, references by `@Name` or `--reference-entity`, `image`, scenes, extend, instructions and tools are not ported yet and still exit 36. **`character` is NOT in that list any more** — `character create` was verified working on the migrated host in v0.70.0 and `character list` was re-verified there on 2026-09-07. This line claimed otherwise for a day, which is the dangerous direction for a stale doc to be stale in: a migrated user reading it concludes a working feature is impossible. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker's tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` have never had a probe run against them at all, so read them as *unported by gflow*, never as *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, 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.
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.
23
- - **The migrated composer DOES have an image mode** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): a code comment claimed, as "measured, not assumed", that it has none. Falsified 2026-09-07 — its settings overlay carries a `mode` radiogroup of `[imageImage, videocamVideo]`, present and hit-testable. Nothing was clicked on that axis and nothing was submitted, so this does **not** establish that `image` works on a moved account; it establishes only that the claim it cannot is unfounded. Read the remaining exit 36 as *gflow does not drive this yet*, never as *the host cannot do it*; see [the spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md).
23
+ - **The migrated composer image path is now driven** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): the first probe established a hit-testable Image mode; the 2026-09-08 follow-up captured real T2I and local-file I2I submissions on `ogiZ0b`, including page-owned reCAPTCHA, upload ids, response records and signed JPEG downloads. See [the submit-wire spike](docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md).
24
24
  - **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in v0.69.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
25
25
 
26
26
  Google is moving Flow off Labs onto its own origin. On a migrated page load,
@@ -48,7 +48,7 @@ This is **not** selector rot, not [#493](https://github.com/ffroliva/gflow-cli/i
48
48
  and not the agentic cohort — the agentic indicators are absent too. It is a
49
49
  different origin serving different markup.
50
50
 
51
- **What works now — text-to-video on the migrated host.** `gflow video t2v … --project <id>`
51
+ **What works now — generation on the migrated host.** `gflow video t2v … --project <id>`
52
52
  drives the migrated editor directly (settings through its option groups, prompt,
53
53
  submit, then it observes the app's own `batchexecute` status replies and downloads
54
54
  the clip). Two real clips were generated this way on 2026-09-05 — spike
@@ -56,10 +56,11 @@ the clip). Two real clips were generated this way on 2026-09-05 — spike
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
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 only `t2v`, `i2v` from a local `--initial-frame` (no end frame,
59
+ migrated editor is not ported), and `t2v`, `i2v` from a local `--initial-frame` (no end frame,
60
60
  no UUID/`@Name` frame — the migrated Frames picker exposes no media id in its DOM, so a frame is
61
61
  found by file name after gflow uploads it through the editor), and `r2v` from local `--ref` files
62
- (see the next paragraph) — everything else still exits 36.
62
+ (see the next paragraph), plus `image t2i` and local-file `image i2i` — unsupported
63
+ forms still exit 36.
63
64
 
64
65
  **`r2v` from local `--ref` files also runs there (2026-09-06).** Each file is uploaded
65
66
  through the same editor toolbar path i2v uses — so the app's own `maseQ` reply names the
@@ -73,6 +74,12 @@ References by `@Name` and character entities stay on labs, for the same reason a
73
74
  UUID does: the picker exposes no media id to anchor on. Capture:
74
75
  [2026-09-05-migrated-r2v-attach-surface](docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md).
75
76
 
77
+ **Images also run there (2026-09-08).** The driver selects Image mode, Nano Banana 2
78
+ or Pro, any supported aspect and count 1–4, then observes the page's own synchronous
79
+ `ogiZ0b` reply. Local I2I files use the existing `maseQ` upload and mention path; every
80
+ uploaded id must appear in the submit body before the result is trusted. UUID/entity
81
+ references, Agent instructions, and Imagen 4 remain pre-submit refusals on this host.
82
+
76
83
  **Models on the migrated host.** Its picker is driven for every tier the account's
77
84
  menu actually renders, `veo-lite-lp` included — matched by the `[Lower Priority]`
78
85
  tag alone, exactly as on labs.google. That entry was first captured on 2026-09-05
@@ -100,8 +107,9 @@ which Playwright updates in the same tick as the hand-off navigation — and fai
100
107
  with the distinct, non-retryable exit 36 instead of the misleading
101
108
  `UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
102
109
  accepts the migrated host, so a migrated load is no longer misread as a
103
- logged-out session. Text-to-video is driven (above); image, i2v/r2v, characters,
104
- scenes, extend, instructions, tools and project creation are the remaining work
110
+ logged-out session. The generation forms listed above and characters are driven;
111
+ scenes, extend, instructions, tools, project creation, and the named reference/model
112
+ variants are the remaining work
105
113
  tracked here — no retry helps for those until each is ported.
106
114
 
107
115
  > **v0.66.1's fast-fail did not fire in the field, and v0.66.2 is the correction.**
@@ -1229,6 +1237,51 @@ now names which of three things happened rather than blaming drift:
1229
1237
  **On 0.71.0 and earlier there is no recovery.** Open the project on
1230
1238
  `flow.google.com`, click the **Agent** chip off, and the account works again.
1231
1239
 
1240
+ **Follow-up ([#776](https://github.com/ffroliva/gflow-cli/issues/776)) — the same
1241
+ confusion survived one gate later, on the *click*.** The table above covers the readiness
1242
+ *wait*. A control that passes that wait and then refuses the click used to expire as a bare
1243
+ Playwright `TimeoutError`: exit 1, no locator, no cause. It now reports what was observed
1244
+ at the moment it expired, because the cause could not be measured — Flow's announcement
1245
+ overlay is a labs.google measurement that has never been reproduced on this host, and a
1246
+ mid-run agent-mode flip is equally consistent with the evidence.
1247
+
1248
+ | The message says | What it means | What to do |
1249
+ |---|---|---|
1250
+ | `… did not accept a click … the account is in Flow's agent mode` | the mode flipped after the editor was ready | turn the **Agent** chip off in a browser; re-run |
1251
+ | `… it is covered by <tag>.<class>` | something is stacked over the control — the class names it | dismiss it in a browser; re-run |
1252
+ | `… the page is accepting no pointer events at all` | an overlay has the whole app blocked (#593's shape) | dismiss it in a browser; re-run |
1253
+ | `… it carries a bare `hidden` attribute` / `it is disabled` | the control is present but not usable | usually agent mode or a cohort difference; check the Agent chip first |
1254
+ | `… it is not rendered (display, visibility, or a zero-sized box)` | it is in the DOM but not on screen | as above — check the Agent chip, then file a bug with the log |
1255
+ | `… it answers no hit test at its own centre` | nothing named itself as the cover, but the click still landed elsewhere | re-run once; if it repeats, file a bug — an overlay outside the document is the usual shape |
1256
+ | `… it was visible, enabled and hit-testable … most likely still moving` | nothing readable was wrong | Playwright also needs a *stable* box; re-run once. If it repeats, file a bug — this message means we looked and found nothing, which is a real finding worth having |
1257
+ | `… it could not be read back` | the page changed under the diagnosis | re-run; if it repeats, attach the log |
1258
+
1259
+ The occluder is named by tag plus framework class only. That is deliberate — a signed-in
1260
+ Flow page carries the account email and signed media URLs on exactly the elements that
1261
+ tend to occlude things, and this message is printed, logged, and pasted into issues.
1262
+
1263
+ ### `gflow auth login --account` reports a mismatch but leaves the profile in place
1264
+
1265
+ - **Status:** Open · **Severity:** Medium (no data loss; the risk is *which account pays*) · **Affects:** `gflow auth login --account <email>`, v0.73.0 onward · **Tracked:** [#773](https://github.com/ffroliva/gflow-cli/issues/773) item 3
1266
+
1267
+ `--account` asserts that the login authenticated as the account you named, and a mismatch
1268
+ raises **exit 38** with one `auth.account_assert_failed` log line. What it does **not** do is
1269
+ quarantine, rename or otherwise mark the profile — so a later run re-reads a profile
1270
+ authenticated as somebody else, with nothing persisted to say so. On a product that bills
1271
+ generations to the signed-in Google account, that is the wrong account paying.
1272
+
1273
+ This was a deliberate "minimum" in review round 4 of
1274
+ [#764](https://github.com/ffroliva/gflow-cli/pull/764), recorded here so the decision stays
1275
+ revisitable rather than lost in a merged thread.
1276
+
1277
+ **Workaround:** after any exit 38 from `--account`, check `gflow auth list` and re-run
1278
+ `gflow auth login --account <email>` for that profile before generating. Do not assume the
1279
+ failed assert left the profile unusable — it is usable, just possibly as the wrong person.
1280
+
1281
+ Two further items on the same issue are unfixed and worth knowing about: a second chooser
1282
+ hop (chooser → consent → chooser) is not handled and degrades into the landing timeout, and
1283
+ that timeout is still an unmeasured number.
1284
+
1232
1285
  ### Auth verification depends on Google's NextAuth session endpoint
1233
1286
 
1234
1287
  - **Status:** Mitigated · **Severity:** Low (degrades fail-closed) · **Affects:** issue #15 fix onward · **Tracked:** issue #15
@@ -1515,9 +1568,10 @@ End-to-end live-verified on the `ffroliva` profile across `9:16`, `16:9`, `1:1`,
1515
1568
 
1516
1569
  ### G12 "browser not secure" block — Google rejects automated sign-in
1517
1570
 
1518
- - **Status:** Resolved · **Severity:** Critical (blocked `gflow auth login`) · **Fixed in:** v0.6.0a2
1571
+ - **Status:** Resolved · **Severity:** Critical (blocked `gflow auth login`) · **Fixed in:** v0.6.0a2 · **Mitigation reimplemented + re-measured:** 2026-09-08
1519
1572
 
1520
- Google's sign-in flow (`accounts.google.com/v3/signin/rejected`) detected Playwright's bundled Chromium as an automated browser and refused the login with no user-facing error.
1573
+ Google's sign-in flow (`accounts.google.com/v3/signin/rejected`) rejects a browser that
1574
+ advertises itself as automated, and refuses the login with no user-facing error.
1521
1575
 
1522
1576
  **Root cause (timing race):** Without `--disable-blink-features=AutomationControlled`,
1523
1577
  Blink's C++ engine sets `navigator.webdriver = true` as a non-configurable, non-writable
@@ -1525,20 +1579,52 @@ native property at Chrome startup — before any JavaScript (including `add_init
1525
1579
  can run. The `Object.defineProperty` override silently fails. With the flag, the property
1526
1580
  is never set; the JS override then works as belt-and-suspenders.
1527
1581
 
1528
- **Resolution:** `v0.6.0a2` adds `RealChromeStrategy` — a new auth strategy that launches
1529
- the system's real Google Chrome via Playwright's `channel="chrome"` with stealth flags.
1582
+ **Resolution:** `gflow auth login` launches the system's real Google Chrome through
1583
+ Playwright's `channel="chrome"` with `chromium_sandbox=True`, `no_viewport=True`, and both
1584
+ stealth flags — `--disable-blink-features=AutomationControlled` and
1585
+ `ignore_default_args=["--enable-automation"]`. Because gflow owns that browser it also
1586
+ detects the completed Flow sign-in and closes the window itself; see
1587
+ [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md). When no Chrome channel resolves, or
1588
+ Google rejects the browser anyway, login falls back automatically to launching Chrome as a
1589
+ plain subprocess and waiting for you to close the window. There is no flag and no choice to
1590
+ make, and closing the window yourself works on either path.
1591
+
1592
+ > **This entry described that Playwright implementation long before it existed.**
1593
+ > It read *"`v0.6.0a2` adds `RealChromeStrategy` — launches the system's real Google Chrome
1594
+ > via Playwright's `channel="chrome"` with stealth flags."* `src/gflow_cli/auth/real_chrome.py`
1595
+ > was created at `eb0de133` (2026-07-19) as a bare `subprocess.Popen` passive capture, and
1596
+ > `git log -S'channel="chrome"' -- src/gflow_cli/auth/` returned **zero** commits until the
1597
+ > auto-close change. The paragraph above is the same shape restated deliberately as current
1598
+ > fact, not the same accident left standing.
1530
1599
 
1531
1600
  ```bash
1532
- # Bypass G12 block explicitly:
1601
+ # Ask for real Chrome explicitly:
1533
1602
  gflow auth login --browser chrome
1534
1603
 
1535
1604
  # Or rely on auto-detection (default behaviour; picks real Chrome if installed):
1536
1605
  gflow auth login
1537
1606
  ```
1538
1607
 
1539
- A cosmetic "You are using an unsupported command-line flag" notice may appear briefly in
1540
- the Chrome window — this is harmless and can be dismissed. It is the accepted trade-off
1541
- for bypassing G12.
1608
+ **The block is current Google behaviour — "Resolved" means the mitigation holds, not that
1609
+ Google stopped.** Re-measured 2026-09-08 across three throwaway *unauthenticated* profiles,
1610
+ each signed into by hand
1611
+ ([spike](docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md)): a
1612
+ browser advertising `navigator.webdriver === true` — real Chrome, no stealth flags — was
1613
+ rejected at `/v3/signin/rejected` **17.5 s** into the flow, while the same real Chrome
1614
+ *with* the flags reported `false`, never saw the rejection, and reached a Flow session
1615
+ cookie at 59.4 s. Playwright's bundled Chromium with the flags passed too, so the binary is
1616
+ not the discriminator; `navigator.webdriver` tracked the outcome in all three arms.
1617
+
1618
+ > **This is N=1 — do not read it as a capability claim.** One account, one Windows host, one
1619
+ > residential IP, one Chrome build (`Chrome/149.0.0.0`), one day. Google's sign-in risk
1620
+ > scoring varies with account age and IP reputation, so it does not predict CI, a VPS, or a
1621
+ > fresh account. Every arm ran headed, so it says nothing about headless in either
1622
+ > direction. Sign-in is also a different gate from generation's reCAPTCHA Enterprise check;
1623
+ > a result on one does not move the other.
1624
+
1625
+ The Chrome window no longer shows the "You are using an unsupported command-line flag"
1626
+ notice this entry used to warn about: that banner came from the `--no-sandbox` Playwright
1627
+ injects by default, and `chromium_sandbox=True` stops the injection.
1542
1628
 
1543
1629
  ---
1544
1630
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.71.1
3
+ Version: 0.73.0
4
4
  Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
@@ -130,7 +130,7 @@ gflow character create --project <id> --name "Aria" --face-prompt "..." --body-p
130
130
 
131
131
  Outputs land under `$GFLOW_CLI_OUTPUT_DIR`, or you can route them to S3, MinIO, or Google Cloud Storage with [`GFLOW_CLI_STORAGE_URI`](docs/EXTERNAL_STORAGE.md). The first call takes 30 to 90 seconds while Chromium warms up; later calls reuse the warm session.
132
132
 
133
- > **Why `--browser chrome`?** Google rejects Playwright's bundled Chromium. The CLI fails fast with a friendly error (`AuthBrowserRejectedError`, exit code 14) if you pick anything else.
133
+ > **Why `--browser chrome`?** It is the only strategy that marks the profile as a real-Chrome profile, which is what later generation runs open it with. The default `auto` picks it whenever Chrome is installed — see [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md).
134
134
 
135
135
  > **Installing from a local checkout?** `uv tool install <path>` **ignores `uv.lock`** and resolves dependencies from the `pyproject.toml` ranges, so it can hand you a Playwright build this project has never tested. Playwright ships the browser driver, and an untested minor can wedge a generation silently. Carry the locked version explicitly:
136
136
  >
@@ -198,7 +198,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
198
198
 
199
199
  **Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
200
200
 
201
- **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
201
+ **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, and image-to-image from local files. Image generation supports Nano Banana 2 / Pro, the four aspect ratios measured on that host (16:9, 4:3, 1:1, 9:16), and counts 1–4; an existing project is required at the transport boundary. UUID/entity references, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
202
202
 
203
203
  **What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
204
204