gflow-cli 0.66.1__tar.gz → 0.66.3__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 (875) hide show
  1. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/CHANGELOG.md +86 -1
  3. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/KNOWN_ISSUES.md +13 -1
  4. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/PKG-INFO +1 -1
  5. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/INDEX.md +4 -0
  6. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.66.1.md +33 -2
  7. gflow_cli-0.66.3/docs/LIVE_VERIFICATION_v0.66.2.md +221 -0
  8. gflow_cli-0.66.3/docs/LIVE_VERIFICATION_v0.66.3.md +97 -0
  9. {gflow_cli-0.66.1/website → gflow_cli-0.66.3}/docs/MCP.md +7 -1
  10. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/PROJECT_STATUS.md +102 -27
  11. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/pyproject.toml +1 -1
  12. gflow_cli-0.66.3/scripts/dev/measure_html_lang_settle.py +81 -0
  13. gflow_cli-0.66.3/scripts/dev/measure_migrated_host_flip.py +152 -0
  14. gflow_cli-0.66.3/scripts/dev/verify_lang_settle_fix.py +75 -0
  15. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/__init__.py +1 -1
  16. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/client.py +122 -16
  17. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/_common.py +38 -0
  18. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/drivers/factory.py +33 -19
  19. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/mode_control.py +11 -0
  20. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/ui_automation_video.py +13 -1
  21. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/profile_store.py +5 -3
  22. gflow_cli-0.66.3/tests/api/test_client_locale_cache.py +441 -0
  23. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_routes_locale.py +25 -5
  24. gflow_cli-0.66.3/tests/api/transports/test_migrated_host_gate.py +250 -0
  25. gflow_cli-0.66.3/tests/features/latched_locale_recovery.feature +19 -0
  26. gflow_cli-0.66.3/tests/features/migrated_host_gate.feature +23 -0
  27. gflow_cli-0.66.3/tests/features/test_migrated_host_gate_steps.py +214 -0
  28. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/worker/test_daemon.py +39 -0
  29. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/uv.lock +1 -1
  30. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/KNOWN_ISSUES.md +13 -1
  31. {gflow_cli-0.66.1 → gflow_cli-0.66.3/website}/docs/MCP.md +7 -1
  32. gflow_cli-0.66.1/tests/api/test_client_locale_cache.py +0 -204
  33. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.agents/plugins/marketplace.json +0 -0
  34. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/README.md +0 -0
  35. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/active.md +0 -0
  36. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/branch-review.md +0 -0
  37. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/changelog.md +0 -0
  38. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/check.md +0 -0
  39. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/doc-review.md +0 -0
  40. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/issue-assessment.md +0 -0
  41. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/issue-resolve.md +0 -0
  42. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/known-issues.md +0 -0
  43. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/live-verify.md +0 -0
  44. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/llm-council.md +0 -0
  45. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/next.md +0 -0
  46. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/plan.md +0 -0
  47. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/pr-council-review.md +0 -0
  48. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/predict.md +0 -0
  49. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/release.md +0 -0
  50. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/scenario.md +0 -0
  51. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/sonar.md +0 -0
  52. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.claude/commands/gflow/status.md +0 -0
  53. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.env.template +0 -0
  54. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.gitattributes +0 -0
  55. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/CODEOWNERS +0 -0
  56. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/FUNDING.yml +0 -0
  57. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  58. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/copilot-instructions.md +0 -0
  59. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/dependabot.yml +0 -0
  60. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/ci.yml +0 -0
  61. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/deps-watch.yml +0 -0
  62. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/external-pr-triage.yml +0 -0
  63. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/governance-advisory.yml +0 -0
  64. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/governance-benchmark.yml +0 -0
  65. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/labels.yml +0 -0
  66. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/main-base-guard.yml +0 -0
  67. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/pages.yml +0 -0
  68. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/release.yml +0 -0
  69. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/scorecard.yml +0 -0
  70. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/selector-probe.yml +0 -0
  71. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.github/workflows/star-history-watch.yml +0 -0
  72. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.gitignore +0 -0
  73. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.gitleaks.toml +0 -0
  74. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.pre-commit-config.yaml +0 -0
  75. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/.secrets.baseline +0 -0
  76. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/AGENTS.md +0 -0
  77. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/CLAUDE.md +0 -0
  78. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/CONFIGURATION.md +0 -0
  79. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/CONTRIBUTING.md +0 -0
  80. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/DISCLAIMER.md +0 -0
  81. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/LICENSE +0 -0
  82. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/PLAN.md +0 -0
  83. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/README.md +0 -0
  84. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/RELEASE.md +0 -0
  85. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/ROADMAP.md +0 -0
  86. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/conftest.py +0 -0
  87. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  88. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/deploy/logrotate-pr-triage +0 -0
  89. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docker-compose.yml +0 -0
  90. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/ACCOUNT_SAFETY.md +0 -0
  91. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/AGENT_GUIDE.md +0 -0
  92. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/AGENT_UI_E2E.md +0 -0
  93. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/AGENT_UI_RECON.md +0 -0
  94. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/ARCHITECTURE.md +0 -0
  95. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/ASSET_TAGGING_RECON.md +0 -0
  96. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/AUTHENTICATION.md +0 -0
  97. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/CHARACTER.md +0 -0
  98. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/CHARACTER_RECON.md +0 -0
  99. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/CONFIGURATION.md +0 -0
  100. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/DATA_LAYER.md +0 -0
  101. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/DEBUGGING.md +0 -0
  102. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/DEMOS.md +0 -0
  103. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/DEVELOPMENT.md +0 -0
  104. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/E2E_TESTING.md +0 -0
  105. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/EXTERNAL_STORAGE.md +0 -0
  106. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/GITHUB.md +0 -0
  107. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  108. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  109. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/INSTRUCTIONS.md +0 -0
  110. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  111. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  112. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  113. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  114. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  115. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  116. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  117. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  118. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  119. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  120. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  121. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  122. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  123. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  124. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  125. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  126. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  127. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  128. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  129. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  130. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  131. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  132. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  133. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  134. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  135. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  136. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  137. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  138. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  139. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  140. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  141. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  142. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  143. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  144. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  145. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  146. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  147. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  148. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  149. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  150. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  151. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  152. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  153. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  154. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  155. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  156. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  157. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  158. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  159. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  160. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  161. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  162. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  163. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  164. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  165. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  166. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  167. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  168. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  169. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  170. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  171. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  172. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  173. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  174. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  175. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  176. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  177. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  178. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  179. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  180. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  181. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/MEDIA_LIBRARY.md +0 -0
  182. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/MOVIE.md +0 -0
  183. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/PROMPT_EXPANSION.md +0 -0
  184. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/REFERENCE_STRATEGIES.md +0 -0
  185. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/SECURITY.md +0 -0
  186. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/TOOLS.md +0 -0
  187. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/USAGE.md +0 -0
  188. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/USER_GUIDE.md +0 -0
  189. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/assets/demo-split-pf.gif +0 -0
  190. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/assets/example-run.gif +0 -0
  191. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/assets/examples.webp +0 -0
  192. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/medium_tutorial.md +0 -0
  193. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/schemas/movie-handoff.schema.json +0 -0
  194. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/sonar-cleanup-tracker.md +0 -0
  195. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  196. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  197. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  198. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  199. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  200. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  201. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  202. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  203. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  204. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  205. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  206. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  207. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  208. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  209. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  210. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  211. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  212. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  213. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  214. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  215. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  216. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  217. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  218. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  219. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  220. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  221. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  222. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  223. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  224. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  225. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  226. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  227. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  228. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  229. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  230. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  231. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  232. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  233. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  234. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  235. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  236. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  237. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  238. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  239. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  240. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  241. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  242. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  243. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  244. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  245. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  246. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  247. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  248. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  249. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  250. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  251. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  252. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  253. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  254. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  255. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  256. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/eval/pr_triage_eval.py +0 -0
  257. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/eval/pr_triage_fixtures.json +0 -0
  258. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/README.md +0 -0
  259. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/batch_from_config.py +0 -0
  260. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/multi_prompt_t2i.py +0 -0
  261. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/sample_config.json +0 -0
  262. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/sample_prompts.txt +0 -0
  263. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/single_image_t2i.py +0 -0
  264. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/examples/workflow_chain.py +0 -0
  265. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/index.html +0 -0
  266. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/llms.txt +0 -0
  267. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/README.md +0 -0
  268. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/01_upload_image.json +0 -0
  269. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  270. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  271. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/04_archive_workflow.json +0 -0
  272. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/05_createProject.json +0 -0
  273. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/06_batchGenerateImages.json +0 -0
  274. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  275. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  276. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  277. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  278. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  279. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/12_create_scene.json +0 -0
  280. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/13_sceneWorkflows_update.json +0 -0
  281. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/14_get_scene_workflows.json +0 -0
  282. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/samples/captured/15_commit_flowWorkflow.json +0 -0
  283. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/Dockerfile.triage +0 -0
  284. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/entrypoint.sh +0 -0
  285. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/package-lock.json +0 -0
  286. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/package.json +0 -0
  287. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  288. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/pr_triage_gate.py +0 -0
  289. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  290. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/canary/register_task.ps1 +0 -0
  291. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/canary/run_canary.py +0 -0
  292. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/check_doc_links.py +0 -0
  293. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/check_materiality.py +0 -0
  294. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/check_release_artifacts.py +0 -0
  295. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/check_repo_hygiene.py +0 -0
  296. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/check_test_count.py +0 -0
  297. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/check_website_docs_pii.py +0 -0
  298. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/ci/generate_website_docs.py +0 -0
  299. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/debug_editor.py +0 -0
  300. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/debug_gen_settings.py +0 -0
  301. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/debug_settings.py +0 -0
  302. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/_recording_client.py +0 -0
  303. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/_spike_common.py +0 -0
  304. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/active_plan.py +0 -0
  305. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  306. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  307. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  308. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  309. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  310. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  311. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_image_add_media_dom.py +0 -0
  312. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_locale_invariants.py +0 -0
  313. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  314. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_project_listing.py +0 -0
  315. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  316. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  317. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  318. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/cdp_drive_and_probe.py +0 -0
  319. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/character_create_spike.py +0 -0
  320. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/character_create_spike_v2.py +0 -0
  321. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/dump_character_selectors.js +0 -0
  322. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/incident_bundle_quality.py +0 -0
  323. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  324. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  325. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/live_verify_video_model_select.py +0 -0
  326. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/make_project.py +0 -0
  327. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/materiality_backtest.py +0 -0
  328. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/measure_locale_probe.py +0 -0
  329. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/patch_character.py +0 -0
  330. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/skillopt/README.md +0 -0
  331. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/skillopt/harness.py +0 -0
  332. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/skillopt/tasks.json +0 -0
  333. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/sonar-local-scan.sh +0 -0
  334. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  335. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_changelog_capture.py +0 -0
  336. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_char_editor_dom.py +0 -0
  337. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_char_gen_capture.py +0 -0
  338. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_character_prompt_format.py +0 -0
  339. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_extend_model_recon.py +0 -0
  340. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  341. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_extend_route_capture.py +0 -0
  342. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_extend_submit_capture.py +0 -0
  343. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_extend_ui_recon.py +0 -0
  344. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_image_upscale_capture.py +0 -0
  345. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_image_upscale_drive.py +0 -0
  346. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  347. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  348. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_incident_live.py +0 -0
  349. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  350. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  351. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  352. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  353. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  354. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_locale_poison.py +0 -0
  355. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_mode_roundtrip.py +0 -0
  356. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  357. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_model_inventory.py +0 -0
  358. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_movie_attach_payload.py +0 -0
  359. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_movie_entity_recon.py +0 -0
  360. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_movie_gen_capture.py +0 -0
  361. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_movie_picker_select.py +0 -0
  362. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_movie_voice_list.py +0 -0
  363. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  364. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_patch_entity.py +0 -0
  365. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_patchright.py +0 -0
  366. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  367. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/spike_video_tab_dom.py +0 -0
  368. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/verify_language_agnostic.py +0 -0
  369. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/verify_locale_navigation_race.py +0 -0
  370. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/dev/verify_model_attribution.py +0 -0
  371. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/diag/README.md +0 -0
  372. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/diag/capture_flow_traffic.py +0 -0
  373. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  374. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/diag/memory_profile.py +0 -0
  375. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/diag/recaptcha_mint.py +0 -0
  376. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/diag/spike_387_openai_compat.py +0 -0
  377. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  378. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/e2e/capture_agent_toggle.py +0 -0
  379. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/probe/run_probe.py +0 -0
  380. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/probe/spike_auth_matrix.py +0 -0
  381. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/record_demo.ps1 +0 -0
  382. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/smoke_image.py +0 -0
  383. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/smoke_video_editor.py +0 -0
  384. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/smoke_worker_style.py +0 -0
  385. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/spike_waf_camoufox.py +0 -0
  386. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/scripts/verify_chrome_auth_viability.py +0 -0
  387. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/README.md +0 -0
  388. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/changelog/SKILL.md +0 -0
  389. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/check/SKILL.md +0 -0
  390. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/doc-review/SKILL.md +0 -0
  391. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/gflow-cli/SKILL.md +0 -0
  392. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/issue-assessment/SKILL.md +0 -0
  393. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/issue-resolve/SKILL.md +0 -0
  394. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/known-issues/SKILL.md +0 -0
  395. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/live-verify/SKILL.md +0 -0
  396. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/llm-council/SKILL.md +0 -0
  397. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/plan/SKILL.md +0 -0
  398. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/pr-council-review/SKILL.md +0 -0
  399. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/predict/SKILL.md +0 -0
  400. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/release/SKILL.md +0 -0
  401. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/scenario/SKILL.md +0 -0
  402. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/sonar/SKILL.md +0 -0
  403. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/skills/status/SKILL.md +0 -0
  404. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/sonar-project.properties +0 -0
  405. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/__main__.py +0 -0
  406. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/_cli_helpers.py +0 -0
  407. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/__init__.py +0 -0
  408. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/_engine.py +0 -0
  409. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/_retry.py +0 -0
  410. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/_sapisidhash.py +0 -0
  411. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/character.py +0 -0
  412. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/dto.py +0 -0
  413. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/extend_chain.py +0 -0
  414. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/image.py +0 -0
  415. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/image_upscale.py +0 -0
  416. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/recaptcha.py +0 -0
  417. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/routes.py +0 -0
  418. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/scene.py +0 -0
  419. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/__init__.py +0 -0
  420. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  421. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/base.py +0 -0
  422. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  423. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  424. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  425. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  426. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  427. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  428. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  429. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  430. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  431. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/video.py +0 -0
  432. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/api/video_extend.py +0 -0
  433. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/__init__.py +0 -0
  434. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/base.py +0 -0
  435. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/cookies.py +0 -0
  436. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/factory.py +0 -0
  437. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/internal_chromium.py +0 -0
  438. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/real_chrome.py +0 -0
  439. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/strategies.py +0 -0
  440. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/auth/verification.py +0 -0
  441. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/browser_manager.py +0 -0
  442. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/chain.py +0 -0
  443. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/chain_manifest.py +0 -0
  444. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli.py +0 -0
  445. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_character.py +0 -0
  446. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_data.py +0 -0
  447. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_doctor.py +0 -0
  448. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_image.py +0 -0
  449. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_instructions.py +0 -0
  450. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_models.py +0 -0
  451. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_movie.py +0 -0
  452. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_project.py +0 -0
  453. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_run.py +0 -0
  454. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_scene.py +0 -0
  455. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_tools.py +0 -0
  456. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/cli_video.py +0 -0
  457. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/composition.py +0 -0
  458. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/config.py +0 -0
  459. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/__init__.py +0 -0
  460. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/chain_repo.py +0 -0
  461. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  462. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  463. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  464. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  465. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  466. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  467. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  468. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  469. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  470. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/migrations/__init__.py +0 -0
  471. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/models.py +0 -0
  472. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/queries.py +0 -0
  473. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/recorder.py +0 -0
  474. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/redaction.py +0 -0
  475. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/repository.py +0 -0
  476. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/data/store.py +0 -0
  477. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/diagnostics.py +0 -0
  478. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/errors.py +0 -0
  479. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/exceptions.py +0 -0
  480. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/file_integrity.py +0 -0
  481. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  482. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/flow_selectors/grading.py +0 -0
  483. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/flow_selectors/model.py +0 -0
  484. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/flow_selectors/registry.py +0 -0
  485. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/image_batch.py +0 -0
  486. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/json_output.py +0 -0
  487. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/__init__.py +0 -0
  488. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/prompts.py +0 -0
  489. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/resources.py +0 -0
  490. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/server.py +0 -0
  491. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/setup.py +0 -0
  492. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  493. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/mcp/tools.py +0 -0
  494. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/media.py +0 -0
  495. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/movie_manifest.py +0 -0
  496. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/observability.py +0 -0
  497. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/paths.py +0 -0
  498. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/profile_lease.py +0 -0
  499. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/redaction.py +0 -0
  500. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/services/__init__.py +0 -0
  501. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/services/catalog_sync.py +0 -0
  502. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/services/character_create.py +0 -0
  503. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/services/doctor.py +0 -0
  504. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/services/mentions.py +0 -0
  505. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/storage.py +0 -0
  506. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/__init__.py +0 -0
  507. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/banned.py +0 -0
  508. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  509. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  510. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  511. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  512. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/expander.py +0 -0
  513. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/invocation.py +0 -0
  514. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/loader.py +0 -0
  515. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/registry.py +0 -0
  516. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/runtime.py +0 -0
  517. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/tools/spec.py +0 -0
  518. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/ui/app.py +0 -0
  519. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/ui/server.py +0 -0
  520. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/update_check.py +0 -0
  521. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/winsec.py +0 -0
  522. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/worker/codec.py +0 -0
  523. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/worker/daemon.py +0 -0
  524. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/src/gflow_cli/worker/queue.py +0 -0
  525. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tasks/lessons.md +0 -0
  526. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/test_assets/sample_batch.json +0 -0
  527. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/test_assets/sample_batch.tsv +0 -0
  528. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/test_assets/sample_batch_invalid.tsv +0 -0
  529. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/__init__.py +0 -0
  530. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/__init__.py +0 -0
  531. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/fixtures/character_gen_response.json +0 -0
  532. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/fixtures/patch_entity_response.json +0 -0
  533. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  534. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_aisandbox_auth_error.py +0 -0
  535. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_aisandbox_auth_headers.py +0 -0
  536. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_bearer_redaction.py +0 -0
  537. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_character.py +0 -0
  538. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client.py +0 -0
  539. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_character.py +0 -0
  540. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_delete_characters.py +0 -0
  541. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_errors.py +0 -0
  542. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_extend.py +0 -0
  543. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_generate_character.py +0 -0
  544. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_image.py +0 -0
  545. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_incidents.py +0 -0
  546. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_launch_kwargs.py +0 -0
  547. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_patch_entity.py +0 -0
  548. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_scene.py +0 -0
  549. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_client_upscale.py +0 -0
  550. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_concurrency.py +0 -0
  551. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_dto.py +0 -0
  552. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_engine.py +0 -0
  553. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_extend_chain.py +0 -0
  554. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_image.py +0 -0
  555. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_image_dto.py +0 -0
  556. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_image_upscale.py +0 -0
  557. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  558. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_recaptcha.py +0 -0
  559. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_retry.py +0 -0
  560. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_routes.py +0 -0
  561. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_routes_character.py +0 -0
  562. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_routes_scene.py +0 -0
  563. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_sapisidhash_helper.py +0 -0
  564. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_scene_models.py +0 -0
  565. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_video.py +0 -0
  566. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_video_extend.py +0 -0
  567. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_video_request.py +0 -0
  568. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/test_video_status_poll.py +0 -0
  569. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/__init__.py +0 -0
  570. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/conftest.py +0 -0
  571. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/drivers/__init__.py +0 -0
  572. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/drivers/test_agentic.py +0 -0
  573. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/drivers/test_classic.py +0 -0
  574. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/drivers/test_factory.py +0 -0
  575. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  576. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  577. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_base.py +0 -0
  578. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_bearer.py +0 -0
  579. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_common.py +0 -0
  580. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_evaluate_fetch.py +0 -0
  581. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_factory.py +0 -0
  582. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_fingerprint.py +0 -0
  583. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_locale_navigation.py +0 -0
  584. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_mode_control.py +0 -0
  585. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_model_selection_loud.py +0 -0
  586. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_navigation_settled.py +0 -0
  587. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_overlay_precondition.py +0 -0
  588. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_policy_400.py +0 -0
  589. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_sapisidhash.py +0 -0
  590. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_selector_symmetry.py +0 -0
  591. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_transport_timeout.py +0 -0
  592. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_ui_automation.py +0 -0
  593. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_ui_automation_batch.py +0 -0
  594. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  595. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_ui_automation_video.py +0 -0
  596. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_ui_character_editor.py +0 -0
  597. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  598. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/auth/strategies/test_factory.py +0 -0
  599. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/auth/strategies/test_strategies.py +0 -0
  600. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/auth/test_cookies.py +0 -0
  601. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/auth/test_real_chrome.py +0 -0
  602. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/auth/test_verification.py +0 -0
  603. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/auth/test_windows_acl.py +0 -0
  604. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  605. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/__init__.py +0 -0
  606. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_auth_status.py +0 -0
  607. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_auth_list.py +0 -0
  608. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_character.py +0 -0
  609. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_character_create.py +0 -0
  610. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_data.py +0 -0
  611. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_data_errors.py +0 -0
  612. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_data_errors_retention.py +0 -0
  613. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_data_sync.py +0 -0
  614. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_doctor.py +0 -0
  615. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_image.py +0 -0
  616. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_image_seed_removed.py +0 -0
  617. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_image_selector_drift.py +0 -0
  618. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_image_upscale.py +0 -0
  619. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  620. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_instructions.py +0 -0
  621. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_models.py +0 -0
  622. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_movie.py +0 -0
  623. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_run.py +0 -0
  624. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_scene.py +0 -0
  625. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_tools.py +0 -0
  626. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_video.py +0 -0
  627. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_video_chain.py +0 -0
  628. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_cli_video_extend.py +0 -0
  629. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_error_handling.py +0 -0
  630. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_failure_funnel.py +0 -0
  631. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_helpers.py +0 -0
  632. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_incident_output.py +0 -0
  633. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_movie_manifest.py +0 -0
  634. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  635. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_predictable_output.py +0 -0
  636. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  637. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_settings_validation.py +0 -0
  638. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/cli/test_t2i_multi_prompt.py +0 -0
  639. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/composition/test_character.py +0 -0
  640. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/composition/test_compose_prompt.py +0 -0
  641. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/composition/test_handoff.py +0 -0
  642. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/composition/test_style_variants.py +0 -0
  643. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/composition/test_style_variants_e2e.py +0 -0
  644. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/conftest.py +0 -0
  645. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/__init__.py +0 -0
  646. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_chain_repo.py +0 -0
  647. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_failure_recording.py +0 -0
  648. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_find_incomplete_character.py +0 -0
  649. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_models.py +0 -0
  650. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_null_columns_stay_null.py +0 -0
  651. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_packaging.py +0 -0
  652. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_recorder.py +0 -0
  653. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_recorder_character.py +0 -0
  654. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_redaction.py +0 -0
  655. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_repository.py +0 -0
  656. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_scene_persistence.py +0 -0
  657. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_settings_and_errors.py +0 -0
  658. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_store.py +0 -0
  659. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/data/test_store_migrations.py +0 -0
  660. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/dev/test_recording_client.py +0 -0
  661. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/__init__.py +0 -0
  662. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/conftest.py +0 -0
  663. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  664. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  665. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  666. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_auth_verification_e2e.py +0 -0
  667. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_cancellation_e2e.py +0 -0
  668. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_chain_e2e.py +0 -0
  669. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_character_create_e2e.py +0 -0
  670. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  671. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  672. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_daemon_e2e.py +0 -0
  673. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_data_layer_e2e.py +0 -0
  674. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  675. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  676. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  677. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  678. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_image_batch_e2e.py +0 -0
  679. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  680. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  681. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_incident_quality_e2e.py +0 -0
  682. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_json_output_e2e.py +0 -0
  683. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_live_agentic_instructions.py +0 -0
  684. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  685. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_project_naming_e2e.py +0 -0
  686. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  687. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_scene_compose_live.py +0 -0
  688. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  689. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_tools_e2e.py +0 -0
  690. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_transports_e2e.py +0 -0
  691. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  692. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  693. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/e2e/test_video_t2v_e2e.py +0 -0
  694. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/__init__.py +0 -0
  695. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/asset_tagging.feature +0 -0
  696. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/auth.feature +0 -0
  697. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/auth_login.feature +0 -0
  698. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/character_create.feature +0 -0
  699. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/character_read.feature +0 -0
  700. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/conftest.py +0 -0
  701. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/duration_tab_drift.feature +0 -0
  702. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/entity_provenance.feature +0 -0
  703. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/image.feature +0 -0
  704. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/image_batch_references.feature +0 -0
  705. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/image_upscale.feature +0 -0
  706. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/incident_diagnostics.feature +0 -0
  707. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/instructions.feature +0 -0
  708. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/locale_picker_include.feature +0 -0
  709. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/mcp_tasks.feature +0 -0
  710. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/media_picker_tiers.feature +0 -0
  711. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/output_hardening.feature +0 -0
  712. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_asset_tagging_steps.py +0 -0
  713. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_auth_login_steps.py +0 -0
  714. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_auth_steps.py +0 -0
  715. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_character_create_steps.py +0 -0
  716. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_character_read_steps.py +0 -0
  717. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_image_steps.py +0 -0
  718. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_image_upscale_steps.py +0 -0
  719. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_incident_diagnostics_steps.py +0 -0
  720. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_instructions_steps.py +0 -0
  721. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_locale_picker_include_steps.py +0 -0
  722. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_mcp_tasks_steps.py +0 -0
  723. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_media_picker_tiers_steps.py +0 -0
  724. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_output_hardening_steps.py +0 -0
  725. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_step_collision_guard.py +0 -0
  726. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_video_agent_ui_steps.py +0 -0
  727. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/test_video_chain_steps.py +0 -0
  728. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/video_agent_ui.feature +0 -0
  729. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/features/video_chain.feature +0 -0
  730. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/__init__.py +0 -0
  731. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/changelog_modal_page.html +0 -0
  732. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/doctor_env.py +0 -0
  733. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/flow_model_inventory.json +0 -0
  734. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/flow_project_listing_media.json +0 -0
  735. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/listing_payload.py +0 -0
  736. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/fixtures/seeded_catalog.py +0 -0
  737. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/flow_selectors/__init__.py +0 -0
  738. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/flow_selectors/test_grading.py +0 -0
  739. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/flow_selectors/test_model.py +0 -0
  740. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/flow_selectors/test_model_governance.py +0 -0
  741. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/flow_selectors/test_registry.py +0 -0
  742. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/flow_selectors/test_report.py +0 -0
  743. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/image_batch/__init__.py +0 -0
  744. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/image_batch/test_image_manifest.py +0 -0
  745. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/image_batch/test_jitter_config.py +0 -0
  746. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/image_batch/test_observability_events.py +0 -0
  747. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/integration/__init__.py +0 -0
  748. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/integration/conftest.py +0 -0
  749. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/integration/constants.py +0 -0
  750. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/integration/test_expander_gateway.py +0 -0
  751. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/integration/test_storage_gcs.py +0 -0
  752. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/integration/test_storage_s3.py +0 -0
  753. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/__init__.py +0 -0
  754. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/conftest.py +0 -0
  755. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_auth_status_tool.py +0 -0
  756. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_cli_parity.py +0 -0
  757. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_error_funnel.py +0 -0
  758. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_http_transport.py +0 -0
  759. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_known_issues_resource.py +0 -0
  760. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_no_spend.py +0 -0
  761. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_rate_limit_envelope.py +0 -0
  762. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_resources.py +0 -0
  763. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_server.py +0 -0
  764. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_setup.py +0 -0
  765. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_stdio_transport.py +0 -0
  766. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_tasks_extension.py +0 -0
  767. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_tools_helpers.py +0 -0
  768. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_tools_instructions.py +0 -0
  769. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/mcp/test_tools_wired.py +0 -0
  770. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  771. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_canary_classify.py +0 -0
  772. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_canary_reexec.py +0 -0
  773. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_capture_locale_invariants.py +0 -0
  774. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_check_materiality.py +0 -0
  775. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_check_release_artifacts.py +0 -0
  776. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_check_repo_hygiene.py +0 -0
  777. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_check_test_count.py +0 -0
  778. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_check_website_docs_pii.py +0 -0
  779. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_codex_plugin.py +0 -0
  780. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_generate_website_docs.py +0 -0
  781. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_incident_bundle_quality.py +0 -0
  782. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_materiality_backtest.py +0 -0
  783. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/scripts/test_workflow_hardening.py +0 -0
  784. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/__init__.py +0 -0
  785. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_catalog_sync.py +0 -0
  786. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_character_create_redaction.py +0 -0
  787. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_character_create_saga.py +0 -0
  788. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_character_gen_no_direct_post.py +0 -0
  789. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_doctor.py +0 -0
  790. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_media_attribution.py +0 -0
  791. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_mentions_observability.py +0 -0
  792. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_mentions_parse.py +0 -0
  793. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_mentions_resolve.py +0 -0
  794. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/services/test_resolve_and_apply.py +0 -0
  795. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/smoke/__init__.py +0 -0
  796. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/smoke/test_profile_account_smoke.py +0 -0
  797. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/smoke/test_real_flow.py +0 -0
  798. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_auth.py +0 -0
  799. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_browser_manager.py +0 -0
  800. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_chain.py +0 -0
  801. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_chain_manifest.py +0 -0
  802. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_cli_data.py +0 -0
  803. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_cli_project.py +0 -0
  804. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_config.py +0 -0
  805. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_conftest_isolation.py +0 -0
  806. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_data_queries.py +0 -0
  807. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_diagnostics_bundle.py +0 -0
  808. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_diagnostics_events.py +0 -0
  809. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_diagnostics_journal.py +0 -0
  810. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_diagnostics_recorder.py +0 -0
  811. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_diagnostics_retention.py +0 -0
  812. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_diagnostics_sanitize.py +0 -0
  813. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_documentation_gate.py +0 -0
  814. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_duration_tab_drift.py +0 -0
  815. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_entity_provenance.py +0 -0
  816. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_errors.py +0 -0
  817. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_errors_classification.py +0 -0
  818. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_image_batch_references.py +0 -0
  819. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_incident_generation_requests.py +0 -0
  820. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_json_output.py +0 -0
  821. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_marker_registry.py +0 -0
  822. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_media.py +0 -0
  823. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_observability.py +0 -0
  824. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_overlay_banner_dismissal.py +0 -0
  825. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_paths.py +0 -0
  826. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_playwright_pin.py +0 -0
  827. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_profile_lease.py +0 -0
  828. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_profile_lease_subprocess.py +0 -0
  829. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_profile_store.py +0 -0
  830. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_profile_store_locale.py +0 -0
  831. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_project_list_urls.py +0 -0
  832. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_self_documenting_errors.py +0 -0
  833. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_smoke.py +0 -0
  834. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/test_update_check.py +0 -0
  835. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/__init__.py +0 -0
  836. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_banned.py +0 -0
  837. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_expander.py +0 -0
  838. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_invocation.py +0 -0
  839. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_loader.py +0 -0
  840. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_registry.py +0 -0
  841. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_runtime.py +0 -0
  842. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/tools/test_spec.py +0 -0
  843. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/ui/test_app.py +0 -0
  844. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/worker/test_codec.py +0 -0
  845. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/worker/test_mcp_daemon_race.py +0 -0
  846. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/worker/test_queue.py +0 -0
  847. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/worker/test_queue_multiprocess.py +0 -0
  848. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/tests/worker/test_queue_reconciliation.py +0 -0
  849. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/ACCOUNT_SAFETY.md +0 -0
  850. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/ARCHITECTURE.md +0 -0
  851. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/AUTHENTICATION.md +0 -0
  852. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/CHARACTER.md +0 -0
  853. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/CONFIGURATION.md +0 -0
  854. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/DATA_LAYER.md +0 -0
  855. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/DEBUGGING.md +0 -0
  856. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/DEVELOPMENT.md +0 -0
  857. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/E2E_TESTING.md +0 -0
  858. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/EXTERNAL_STORAGE.md +0 -0
  859. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/INSTRUCTIONS.md +0 -0
  860. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/MEDIA_LIBRARY.md +0 -0
  861. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/MOVIE.md +0 -0
  862. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/PROMPT_EXPANSION.md +0 -0
  863. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/SECURITY.md +0 -0
  864. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/TOOLS.md +0 -0
  865. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/USAGE.md +0 -0
  866. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/USER_GUIDE.md +0 -0
  867. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/agents.md +0 -0
  868. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/index.md +0 -0
  869. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/installation.md +0 -0
  870. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/onboarding-mockup.html +0 -0
  871. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/onboarding.md +0 -0
  872. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/docs/stylesheets/extra.css +0 -0
  873. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/mkdocs.yml +0 -0
  874. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/requirements.in +0 -0
  875. {gflow_cli-0.66.1 → gflow_cli-0.66.3}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.66.1",
