gflow-cli 0.66.0__tar.gz → 0.66.2__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 (873) hide show
  1. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/CHANGELOG.md +82 -1
  3. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/KNOWN_ISSUES.md +13 -1
  4. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/PKG-INFO +1 -1
  5. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/INDEX.md +4 -0
  6. gflow_cli-0.66.2/docs/LIVE_VERIFICATION_v0.66.1.md +100 -0
  7. gflow_cli-0.66.2/docs/LIVE_VERIFICATION_v0.66.2.md +170 -0
  8. {gflow_cli-0.66.0/website → gflow_cli-0.66.2}/docs/MCP.md +7 -1
  9. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/PROJECT_STATUS.md +67 -0
  10. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/pyproject.toml +1 -1
  11. gflow_cli-0.66.2/scripts/dev/measure_migrated_host_flip.py +152 -0
  12. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/__init__.py +1 -1
  13. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/client.py +75 -10
  14. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/routes.py +32 -0
  15. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/_common.py +44 -0
  16. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/drivers/factory.py +36 -1
  17. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/mode_control.py +11 -0
  18. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/ui_automation_video.py +13 -1
  19. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/profile_store.py +5 -3
  20. gflow_cli-0.66.2/tests/api/test_client_locale_cache.py +375 -0
  21. gflow_cli-0.66.2/tests/api/test_routes_locale.py +193 -0
  22. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/drivers/test_ui_mode.py +96 -1
  23. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_common.py +43 -1
  24. gflow_cli-0.66.2/tests/api/transports/test_migrated_host_gate.py +250 -0
  25. gflow_cli-0.66.2/tests/features/latched_locale_recovery.feature +19 -0
  26. gflow_cli-0.66.2/tests/features/migrated_host_gate.feature +23 -0
  27. gflow_cli-0.66.2/tests/features/test_migrated_host_gate_steps.py +214 -0
  28. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/worker/test_daemon.py +39 -0
  29. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/uv.lock +1 -1
  30. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/KNOWN_ISSUES.md +13 -1
  31. {gflow_cli-0.66.0 → gflow_cli-0.66.2/website}/docs/MCP.md +7 -1
  32. gflow_cli-0.66.0/tests/api/test_client_locale_cache.py +0 -204
  33. gflow_cli-0.66.0/tests/api/test_routes_locale.py +0 -68
  34. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.agents/plugins/marketplace.json +0 -0
  35. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/README.md +0 -0
  36. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/active.md +0 -0
  37. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/branch-review.md +0 -0
  38. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/changelog.md +0 -0
  39. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/check.md +0 -0
  40. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/doc-review.md +0 -0
  41. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/issue-assessment.md +0 -0
  42. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/issue-resolve.md +0 -0
  43. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/known-issues.md +0 -0
  44. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/live-verify.md +0 -0
  45. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/llm-council.md +0 -0
  46. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/next.md +0 -0
  47. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/plan.md +0 -0
  48. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/pr-council-review.md +0 -0
  49. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/predict.md +0 -0
  50. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/release.md +0 -0
  51. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/scenario.md +0 -0
  52. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/sonar.md +0 -0
  53. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.claude/commands/gflow/status.md +0 -0
  54. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.env.template +0 -0
  55. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.gitattributes +0 -0
  56. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/CODEOWNERS +0 -0
  57. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/FUNDING.yml +0 -0
  58. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  59. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/copilot-instructions.md +0 -0
  60. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/dependabot.yml +0 -0
  61. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/ci.yml +0 -0
  62. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/deps-watch.yml +0 -0
  63. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/external-pr-triage.yml +0 -0
  64. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/governance-advisory.yml +0 -0
  65. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/governance-benchmark.yml +0 -0
  66. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/labels.yml +0 -0
  67. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/main-base-guard.yml +0 -0
  68. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/pages.yml +0 -0
  69. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/release.yml +0 -0
  70. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/scorecard.yml +0 -0
  71. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/selector-probe.yml +0 -0
  72. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.github/workflows/star-history-watch.yml +0 -0
  73. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.gitignore +0 -0
  74. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.gitleaks.toml +0 -0
  75. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.pre-commit-config.yaml +0 -0
  76. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/.secrets.baseline +0 -0
  77. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/AGENTS.md +0 -0
  78. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/CLAUDE.md +0 -0
  79. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/CONFIGURATION.md +0 -0
  80. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/CONTRIBUTING.md +0 -0
  81. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/DISCLAIMER.md +0 -0
  82. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/LICENSE +0 -0
  83. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/PLAN.md +0 -0
  84. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/README.md +0 -0
  85. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/RELEASE.md +0 -0
  86. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/ROADMAP.md +0 -0
  87. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/conftest.py +0 -0
  88. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  89. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/deploy/logrotate-pr-triage +0 -0
  90. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docker-compose.yml +0 -0
  91. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/ACCOUNT_SAFETY.md +0 -0
  92. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/AGENT_GUIDE.md +0 -0
  93. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/AGENT_UI_E2E.md +0 -0
  94. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/AGENT_UI_RECON.md +0 -0
  95. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/ARCHITECTURE.md +0 -0
  96. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/ASSET_TAGGING_RECON.md +0 -0
  97. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/AUTHENTICATION.md +0 -0
  98. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/CHARACTER.md +0 -0
  99. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/CHARACTER_RECON.md +0 -0
  100. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/CONFIGURATION.md +0 -0
  101. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/DATA_LAYER.md +0 -0
  102. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/DEBUGGING.md +0 -0
  103. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/DEMOS.md +0 -0
  104. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/DEVELOPMENT.md +0 -0
  105. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/E2E_TESTING.md +0 -0
  106. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/EXTERNAL_STORAGE.md +0 -0
  107. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/GITHUB.md +0 -0
  108. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  109. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  110. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/INSTRUCTIONS.md +0 -0
  111. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  112. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  113. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  114. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  115. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  116. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  117. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  118. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  119. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  120. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  121. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  122. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  123. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  124. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  125. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  126. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  127. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  128. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  129. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  130. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  131. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  132. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  133. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  134. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  135. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  136. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  137. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  138. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  139. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  140. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  141. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  142. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  143. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  144. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  145. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  146. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  147. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  148. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  149. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  150. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  151. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  152. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  153. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  154. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  155. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  156. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  157. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  158. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  159. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  160. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  161. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  162. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  163. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  164. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  165. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  166. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  167. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  168. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  169. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  170. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  171. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  172. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  173. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  174. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  175. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  176. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  177. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  178. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  179. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  180. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  181. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  182. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/MEDIA_LIBRARY.md +0 -0
  183. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/MOVIE.md +0 -0
  184. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/PROMPT_EXPANSION.md +0 -0
  185. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/REFERENCE_STRATEGIES.md +0 -0
  186. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/SECURITY.md +0 -0
  187. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/TOOLS.md +0 -0
  188. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/USAGE.md +0 -0
  189. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/USER_GUIDE.md +0 -0
  190. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/assets/demo-split-pf.gif +0 -0
  191. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/assets/example-run.gif +0 -0
  192. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/assets/examples.webp +0 -0
  193. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/medium_tutorial.md +0 -0
  194. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/schemas/movie-handoff.schema.json +0 -0
  195. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/sonar-cleanup-tracker.md +0 -0
  196. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  197. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  198. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  199. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  200. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  201. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  202. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  203. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  204. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  205. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  206. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  207. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  208. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  209. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  210. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  211. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  212. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  213. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  214. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  215. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  216. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  217. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  218. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  219. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  220. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  221. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  222. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  223. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  224. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  225. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  226. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  227. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  228. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  229. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  230. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  231. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  232. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  233. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  234. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  235. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  236. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  237. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  238. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  239. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  240. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  241. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  242. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  243. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  244. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  245. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  246. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  247. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  248. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  249. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  250. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  251. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  252. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  253. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  254. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  255. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  256. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  257. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/eval/pr_triage_eval.py +0 -0
  258. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/eval/pr_triage_fixtures.json +0 -0
  259. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/README.md +0 -0
  260. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/batch_from_config.py +0 -0
  261. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/multi_prompt_t2i.py +0 -0
  262. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/sample_config.json +0 -0
  263. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/sample_prompts.txt +0 -0
  264. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/single_image_t2i.py +0 -0
  265. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/examples/workflow_chain.py +0 -0
  266. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/index.html +0 -0
  267. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/llms.txt +0 -0
  268. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/README.md +0 -0
  269. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/01_upload_image.json +0 -0
  270. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  271. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  272. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/04_archive_workflow.json +0 -0
  273. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/05_createProject.json +0 -0
  274. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/06_batchGenerateImages.json +0 -0
  275. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  276. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  277. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  278. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  279. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  280. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/12_create_scene.json +0 -0
  281. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/13_sceneWorkflows_update.json +0 -0
  282. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/14_get_scene_workflows.json +0 -0
  283. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/samples/captured/15_commit_flowWorkflow.json +0 -0
  284. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/Dockerfile.triage +0 -0
  285. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/entrypoint.sh +0 -0
  286. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/package-lock.json +0 -0
  287. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/package.json +0 -0
  288. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  289. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/pr_triage_gate.py +0 -0
  290. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  291. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/canary/register_task.ps1 +0 -0
  292. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/canary/run_canary.py +0 -0
  293. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/check_doc_links.py +0 -0
  294. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/check_materiality.py +0 -0
  295. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/check_release_artifacts.py +0 -0
  296. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/check_repo_hygiene.py +0 -0
  297. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/check_test_count.py +0 -0
  298. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/check_website_docs_pii.py +0 -0
  299. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/ci/generate_website_docs.py +0 -0
  300. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/debug_editor.py +0 -0
  301. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/debug_gen_settings.py +0 -0
  302. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/debug_settings.py +0 -0
  303. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/_recording_client.py +0 -0
  304. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/_spike_common.py +0 -0
  305. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/active_plan.py +0 -0
  306. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  307. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  308. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  309. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  310. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  311. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  312. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_image_add_media_dom.py +0 -0
  313. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_locale_invariants.py +0 -0
  314. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  315. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_project_listing.py +0 -0
  316. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  317. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  318. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  319. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/cdp_drive_and_probe.py +0 -0
  320. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/character_create_spike.py +0 -0
  321. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/character_create_spike_v2.py +0 -0
  322. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/dump_character_selectors.js +0 -0
  323. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/incident_bundle_quality.py +0 -0
  324. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  325. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  326. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/live_verify_video_model_select.py +0 -0
  327. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/make_project.py +0 -0
  328. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/materiality_backtest.py +0 -0
  329. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/measure_locale_probe.py +0 -0
  330. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/patch_character.py +0 -0
  331. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/skillopt/README.md +0 -0
  332. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/skillopt/harness.py +0 -0
  333. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/skillopt/tasks.json +0 -0
  334. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/sonar-local-scan.sh +0 -0
  335. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  336. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_changelog_capture.py +0 -0
  337. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_char_editor_dom.py +0 -0
  338. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_char_gen_capture.py +0 -0
  339. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_character_prompt_format.py +0 -0
  340. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_extend_model_recon.py +0 -0
  341. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  342. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_extend_route_capture.py +0 -0
  343. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_extend_submit_capture.py +0 -0
  344. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_extend_ui_recon.py +0 -0
  345. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_image_upscale_capture.py +0 -0
  346. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_image_upscale_drive.py +0 -0
  347. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  348. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  349. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_incident_live.py +0 -0
  350. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  351. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  352. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  353. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  354. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  355. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_locale_poison.py +0 -0
  356. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_mode_roundtrip.py +0 -0
  357. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  358. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_model_inventory.py +0 -0
  359. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_movie_attach_payload.py +0 -0
  360. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_movie_entity_recon.py +0 -0
  361. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_movie_gen_capture.py +0 -0
  362. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_movie_picker_select.py +0 -0
  363. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_movie_voice_list.py +0 -0
  364. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  365. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_patch_entity.py +0 -0
  366. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_patchright.py +0 -0
  367. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  368. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/spike_video_tab_dom.py +0 -0
  369. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/verify_language_agnostic.py +0 -0
  370. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/verify_locale_navigation_race.py +0 -0
  371. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/dev/verify_model_attribution.py +0 -0
  372. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/diag/README.md +0 -0
  373. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/diag/capture_flow_traffic.py +0 -0
  374. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  375. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/diag/memory_profile.py +0 -0
  376. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/diag/recaptcha_mint.py +0 -0
  377. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/diag/spike_387_openai_compat.py +0 -0
  378. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  379. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/e2e/capture_agent_toggle.py +0 -0
  380. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/probe/run_probe.py +0 -0
  381. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/probe/spike_auth_matrix.py +0 -0
  382. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/record_demo.ps1 +0 -0
  383. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/smoke_image.py +0 -0
  384. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/smoke_video_editor.py +0 -0
  385. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/smoke_worker_style.py +0 -0
  386. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/spike_waf_camoufox.py +0 -0
  387. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/scripts/verify_chrome_auth_viability.py +0 -0
  388. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/README.md +0 -0
  389. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/changelog/SKILL.md +0 -0
  390. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/check/SKILL.md +0 -0
  391. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/doc-review/SKILL.md +0 -0
  392. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/gflow-cli/SKILL.md +0 -0
  393. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/issue-assessment/SKILL.md +0 -0
  394. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/issue-resolve/SKILL.md +0 -0
  395. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/known-issues/SKILL.md +0 -0
  396. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/live-verify/SKILL.md +0 -0
  397. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/llm-council/SKILL.md +0 -0
  398. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/plan/SKILL.md +0 -0
  399. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/pr-council-review/SKILL.md +0 -0
  400. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/predict/SKILL.md +0 -0
  401. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/release/SKILL.md +0 -0
  402. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/scenario/SKILL.md +0 -0
  403. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/sonar/SKILL.md +0 -0
  404. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/skills/status/SKILL.md +0 -0
  405. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/sonar-project.properties +0 -0
  406. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/__main__.py +0 -0
  407. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/_cli_helpers.py +0 -0
  408. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/__init__.py +0 -0
  409. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/_engine.py +0 -0
  410. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/_retry.py +0 -0
  411. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/_sapisidhash.py +0 -0
  412. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/character.py +0 -0
  413. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/dto.py +0 -0
  414. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/extend_chain.py +0 -0
  415. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/image.py +0 -0
  416. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/image_upscale.py +0 -0
  417. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/recaptcha.py +0 -0
  418. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/scene.py +0 -0
  419. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/__init__.py +0 -0
  420. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  421. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/base.py +0 -0
  422. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  423. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  424. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  425. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  426. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  427. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  428. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  429. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  430. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  431. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/video.py +0 -0
  432. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/api/video_extend.py +0 -0
  433. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/__init__.py +0 -0
  434. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/base.py +0 -0
  435. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/cookies.py +0 -0
  436. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/factory.py +0 -0
  437. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/internal_chromium.py +0 -0
  438. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/real_chrome.py +0 -0
  439. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/strategies.py +0 -0
  440. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/auth/verification.py +0 -0
  441. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/browser_manager.py +0 -0
  442. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/chain.py +0 -0
  443. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/chain_manifest.py +0 -0
  444. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli.py +0 -0
  445. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_character.py +0 -0
  446. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_data.py +0 -0
  447. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_doctor.py +0 -0
  448. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_image.py +0 -0
  449. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_instructions.py +0 -0
  450. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_models.py +0 -0
  451. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_movie.py +0 -0
  452. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_project.py +0 -0
  453. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_run.py +0 -0
  454. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_scene.py +0 -0
  455. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_tools.py +0 -0
  456. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/cli_video.py +0 -0
  457. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/composition.py +0 -0
  458. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/config.py +0 -0
  459. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/__init__.py +0 -0
  460. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/chain_repo.py +0 -0
  461. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  462. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  463. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  464. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  465. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  466. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  467. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  468. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  469. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  470. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/migrations/__init__.py +0 -0
  471. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/models.py +0 -0
  472. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/queries.py +0 -0
  473. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/recorder.py +0 -0
  474. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/redaction.py +0 -0
  475. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/repository.py +0 -0
  476. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/data/store.py +0 -0
  477. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/diagnostics.py +0 -0
  478. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/errors.py +0 -0
  479. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/exceptions.py +0 -0
  480. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/file_integrity.py +0 -0
  481. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  482. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/flow_selectors/grading.py +0 -0
  483. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/flow_selectors/model.py +0 -0
  484. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/flow_selectors/registry.py +0 -0
  485. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/image_batch.py +0 -0
  486. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/json_output.py +0 -0
  487. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/__init__.py +0 -0
  488. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/prompts.py +0 -0
  489. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/resources.py +0 -0
  490. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/server.py +0 -0
  491. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/setup.py +0 -0
  492. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  493. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/mcp/tools.py +0 -0
  494. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/media.py +0 -0
  495. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/movie_manifest.py +0 -0
  496. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/observability.py +0 -0
  497. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/paths.py +0 -0
  498. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/profile_lease.py +0 -0
  499. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/redaction.py +0 -0
  500. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/services/__init__.py +0 -0
  501. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/services/catalog_sync.py +0 -0
  502. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/services/character_create.py +0 -0
  503. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/services/doctor.py +0 -0
  504. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/services/mentions.py +0 -0
  505. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/storage.py +0 -0
  506. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/__init__.py +0 -0
  507. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/banned.py +0 -0
  508. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  509. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  510. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  511. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  512. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/expander.py +0 -0
  513. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/invocation.py +0 -0
  514. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/loader.py +0 -0
  515. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/registry.py +0 -0
  516. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/runtime.py +0 -0
  517. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/tools/spec.py +0 -0
  518. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/ui/app.py +0 -0
  519. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/ui/server.py +0 -0
  520. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/update_check.py +0 -0
  521. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/winsec.py +0 -0
  522. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/worker/codec.py +0 -0
  523. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/worker/daemon.py +0 -0
  524. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/src/gflow_cli/worker/queue.py +0 -0
  525. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tasks/lessons.md +0 -0
  526. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/test_assets/sample_batch.json +0 -0
  527. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/test_assets/sample_batch.tsv +0 -0
  528. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/test_assets/sample_batch_invalid.tsv +0 -0
  529. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/__init__.py +0 -0
  530. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/__init__.py +0 -0
  531. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/fixtures/character_gen_response.json +0 -0
  532. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/fixtures/patch_entity_response.json +0 -0
  533. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  534. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_aisandbox_auth_error.py +0 -0
  535. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_aisandbox_auth_headers.py +0 -0
  536. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_bearer_redaction.py +0 -0
  537. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_character.py +0 -0
  538. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client.py +0 -0
  539. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_character.py +0 -0
  540. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_delete_characters.py +0 -0
  541. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_errors.py +0 -0
  542. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_extend.py +0 -0
  543. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_generate_character.py +0 -0
  544. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_image.py +0 -0
  545. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_incidents.py +0 -0
  546. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_launch_kwargs.py +0 -0
  547. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_patch_entity.py +0 -0
  548. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_scene.py +0 -0
  549. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_client_upscale.py +0 -0
  550. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_concurrency.py +0 -0
  551. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_dto.py +0 -0
  552. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_engine.py +0 -0
  553. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_extend_chain.py +0 -0
  554. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_image.py +0 -0
  555. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_image_dto.py +0 -0
  556. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_image_upscale.py +0 -0
  557. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  558. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_recaptcha.py +0 -0
  559. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_retry.py +0 -0
  560. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_routes.py +0 -0
  561. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_routes_character.py +0 -0
  562. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_routes_scene.py +0 -0
  563. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_sapisidhash_helper.py +0 -0
  564. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_scene_models.py +0 -0
  565. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_video.py +0 -0
  566. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_video_extend.py +0 -0
  567. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_video_request.py +0 -0
  568. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/test_video_status_poll.py +0 -0
  569. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/__init__.py +0 -0
  570. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/conftest.py +0 -0
  571. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/drivers/__init__.py +0 -0
  572. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/drivers/test_agentic.py +0 -0
  573. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/drivers/test_classic.py +0 -0
  574. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/drivers/test_factory.py +0 -0
  575. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  576. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_base.py +0 -0
  577. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_bearer.py +0 -0
  578. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_evaluate_fetch.py +0 -0
  579. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_factory.py +0 -0
  580. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_fingerprint.py +0 -0
  581. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_locale_navigation.py +0 -0
  582. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_mode_control.py +0 -0
  583. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_model_selection_loud.py +0 -0
  584. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_navigation_settled.py +0 -0
  585. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_overlay_precondition.py +0 -0
  586. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_policy_400.py +0 -0
  587. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_sapisidhash.py +0 -0
  588. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_selector_symmetry.py +0 -0
  589. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_transport_timeout.py +0 -0
  590. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_ui_automation.py +0 -0
  591. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_ui_automation_batch.py +0 -0
  592. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  593. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_ui_automation_video.py +0 -0
  594. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_ui_character_editor.py +0 -0
  595. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  596. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/auth/strategies/test_factory.py +0 -0
  597. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/auth/strategies/test_strategies.py +0 -0
  598. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/auth/test_cookies.py +0 -0
  599. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/auth/test_real_chrome.py +0 -0
  600. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/auth/test_verification.py +0 -0
  601. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/auth/test_windows_acl.py +0 -0
  602. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  603. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/__init__.py +0 -0
  604. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_auth_status.py +0 -0
  605. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_auth_list.py +0 -0
  606. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_character.py +0 -0
  607. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_character_create.py +0 -0
  608. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_data.py +0 -0
  609. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_data_errors.py +0 -0
  610. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_data_errors_retention.py +0 -0
  611. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_data_sync.py +0 -0
  612. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_doctor.py +0 -0
  613. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_image.py +0 -0
  614. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_image_seed_removed.py +0 -0
  615. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_image_selector_drift.py +0 -0
  616. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_image_upscale.py +0 -0
  617. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  618. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_instructions.py +0 -0
  619. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_models.py +0 -0
  620. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_movie.py +0 -0
  621. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_run.py +0 -0
  622. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_scene.py +0 -0
  623. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_tools.py +0 -0
  624. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_video.py +0 -0
  625. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_video_chain.py +0 -0
  626. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_cli_video_extend.py +0 -0
  627. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_error_handling.py +0 -0
  628. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_failure_funnel.py +0 -0
  629. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_helpers.py +0 -0
  630. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_incident_output.py +0 -0
  631. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_movie_manifest.py +0 -0
  632. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  633. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_predictable_output.py +0 -0
  634. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  635. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_settings_validation.py +0 -0
  636. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/cli/test_t2i_multi_prompt.py +0 -0
  637. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/composition/test_character.py +0 -0
  638. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/composition/test_compose_prompt.py +0 -0
  639. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/composition/test_handoff.py +0 -0
  640. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/composition/test_style_variants.py +0 -0
  641. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/composition/test_style_variants_e2e.py +0 -0
  642. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/conftest.py +0 -0
  643. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/__init__.py +0 -0
  644. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_chain_repo.py +0 -0
  645. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_failure_recording.py +0 -0
  646. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_find_incomplete_character.py +0 -0
  647. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_models.py +0 -0
  648. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_null_columns_stay_null.py +0 -0
  649. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_packaging.py +0 -0
  650. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_recorder.py +0 -0
  651. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_recorder_character.py +0 -0
  652. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_redaction.py +0 -0
  653. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_repository.py +0 -0
  654. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_scene_persistence.py +0 -0
  655. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_settings_and_errors.py +0 -0
  656. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_store.py +0 -0
  657. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/data/test_store_migrations.py +0 -0
  658. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/dev/test_recording_client.py +0 -0
  659. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/__init__.py +0 -0
  660. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/conftest.py +0 -0
  661. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  662. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  663. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  664. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_auth_verification_e2e.py +0 -0
  665. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_cancellation_e2e.py +0 -0
  666. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_chain_e2e.py +0 -0
  667. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_character_create_e2e.py +0 -0
  668. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  669. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  670. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_daemon_e2e.py +0 -0
  671. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_data_layer_e2e.py +0 -0
  672. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  673. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  674. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  675. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  676. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_image_batch_e2e.py +0 -0
  677. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  678. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  679. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_incident_quality_e2e.py +0 -0
  680. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_json_output_e2e.py +0 -0
  681. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_live_agentic_instructions.py +0 -0
  682. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  683. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_project_naming_e2e.py +0 -0
  684. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  685. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_scene_compose_live.py +0 -0
  686. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  687. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_tools_e2e.py +0 -0
  688. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_transports_e2e.py +0 -0
  689. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  690. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  691. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/e2e/test_video_t2v_e2e.py +0 -0
  692. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/__init__.py +0 -0
  693. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/asset_tagging.feature +0 -0
  694. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/auth.feature +0 -0
  695. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/auth_login.feature +0 -0
  696. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/character_create.feature +0 -0
  697. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/character_read.feature +0 -0
  698. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/conftest.py +0 -0
  699. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/duration_tab_drift.feature +0 -0
  700. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/entity_provenance.feature +0 -0
  701. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/image.feature +0 -0
  702. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/image_batch_references.feature +0 -0
  703. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/image_upscale.feature +0 -0
  704. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/incident_diagnostics.feature +0 -0
  705. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/instructions.feature +0 -0
  706. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/locale_picker_include.feature +0 -0
  707. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/mcp_tasks.feature +0 -0
  708. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/media_picker_tiers.feature +0 -0
  709. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/output_hardening.feature +0 -0
  710. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_asset_tagging_steps.py +0 -0
  711. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_auth_login_steps.py +0 -0
  712. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_auth_steps.py +0 -0
  713. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_character_create_steps.py +0 -0
  714. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_character_read_steps.py +0 -0
  715. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_image_steps.py +0 -0
  716. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_image_upscale_steps.py +0 -0
  717. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_incident_diagnostics_steps.py +0 -0
  718. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_instructions_steps.py +0 -0
  719. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_locale_picker_include_steps.py +0 -0
  720. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_mcp_tasks_steps.py +0 -0
  721. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_media_picker_tiers_steps.py +0 -0
  722. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_output_hardening_steps.py +0 -0
  723. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_step_collision_guard.py +0 -0
  724. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_video_agent_ui_steps.py +0 -0
  725. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/test_video_chain_steps.py +0 -0
  726. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/video_agent_ui.feature +0 -0
  727. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/features/video_chain.feature +0 -0
  728. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/__init__.py +0 -0
  729. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/changelog_modal_page.html +0 -0
  730. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/doctor_env.py +0 -0
  731. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/flow_model_inventory.json +0 -0
  732. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/flow_project_listing_media.json +0 -0
  733. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/listing_payload.py +0 -0
  734. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/fixtures/seeded_catalog.py +0 -0
  735. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/flow_selectors/__init__.py +0 -0
  736. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/flow_selectors/test_grading.py +0 -0
  737. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/flow_selectors/test_model.py +0 -0
  738. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/flow_selectors/test_model_governance.py +0 -0
  739. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/flow_selectors/test_registry.py +0 -0
  740. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/flow_selectors/test_report.py +0 -0
  741. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/image_batch/__init__.py +0 -0
  742. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/image_batch/test_image_manifest.py +0 -0
  743. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/image_batch/test_jitter_config.py +0 -0
  744. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/image_batch/test_observability_events.py +0 -0
  745. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/integration/__init__.py +0 -0
  746. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/integration/conftest.py +0 -0
  747. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/integration/constants.py +0 -0
  748. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/integration/test_expander_gateway.py +0 -0
  749. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/integration/test_storage_gcs.py +0 -0
  750. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/integration/test_storage_s3.py +0 -0
  751. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/__init__.py +0 -0
  752. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/conftest.py +0 -0
  753. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_auth_status_tool.py +0 -0
  754. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_cli_parity.py +0 -0
  755. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_error_funnel.py +0 -0
  756. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_http_transport.py +0 -0
  757. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_known_issues_resource.py +0 -0
  758. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_no_spend.py +0 -0
  759. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_rate_limit_envelope.py +0 -0
  760. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_resources.py +0 -0
  761. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_server.py +0 -0
  762. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_setup.py +0 -0
  763. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_stdio_transport.py +0 -0
  764. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_tasks_extension.py +0 -0
  765. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_tools_helpers.py +0 -0
  766. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_tools_instructions.py +0 -0
  767. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/mcp/test_tools_wired.py +0 -0
  768. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  769. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_canary_classify.py +0 -0
  770. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_canary_reexec.py +0 -0
  771. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_capture_locale_invariants.py +0 -0
  772. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_check_materiality.py +0 -0
  773. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_check_release_artifacts.py +0 -0
  774. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_check_repo_hygiene.py +0 -0
  775. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_check_test_count.py +0 -0
  776. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_check_website_docs_pii.py +0 -0
  777. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_codex_plugin.py +0 -0
  778. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_generate_website_docs.py +0 -0
  779. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_incident_bundle_quality.py +0 -0
  780. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_materiality_backtest.py +0 -0
  781. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/scripts/test_workflow_hardening.py +0 -0
  782. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/__init__.py +0 -0
  783. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_catalog_sync.py +0 -0
  784. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_character_create_redaction.py +0 -0
  785. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_character_create_saga.py +0 -0
  786. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_character_gen_no_direct_post.py +0 -0
  787. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_doctor.py +0 -0
  788. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_media_attribution.py +0 -0
  789. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_mentions_observability.py +0 -0
  790. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_mentions_parse.py +0 -0
  791. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_mentions_resolve.py +0 -0
  792. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/services/test_resolve_and_apply.py +0 -0
  793. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/smoke/__init__.py +0 -0
  794. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/smoke/test_profile_account_smoke.py +0 -0
  795. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/smoke/test_real_flow.py +0 -0
  796. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_auth.py +0 -0
  797. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_browser_manager.py +0 -0
  798. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_chain.py +0 -0
  799. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_chain_manifest.py +0 -0
  800. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_cli_data.py +0 -0
  801. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_cli_project.py +0 -0
  802. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_config.py +0 -0
  803. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_conftest_isolation.py +0 -0
  804. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_data_queries.py +0 -0
  805. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_diagnostics_bundle.py +0 -0
  806. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_diagnostics_events.py +0 -0
  807. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_diagnostics_journal.py +0 -0
  808. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_diagnostics_recorder.py +0 -0
  809. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_diagnostics_retention.py +0 -0
  810. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_diagnostics_sanitize.py +0 -0
  811. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_documentation_gate.py +0 -0
  812. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_duration_tab_drift.py +0 -0
  813. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_entity_provenance.py +0 -0
  814. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_errors.py +0 -0
  815. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_errors_classification.py +0 -0
  816. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_image_batch_references.py +0 -0
  817. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_incident_generation_requests.py +0 -0
  818. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_json_output.py +0 -0
  819. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_marker_registry.py +0 -0
  820. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_media.py +0 -0
  821. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_observability.py +0 -0
  822. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_overlay_banner_dismissal.py +0 -0
  823. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_paths.py +0 -0
  824. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_playwright_pin.py +0 -0
  825. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_profile_lease.py +0 -0
  826. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_profile_lease_subprocess.py +0 -0
  827. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_profile_store.py +0 -0
  828. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_profile_store_locale.py +0 -0
  829. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_project_list_urls.py +0 -0
  830. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_self_documenting_errors.py +0 -0
  831. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_smoke.py +0 -0
  832. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/test_update_check.py +0 -0
  833. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/__init__.py +0 -0
  834. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_banned.py +0 -0
  835. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_expander.py +0 -0
  836. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_invocation.py +0 -0
  837. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_loader.py +0 -0
  838. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_registry.py +0 -0
  839. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_runtime.py +0 -0
  840. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/tools/test_spec.py +0 -0
  841. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/ui/test_app.py +0 -0
  842. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/worker/test_codec.py +0 -0
  843. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/worker/test_mcp_daemon_race.py +0 -0
  844. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/worker/test_queue.py +0 -0
  845. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/worker/test_queue_multiprocess.py +0 -0
  846. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/tests/worker/test_queue_reconciliation.py +0 -0
  847. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/ACCOUNT_SAFETY.md +0 -0
  848. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/ARCHITECTURE.md +0 -0
  849. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/AUTHENTICATION.md +0 -0
  850. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/CHARACTER.md +0 -0
  851. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/CONFIGURATION.md +0 -0
  852. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/DATA_LAYER.md +0 -0
  853. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/DEBUGGING.md +0 -0
  854. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/DEVELOPMENT.md +0 -0
  855. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/E2E_TESTING.md +0 -0
  856. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/EXTERNAL_STORAGE.md +0 -0
  857. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/INSTRUCTIONS.md +0 -0
  858. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/MEDIA_LIBRARY.md +0 -0
  859. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/MOVIE.md +0 -0
  860. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/PROMPT_EXPANSION.md +0 -0
  861. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/SECURITY.md +0 -0
  862. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/TOOLS.md +0 -0
  863. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/USAGE.md +0 -0
  864. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/USER_GUIDE.md +0 -0
  865. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/agents.md +0 -0
  866. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/index.md +0 -0
  867. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/installation.md +0 -0
  868. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/onboarding-mockup.html +0 -0
  869. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/onboarding.md +0 -0
  870. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/docs/stylesheets/extra.css +0 -0
  871. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/mkdocs.yml +0 -0
  872. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/requirements.in +0 -0
  873. {gflow_cli-0.66.0 → gflow_cli-0.66.2}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.66.0",