3
+ "version": "0.66.3",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -7,6 +7,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.66.3] — 2026-09-03
11
+
12
+ ### Fixed
13
+
14
+ - **`<html lang>` was read before the app set it, so every account whose URL could not answer
15
+ resolved to `en` ([#651](https://github.com/ffroliva/gflow-cli/issues/651)).** Flow serves an
16
+ **`en` shell** and rewrites `lang` during hydration. The single early read added by
17
+ [#643](https://github.com/ffroliva/gflow-cli/issues/643) therefore returned the shell value —
18
+ and the accounts it hit are exactly the ones #643 was written for: those where the URL carries
19
+ no locale segment. Reported by
20
+ [@maipmacrothorax-75](https://github.com/maipmacrothorax-75) on a pt-BR account resolving `en`
21
+ while both pages served `<html lang="pt">`, with the mechanism offered explicitly as a guess.
22
+
23
+ The guess is confirmed, and it reproduces on the **old** host — so this was never a migration
24
+ bug. Measured on a pt account, two consecutive loads:
25
+
26
+ | t (ms) | `lang` | `readyState` |
27
+ |---|---|---|
28
+ | 887 | `en` | interactive |
29
+ | **1510** | `en` | **complete** |
30
+ | 2092 | `en` | complete |
31
+ | **2488** | **`pt`** | complete |
32
+
33
+ **`readyState` is not a usable signal** — it reaches `complete` a full second *before* the
34
+ flip, so the obvious "wait for complete, then read" would have shipped the same bug with more
35
+ code. The DOM node count oscillates (136 → 300 → 249 → 251) and does not discriminate either.
36
+ Nothing cheap predicts the flip, so `_resolve_account_locale` now **observes** it: read once,
37
+ bounded-wait for the value to change, re-read.
38
+
39
+ A timeout is an **answer**, not a failure — either the account's locale genuinely equals the
40
+ shell default, or the page never hydrated in the window. Both leave the first read as the best
41
+ available answer, which is exactly the previous behaviour, so the branch can never be worse
42
+ than what it replaces. It is logged as `client.account_locale_lang_unchanged` so the field can
43
+ tell the two apart. Cost: an account whose locale **is** the shell default pays the 4 s bound
44
+ once per process.
45
+
46
+ ## [0.66.2] — 2026-09-03
47
+
48
+ ### Fixed
49
+
50
+ - **v0.66.1's migrated-origin fast-fail never fired on a real run
51
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** The guard read `page.url` once,
52
+ at `get_ui_driver` entry — but `routes.project_editor_url` only ever builds a `labs.google`
53
+ URL and the hop to `flow.google.com` is a *post-`goto`* redirect that neither settle path
54
+ waits for (no locale → `_settle_if_redirecting` returns immediately; a known locale →
55
+ `await_url_settled` short-circuits because the labs URL already matches the localised shape).
56
+ So the guard classified a pre-redirect URL, declined, and the run paid ~54 s before failing
57
+ anyway through the slow selector-probe path. Measured by the reporter on three consecutive
58
+ v0.66.1 runs: **57.0 / 57.1 / 58.3 s**, with `ui_driver.migrated_host_bail` absent from the
59
+ timeline entirely. The host check is now a shared `raise_if_migrated` helper called at the
60
+ three points the run is *about to spend time* — `get_ui_driver` entry, each `detect_ui_mode`
61
+ poll tick, and `_exit_agent_mode` once the media panel is found absent — so it adds no wait
62
+ and no navigation to the old host, and aborts as soon as the redirect is observable. The
63
+ event now names its call site, so the fast path is visible in a field timeline instead of
64
+ inferred. Two blanket `except Exception` handlers that would have demoted the abort to a
65
+ warning now re-raise it.
66
+
67
+ - **A `NOT_REDIRECTED` locale cache was an absorbing state, which made the #643 `<html lang>`
68
+ recovery unreachable on exactly the profiles that needed it
69
+ ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).** `_bootstrap_and_resolve_locale`
70
+ returned *before* `_resolve_account_locale` — the only site of that recovery and the only
71
+ caller of `next_locale_state` — so nothing could ever move a latched profile off the state.
72
+ Every profile that saw two migrated loads on ≤0.66.0 latched this way. `NOT_REDIRECTED` now
73
+ skips the settle only, and still reads the locale: measured 56/56 on a latched profile whose
74
+ page declares `lang="en"` on every load. The 4 s settle stays skipped — deleting the early
75
+ return outright was rejected, because on that account the cached "not redirected" is a true
76
+ observation.
77
+
78
+ - **A `<html lang>` locale was treated as evidence that Flow redirects the account, which
79
+ switched the URL settle back on permanently ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).**
80
+ Shipped in v0.66.1 and present on `develop`: #643's `<html lang>` fallback returns a segment for
81
+ an account Flow serves **bare** and never redirects, and `next_locale_state` recorded it as the
82
+ cached state. Every later bootstrap then saw `cached != NOT_REDIRECTED`, settled, and burned the
83
+ full 4 s `URL_SETTLE_TIMEOUT_MS` waiting for a redirect that never comes — the exact cost #587
84
+ exists to remove, on any non-redirecting account with a `lang` attribute. Only a **URL-derived**
85
+ segment is now folded into that cache; the lang-derived one is used in-process to build URLs and
86
+ never persisted. Measured on a real profile: warm bootstrap **7.41 s → 2.66 s**, with the locale
87
+ still recovered.
88
+
89
+ - **`docs/MCP.md`'s retryable-class list was incomplete**, which would have told an MCP agent not
90
+ to auto-retry failures the envelope marks `retryable: true`. It omitted `FlowHostMigratedError`,
91
+ `UiModeUnavailableError` and `SyncPartialError`; it now matches `errors.RETRYABLE_ERRORS`.
92
+
10
93
  ## [0.66.1] — 2026-09-03
11
94
 
12
95
  ### Fixed
@@ -3737,7 +3820,9 @@ shell-script template that branches on these codes.
3737
3820
 
3738
3821
  First skeleton. Not functional end-to-end yet.
3739
3822
 
3740
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...HEAD
3823
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.66.3...HEAD
3824
+ [0.66.3]: https://github.com/ffroliva/gflow-cli/compare/v0.66.2...v0.66.3
3825
+ [0.66.2]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...v0.66.2
3741
3826
  [0.66.1]: https://github.com/ffroliva/gflow-cli/compare/v0.66.0...v0.66.1
3742
3827
  [0.66.0]: https://github.com/ffroliva/gflow-cli/compare/v0.65.0...v0.66.0
3743
3828
  [0.65.0]: https://github.com/ffroliva/gflow-cli/compare/v0.64.0...v0.65.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.1
3
+ Version: 0.66.3
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
@@ -162,6 +162,10 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
162
162
 
163
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`.
164
164
 
165
+ **"What was live-verified for v0.66.3?"** → [LIVE_VERIFICATION_v0.66.3](LIVE_VERIFICATION_v0.66.3.md) — the `<html lang>` hydration race, with the negative result that chose the design: **`readyState` reaches `complete` a full second BEFORE the attribute flips**, so "wait for complete, then read" would have shipped the same bug. Component and end-to-end measurements are reported separately on purpose. NOT verified: the migrated origin (fix proven on the old host, where the race also occurs) and the 4 s bound against a cold first load.
166
+
167
+ **"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).
168
+
165
169
  **"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.
166
170
 
167
171
  **"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).
@@ -3,6 +3,34 @@
3
3
  **Date:** 2026-09-03 · **Account:** ffroliva@gmail.com · **Platform:** Windows 11, Chrome strategy
4
4
  **Credits spent:** **0** — one Imagen image (images are credit-free) plus read-only probes.
5
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
+
6
34
  ## What had to be proven
7
35
 
8
36
  Two fixes, both on the migrated-origin path, and both verifiable live because the account is
@@ -31,10 +59,13 @@ Plus the property that matters more than either: **the old host still works.**
31
59
  | `detect_ui_mode` poll window | ~8 s | skipped |
32
60
  | crop selector cascade | ~24 s | skipped |
33
61
  | `await_url_settled` | 4018 ms | **0 ms** |
34
- | **time to exit 36** | **~36 s** | **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** |
35
64
  | locale on migrated origin | `null` (and demoted a learned locale) | **`en`** recovered from `<html lang>` |
36
65
 
37
- `ui_driver.migrated_host_bail` is logged, so the fast path is observable rather than inferred.
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.
38
69
 
39
70
  ## Layer 2 — no regression on the old host (full generation, exit 0)
40
71
 
@@ -0,0 +1,221 @@
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
+ ## Layer 6 — the migrated path, verified independently by the reporter
157
+
158
+ Everything above was measured on maintainer accounts that had flapped back to the old host. The
159
+ migrated path was verified by [@maipmacrothorax-75](https://github.com/maipmacrothorax-75) on a
160
+ permanently-migrated account — branch installed from git, reverted afterwards, zero credits,
161
+ posted to [#639](https://github.com/ffroliva/gflow-cli/issues/639).
162
+
163
+ | | v0.66.1 | branch, before the `mode_control` guard | v0.66.2 |
164
+ |---|---|---|---|
165
+ | total, per run | 57.0 / 58.3 / 57.0 s | 19.4 / 15.0 / 14.9 s | **4.08 – 4.26 s** |
166
+ | `ui_driver.migrated_host_bail` | **absent** | present, `at=detect_ui_mode` | present, **`at=mode_control`** |
167
+ | `mode_control.ensure_media_incomplete` | every run | every run | **never** |
168
+ | `ui_automation_video.selector_probe_failed` | every run | never | never |
169
+
170
+ Typical v0.66.2 timeline on a migrated load:
171
+
172
+ ```
173
+ 2.82 ui_automation.url_stable_after_goto
174
+ 3.44 ui_driver.migrated_host_bail at=mode_control (+0.62)
175
+ 4.09 error_raised FlowHostMigratedError, exit 36, retryable
176
+ ```
177
+
178
+ **~0.6 s from the host becoming knowable to the abort**; ~4 s total, essentially browser launch
179
+ plus navigation. Nine runs on the final build, `at=mode_control` every time.
180
+
181
+ Two things this settles that no maintainer measurement could:
182
+
183
+ 1. **The `at=` field earned itself.** The intermediate run bailed at `detect_ui_mode`, not
184
+ `exit_agent_mode` — which is how the reporter identified, from the log alone, that the
185
+ `exit_agent_mode` guard sat *after* the ~11 s dismissal rather than before it. A late review
186
+ angle found the same gap independently; the log field is what made it visible from outside
187
+ the codebase.
188
+ 2. **57 s → 4 s is real**, and it is the difference between a caller's retry loop being viable
189
+ and not.
190
+
191
+ **One unexplained anomaly, recorded because it was observed.** The first run after a fresh
192
+ install ended in `error_unhandled` at 3.42 s — after `setup_shared_page`, before
193
+ `entering_existing_project` — `exception_class: "Error"` (Playwright's base class), message
194
+ redacted to hashes. It did not reproduce; the other 8 runs on that build were clean exit 36. A
195
+ one-off that cannot be reproduced is not evidence, and it is here only so a second sighting has
196
+ something to match against.
197
+
198
+ ## Recorded as NOT verified rather than omitted
199
+
200
+ - ~~**The migrated path firing fast.**~~ **Now verified — see Layer 6.** This entry originally
201
+ said unverified because 72/72 navigations *from this machine* landed on the old host. That was
202
+ true of this machine and false of the project: the reporter had already run it on a
203
+ permanently-migrated account and posted the numbers to #639 before the tag was cut, and they
204
+ were not read in time. Kept rather than deleted — "I could not measure it" and "nobody measured
205
+ it" are different claims, and this doc conflated them.
206
+ - **Driving the migrated frontend.** Still impossible. #639 stays open; this PR says `Refs`.
207
+ - **A non-English profile recovering live.** `denon82` is cached `"pt"` (it genuinely redirects),
208
+ so the lang-recovery path was exercised live only on `en`. The `pt` case is unit-tested.
209
+ - **The `en-GB` → `en` region reduction where region is load-bearing** (`zh-Hans`/`zh-Hant`).
210
+ Unchanged from v0.66.1, still only two locales observed.
211
+ - **A defect this verification found, shipped in v0.66.2 and not fixed by it.** On the reporter's
212
+ **pt-BR** account the locale resolves to `en`, while `document.documentElement.lang` reads `pt`
213
+ on both `flow.google.com/` and `flow.google.com/project/<id>`, `navigator.language` is `pt-BR`,
214
+ and the whole UI renders in Portuguese. The probe logs at ~1.63 s, before
215
+ `entering_existing_project` at ~2.31 s — early enough that it may be reading the initial HTML
216
+ shell before the app sets `lang`. **The mismatch is measured; the mechanism is a hypothesis and
217
+ was not instrumented.** This is precisely the population #643 was written for, so the
218
+ `<html lang>` fallback (shipped v0.66.1) can latch a locale the account does not use. Tracked
219
+ separately — it is not a migration bug.
220
+ - **Full-suite coverage %.** The targeted suites ran without `--cov` (an unscoped `pytest --cov`
221
+ OOMs this machine); the 80% floor is enforced by CI.
@@ -0,0 +1,97 @@
1
+ # Live Verification — v0.66.3 (`<html lang>` is read after hydration, not before)
2
+
3
+ **Date:** 2026-09-03 · **Accounts:** `denon82` (pt), `ffroliva` (en) · **Platform:** Windows 11, Chrome strategy
4
+ **Credits spent:** **0** — navigation and DOM reads only; nothing submits.
5
+
6
+ ## What had to be proven
7
+
8
+ One fix ([#651](https://github.com/ffroliva/gflow-cli/issues/651)): the account locale must come
9
+ from `<html lang>` **after** Flow's app has set it, not from the `en` shell it serves first.
10
+
11
+ ## Layer 1 — the defect, measured (this is what chose the design)
12
+
13
+ Sampling `document.documentElement.lang` after `page.goto(wait_until="domcontentloaded")` returns,
14
+ on a **pt** account, two consecutive loads (`scripts/dev/measure_html_lang_settle.py`):
15
+
16
+ | t (ms) | `lang` | `readyState` | DOM nodes |
17
+ |---|---|---|---|
18
+ | 887 | `en` | interactive | 136 |
19
+ | **1510** | `en` | **complete** | 300 |
20
+ | 2092 | `en` | complete | 249 |
21
+ | **2488** | **`pt`** | complete | 262 |
22
+ | 7398 | `pt` | complete | 251 |
23
+
24
+ Two negative results that mattered more than the positive one:
25
+
26
+ - **`readyState` is not a hydration signal for `lang`.** It reaches `complete` a full second
27
+ *before* the flip. "Wait for complete, then read" — the obvious fix — would have shipped the
28
+ same bug with more code.
29
+ - **DOM node count does not discriminate.** It oscillates 136 → 300 → 249 → 251 and settles
30
+ within 2 of its pre-flip value.
31
+
32
+ Nothing cheap predicts the flip, so the fix **observes** it.
33
+
34
+ ## Layer 2 — the fix, on a live page (COMPONENT measurement)
35
+
36
+ `scripts/dev/verify_lang_settle_fix.py`, part A. This calls the helper directly against a real
37
+ bootstrap page — **it is a component measurement and is labelled as one.**
38
+
39
+ ```
40
+ [A · COMPONENT — helper on a live page] profile=denon82
41
+ naive early read : 'en'
42
+ _settled_lang : 'pt' (+638 ms)
43
+ verdict : CAPTURED THE FLIP
44
+ ```
45
+
46
+ ## Layer 3 — the real bootstrap (END-TO-END measurement)
47
+
48
+ Part B, on the account that exercises the *timeout* branch — its locale equals the `en` shell, so
49
+ the attribute never changes:
50
+
51
+ ```
52
+ client.account_locale_lang_unchanged lang=en waited_ms=4000 reason=TimeoutError
53
+ client.account_locale_resolved locale=en source=html_lang
54
+ ```
55
+
56
+ Correct answer, and the cost is visible: **the 4 s bound, once per process** (bootstrap ~2.7 s →
57
+ ~6 s on this account). That is the price of not guessing, and it is bounded. The event name makes
58
+ "the shell value was already right" distinguishable from "we timed out" in any field log.
59
+
60
+ **Layers 2 and 3 are reported separately on purpose.** Collapsing a component number into a
61
+ user-facing claim is precisely the error corrected at the top of
62
+ [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md), and this release is not going to
63
+ repeat it one version later.
64
+
65
+ ## Layer 4 — offline
66
+
67
+ - Tests written red first; **A/B control**: neutering `_settled_lang` fails **exactly 3** — the
68
+ two new cases plus the probe-failure test, since the helper owns the error handling too.
69
+ - `1663 passed / 3 skipped` across `tests/api`, `tests/features`, `tests/mcp`, `tests/worker`.
70
+ - `ruff check` / `ruff format --check` clean on `src tests`; `pyright src` at the `develop`
71
+ baseline; repo hygiene, doc links, website-docs PII and the `website/docs` mirror all green.
72
+ - CI on [#652](https://github.com/ffroliva/gflow-cli/pull/652): **15/15**, including the
73
+ SonarCloud quality gate.
74
+
75
+ ## Layer 5 — MCP
76
+
77
+ No CLI leaf, option, or request-DTO field changed. The fix is in `FlowApiClient`, which the MCP
78
+ worker constructs identically to the CLI, so both surfaces inherit it and no `mcp/tools.py`
79
+ change is implied.
80
+
81
+ ## Recorded as NOT verified rather than omitted
82
+
83
+ - **A non-`en` account on the MIGRATED origin.** The fix is proven on the old host, where the
84
+ race also occurs — that is what made it testable at all. The reporter's pt-BR migrated account
85
+ is where it originally surfaced, and it has not been re-run there since the fix.
86
+ - **The 4 s bound against a cold first load.** One observed session had `lang` fail to flip
87
+ within 4 s on its first navigation, yet flip in 638 ms two seconds later. Either Flow served
88
+ English on that load (its URL settle also timed out, so no redirect either) or the bound is
89
+ short cold. Unresolved; `client.account_locale_lang_unchanged` is the signal that will tell us.
90
+ - **The `was=pt now=?` demotion introduced in v0.66.2.** Folding only the URL-derived segment
91
+ means a learned `pt` drops to PROVISIONAL whenever the URL settle times out. Self-healing on
92
+ the next redirecting run, and the locale is re-derived per run, so nothing is permanently lost
93
+ — but it is the same *shape* of demotion #643 complained about and deserves a decision.
94
+ - **Whether a wrong locale segment causes a redirect bounce** (`/fx/en/...` on a non-`en`
95
+ account) or merely an English UI. Only the reporter's account can settle this.
96
+ - **Full-suite coverage %.** Run without `--cov` (an unscoped `pytest --cov` OOMs this machine);
97
+ 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