3
+ "version": "0.66.2",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -7,6 +7,85 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.66.2] — 2026-09-03
11
+
12
+ ### Fixed
13
+
14
+ - **v0.66.1's migrated-origin fast-fail never fired on a real run
15
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** The guard read `page.url` once,
16
+ at `get_ui_driver` entry — but `routes.project_editor_url` only ever builds a `labs.google`
17
+ URL and the hop to `flow.google.com` is a *post-`goto`* redirect that neither settle path
18
+ waits for (no locale → `_settle_if_redirecting` returns immediately; a known locale →
19
+ `await_url_settled` short-circuits because the labs URL already matches the localised shape).
20
+ So the guard classified a pre-redirect URL, declined, and the run paid ~54 s before failing
21
+ anyway through the slow selector-probe path. Measured by the reporter on three consecutive
22
+ v0.66.1 runs: **57.0 / 57.1 / 58.3 s**, with `ui_driver.migrated_host_bail` absent from the
23
+ timeline entirely. The host check is now a shared `raise_if_migrated` helper called at the
24
+ three points the run is *about to spend time* — `get_ui_driver` entry, each `detect_ui_mode`
25
+ poll tick, and `_exit_agent_mode` once the media panel is found absent — so it adds no wait
26
+ and no navigation to the old host, and aborts as soon as the redirect is observable. The
27
+ event now names its call site, so the fast path is visible in a field timeline instead of
28
+ inferred. Two blanket `except Exception` handlers that would have demoted the abort to a
29
+ warning now re-raise it.
30
+
31
+ - **A `NOT_REDIRECTED` locale cache was an absorbing state, which made the #643 `<html lang>`
32
+ recovery unreachable on exactly the profiles that needed it
33
+ ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).** `_bootstrap_and_resolve_locale`
34
+ returned *before* `_resolve_account_locale` — the only site of that recovery and the only
35
+ caller of `next_locale_state` — so nothing could ever move a latched profile off the state.
36
+ Every profile that saw two migrated loads on ≤0.66.0 latched this way. `NOT_REDIRECTED` now
37
+ skips the settle only, and still reads the locale: measured 56/56 on a latched profile whose
38
+ page declares `lang="en"` on every load. The 4 s settle stays skipped — deleting the early
39
+ return outright was rejected, because on that account the cached "not redirected" is a true
40
+ observation.
41
+
42
+ - **A `<html lang>` locale was treated as evidence that Flow redirects the account, which
43
+ switched the URL settle back on permanently ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).**
44
+ Shipped in v0.66.1 and present on `develop`: #643's `<html lang>` fallback returns a segment for
45
+ an account Flow serves **bare** and never redirects, and `next_locale_state` recorded it as the
46
+ cached state. Every later bootstrap then saw `cached != NOT_REDIRECTED`, settled, and burned the
47
+ full 4 s `URL_SETTLE_TIMEOUT_MS` waiting for a redirect that never comes — the exact cost #587
48
+ exists to remove, on any non-redirecting account with a `lang` attribute. Only a **URL-derived**
49
+ segment is now folded into that cache; the lang-derived one is used in-process to build URLs and
50
+ never persisted. Measured on a real profile: warm bootstrap **7.41 s → 2.66 s**, with the locale
51
+ still recovered.
52
+
53
+ - **`docs/MCP.md`'s retryable-class list was incomplete**, which would have told an MCP agent not
54
+ to auto-retry failures the envelope marks `retryable: true`. It omitted `FlowHostMigratedError`,
55
+ `UiModeUnavailableError` and `SyncPartialError`; it now matches `errors.RETRYABLE_ERRORS`.
56
+
57
+ ## [0.66.1] — 2026-09-03
58
+
59
+ ### Fixed
60
+
61
+ - **A migrated-origin run spent ~36 s discovering a failure knowable in microseconds
62
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** `flow.google.com` renders none
63
+ of the controls gflow drives, so every DOM probe is doomed before it starts — yet the run
64
+ still burned the full `detect_ui_mode` poll window (~8 s, both arms missing), the crop
65
+ selector cascade (~24 s) and the URL settle (4 s) before raising `FlowHostMigratedError`.
66
+ Because the rollout flaps per page load and callers retry on exit 36, that cost was paid on
67
+ **every attempt** of a retry loop. `get_ui_driver` now checks the host first and fails fast
68
+ with the same retryable exit 36. The old host is untouched and still gets full DOM detection;
69
+ a page whose URL cannot be read still probes rather than bailing, so a transient is never
70
+ mistaken for a migrated origin.
71
+
72
+ - **Locale resolution was blind on `flow.google.com`, and silently discarded a locale it had
73
+ already learned ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).** The migrated
74
+ origin serves `/project/<id>` with no `/fx/<locale>/tools/flow` segment, so
75
+ `locale_segment_from_url` could never match there. The locale had not disappeared — it moved
76
+ into `<html lang>`, which stays correct on the migrated host. Two measured consequences:
77
+ `next_locale_state("pt", None)` returned PROVISIONAL, **demoting** an already-learned locale
78
+ on every migrated load (so a fully-migrated account could never learn it again, undoing
79
+ [#587](https://github.com/ffroliva/gflow-cli/issues/587)); and `await_url_settled` burned the
80
+ full 4 s timeout per navigation waiting for a shape that can no longer exist. gflow now falls
81
+ back to `<html lang>` when the URL carries no segment, and skips the settle wait entirely on
82
+ the migrated origin.
83
+
84
+ The fallback is evidence-backed, not assumed: measured on two accounts (`en` and `pt-BR`),
85
+ `<html lang>` **agreed with the URL segment wherever both existed**. Unlike
86
+ `navigator.language` — which reports the value gflow itself sets — it is server-rendered by
87
+ Flow. Where Flow does state the locale in the URL, that stays authoritative.
88
+
10
89
  ## [0.66.0] — 2026-09-03
11
90
 
12
91
  ### Fixed
@@ -3705,7 +3784,9 @@ shell-script template that branches on these codes.
3705
3784
 
3706
3785
  First skeleton. Not functional end-to-end yet.
3707
3786
 
3708
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.66.0...HEAD
3787
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.66.2...HEAD
3788
+ [0.66.2]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...v0.66.2
3789
+ [0.66.1]: https://github.com/ffroliva/gflow-cli/compare/v0.66.0...v0.66.1
3709
3790
  [0.66.0]: https://github.com/ffroliva/gflow-cli/compare/v0.65.0...v0.66.0
3710
3791
  [0.65.0]: https://github.com/ffroliva/gflow-cli/compare/v0.64.0...v0.65.0
3711
3792
  [0.64.0]: https://github.com/ffroliva/gflow-cli/compare/v0.63.0...v0.64.0
@@ -50,7 +50,7 @@ callers get this for free: the failure is `FlowHostMigratedError` (exit 36) with
50
50
  `retryable: true`, so retry loops driven by the `--json` / MCP / worker error
51
51
  envelope will keep trying.
52
52
 
53
- **What gflow does today (v0.66.0):** recognises the migrated origin and fails
53
+ **What gflow does today (v0.66.2):** recognises the migrated origin and fails
54
54
  with the distinct, retryable exit 36 instead of the misleading
55
55
  `UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
56
56
  accepts the migrated host, so a migrated load is no longer misread as a
@@ -58,6 +58,18 @@ logged-out session. **Support for driving the new frontend is separate work and
58
58
  is not implemented** — once the rollout completes for an account, no retry will
59
59
  help until then.
60
60
 
61
+ > **v0.66.1's fast-fail did not fire in the field, and v0.66.2 is the correction.**
62
+ > The guard read `page.url` once, at `get_ui_driver` entry — before the hop to
63
+ > `flow.google.com` had landed, because `project_editor_url` only builds
64
+ > `labs.google` URLs and the redirect arrives *after* `page.goto` returns.
65
+ > Measured by the reporter on three consecutive v0.66.1 runs: exit 36 at **57.0 /
66
+ > 57.1 / 58.3 s**, through the slow selector-probe path. v0.66.2 re-checks the host
67
+ > at the points the run already blocks, so the abort costs the old host nothing and
68
+ > lands as soon as the redirect is observable. The same release stops a
69
+ > `NOT_REDIRECTED` locale cache from disabling the `<html lang>` recovery (#643),
70
+ > which had made that state unrecoverable on exactly the profiles it was written
71
+ > for.
72
+
61
73
  ---
62
74
 
63
75
  ### A Veo extend segment is 7 seconds, not the 8 Flow advertises — so concat pads a frozen second
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.66.0
3
+ Version: 0.66.2
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
@@ -158,8 +158,12 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
158
158
  **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
159
159
  **"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
160
160
  **"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
161
+ **"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of the still-flapping rollout.** On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true`, `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.
162
+
161
163
  **"What was live-verified for v0.66.0?"** → [LIVE_VERIFICATION_v0.66.0](LIVE_VERIFICATION_v0.66.0.md) — **#639 Flow's `flow.google.com` migration, verified 2026-09-03 on profile `ffroliva` at ZERO credits.** The maintainer's own account turned out to be inside the rollout, so the fix was proven against the real migrated frontend rather than a reconstructed DOM: a read-only probe of `flow.google.com/project/<id>` measured `i_total: 0` (independently reproducing the reporter's central measurement) and drove the production functions against the live page — `flow_host_kind: "migrated"`, `_check_logged_in: true` (it was `false` before the fix, i.e. a valid session read as logged-out), and `_mode_switch_error` returning `FlowHostMigratedError` / exit 36 / `retryable: true`. The flap is confirmed on ONE account: a credit-free `image t2i` minutes earlier landed on the OLD host and completed exit 0 with a real 768x1376 JPEG (`ffd8ffe0`, 401,939 bytes, Pillow dims matching the API claim), proving the rewritten host gate does not regress the old path. Also recorded: the migrated URL **drops `/fx/tools/flow` entirely** — it is `/project/<id>` — which is why a substring gate on `labs.google` could never match it; and the migrated composer is not control-less but exposes **no `data-testid`, zero ligature `<i>`, and 13 `button[aria-label]`** (`Settings trigger`, `Start generation`, …), recorded as recon for the follow-up WITH the caveat that `aria-label` is translated and therefore Tier-2 at best under the locale-invariance rule. One item is recorded as NOT verified rather than omitted: gflow **driving** the migrated frontend, which is out of scope and keeps #639 open. Verification also hit pre-existing [#561](https://github.com/ffroliva/gflow-cli/issues/561) (401 on `project.createProject`), A/B'd against unmodified `develop` to prove it was not this change, then routed around with an existing `--project`.
162
164
 
165
+ **"What was live-verified for v0.66.2?"** → [LIVE_VERIFICATION_v0.66.2](LIVE_VERIFICATION_v0.66.2.md) — the old host proven live at zero credits (**exit 0**, real 768x1376 JPEG, twice), the locale cache measured **7.41 s → 2.66 s**, and the migrated path recorded as **NOT verified** because the rollout flapped back (72/72 navigations landed on `labs.google`). No time-to-exit-36 is claimed — this release exists because v0.66.1 reported one from the wrong entrypoint, so see also the correction block atop [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md).
166
+
163
167
  **"What was live-verified for v0.65.0?"** → [LIVE_VERIFICATION_v0.65.0](LIVE_VERIFICATION_v0.65.0.md) — the guard A/B (three runs, zero credits, control included); the `chain`/`movie` duration guards are validation that refuses **before** any transport call, so they are covered by a red state that reproduces the mid-spend crash in a test plus negative controls, and the reason they were not live-run is recorded rather than omitted.
164
168
 
165
169
  **"Does the `referenceEntity` guard actually run, and is it a Web Worker or a Service Worker?"** → [LIVE_VERIFICATION_reference_entity_guard](LIVE_VERIFICATION_reference_entity_guard.md) — **A/B-proven live on denon82 2026-09-02, zero credits.** Control (without #618): the guard never fired and the test failed; with #618: it fired and passed. Same account, same prompt, one variable. Settles the question that held #618 — it is a **dedicated Web Worker**, so `context.route` suffices and no `service_workers="block"` is needed. Also confirms `route.continue_(post_data=...)` does not corrupt the body (both runs produced a real image). The **video** glob was equally dead, which #615 never mentions. Residual: direct-wire routes still bypass structurally (#619).
@@ -0,0 +1,100 @@
1
+ # Live Verification — v0.66.1 (migrated-origin fixes for #639/#643)
2
+
3
+ **Date:** 2026-09-03 · **Account:** ffroliva@gmail.com · **Platform:** Windows 11, Chrome strategy
4
+ **Credits spent:** **0** — one Imagen image (images are credit-free) plus read-only probes.
5
+
6
+ > ## ⚠️ Correction (2026-09-03, same day) — Layer 1's latency numbers are not user-visible
7
+ >
8
+ > **Layer 1 below measured `get_ui_driver` in isolation, on a page already sitting on
9
+ > `flow.google.com`.** That precondition never holds on a real run: `project_editor_url`
10
+ > only ever builds a `labs.google` URL and the hop to the migrated origin is a
11
+ > *post-`goto`* redirect that neither settle path waits for, so on the CLI route the guard
12
+ > read a pre-redirect URL and declined.
13
+ >
14
+ > The reporter of #639 measured the real path on three consecutive v0.66.1 runs: **57.0 /
15
+ > 57.1 / 58.3 s**, terminating through `ui_automation_video.selector_probe_failed` — the
16
+ > slow path — with `ui_driver.migrated_host_bail` **absent from the timeline entirely**.
17
+ >
18
+ > So of the rows below: `"get_ui_driver": {"ms": 0}` and **`time to exit 36 — 0 ms` are
19
+ > true of the isolated probe and false of every CLI run.** The claim
20
+ > *"`ui_driver.migrated_host_bail` is logged, so the fast path is observable rather than
21
+ > inferred"* is the one the field timeline falsified — the event was never emitted, and
22
+ > nothing here noticed because the isolated probe emitted it.
23
+ >
24
+ > The same gap hid the locale fix: `client.py` returned before `_resolve_account_locale`
25
+ > on a `NOT_REDIRECTED` cache, so the `<html lang>` recovery Layer 1 exercised **directly**
26
+ > is unreachable through the client on exactly the profiles that need it. `profile_ffroliva`
27
+ > is latched that way today.
28
+ >
29
+ > Both are fixed for v0.66.2 — see [LIVE_VERIFICATION_v0.66.2](LIVE_VERIFICATION_v0.66.2.md).
30
+ > **Layer 2 (no regression on the old host) stands unchanged and is still the load-bearing
31
+ > result here.** The lesson is recorded rather than the numbers quietly edited: a function
32
+ > measured in isolation is not a verification of the path users take.
33
+
34
+ ## What had to be proven
35
+
36
+ Two fixes, both on the migrated-origin path, and both verifiable live because the account is
37
+ inside Google's rollout:
38
+
39
+ 1. `get_ui_driver` fails fast on `flow.google.com` instead of probing a DOM that cannot answer.
40
+ 2. The account locale is recovered from `<html lang>` when the migrated URL carries no segment.
41
+
42
+ Plus the property that matters more than either: **the old host still works.**
43
+
44
+ ## Layer 1 — the migrated path, measured on a real migrated load
45
+
46
+ ```json
47
+ {
48
+ "final_url": "https://flow.google.com/project/c5550ed7-...",
49
+ "host_kind": "migrated",
50
+ "get_ui_driver": { "raised": "FlowHostMigratedError", "ms": 0,
51
+ "exit_code": 36, "retryable": true, "names_host": true },
52
+ "await_url_settled": { "result": null, "ms": 0 },
53
+ "locale_recovery": { "html_lang": "en-GB", "from_url": null, "from_lang_attr": "en" }
54
+ }
55
+ ```
56
+
57
+ | | before | after (measured) |
58
+ |---|---|---|
59
+ | `detect_ui_mode` poll window | ~8 s | skipped |
60
+ | crop selector cascade | ~24 s | skipped |
61
+ | `await_url_settled` | 4018 ms | **0 ms** |
62
+ | **time to exit 36** (isolated probe) | ~36 s | **0 ms** |
63
+ | **time to exit 36** (real CLI run) | ~57 s | **~57 s — UNCHANGED, see the correction above** |
64
+ | locale on migrated origin | `null` (and demoted a learned locale) | **`en`** recovered from `<html lang>` |
65
+
66
+ ~~`ui_driver.migrated_host_bail` is logged, so the fast path is observable rather than inferred.~~
67
+ **Retracted.** It is logged by the isolated probe and by nothing on the CLI route — the field
68
+ timeline has no such event. Observability of a path you did not exercise is not observability.
69
+
70
+ ## Layer 2 — no regression on the old host (full generation, exit 0)
71
+
72
+ The rollout still flaps on this account, and a `gflow image t2i --project <existing>` run landed
73
+ on the **old** host during verification:
74
+
75
+ ```
76
+ EXIT=0 ELAPSED_MS=42168
77
+ status: ok | model: NARWHAL
78
+ dims: 768x1376 | tmp/lv661/images/2026-09-03/0add6af6-...-_1.jpg
79
+ ```
80
+
81
+ Real image generated and written. The host guard is scoped to the migrated origin and does not
82
+ short-circuit the path that works.
83
+
84
+ ## Layer 3 — offline
85
+
86
+ - 5 + 8 tests written **red first** across the two fixes.
87
+ - **A/B controls:** neutering the early bail fails exactly 3; neutering the locale fix fails
88
+ exactly 8 — one per claimed behaviour, no test passing vacuously. No-regression tests pass in
89
+ **both** directions.
90
+ - `1614 passed / 3 skipped`; ruff clean; pyright 78 = `develop` baseline.
91
+
92
+ ## Recorded as NOT verified rather than omitted
93
+
94
+ - **Driving the migrated frontend.** Still impossible; #639 stays open. These fixes make the
95
+ failure fast and honest, not survivable.
96
+ - **A non-English migrated locale end to end.** `html lang=pt` was measured on `denon82`'s
97
+ migrated load, but the recovery path was exercised live only on `en-GB` → `en`. The `pt` case
98
+ is unit-tested, not live-run.
99
+ - **The `en-GB` → `en` region reduction against a locale where region is load-bearing**
100
+ (`zh-Hans`/`zh-Hant`). Only two locales observed; flagged in the docstring.
@@ -0,0 +1,170 @@
1
+ # Live Verification — v0.66.2 (the migrated-host gate actually fires; the locale cache stops lying)
2
+
3
+ **Date:** 2026-09-03 · **Account:** ffroliva@gmail.com · **Platform:** Windows 11, Chrome strategy
4
+ **Credits spent:** **0** — two Imagen images (images are credit-free) plus 72 read-only navigations.
5
+
6
+ ## What had to be proven, and the honest constraint
7
+
8
+ This release fixes defects that v0.66.1's *own* verification missed, so the bar for it is higher
9
+ than usual: **v0.66.1 measured `get_ui_driver` in isolation on an already-migrated page and
10
+ reported `0 ms`, which was true of the probe and false of every CLI run.** See the correction at
11
+ the top of [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md).
12
+
13
+ **The constraint this time is the inverse of last time.** Google's rollout flapped *back* on both
14
+ maintainer accounts during this work:
15
+
16
+ | profile | navigations | landed migrated | landed old host |
17
+ |---|---|---|---|
18
+ | `ffroliva` | 60 | **0** | 60 |
19
+ | `denon82` | 12 | **0** | 12 |
20
+
21
+ Measured with `scripts/dev/measure_migrated_host_flip.py` across three sweeps on `ffroliva` and
22
+ one on `denon82`, over ~2 hours (the raw per-navigation record is in the `scripts/dev/_spike_out/` JSON the
23
+ instrument writes; the planning artifacts were consolidated at release per the repo's
24
+ spec-to-memory convention).
25
+
26
+ So **the migrated path was not reachable from this machine and is NOT live-verified here.** It is
27
+ unit-tested and A/B-controlled only. That is stated in the NOT-verified section below rather than
28
+ folded into the green column — which is precisely the mistake being corrected.
29
+
30
+ What *is* live-verifiable is the property that matters most today: **the old host, which 100% of
31
+ real loads currently take, is unaffected** — and the locale behaviour, which is fully exercisable.
32
+
33
+ ## Layer 1 — the locale cache stops conflating two different questions
34
+
35
+ `profile_ffroliva/.gflow_locale` was **empty** — `NOT_REDIRECTED` — before the run. Under v0.66.1
36
+ that state returned before `_resolve_account_locale`, so the `<html lang>` recovery #643 shipped
37
+ could never run on it.
38
+
39
+ ```
40
+ cache before: '' (NOT_REDIRECTED)
41
+ client.account_locale_resolved locale=en source=html_lang
42
+ client.account_locale_cached locale=en settle_skipped=true
43
+ cache after: '' (NOT_REDIRECTED — unchanged)
44
+ ```
45
+
46
+ Three things at once, all measured:
47
+
48
+ 1. **The locale is recovered from the document**, not the URL — `source=html_lang`. The latch no
49
+ longer blocks it.
50
+ 2. **The settle stays skipped** (`settle_skipped=true`). The #587 win is intact — which is why
51
+ deleting the early return outright was rejected: on this account "not redirected" is a *true*
52
+ observation, confirmed 60/60.
53
+ 3. **The cached state is unchanged.** This is the correction the council forced (see below): the
54
+ cache answers *"does Flow redirect this account?"*, and a `<html lang>` attribute is no
55
+ evidence of a redirect — every account has one.
56
+
57
+ ### The regression the council caught, and the measurement that proved it
58
+
59
+ The first cut of this fix folded the recovered locale into the cache. Two independent reviewers
60
+ (D1 correctness, D4 tests) flagged it; `scripts/dev/measure_locale_probe.py` then reproduced it
61
+ without being asked:
62
+
63
+ ```
64
+ BEFORE: ffroliva warm 7.41s cached 'en' !! warm arm slower than cold — investigate
65
+ transport.url_settle_gave_up timeout_ms=4000.0 (x2)
66
+
67
+ AFTER: ffroliva cold 6.99s cached '?'
68
+ ffroliva warm 2.66s cached '' settle off, locale still 'en'
69
+ ```
70
+
71
+ Writing the locale in flipped `cached != NOT_REDIRECTED`, which turned the settle back on
72
+ permanently and cost the full 4 s `URL_SETTLE_TIMEOUT_MS` on every future bootstrap — the exact
73
+ cost #587 exists to remove.
74
+
75
+ **Tracing it found a live defect in v0.66.1 itself, present on `develop` today.** #643's
76
+ `<html lang>` fallback returns a segment for an account Flow serves *bare* and never redirects, and
77
+ `next_locale_state` recorded that as evidence of a redirect. So **any** non-redirecting account
78
+ with a `lang` attribute has been paying 4 s per bootstrap since v0.66.1 — no latch required. The
79
+ fix folds only the **URL-derived** segment into the state; the lang-derived one is used in-process
80
+ for URL building and never persisted.
81
+
82
+ ## Layer 2 — the risk this fix introduces, exercised rather than assumed
83
+
84
+ Recovering the locale changes what gflow navigates to: this profile previously built the **bare**
85
+ `labs.google/fx/tools/flow/project/<id>` and now builds `/fx/en/tools/flow/project/<id>`. If `en`
86
+ were the wrong segment, every navigation would bounce.
87
+
88
+ ```
89
+ ui_automation.entering_existing_project url=https://labs.google/fx/en/tools/flow/project/c5550ed7-…
90
+ ui_automation.url_stable_after_goto same URL, +549 ms, settle_skipped=false
91
+ ui_driver.ui_mode.attempt_exit_agent +507 ms
92
+ ui_driver.bound mode=classic
93
+ ```
94
+
95
+ `url_stable_after_goto`, **not** `url_redirected_after_goto`: Flow accepted the segment and did
96
+ not bounce it. Confirmed on both live runs.
97
+
98
+ ## Layer 3 — no regression on the old host: full generation, exit 0, twice
99
+
100
+ ```
101
+ run 1 (pre-council-fix build) EXIT=0 768×1376 JPEG · 427.8 KB · ff d8 ff
102
+ run 2 (final build) EXIT=0 768×1376 JPEG · 413.5 KB · ff d8 ff
103
+ ```
104
+
105
+ Real images generated and written; `ui_driver.bound mode=classic` on both; no
106
+ `ui_driver.migrated_host_bail` event on either — correct, the host is `labs.google`.
107
+
108
+ **On wall-clock:** run 1 took 36.6 s and run 2 took 86 s, and **neither number is evidence about
109
+ this diff.** Run 2's extra time is Flow's own generation latency plus a 34.4 s
110
+ `browser_teardown.context_close_error` — a bounded Chrome-close timeout at `api/_engine.py:159`
111
+ that fires *after* all generation work, is already handled (warning → force close → exit 0), and
112
+ is untouched by this branch. A single-run timing delta sits well inside that variance, so the
113
+ "adds no wait" claim rests on the A/B control and on code shape (`page.url` is a cached property;
114
+ `flow_host_kind` is one `urlsplit` plus a dict lookup; `_media_panel_present` uses `.count()` and
115
+ does not wait) — **not** on the totals. Claiming "faster" from these runs would repeat exactly the
116
+ error this release corrects.
117
+
118
+ ## Layer 4 — offline
119
+
120
+ - Tests written **red first**: 4 red for the locale latch, 4 red for the host gate, before any
121
+ production change.
122
+ - **A/B controls**, re-derived independently by a council reviewer with its own harness:
123
+ neutering `raise_if_migrated` fails **exactly 7** and **no** old-host test; restoring the
124
+ pre-#639 early return fails **exactly 5**. Nothing passes vacuously in either direction.
125
+ - The council's must-fix added two more tests that would have caught the regression it found:
126
+ a two-bootstrap cycle (one bootstrap cannot observe a cache flipping the settle back on), and
127
+ a lang-only-locale case pinning that a `lang` attribute is not evidence of a redirect.
128
+ - `ruff check` / `ruff format --check` clean on `src tests`; `pyright src` at the `develop`
129
+ baseline; repo hygiene, doc links, website-docs PII, and the `website/docs` mirror all green.
130
+
131
+ ## Layer 5 — the MCP surface
132
+
133
+ No CLI leaf, option, or request-DTO field changed, so `tests/mcp/test_cli_parity.py` needs no new
134
+ mapping and `worker/codec.py` no new payload key — the fix is in the transport both surfaces
135
+ share (independently traced by the parity reviewer: `worker/daemon.py` and `mcp/tools.py` both
136
+ construct the same `FlowApiClient`). What *is* MCP-specific is the queue envelope, different code
137
+ from the CLI's `--json` path, carrying the flag the reporter's orchestrator actually reads:
138
+
139
+ ```
140
+ queue error record: exit_code = 36, retryable = True
141
+ ```
142
+
143
+ Pinned by `tests/worker/test_daemon.py::test_migrated_host_error_crosses_the_queued_path`. Noted
144
+ honestly: that test pins the write side; the `wait=True` read-back in `mcp/tools.py` is generic
145
+ code exercised by its neighbours, so the round trip is pinned end-to-end only by construction.
146
+
147
+ `docs/MCP.md` listed the retryable classes by name and omitted three of them
148
+ (`FlowHostMigratedError`, `UiModeUnavailableError`, `SyncPartialError`); the list now matches
149
+ `errors.RETRYABLE_ERRORS` exactly, mirror regenerated.
150
+
151
+ Side effect: `mcp/tools.py` builds project editor links from `account_locale_for()`, which reads
152
+ the *cached* state. Because the lang-derived locale is deliberately not persisted, those links are
153
+ unchanged by this branch — the earlier claim that they become "account-correct" was wrong and is
154
+ retracted here rather than shipped.
155
+
156
+ ## Recorded as NOT verified rather than omitted
157
+
158
+ - **The migrated path firing fast.** 72/72 navigations landed on the old host, so no migrated load
159
+ was available to time. The gate is proven by unit tests and A/B control, **not** by a live run.
160
+ The instrument is committed; the honest next step is a later flap or a run from the reporter's
161
+ permanently-migrated account.
162
+ - **The achieved time-to-exit-36 on a real migrated run.** Unmeasured, and deliberately not
163
+ estimated. The design does not depend on it — the guard sits where the run already blocks.
164
+ - **Driving the migrated frontend.** Still impossible. #639 stays open; this PR says `Refs`.
165
+ - **A non-English profile recovering live.** `denon82` is cached `"pt"` (it genuinely redirects),
166
+ so the lang-recovery path was exercised live only on `en`. The `pt` case is unit-tested.
167
+ - **The `en-GB` → `en` region reduction where region is load-bearing** (`zh-Hans`/`zh-Hant`).
168
+ Unchanged from v0.66.1, still only two locales observed.
169
+ - **Full-suite coverage %.** The targeted suites ran without `--cov` (an unscoped `pytest --cov`
170
+ OOMs this machine); the 80% floor is enforced by CI.
@@ -127,7 +127,13 @@ marks a transient failure a scheduler can re-run without operator intervention
127
127
  WAF/reCAPTCHA bounce (`WafRejectionError`), rate-limit (`RateLimitError`),
128
128
  transport timeout (`TransportTimeoutError`), network blip (`NetworkError`), a
129
129
  dropped browser session (`BrowserSessionClosedError`), a Flow web-app crash
130
- (`FlowAppError`), and an agentic-cohort flap (`FlowAgentUiError`). Everything
130
+ (`FlowAppError`), an agentic-cohort flap (`FlowAgentUiError`), a page load served
131
+ by the migrated `flow.google.com` frontend (`FlowHostMigratedError`,
132
+ [#639](https://github.com/ffroliva/gflow-cli/issues/639) — the rollout flaps per
133
+ page load, so a retry often lands the frontend gflow can drive), an unreachable
134
+ UI arm (`UiModeUnavailableError`), and a partially-completed sync
135
+ (`SyncPartialError`). That list is the whole of `errors.RETRYABLE_ERRORS`.
136
+ Everything
131
137
  else (auth, content-policy, configuration, security) is terminal
132
138
  (`retryable: false`): retrying the identical request fails the same way. This
133
139
  flag is the **same shared classification** the CLI `--json` payload and the
@@ -4,6 +4,70 @@
4
4
 
5
5
  ## Current release
6
6
 
7
+ **v0.66.2 — alpha.** **The fast-fail v0.66.1 announced had never once fired, and the locale
8
+ cache was answering a question nobody asked it.**
9
+
10
+ v0.66.1 claimed exit 36 arrived in 0 ms on Google's migrated `flow.google.com` frontend
11
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). It did not. That number came from
12
+ calling `get_ui_driver` **in isolation on a page already sitting on the migrated origin** — a
13
+ state no real run ever reaches, because `project_editor_url` only ever builds a `labs.google`
14
+ URL and the hop to the new origin is a *post-`goto`* redirect that neither settle path waits
15
+ for. The guard read a pre-redirect URL and declined. The reporter measured the truth on three
16
+ consecutive runs: **57.0 / 57.1 / 58.3 s**, through the slow selector-probe path, with the bail
17
+ event absent from the timeline entirely.
18
+
19
+ **Check the host where the run already blocks.** A shared `raise_if_migrated()` now runs at
20
+ `get_ui_driver` entry, on every `detect_ui_mode` poll tick, in `_exit_agent_mode` once the media
21
+ panel is found absent, and inside `mode_control`'s 8 s composer poll — the last of which was
22
+ found by review after the first fix shipped, and covers both `--ui-mode agentic` and a redirect
23
+ landing mid-`ensure_media_mode`. None of these adds a wait: `page.url` is a cached property and
24
+ `flow_host_kind` is one parse plus a dict lookup. Three blanket `except Exception` handlers that
25
+ would have demoted the abort to a warning now re-raise it.
26
+
27
+ **Stop letting a `lang` attribute mean "this account redirects".** Two locale defects, both
28
+ shipped in v0.66.1. `NOT_REDIRECTED` was an *absorbing* state: it returned before the only site
29
+ of the `<html lang>` recovery, so the profiles #643 was written for could never use it. And the
30
+ recovered locale was then recorded as evidence of a redirect — which it is not, since every
31
+ account declares one — switching the URL settle back on permanently and costing the full 4 s
32
+ `URL_SETTLE_TIMEOUT_MS` on every bootstrap of any non-redirecting account. Measured on a real
33
+ profile: **7.41 s → 2.66 s**, locale still recovered
34
+ ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).
35
+
36
+ Two designs were rejected **by measurement**, not preference: a bounded settle (72/72
37
+ navigations across two accounts showed no post-`goto` URL change at all, so the bound would be
38
+ pure dead time), and caching "this profile is migrated" to navigate straight to
39
+ `flow.google.com` (it would have locked both maintainer accounts out of a working frontend the
40
+ day it shipped).
41
+
42
+ Still not drivable — #639 stays open for that.
43
+
44
+ Verification: [LIVE_VERIFICATION_v0.66.2](LIVE_VERIFICATION_v0.66.2.md). The old host is proven
45
+ live at zero credits (**exit 0**, real 768x1376 JPEG, twice). **The migrated path is recorded as
46
+ NOT verified**: the rollout flapped back mid-work and 72/72 navigations landed on `labs.google`,
47
+ so the gate rests on unit tests and A/B controls, and **no time-to-exit-36 is claimed anywhere**.
48
+ Given this release exists because a number was reported from the wrong entrypoint, inventing a
49
+ replacement would have repeated the error.
50
+
51
+ <details><summary>v0.66.1 — a fast-fail that never fired (superseded by v0.66.2)</summary>
52
+
53
+ **v0.66.1 — alpha.** Intended to make the migrated-origin failure instant and to stop discarding
54
+ a learned locale. **Both fixes were real but neither reached the path users take**, and this
55
+ entry is kept to record that rather than to claim it.
56
+
57
+ The `0 ms` exit 36 reported here was measured on `get_ui_driver` in isolation, on an
58
+ already-migrated page; the CLI route was unchanged at ~57 s. The `<html lang>` locale recovery
59
+ was likewise exercised directly, while the client returned before it on any profile cached
60
+ `NOT_REDIRECTED`. v0.66.2 fixes both, and additionally a settle regression this release
61
+ introduced. See the correction block at the top of
62
+ [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md).
63
+
64
+ What did hold: `_check_logged_in` accepting the migrated host, and the old-host no-regression
65
+ result (exit 0 with a real JPEG), which was the load-bearing evidence in that release.
66
+
67
+ </details>
68
+
69
+ <details><summary>v0.66.0 — naming Flow's flow.google.com migration</summary>
70
+
7
71
  **v0.66.0 — alpha.** **Google started moving Flow to a new domain, and gflow blamed its own
8
72
  selectors for it.**
9
73
 
@@ -42,6 +106,8 @@ Verification: [LIVE_VERIFICATION_v0.66.0](LIVE_VERIFICATION_v0.66.0.md) — prov
42
106
  `check_logged_in: true`, exit 36, `retryable: true`), with a credit-free `image t2i` on the
43
107
  old host minutes earlier completing exit 0 to prove no regression.
44
108
 
109
+ </details>
110
+
45
111
  <details><summary>v0.65.0 — the referenceEntity guard that had never fired</summary>
46
112
 
47
113
  **v0.65.0 — alpha.** **A safety net that had never once fired, and two crashes that spent
@@ -485,6 +551,7 @@ reporter-verified e2e on macOS).
485
551
 
486
552
  | Milestone | Status |
487
553
  |---|---|
554
+ | Migrated-origin runs fail instantly (0 ms) and keep their learned locale | ✅ done (v0.66.1) |
488
555
  | Flow `flow.google.com` migration named as its own retryable failure (exit 36) | ✅ done (v0.66.0) |
489
556
  | Repo scaffold, CI, license, README, disclaimer | ✅ done |
490
557
  | Auth login flow (one-time browser capture) | ✅ done |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gflow-cli"
3
- version = "0.66.0"
3
+ version = "0.66.2"
4
4
  description = "Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal."
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }