gflow-cli 0.72.0__tar.gz → 0.73.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1070) hide show
  1. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/AGENTS.md +11 -4
  3. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/CHANGELOG.md +206 -1
  4. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/KNOWN_ISSUES.md +75 -0
  5. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/PKG-INFO +1 -1
  6. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/AUTHENTICATION.md +12 -0
  7. {gflow_cli-0.72.0/website → gflow_cli-0.73.1}/docs/DEBUGGING.md +10 -2
  8. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/E2E_TESTING.md +69 -0
  9. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/INDEX.md +3 -1
  10. gflow_cli-0.73.1/docs/LIVE_VERIFICATION_v0.73.0.md +144 -0
  11. gflow_cli-0.73.1/docs/LIVE_VERIFICATION_v0.73.1.md +107 -0
  12. {gflow_cli-0.72.0/website → gflow_cli-0.73.1}/docs/MCP.md +6 -1
  13. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/PROJECT_STATUS.md +87 -0
  14. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/SECURITY.md +12 -0
  15. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/USAGE.md +3 -2
  16. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +39 -0
  17. gflow_cli-0.73.1/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +68 -0
  18. gflow_cli-0.73.1/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +132 -0
  19. gflow_cli-0.73.1/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +144 -0
  20. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/pyproject.toml +1 -1
  21. gflow_cli-0.73.1/scripts/dev/spike_about_redirect_stability.py +144 -0
  22. gflow_cli-0.73.1/scripts/dev/spike_migrated_click_blocked.py +376 -0
  23. gflow_cli-0.73.1/scripts/dev/spike_migrated_cookie_bar.py +370 -0
  24. gflow_cli-0.73.1/skills/issue-resolve/SKILL.md +265 -0
  25. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/scenario/SKILL.md +21 -2
  26. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/spike/SKILL.md +40 -1
  27. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/__init__.py +1 -1
  28. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/client.py +139 -1
  29. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/_common.py +182 -0
  30. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/migrated_composer.py +211 -5
  31. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/ui_automation.py +19 -0
  32. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/internal_chromium.py +6 -9
  33. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli.py +29 -1
  34. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/redaction.py +33 -11
  35. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/diagnostics.py +7 -2
  36. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/errors.py +80 -11
  37. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/profile_store.py +19 -5
  38. gflow_cli-0.73.1/tests/api/test_bootstrap_chooser.py +312 -0
  39. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_locale_cache.py +34 -0
  40. gflow_cli-0.73.1/tests/api/transports/test_click_attribution.py +334 -0
  41. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_common.py +96 -0
  42. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_migrated_composer.py +51 -1
  43. gflow_cli-0.73.1/tests/auth/test_account_autoselect.py +192 -0
  44. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_redaction.py +24 -1
  45. gflow_cli-0.73.1/tests/e2e/test_account_chooser_e2e.py +297 -0
  46. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_auth_verification_e2e.py +24 -0
  47. gflow_cli-0.73.1/tests/e2e/test_click_attribution_bdd.py +333 -0
  48. gflow_cli-0.73.1/tests/e2e/test_landing_state_diagnosis_bdd.py +208 -0
  49. gflow_cli-0.73.1/tests/features/click_attribution.feature +93 -0
  50. gflow_cli-0.73.1/tests/features/landing_state_diagnosis.feature +37 -0
  51. gflow_cli-0.73.1/tests/features/test_e2e_binding_guard.py +161 -0
  52. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_diagnostics_recorder.py +10 -0
  53. gflow_cli-0.73.1/tests/test_errors_classification.py +279 -0
  54. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_marker_registry.py +50 -3
  55. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/worker/test_daemon.py +73 -1
  56. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/uv.lock +1 -1
  57. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/AUTHENTICATION.md +12 -0
  58. {gflow_cli-0.72.0 → gflow_cli-0.73.1/website}/docs/DEBUGGING.md +10 -2
  59. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/E2E_TESTING.md +69 -0
  60. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/KNOWN_ISSUES.md +75 -0
  61. {gflow_cli-0.72.0 → gflow_cli-0.73.1/website}/docs/MCP.md +6 -1
  62. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/SECURITY.md +12 -0
  63. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/USAGE.md +3 -2
  64. gflow_cli-0.72.0/skills/issue-resolve/SKILL.md +0 -136
  65. gflow_cli-0.72.0/tests/test_errors_classification.py +0 -158
  66. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.agents/plugins/marketplace.json +0 -0
  67. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/README.md +0 -0
  68. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/active.md +0 -0
  69. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/branch-review.md +0 -0
  70. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/changelog.md +0 -0
  71. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/check.md +0 -0
  72. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/doc-review.md +0 -0
  73. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/issue-assessment.md +0 -0
  74. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/issue-resolve.md +0 -0
  75. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/known-issues.md +0 -0
  76. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/live-verify.md +0 -0
  77. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/llm-council.md +0 -0
  78. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/next.md +0 -0
  79. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/plan.md +0 -0
  80. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/pr-council-review.md +0 -0
  81. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/predict.md +0 -0
  82. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/release.md +0 -0
  83. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/scenario.md +0 -0
  84. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/sonar.md +0 -0
  85. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/spike.md +0 -0
  86. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.claude/commands/gflow/status.md +0 -0
  87. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.env.template +0 -0
  88. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.gitattributes +0 -0
  89. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/CODEOWNERS +0 -0
  90. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/FUNDING.yml +0 -0
  91. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  92. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/copilot-instructions.md +0 -0
  93. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/dependabot.yml +0 -0
  94. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/ci.yml +0 -0
  95. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/deps-watch.yml +0 -0
  96. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/external-pr-triage.yml +0 -0
  97. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/governance-advisory.yml +0 -0
  98. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/governance-benchmark.yml +0 -0
  99. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/labels.yml +0 -0
  100. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/main-base-guard.yml +0 -0
  101. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/pages.yml +0 -0
  102. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/release.yml +0 -0
  103. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/scorecard.yml +0 -0
  104. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/selector-probe.yml +0 -0
  105. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.github/workflows/star-history-watch.yml +0 -0
  106. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.gitignore +0 -0
  107. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.gitleaks.toml +0 -0
  108. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.pre-commit-config.yaml +0 -0
  109. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/.secrets.baseline +0 -0
  110. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/CLAUDE.md +0 -0
  111. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/CONFIGURATION.md +0 -0
  112. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/CONTRIBUTING.md +0 -0
  113. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/DISCLAIMER.md +0 -0
  114. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/LICENSE +0 -0
  115. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/PLAN.md +0 -0
  116. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/README.md +0 -0
  117. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/RELEASE.md +0 -0
  118. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/ROADMAP.md +0 -0
  119. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/conftest.py +0 -0
  120. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/deploy/logrotate-pr-triage +0 -0
  121. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docker-compose.yml +0 -0
  122. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/ACCOUNT_SAFETY.md +0 -0
  123. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/AGENT_GUIDE.md +0 -0
  124. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/AGENT_UI_E2E.md +0 -0
  125. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/AGENT_UI_RECON.md +0 -0
  126. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/ARCHITECTURE.md +0 -0
  127. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/ASSET_TAGGING_RECON.md +0 -0
  128. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/CHARACTER.md +0 -0
  129. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/CHARACTER_RECON.md +0 -0
  130. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/CONFIGURATION.md +0 -0
  131. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/DATA_LAYER.md +0 -0
  132. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/DEMOS.md +0 -0
  133. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/DEVELOPMENT.md +0 -0
  134. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/EXTERNAL_STORAGE.md +0 -0
  135. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/GITHUB.md +0 -0
  136. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  137. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  138. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/INSTRUCTIONS.md +0 -0
  139. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  140. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  141. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  142. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  143. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  144. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  145. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  146. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  147. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  148. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  149. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  150. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  151. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  152. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  153. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  154. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  155. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  156. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  157. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  158. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  159. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  160. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  161. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  162. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  163. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  164. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  165. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  166. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  167. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  168. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  169. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  170. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  171. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  172. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  173. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  174. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  175. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  176. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  177. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  178. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  179. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  180. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  181. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  182. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  183. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  184. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  185. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  186. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  187. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  188. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  189. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  190. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  191. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  192. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  193. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  194. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  195. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  196. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  197. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  198. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  199. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  200. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  201. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  202. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  203. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  204. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  205. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  206. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  207. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  208. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  209. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  210. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  211. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  212. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  213. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  214. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  215. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
  216. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  217. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  218. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  219. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  220. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/MEDIA_LIBRARY.md +0 -0
  221. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/MOVIE.md +0 -0
  222. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/PROMPT_EXPANSION.md +0 -0
  223. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/REFERENCE_STRATEGIES.md +0 -0
  224. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/TOOLS.md +0 -0
  225. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/USER_GUIDE.md +0 -0
  226. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/assets/demo-split-pf.gif +0 -0
  227. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/assets/example-run.gif +0 -0
  228. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/assets/examples.webp +0 -0
  229. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/medium_tutorial.md +0 -0
  230. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/schemas/movie-handoff.schema.json +0 -0
  231. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/sonar-cleanup-tracker.md +0 -0
  232. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/README.md +0 -0
  233. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  234. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  235. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  236. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  237. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/data-layer-overview.md +0 -0
  238. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  239. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  240. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  241. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  242. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  243. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  244. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  245. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  246. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
  247. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  248. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  249. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  250. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  251. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  252. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  253. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  254. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
  255. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  256. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  257. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  258. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  259. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  260. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  261. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  262. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  263. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  264. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  265. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  266. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/release-signing.md +0 -0
  267. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  268. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  269. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  270. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  271. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  272. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  273. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  274. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  275. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  276. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  277. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  278. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  279. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  280. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  281. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  282. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  283. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  284. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  285. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  286. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  287. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  288. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  289. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  290. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  291. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  292. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  293. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  294. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  295. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  296. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  297. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  298. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  299. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  300. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  301. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  302. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  303. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  304. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  305. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  306. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  307. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  308. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  309. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  310. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  311. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  312. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  313. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  314. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  315. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  316. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  317. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  318. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  319. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  320. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  321. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  322. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  323. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  324. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  325. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  326. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  327. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  328. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  329. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  330. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  331. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  332. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  333. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  334. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  335. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  336. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  337. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  338. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  339. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  340. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  341. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  342. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  343. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  344. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  345. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  346. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  347. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  348. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  349. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  350. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  351. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  352. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  353. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  354. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  355. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
  356. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  357. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
  358. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  359. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  360. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/README.md +0 -0
  361. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/batch_from_config.py +0 -0
  362. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/multi_prompt_t2i.py +0 -0
  363. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/sample_config.json +0 -0
  364. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/sample_prompts.txt +0 -0
  365. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/single_image_t2i.py +0 -0
  366. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/examples/workflow_chain.py +0 -0
  367. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/index.html +0 -0
  368. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/llms.txt +0 -0
  369. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/README.md +0 -0
  370. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/01_upload_image.json +0 -0
  371. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  372. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  373. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/04_archive_workflow.json +0 -0
  374. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/05_createProject.json +0 -0
  375. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/06_batchGenerateImages.json +0 -0
  376. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  377. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  378. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  379. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  380. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  381. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/12_create_scene.json +0 -0
  382. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/13_sceneWorkflows_update.json +0 -0
  383. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/14_get_scene_workflows.json +0 -0
  384. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/samples/captured/15_commit_flowWorkflow.json +0 -0
  385. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/canary/register_task.ps1 +0 -0
  386. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/canary/run_canary.py +0 -0
  387. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_council_memory.py +0 -0
  388. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_doc_links.py +0 -0
  389. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_materiality.py +0 -0
  390. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_release_artifacts.py +0 -0
  391. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_repo_hygiene.py +0 -0
  392. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_test_count.py +0 -0
  393. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/check_website_docs_pii.py +0 -0
  394. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/ci/generate_website_docs.py +0 -0
  395. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/debug_editor.py +0 -0
  396. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/debug_gen_settings.py +0 -0
  397. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/debug_settings.py +0 -0
  398. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/_recording_client.py +0 -0
  399. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/_spike_common.py +0 -0
  400. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/acceptance/__init__.py +0 -0
  401. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/acceptance/bench.py +0 -0
  402. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/acceptance/domain.py +0 -0
  403. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/acceptance/judge.py +0 -0
  404. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/acceptance/settings.py +0 -0
  405. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/active_plan.py +0 -0
  406. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  407. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  408. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  409. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  410. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  411. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  412. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_image_add_media_dom.py +0 -0
  413. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_locale_invariants.py +0 -0
  414. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  415. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  416. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  417. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_model_menu.py +0 -0
  418. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  419. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  420. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  421. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  422. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_project_listing.py +0 -0
  423. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  424. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  425. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  426. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/cdp_drive_and_probe.py +0 -0
  427. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/character_create_spike.py +0 -0
  428. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/character_create_spike_v2.py +0 -0
  429. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/dump_character_selectors.js +0 -0
  430. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/README.md +0 -0
  431. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  432. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  433. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  434. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  435. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  436. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  437. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  438. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  439. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  440. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  441. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  442. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/incident_bundle_quality.py +0 -0
  443. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  444. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  445. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/live_verify_video_model_select.py +0 -0
  446. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/make_project.py +0 -0
  447. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/materiality_backtest.py +0 -0
  448. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/measure_html_lang_settle.py +0 -0
  449. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/measure_locale_probe.py +0 -0
  450. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/measure_migrated_host_flip.py +0 -0
  451. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/patch_character.py +0 -0
  452. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/skillopt/README.md +0 -0
  453. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/skillopt/harness.py +0 -0
  454. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/skillopt/tasks.json +0 -0
  455. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/sonar-local-scan.sh +0 -0
  456. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  457. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  458. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_changelog_capture.py +0 -0
  459. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_char_editor_dom.py +0 -0
  460. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_char_gen_capture.py +0 -0
  461. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  462. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_character_prompt_format.py +0 -0
  463. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  464. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_extend_model_recon.py +0 -0
  465. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  466. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_extend_route_capture.py +0 -0
  467. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_extend_submit_capture.py +0 -0
  468. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_extend_ui_recon.py +0 -0
  469. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_format_prompt_effect.py +0 -0
  470. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_host_lane.py +0 -0
  471. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_image_upscale_capture.py +0 -0
  472. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_image_upscale_drive.py +0 -0
  473. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  474. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  475. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_incident_live.py +0 -0
  476. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  477. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  478. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  479. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  480. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  481. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  482. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_locale_poison.py +0 -0
  483. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  484. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  485. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  486. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  487. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  488. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_character_surface.py +0 -0
  489. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  490. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  491. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  492. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  493. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  494. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  495. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  496. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_image_capability.py +0 -0
  497. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_image_submit.py +0 -0
  498. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  499. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_queue_read.py +0 -0
  500. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  501. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  502. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  503. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  504. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  505. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  506. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_mode_roundtrip.py +0 -0
  507. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  508. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_model_inventory.py +0 -0
  509. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_movie_attach_payload.py +0 -0
  510. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_movie_entity_recon.py +0 -0
  511. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_movie_gen_capture.py +0 -0
  512. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_movie_picker_select.py +0 -0
  513. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_movie_voice_list.py +0 -0
  514. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  515. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_patch_entity.py +0 -0
  516. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_patchright.py +0 -0
  517. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_playwright_chrome_login.py +0 -0
  518. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_project_media_status.py +0 -0
  519. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  520. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/spike_video_tab_dom.py +0 -0
  521. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/verify_lang_settle_fix.py +0 -0
  522. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/verify_language_agnostic.py +0 -0
  523. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/verify_locale_navigation_race.py +0 -0
  524. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/dev/verify_model_attribution.py +0 -0
  525. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/diag/README.md +0 -0
  526. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/diag/capture_flow_traffic.py +0 -0
  527. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  528. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/diag/memory_profile.py +0 -0
  529. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/diag/recaptcha_mint.py +0 -0
  530. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/diag/spike_387_openai_compat.py +0 -0
  531. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  532. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/e2e/capture_agent_toggle.py +0 -0
  533. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/probe/run_probe.py +0 -0
  534. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/probe/spike_auth_matrix.py +0 -0
  535. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/record_demo.ps1 +0 -0
  536. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/smoke_image.py +0 -0
  537. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/smoke_video_editor.py +0 -0
  538. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/smoke_worker_style.py +0 -0
  539. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/spike_waf_camoufox.py +0 -0
  540. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/scripts/verify_chrome_auth_viability.py +0 -0
  541. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/README.md +0 -0
  542. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/changelog/SKILL.md +0 -0
  543. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/check/SKILL.md +0 -0
  544. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/doc-review/SKILL.md +0 -0
  545. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/gflow-cli/SKILL.md +0 -0
  546. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/issue-assessment/SKILL.md +0 -0
  547. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/known-issues/SKILL.md +0 -0
  548. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/live-verify/SKILL.md +0 -0
  549. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/llm-council/SKILL.md +0 -0
  550. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/plan/SKILL.md +0 -0
  551. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/pr-council-review/SKILL.md +0 -0
  552. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/predict/SKILL.md +0 -0
  553. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/release/SKILL.md +0 -0
  554. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/sonar/SKILL.md +0 -0
  555. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/status/SKILL.md +0 -0
  556. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/video-production/SKILL.md +0 -0
  557. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/video-production/clip_qa.py +0 -0
  558. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/video-production/composition.md +0 -0
  559. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/video-production/consistency.md +0 -0
  560. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/video-production/failure-modes.md +0 -0
  561. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/skills/video-production/tasks.json +0 -0
  562. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/sonar-project.properties +0 -0
  563. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/__main__.py +0 -0
  564. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/_cli_helpers.py +0 -0
  565. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/__init__.py +0 -0
  566. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/_engine.py +0 -0
  567. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/_retry.py +0 -0
  568. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/_sapisidhash.py +0 -0
  569. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/character.py +0 -0
  570. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/credits.py +0 -0
  571. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/dto.py +0 -0
  572. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/extend_chain.py +0 -0
  573. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/image.py +0 -0
  574. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/image_upscale.py +0 -0
  575. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/recaptcha.py +0 -0
  576. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/routes.py +0 -0
  577. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/scene.py +0 -0
  578. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/__init__.py +0 -0
  579. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  580. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/base.py +0 -0
  581. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  582. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  583. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  584. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  585. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  586. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  587. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  588. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  589. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  590. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  591. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/mode_control.py +0 -0
  592. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  593. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/video.py +0 -0
  594. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/api/video_extend.py +0 -0
  595. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/__init__.py +0 -0
  596. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/base.py +0 -0
  597. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/cookies.py +0 -0
  598. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/factory.py +0 -0
  599. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/real_chrome.py +0 -0
  600. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/strategies.py +0 -0
  601. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/auth/verification.py +0 -0
  602. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/browser_manager.py +0 -0
  603. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/chain.py +0 -0
  604. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/chain_manifest.py +0 -0
  605. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_character.py +0 -0
  606. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_credits.py +0 -0
  607. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_data.py +0 -0
  608. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_doctor.py +0 -0
  609. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_image.py +0 -0
  610. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_instructions.py +0 -0
  611. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_models.py +0 -0
  612. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_movie.py +0 -0
  613. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_project.py +0 -0
  614. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_run.py +0 -0
  615. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_scene.py +0 -0
  616. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_tools.py +0 -0
  617. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_update.py +0 -0
  618. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/cli_video.py +0 -0
  619. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/composition.py +0 -0
  620. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/config.py +0 -0
  621. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/__init__.py +0 -0
  622. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/chain_repo.py +0 -0
  623. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  624. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  625. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  626. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  627. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  628. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  629. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  630. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  631. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  632. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/migrations/__init__.py +0 -0
  633. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/models.py +0 -0
  634. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/queries.py +0 -0
  635. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/recorder.py +0 -0
  636. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/repository.py +0 -0
  637. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/data/store.py +0 -0
  638. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/exceptions.py +0 -0
  639. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/file_integrity.py +0 -0
  640. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  641. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/flow_selectors/grading.py +0 -0
  642. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/flow_selectors/model.py +0 -0
  643. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/flow_selectors/registry.py +0 -0
  644. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/image_batch.py +0 -0
  645. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/json_output.py +0 -0
  646. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/__init__.py +0 -0
  647. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/prompts.py +0 -0
  648. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/resources.py +0 -0
  649. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/server.py +0 -0
  650. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/setup.py +0 -0
  651. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  652. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/mcp/tools.py +0 -0
  653. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/media.py +0 -0
  654. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/movie_manifest.py +0 -0
  655. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/observability.py +0 -0
  656. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/paths.py +0 -0
  657. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/profile_lease.py +0 -0
  658. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/redaction.py +0 -0
  659. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/services/__init__.py +0 -0
  660. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/services/catalog_sync.py +0 -0
  661. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/services/character_create.py +0 -0
  662. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/services/credits.py +0 -0
  663. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/services/doctor.py +0 -0
  664. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/services/mentions.py +0 -0
  665. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/storage.py +0 -0
  666. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/__init__.py +0 -0
  667. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/banned.py +0 -0
  668. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  669. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  670. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  671. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  672. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/expander.py +0 -0
  673. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/invocation.py +0 -0
  674. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/loader.py +0 -0
  675. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/registry.py +0 -0
  676. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/runtime.py +0 -0
  677. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/tools/spec.py +0 -0
  678. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/ui/app.py +0 -0
  679. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/ui/server.py +0 -0
  680. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/update_check.py +0 -0
  681. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/winsec.py +0 -0
  682. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/worker/codec.py +0 -0
  683. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/worker/daemon.py +0 -0
  684. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/src/gflow_cli/worker/queue.py +0 -0
  685. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tasks/lessons.md +0 -0
  686. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/test_assets/sample_batch.json +0 -0
  687. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/test_assets/sample_batch.tsv +0 -0
  688. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/test_assets/sample_batch_invalid.tsv +0 -0
  689. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/__init__.py +0 -0
  690. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/__init__.py +0 -0
  691. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/fixtures/character_gen_response.json +0 -0
  692. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/fixtures/patch_entity_response.json +0 -0
  693. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  694. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_aisandbox_auth_error.py +0 -0
  695. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_aisandbox_auth_headers.py +0 -0
  696. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_bearer_redaction.py +0 -0
  697. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_character.py +0 -0
  698. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_character_readback_fallback.py +0 -0
  699. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client.py +0 -0
  700. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_character.py +0 -0
  701. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_delete_characters.py +0 -0
  702. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_errors.py +0 -0
  703. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_extend.py +0 -0
  704. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_generate_character.py +0 -0
  705. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_image.py +0 -0
  706. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_incidents.py +0 -0
  707. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_launch_kwargs.py +0 -0
  708. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_migrated_mint.py +0 -0
  709. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_patch_entity.py +0 -0
  710. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_scene.py +0 -0
  711. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_client_upscale.py +0 -0
  712. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_concurrency.py +0 -0
  713. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_credits.py +0 -0
  714. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_credits_http.py +0 -0
  715. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_dto.py +0 -0
  716. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_engine.py +0 -0
  717. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_extend_chain.py +0 -0
  718. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_image.py +0 -0
  719. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_image_dto.py +0 -0
  720. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_image_upscale.py +0 -0
  721. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  722. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_recaptcha.py +0 -0
  723. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_retry.py +0 -0
  724. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_routes.py +0 -0
  725. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_routes_character.py +0 -0
  726. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_routes_locale.py +0 -0
  727. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_routes_scene.py +0 -0
  728. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_sapisidhash_helper.py +0 -0
  729. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_scene_models.py +0 -0
  730. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_video.py +0 -0
  731. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_video_extend.py +0 -0
  732. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_video_request.py +0 -0
  733. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/test_video_status_poll.py +0 -0
  734. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/__init__.py +0 -0
  735. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/conftest.py +0 -0
  736. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/drivers/__init__.py +0 -0
  737. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/drivers/test_agentic.py +0 -0
  738. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/drivers/test_classic.py +0 -0
  739. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/drivers/test_factory.py +0 -0
  740. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  741. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  742. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_base.py +0 -0
  743. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_batchexecute.py +0 -0
  744. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_bearer.py +0 -0
  745. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_character_model_picker.py +0 -0
  746. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_evaluate_fetch.py +0 -0
  747. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_factory.py +0 -0
  748. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_fingerprint.py +0 -0
  749. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_ligature_carrier.py +0 -0
  750. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_locale_navigation.py +0 -0
  751. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_migrated_dispatch.py +0 -0
  752. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_migrated_host_gate.py +0 -0
  753. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_migrated_images.py +0 -0
  754. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_migrated_r2v.py +0 -0
  755. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_migrated_route.py +0 -0
  756. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_mode_control.py +0 -0
  757. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_model_selection_loud.py +0 -0
  758. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_navigation_settled.py +0 -0
  759. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  760. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_overlay_precondition.py +0 -0
  761. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_policy_400.py +0 -0
  762. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_sapisidhash.py +0 -0
  763. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_selector_symmetry.py +0 -0
  764. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_transport_timeout.py +0 -0
  765. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_ui_automation.py +0 -0
  766. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_ui_automation_batch.py +0 -0
  767. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  768. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_ui_automation_video.py +0 -0
  769. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_ui_character_editor.py +0 -0
  770. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  771. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/auth/strategies/test_factory.py +0 -0
  772. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/auth/strategies/test_strategies.py +0 -0
  773. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/auth/test_cookies.py +0 -0
  774. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/auth/test_real_chrome.py +0 -0
  775. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/auth/test_verification.py +0 -0
  776. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/auth/test_windows_acl.py +0 -0
  777. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/__init__.py +0 -0
  778. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_auth_status.py +0 -0
  779. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_auth_list.py +0 -0
  780. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_character.py +0 -0
  781. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_character_create.py +0 -0
  782. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_credits.py +0 -0
  783. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_data.py +0 -0
  784. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_data_errors.py +0 -0
  785. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_data_errors_retention.py +0 -0
  786. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_data_sync.py +0 -0
  787. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_doctor.py +0 -0
  788. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_image.py +0 -0
  789. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_image_seed_removed.py +0 -0
  790. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_image_selector_drift.py +0 -0
  791. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_image_upscale.py +0 -0
  792. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  793. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_instructions.py +0 -0
  794. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_models.py +0 -0
  795. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_movie.py +0 -0
  796. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_run.py +0 -0
  797. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_scene.py +0 -0
  798. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_tools.py +0 -0
  799. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_video.py +0 -0
  800. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_video_chain.py +0 -0
  801. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_cli_video_extend.py +0 -0
  802. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_error_handling.py +0 -0
  803. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_failure_funnel.py +0 -0
  804. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_helpers.py +0 -0
  805. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_incident_output.py +0 -0
  806. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_movie_manifest.py +0 -0
  807. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  808. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_predictable_output.py +0 -0
  809. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  810. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  811. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_settings_validation.py +0 -0
  812. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/cli/test_t2i_multi_prompt.py +0 -0
  813. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/composition/test_character.py +0 -0
  814. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/composition/test_compose_prompt.py +0 -0
  815. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/composition/test_handoff.py +0 -0
  816. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/composition/test_style_variants.py +0 -0
  817. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/composition/test_style_variants_e2e.py +0 -0
  818. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/conftest.py +0 -0
  819. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/__init__.py +0 -0
  820. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_chain_repo.py +0 -0
  821. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_failure_recording.py +0 -0
  822. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_find_incomplete_character.py +0 -0
  823. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_models.py +0 -0
  824. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_null_columns_stay_null.py +0 -0
  825. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_packaging.py +0 -0
  826. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_recorder.py +0 -0
  827. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_recorder_character.py +0 -0
  828. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_repository.py +0 -0
  829. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_scene_persistence.py +0 -0
  830. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_settings_and_errors.py +0 -0
  831. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_store.py +0 -0
  832. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/data/test_store_migrations.py +0 -0
  833. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/dev/test_recording_client.py +0 -0
  834. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/__init__.py +0 -0
  835. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/conftest.py +0 -0
  836. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  837. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  838. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  839. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_cancellation_e2e.py +0 -0
  840. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_chain_e2e.py +0 -0
  841. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_character_create_e2e.py +0 -0
  842. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  843. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  844. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  845. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_credits_e2e.py +0 -0
  846. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  847. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_daemon_e2e.py +0 -0
  848. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_data_layer_e2e.py +0 -0
  849. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  850. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_e2e_env_isolation.py +0 -0
  851. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  852. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  853. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  854. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_image_batch_e2e.py +0 -0
  855. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  856. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  857. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_incident_quality_e2e.py +0 -0
  858. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  859. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_json_output_e2e.py +0 -0
  860. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_live_agentic_instructions.py +0 -0
  861. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  862. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_migrated_host_e2e.py +0 -0
  863. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  864. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_project_naming_e2e.py +0 -0
  865. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  866. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_scene_compose_live.py +0 -0
  867. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  868. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_tools_e2e.py +0 -0
  869. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_transports_e2e.py +0 -0
  870. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  871. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  872. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/e2e/test_video_t2v_e2e.py +0 -0
  873. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/__init__.py +0 -0
  874. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/asset_tagging.feature +0 -0
  875. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/auth.feature +0 -0
  876. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/auth_login.feature +0 -0
  877. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/character_create.feature +0 -0
  878. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/character_read.feature +0 -0
  879. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/conftest.py +0 -0
  880. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/credits.feature +0 -0
  881. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/duration_tab_drift.feature +0 -0
  882. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/entity_provenance.feature +0 -0
  883. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/image.feature +0 -0
  884. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/image_batch_references.feature +0 -0
  885. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/image_upscale.feature +0 -0
  886. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/incident_diagnostics.feature +0 -0
  887. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/instructions.feature +0 -0
  888. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/latched_locale_recovery.feature +0 -0
  889. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/locale_picker_include.feature +0 -0
  890. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/mcp_tasks.feature +0 -0
  891. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/media_picker_tiers.feature +0 -0
  892. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/migrated_driver.feature +0 -0
  893. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/migrated_host_gate.feature +0 -0
  894. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/migrated_host_images.feature +0 -0
  895. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/migrated_i2v.feature +0 -0
  896. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/output_hardening.feature +0 -0
  897. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_asset_tagging_steps.py +0 -0
  898. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_auth_login_steps.py +0 -0
  899. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_auth_steps.py +0 -0
  900. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_character_create_steps.py +0 -0
  901. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_character_read_steps.py +0 -0
  902. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_credits_steps.py +0 -0
  903. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_image_steps.py +0 -0
  904. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_image_upscale_steps.py +0 -0
  905. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_incident_diagnostics_steps.py +0 -0
  906. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_instructions_steps.py +0 -0
  907. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_locale_picker_include_steps.py +0 -0
  908. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_mcp_tasks_steps.py +0 -0
  909. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_media_picker_tiers_steps.py +0 -0
  910. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_migrated_driver_steps.py +0 -0
  911. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_migrated_host_gate_steps.py +0 -0
  912. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_migrated_host_images_steps.py +0 -0
  913. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_migrated_i2v_steps.py +0 -0
  914. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_output_hardening_steps.py +0 -0
  915. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_step_collision_guard.py +0 -0
  916. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_video_agent_ui_steps.py +0 -0
  917. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/test_video_chain_steps.py +0 -0
  918. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/video_agent_ui.feature +0 -0
  919. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/features/video_chain.feature +0 -0
  920. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/__init__.py +0 -0
  921. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/changelog_modal_page.html +0 -0
  922. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/doctor_env.py +0 -0
  923. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/flow_model_inventory.json +0 -0
  924. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/flow_project_listing_media.json +0 -0
  925. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/listing_payload.py +0 -0
  926. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/fixtures/seeded_catalog.py +0 -0
  927. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/flow_selectors/__init__.py +0 -0
  928. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/flow_selectors/test_grading.py +0 -0
  929. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/flow_selectors/test_model.py +0 -0
  930. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/flow_selectors/test_model_governance.py +0 -0
  931. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/flow_selectors/test_registry.py +0 -0
  932. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/flow_selectors/test_report.py +0 -0
  933. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/image_batch/__init__.py +0 -0
  934. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/image_batch/test_image_manifest.py +0 -0
  935. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/image_batch/test_jitter_config.py +0 -0
  936. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/image_batch/test_observability_events.py +0 -0
  937. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/integration/__init__.py +0 -0
  938. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/integration/conftest.py +0 -0
  939. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/integration/constants.py +0 -0
  940. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/integration/test_expander_gateway.py +0 -0
  941. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/integration/test_storage_gcs.py +0 -0
  942. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/integration/test_storage_s3.py +0 -0
  943. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/__init__.py +0 -0
  944. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/conftest.py +0 -0
  945. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_auth_status_tool.py +0 -0
  946. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_character_tools.py +0 -0
  947. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_cli_parity.py +0 -0
  948. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_credits_tool.py +0 -0
  949. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_error_funnel.py +0 -0
  950. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_http_transport.py +0 -0
  951. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_known_issues_resource.py +0 -0
  952. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  953. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_no_spend.py +0 -0
  954. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_rate_limit_envelope.py +0 -0
  955. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  956. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_resources.py +0 -0
  957. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_server.py +0 -0
  958. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_setup.py +0 -0
  959. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_stdio_transport.py +0 -0
  960. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_tasks_extension.py +0 -0
  961. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_tools_helpers.py +0 -0
  962. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_tools_instructions.py +0 -0
  963. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/mcp/test_tools_wired.py +0 -0
  964. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  965. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_canary_classify.py +0 -0
  966. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_canary_reexec.py +0 -0
  967. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_capture_locale_invariants.py +0 -0
  968. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  969. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_check_council_memory.py +0 -0
  970. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_check_materiality.py +0 -0
  971. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_check_release_artifacts.py +0 -0
  972. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_check_repo_hygiene.py +0 -0
  973. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_check_test_count.py +0 -0
  974. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_check_website_docs_pii.py +0 -0
  975. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_codex_plugin.py +0 -0
  976. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_extract_har_summary.py +0 -0
  977. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_frame_acceptance.py +0 -0
  978. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_generate_website_docs.py +0 -0
  979. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_incident_bundle_quality.py +0 -0
  980. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_materiality_backtest.py +0 -0
  981. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_skillopt_scoring.py +0 -0
  982. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_spike_page_pool.py +0 -0
  983. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_spike_profile_lease.py +0 -0
  984. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/scripts/test_workflow_hardening.py +0 -0
  985. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/__init__.py +0 -0
  986. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_catalog_sync.py +0 -0
  987. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_character_create_redaction.py +0 -0
  988. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_character_create_saga.py +0 -0
  989. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_character_gen_no_direct_post.py +0 -0
  990. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_credits.py +0 -0
  991. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_doctor.py +0 -0
  992. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_media_attribution.py +0 -0
  993. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_mentions_observability.py +0 -0
  994. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_mentions_parse.py +0 -0
  995. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_mentions_resolve.py +0 -0
  996. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/services/test_resolve_and_apply.py +0 -0
  997. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/smoke/__init__.py +0 -0
  998. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/smoke/test_profile_account_smoke.py +0 -0
  999. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/smoke/test_real_flow.py +0 -0
  1000. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_auth.py +0 -0
  1001. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_browser_manager.py +0 -0
  1002. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_chain.py +0 -0
  1003. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_chain_manifest.py +0 -0
  1004. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_cli_data.py +0 -0
  1005. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_cli_project.py +0 -0
  1006. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_cli_update.py +0 -0
  1007. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_config.py +0 -0
  1008. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_conftest_isolation.py +0 -0
  1009. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_data_queries.py +0 -0
  1010. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_diagnostics_bundle.py +0 -0
  1011. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_diagnostics_events.py +0 -0
  1012. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_diagnostics_journal.py +0 -0
  1013. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_diagnostics_retention.py +0 -0
  1014. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_diagnostics_sanitize.py +0 -0
  1015. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_documentation_gate.py +0 -0
  1016. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_duration_tab_drift.py +0 -0
  1017. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_entity_provenance.py +0 -0
  1018. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_errors.py +0 -0
  1019. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_image_batch_references.py +0 -0
  1020. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_incident_generation_requests.py +0 -0
  1021. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_json_output.py +0 -0
  1022. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_media.py +0 -0
  1023. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_observability.py +0 -0
  1024. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_overlay_banner_dismissal.py +0 -0
  1025. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_paths.py +0 -0
  1026. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_playwright_pin.py +0 -0
  1027. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_profile_lease.py +0 -0
  1028. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_profile_lease_subprocess.py +0 -0
  1029. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_profile_store.py +0 -0
  1030. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_profile_store_locale.py +0 -0
  1031. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_project_list_urls.py +0 -0
  1032. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_self_documenting_errors.py +0 -0
  1033. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_smoke.py +0 -0
  1034. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/test_update_check.py +0 -0
  1035. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/__init__.py +0 -0
  1036. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_banned.py +0 -0
  1037. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_expander.py +0 -0
  1038. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_invocation.py +0 -0
  1039. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_loader.py +0 -0
  1040. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_registry.py +0 -0
  1041. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_runtime.py +0 -0
  1042. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/tools/test_spec.py +0 -0
  1043. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/ui/test_app.py +0 -0
  1044. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/worker/test_codec.py +0 -0
  1045. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/worker/test_mcp_daemon_race.py +0 -0
  1046. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/worker/test_queue.py +0 -0
  1047. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/worker/test_queue_multiprocess.py +0 -0
  1048. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/tests/worker/test_queue_reconciliation.py +0 -0
  1049. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1050. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/ARCHITECTURE.md +0 -0
  1051. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/CHARACTER.md +0 -0
  1052. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/CONFIGURATION.md +0 -0
  1053. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/DATA_LAYER.md +0 -0
  1054. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/DEVELOPMENT.md +0 -0
  1055. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1056. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/INSTRUCTIONS.md +0 -0
  1057. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/MEDIA_LIBRARY.md +0 -0
  1058. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/MOVIE.md +0 -0
  1059. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/PROMPT_EXPANSION.md +0 -0
  1060. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/TOOLS.md +0 -0
  1061. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/USER_GUIDE.md +0 -0
  1062. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/agents.md +0 -0
  1063. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/index.md +0 -0
  1064. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/installation.md +0 -0
  1065. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/onboarding-mockup.html +0 -0
  1066. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/onboarding.md +0 -0
  1067. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/docs/stylesheets/extra.css +0 -0
  1068. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/mkdocs.yml +0 -0
  1069. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/requirements.in +0 -0
  1070. {gflow_cli-0.72.0 → gflow_cli-0.73.1}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.72.0",
3
+ "version": "0.73.1",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -16,6 +16,8 @@ that did not run.
16
16
  |---|---|---|
17
17
  | Claim a Flow surface is broken, missing, or impossible | `/gflow:spike <question>` | A selector that misses is evidence about the SELECTOR; "labs-only, ever" came from one 20 s timeout and cost a day |
18
18
  | Touch a GitHub issue | `/gflow:issue-assessment <N>` | Read-only triage precedes any fix; classification changes what "fixing" means |
19
+ | Explain a symptom, or fix a bug whose cause is not yet proven | The **Bug Lane** — [`skills/issue-resolve/SKILL.md`](skills/issue-resolve/SKILL.md) | The issue names a symptom; the cause is usually a caller above it. Skipping to the fix patches one path and leaves its siblings broken |
20
+ | Write the test for a scenario that can only happen in a browser | [`docs/E2E_TESTING.md`](docs/E2E_TESTING.md) § BDD-bound e2e | A mocked page asserts *our* code; the bug was that Flow did something else. The Gherkin tag is what makes it an e2e test |
19
21
  | Propose a transport, auth, selector, or schema change | `/gflow:predict <proposal>` | Five adversarial personas return GO / CAUTION / STOP before code exists |
20
22
  | Start a feature | `/gflow:scenario` → `/gflow:plan` | Edge cases before tasks; tasks before code |
21
23
  | Resume work / ask "where are we?" | `/gflow:status` | The current plan's next unchecked task is the answer, not your guess |
@@ -106,7 +108,7 @@ the five other mirror axes), which no command here can check and no CI gate can
106
108
 
107
109
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
108
110
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
109
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–37, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
111
+ - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–38, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
110
112
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
111
113
  - **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
112
114
  - **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
@@ -159,7 +161,10 @@ captured, and it cannot prove the surface an agent or a user actually calls is w
159
161
  the code under test. Everything not exercised is unknown, and unknown ships as a bug.
160
162
 
161
163
  If no e2e test covers the change, **write one** — that is part of the change, not
162
- follow-up work.
164
+ follow-up work. For a bug, the lane that gets you there — spike → debug → BDD → TDD →
165
+ fix → e2e, and which steps a given bug may skip — is
166
+ [`skills/issue-resolve/SKILL.md`](skills/issue-resolve/SKILL.md) § The Bug Lane. It is
167
+ written once, there; this section states the law, that one states the route.
163
168
 
164
169
  **The only permitted exception is a named external blocker** you cannot remove: an
165
170
  exhausted API quota, hardware you do not have, an account you do not control, a cohort
@@ -235,8 +240,9 @@ All AI agents and harnesses working on `gflow-cli` follow this standard 10-phase
235
240
  |---|---|---|---|
236
241
  | 0. Spike | `/gflow:spike <question>` | Evidence from the live surface (DOM / network / HAR) whenever a claim of absence is in play | `scripts/dev/spike_*.py` + `docs/superpowers/spikes/<date>-<slug>.md` |
237
242
  | 1. Triage | `/gflow:issue-assessment <N>` | Read-only issue analysis & root cause hypothesis | `issue_assessment_<N>.md` |
243
+ | 1b. Root cause | `superpowers:systematic-debugging` (the **Bug Lane**, [`skills/issue-resolve`](skills/issue-resolve/SKILL.md)) | Turn the triage *hypothesis* into a proven cause at `<file>:<line>`, then grep every caller so the fix lands at the root | Root cause + the callers it covers |
238
244
  | 2. Pre-Implementation | `/gflow:predict <proposal>` | Adversarial audit (D14 YAGNI, security, risks) | GO / CAUTION / STOP verdict |
239
- | 3. BDD Scaffolding | `/gflow:scenario <feature>` | Edge-case explorer & BDD Gherkin spec | `Scenario:` blocks & test scaffold |
245
+ | 3. BDD Scaffolding | `/gflow:scenario <feature>` | Edge-case explorer & BDD Gherkin spec | `Scenario:` blocks + the binding its **surface** dictates: a browser-only scenario is tagged `@e2e @e2e_<tier>` and bound from `tests/e2e/`, everything else stays offline in `tests/features/` |
240
246
  | 4. Implementation Plan | `/gflow:plan <feature>` | Task-by-task atomic implementation plan | `docs/superpowers/plans/<date>-<slug>/PLAN.md` |
241
247
  | 5. Council Review | `/gflow:pr-council-review` / `llm-council` | Multi-dimensional audit across 6 core dimensions | Consensus verdict report |
242
248
  | 6. Task Execution | `/gflow:status` | Track unchecked tasks during TDD execution | Next unchecked task |
@@ -251,7 +257,8 @@ Every AI agent executing any phase of this pipeline MUST proactively state the c
251
257
 
252
258
  | Current Phase | Completed Artifact / Gate | Next Sequential Phase & Command |
253
259
  |---|---|---|
254
- | Phase 1: Triage | `issue_assessment_<N>.md` | ➔ Phase 2: Pre-Implementation (`/gflow:predict <proposal>`) |
260
+ | Phase 1: Triage | `issue_assessment_<N>.md` | ➔ Phase 1b: Root cause (`superpowers:systematic-debugging`) — skip only when the cause is already proven, and say so |
261
+ | Phase 1b: Root cause | Proven cause at `<file>:<line>` + its callers | ➔ Phase 2 (`/gflow:predict`) **if the fix touches a transport, auth, selectors or a schema** — a proven cause does not make the remedy safe; otherwise straight to Phase 3: BDD Scaffolding (`/gflow:scenario`), written at the **root**, not the symptom |
255
262
  | Phase 2: Pre-Implementation | Verdict `GO` or `CAUTION` | ➔ Phase 3: BDD Scaffolding (`/gflow:scenario <feature>`) |
256
263
  | Phase 3: BDD Scaffolding | `Scenario:` blocks & test scaffold | ➔ Phase 4: Implementation Plan (`/gflow:plan <feature>`) |
257
264
  | Phase 4: Implementation Plan | `PLAN.md` created & approved | ➔ Phase 6: Task Execution (`/gflow:status`) |
@@ -7,6 +7,209 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.73.1] — 2026-09-11
11
+
12
+ ### Fixed
13
+
14
+ - **Google's cookie-consent bar no longer blocks generation on `flow.google.com`.**
15
+ The `glue` bar is fixed at `z-index: 1000` and Flow's composer is bottom-anchored in
16
+ the same band, so the bar sat on the settings trigger *and* on the image submit:
17
+ `elementFromPoint` over each returned the bar in 5/5 rendered samples, on the same
18
+ profile and project where the click had landed 3/3 the day before. Every image and
19
+ video run on a re-prompted profile failed, before any submit, so nothing was billed.
20
+ The driver now clears the bar before its first click. It **rejects** rather than
21
+ accepts — both remove the bar, and only one answers a consent question on your
22
+ behalf. Reported by @stgmt in [#780](https://github.com/ffroliva/gflow-cli/issues/780);
23
+ measured in [the 2026-09-11 spike](docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md).
24
+ - **A click post-mortem now names the thing on top, not its inner node.** The occluder
25
+ allowlist matched `cdk|mat|mdc|flow` class prefixes on the element `elementFromPoint`
26
+ returned — but a consent bar puts an unnamed label span there and keeps its identity
27
+ in an `id` the allowlist deliberately drops, so #776's attribution reported
28
+ `it is covered by span`. It now adds Google's `glue` prefix and climbs to the nearest
29
+ ancestor that names itself, reporting `div.glue-cookie-notification-bar`. Unchanged
30
+ for the CDK overlays that already worked, and the `id` is still never echoed.
31
+
32
+ ## [0.73.0] — 2026-09-10
33
+
34
+ ### Security
35
+
36
+ - **Google auth URLs no longer reach user-facing error messages with their query
37
+ intact.** `client._handle_account_chooser`'s three raise sites interpolated
38
+ `page.url` verbatim, and Google's auth URLs carry `state`, `code_challenge`,
39
+ `client_id` and challenge tokens (`TL=…`). That text is the artifact users are
40
+ asked to paste into a GitHub issue.
41
+ - **Measured, not theorised:** a real `gflow image t2i --profile <name>` on
42
+ 2026-09-10 exited 38 and printed
43
+ `accounts.google.com/v3/signin/challenge/pwd?TL=ACv9tzFkh8ZJ…` along with the
44
+ OAuth `state` and `client_id`. Re-running the identical command after the fix:
45
+ same exit 38, same landing named, **zero** secret matches.
46
+ - New `safe_page_url()` in `api/transports/_common.py` keeps scheme+host+path and
47
+ drops query+fragment; all four raise sites (the three in `client.py` plus
48
+ `raise_if_known_landing`) route through it rather than stripping inline.
49
+ - The landing is still named — knowing *where* the session stopped is the whole
50
+ value of the message; only the credentials are gone.
51
+
52
+ ### Fixed
53
+ - **A click that never lands now says what was true instead of nothing at all**
54
+ ([#776](https://github.com/ffroliva/gflow-cli/issues/776)). On `flow.google.com`,
55
+ `video r2v` reached `migrated.editor_ready` and died 5.039 s later as a bare
56
+ Playwright `TimeoutError` — exit 1, no locator, no cause, no MP4. By elimination that
57
+ is `migrated_composer.py`'s `trigger.click(timeout=5000)`: the `wait_for(visible)` one
58
+ line above it is guarded and would have raised exit 23, so the control was *visible*
59
+ and the *click* expired. [#752](https://github.com/ffroliva/gflow-cli/issues/752)
60
+ finding #7 predicted exactly this, at exactly this function, before #776 was filed —
61
+ its `count()`→visibility half was fixed and the click half was not, leaving a comment
62
+ that describes the failure the next line went on producing.
63
+ - **It reads; it does not diagnose.** Two causes were live and *neither could be
64
+ measured*: Flow's announcement overlay ([#593](https://github.com/ffroliva/gflow-cli/issues/593),
65
+ measured on labs.google, never on this host) and a mid-run agent-mode flip. A guard
66
+ built on either would answer confidently and be wrong half the time. So on a timeout
67
+ the driver reads Playwright's four actionability conditions back — agent chip,
68
+ `hidden`/`disabled`, body pointer-events, and a hit-test naming what is on top — and
69
+ reports the ones that fired. When every reading is healthy it **says so**, which
70
+ eliminates three conditions and leaves *stable*, rather than inventing a fourth.
71
+ - **Costs nothing when healthy** — the read runs only in the `except` branch, the rule
72
+ `raise_if_known_landing` already states: a guard ahead of the probe deletes the
73
+ evidence that would correct it.
74
+ - **MCP gains more than the CLI.** A non-`GFlowError` on the queued path shipped
75
+ `"detail": "sha256:…"` — a hash, not even the class name. The typed error routes it
76
+ to the Problem Details branch instead, so an agent now gets the locator and exit 23.
77
+ - Applied to four sites with a named reason each, not all nineteen: the reported one,
78
+ the composer click `_close_pane`'s own docstring records as failing this way, and
79
+ both submit sites, where a bare timeout left "did it submit?" unanswerable — the
80
+ video one spends Veo credits, the image one spends only daily quota.
81
+ - **The occluder report is a closed allowlist** — tag name plus at most three
82
+ framework-prefixed class tokens, never `aria-label`, `title`, `src` or `outerHTML`.
83
+ Typing the error moves the text from SHA-256-hashed telemetry to a message printed
84
+ raw, logged, and invited into a GitHub issue; a signed-in Flow page carries the
85
+ account email and signed media URLs on exactly the elements that occlude things.
86
+ - `retryable` is unchanged and **preserved, not measured** — the condition did not
87
+ reproduce, and a flag that moves as a side effect of retyping is a claim nobody made.
88
+ - **A known Flow landing page is no longer reported as selector drift**
89
+ ([#756](https://github.com/ffroliva/gflow-cli/issues/756), and the 2026-09-10 RED
90
+ nightly canary). `flow_host_kind()` classifies the *origin*; `/about`,
91
+ `/project/<id>` and `/fx/api/auth/signin?error=Callback` all share one, so when a
92
+ readiness wait timed out it had nothing left to blame but its own anchor — sending
93
+ the operator to "check for a newer release, then file a bug" over a session state
94
+ no release changes. The fourth instance of one pattern (after #721 credits, #749
95
+ agent mode, and `FlowAppError`'s own crash page), so it is fixed once, shared:
96
+ - New `flow_landing_kind()` beside `flow_host_kind()` in `api/transports/_common.py`
97
+ names a known non-app landing (`"signin"` / `"public"` / `None`), and
98
+ `raise_if_known_landing()` converts the diagnosis at **three** raise sites — the
99
+ migrated readiness wait, the labs gallery sweep, and the labs prompt-box sweep,
100
+ where a bare `RuntimeError` was being SHA-256 hashed into "Unexpected error" with
101
+ the URL destroyed. Consulted **only inside an already-failed branch** — never ahead of a probe, which would delete the evidence
102
+ that corrects a wrong absence claim, and never as a new bounded wait after `goto`,
103
+ which reads the URL before Flow's client-side redirect lands
104
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).
105
+ - `flow.google.com/about` instead of the project → `FlowAppError` (exit 31), naming
106
+ the landing and the project it did not open. It deliberately does **not** say why:
107
+ #756 measured the redirect and not its cause, and `gflow auth status` reports the
108
+ session verified while it happens.
109
+ - `labs.google/fx/api/auth/signin?error=Callback` instead of the gallery →
110
+ `AuthExpiredError` (exit 3), remediation `gflow auth login`. This is the exact
111
+ page behind the 2026-09-10 RED canary, which reported
112
+ `Could not find 'New project' CTA`.
113
+ - `auth/internal_chromium.py` drops its private `_NEXTAUTH_ROUTE_PREFIX` and reuses
114
+ the shared classifier — the knowledge existed there since #767 and no transport
115
+ could reach it.
116
+ - `FlowAppError`'s docstring and `docs/USAGE.md`'s exit-code table now describe both
117
+ shapes; previously both stated the crash page as the only one. `docs/USAGE.md`'s
118
+ exit-3 row and `docs/MCP.md`'s retryable list are corrected to match, and
119
+ `docs/DEBUGGING.md` records that the sign-in landing is now capture-exempt —
120
+ deliberate (a bundle there would screenshot a Google auth surface into the artifact
121
+ users attach to issues), but a class swap switches capture off silently.
122
+ - The landing URL is stripped to scheme+host+path before it reaches the message or
123
+ the log: the NextAuth family includes `/fx/api/auth/callback/google?state=…&code=…`,
124
+ and this message is precisely what users paste into issues.
125
+ - `"public"` is scoped to the migrated host, the only one where `/about` was measured.
126
+ - **`accounts.google.com` is recognised too — found by live-verifying, not by
127
+ reasoning.** The first version returned `None` there on the grounds that "the
128
+ chooser has its own handler", which is true at bootstrap
129
+ (`client._handle_account_chooser`) and false for a hop that happens *after* it. A
130
+ live A/B on profile `denon82` (2026-09-10, $0) landed exactly there mid-run and
131
+ still produced `RuntimeError: Could not find 'New project' CTA` — with the OAuth
132
+ `state`, `code_challenge` and `client_id` interpolated into the message. It now
133
+ raises `FlowAccountChooserError` (38) for a chooser and `AuthExpiredError` (3) for
134
+ other Google sign-in surfaces, URL stripped. The bot-rejection hop
135
+ (`/v3/signin/rejected`) keeps returning `None` — it has its own error.
136
+ - **`gflow auth list` no longer fails on a profile whose `.gflow_account` is damaged**
137
+ (PR [#764](https://github.com/ffroliva/gflow-cli/pull/764)). The reader decoded as
138
+ UTF-8 and caught only `OSError`, so a non-UTF-8 or truncated file raised out of
139
+ `list_profiles()` and broke the listing for *every* profile, not just the damaged one.
140
+ The value is also interpolated into a DOM attribute selector, where a stray quote
141
+ produced an untyped failure. Unusable content now reads as "no account recorded",
142
+ which every caller already handles.
143
+ - **Google's post-migration account chooser no longer stalls a run**
144
+ ([#763](https://github.com/ffroliva/gflow-cli/issues/763), PR
145
+ [#764](https://github.com/ffroliva/gflow-cli/pull/764) — thanks @stgmt). When Google
146
+ hands the session to `flow.google.com` and redirects to a chooser, `FlowApiClient`
147
+ now auto-selects the profile's recorded account from `.gflow_account` instead of
148
+ stalling into an opaque `RecaptchaError`/exit 1.
149
+ - The row match is exact and case-insensitive on both tiers, and **anchored so the
150
+ chooser's `Remove <email>` / `Sign out of <email>` rows can never be clicked**.
151
+ - A chooser is identified *positively* (chooser path, or account rows), so an
152
+ ordinary expired session still classifies as `AuthExpiredError` (exit 3) rather
153
+ than being swept into the new class.
154
+ - Cases that cannot be selected raise a typed, non-retryable
155
+ `FlowAccountChooserError` (**exit 38**) naming the URL the session actually
156
+ landed on.
157
+ - `.gflow_account` is treated as untrusted input — this fixes an untyped failure in
158
+ the selector and a crash in `gflow auth list` on a damaged file.
159
+ - Follow-up hardening is tracked in
160
+ [#773](https://github.com/ffroliva/gflow-cli/issues/773).
161
+
162
+ ### Added
163
+ - **`gflow auth login --account <email>`** asserts the login authenticated as the
164
+ required account, failing closed on a mismatch rather than leaving a profile signed
165
+ in as somebody else (PR [#764](https://github.com/ffroliva/gflow-cli/pull/764)).
166
+ - **`FlowAppError.retryable`** — a per-instance override of that class's
167
+ `RETRYABLE_ERRORS` membership. `None` (the default) keeps the class answer, so no
168
+ existing raise changes. Scoped to the one class that needs it: `is_retryable()` reads
169
+ it by `getattr`, so a base-class field would have sat on every error in the project
170
+ to serve a single raise site.
171
+ - It exists because routing `/about` to exit 31 would otherwise have silently flipped
172
+ that shape from non-retryable (its exit-23 past) to retryable, asserting on every
173
+ occurrence that a retry is worth making. **That was measured, and could not be
174
+ settled:** the redirect stopped reproducing on `ci-probe` between 2026-09-08 and
175
+ 2026-09-10 (5/5 attempts reached the editor —
176
+ [spike](docs/superpowers/spikes/2026-09-10-about-redirect-stability.md)), which is
177
+ equally consistent with "transient" and with "a session state changed". So the
178
+ `/about` raise site passes `retryable=False` to **preserve** the previous answer,
179
+ not to claim a retry fails. Flip it when someone catches the redirect live and
180
+ measures whether a second attempt wins.
181
+ - `is_retryable()` pins the override with `isinstance(..., bool)` rather than a
182
+ truthiness test: a `MagicMock` answers every attribute with a truthy child mock, so
183
+ a truthiness test would report **every** mocked error as retryable with nothing in
184
+ the suite noticing. Covered by a test that asserts that precondition explicitly.
185
+ - **BDD scenarios can now be bound as e2e tests**, with no new machinery: pytest-bdd
186
+ converts Gherkin tags into pytest markers, so a Feature tagged `@e2e @e2e_auth`
187
+ is filtered by the existing `addopts` and selected by the existing `-m <tier>`.
188
+ Feature files stay in `tests/features/`; their step module lives in `tests/e2e/`
189
+ so it inherits that suite's profile-gating fixtures. See
190
+ [docs/E2E_TESTING.md § BDD-bound e2e](docs/E2E_TESTING.md#bdd-bound-e2e).
191
+ - `tests/features/test_e2e_binding_guard.py` — offline guard (no browser, runs in
192
+ hosted CI) for three ways that binding breaks silently: an `@e2e` scenario nobody
193
+ wrote a test for, an `@e2e` Feature with no cost sub-marker (invisible to the
194
+ nightly canary), and the inverse hazard — a Feature bound from `tests/e2e/` but
195
+ left untagged, which escapes `addopts` and makes hosted CI try to drive Chrome.
196
+ It carries its own fire-test, so a green run means "no orphans", not "never looked".
197
+
198
+ ### Changed
199
+ - **Workflow: the Bug Lane is now the documented route from symptom to fix.**
200
+ `skills/issue-resolve/SKILL.md` gains a canonical `spike → systematic-debugging →
201
+ BDD → TDD → fix → e2e` chain, gated by *surface* (steps 0–2 are skippable for a
202
+ one-line fix whose cause is proven — but a skip is a claim and must be stated;
203
+ steps 3–5 never are). AGENTS.md, `skills/spike`, `skills/scenario`,
204
+ `docs/E2E_TESTING.md` and `docs/INDEX.md` cite it; none restate it.
205
+ - Removes a real contradiction: `issue-resolve` step 3 previously permitted "the
206
+ closest browser-free proxy" while AGENTS.md's Iron Law said a change with no e2e
207
+ coverage must get one and listed "covered by unit tests" among the excuses that
208
+ are *not* blockers. Two disjoint files, no merge conflict, no gate that could
209
+ see it.
210
+ - "Browser-free" is no longer accepted as a verification blocker: only a **named**
211
+ external blocker is (an account you do not control, a Mac, an exhausted quota).
212
+
10
213
  ## [0.72.0] — 2026-09-09
11
214
 
12
215
  ### Added
@@ -4664,7 +4867,9 @@ shell-script template that branches on these codes.
4664
4867
 
4665
4868
  First skeleton. Not functional end-to-end yet.
4666
4869
 
4667
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.72.0...HEAD
4870
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.73.1...HEAD
4871
+ [0.73.1]: https://github.com/ffroliva/gflow-cli/compare/v0.73.0...v0.73.1
4872
+ [0.73.0]: https://github.com/ffroliva/gflow-cli/compare/v0.72.0...v0.73.0
4668
4873
  [0.72.0]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...v0.72.0
4669
4874
  [0.71.1]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...v0.71.1
4670
4875
  [0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
@@ -210,6 +210,36 @@ on the first try.
210
210
  with `uv tool run --from gflow-cli python -c "import importlib.metadata as m; print(m.version('playwright'))"`.
211
211
  Installs from PyPI are unaffected.
212
212
 
213
+ ### Google's cookie-consent bar covers the composer on the migrated host — fixed in 0.73.1
214
+
215
+ - **Status:** Fixed in 0.73.1 ([#780](https://github.com/ffroliva/gflow-cli/issues/780)) · **Affects:** `flow.google.com`, all versions through 0.73.0
216
+ - **Severity:** High while it fires (every image and video run on that profile fails) · **Cost:** none — it fails before any submit, so no credits are spent
217
+
218
+ Google's `glue` consent bar (`#glue-cookie-notification-bar-1`) is `position: fixed`
219
+ at `z-index: 1000`, and Flow's composer is bottom-anchored in the same band. The bar
220
+ therefore lands **on** the settings trigger *and* on the image submit button.
221
+ Measured 2026-09-11 on the `ci-probe` profile: `elementFromPoint` over each returned
222
+ the bar's label span in 5/5 rendered samples, on the same profile and project where
223
+ the click had landed 3/3 the day before. **How widely it fires is unmeasured** — one
224
+ account observed blocked, one observed already-consented — so treat the recurrence
225
+ pattern as unknown rather than as once-per-profile. The labs driver survives it by
226
+ accident; `_bypass_onboarding` carries a text match on "Agree". The migrated driver
227
+ had no equivalent.
228
+
229
+ Through 0.73.0 the run fails at exit 23 with `it is covered by span` — the element on
230
+ top is the bar's label, whose identity lives in an `id` the occluder allowlist drops,
231
+ so the message named nothing actionable.
232
+
233
+ 0.73.1 dismisses the bar before the first click, choosing **reject** over accept
234
+ (both clear it; only one answers a consent question for you), and teaches the
235
+ post-mortem to climb to the nearest ancestor that names itself, so any bar that
236
+ still refuses to go is reported as `div.glue-cookie-notification-bar`.
237
+
238
+ **Workaround on 0.73.0 and earlier:** open that profile once in Chrome and dismiss
239
+ the bar by hand. Consent persists in the profile.
240
+
241
+ Evidence: [`docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md`](docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md).
242
+
213
243
  ### One-time Flow banner/modal can cover the composer on first load
214
244
 
215
245
  - **Status:** Open ([#369](https://github.com/ffroliva/gflow-cli/issues/369))
@@ -1237,6 +1267,51 @@ now names which of three things happened rather than blaming drift:
1237
1267
  **On 0.71.0 and earlier there is no recovery.** Open the project on
1238
1268
  `flow.google.com`, click the **Agent** chip off, and the account works again.
1239
1269
 
1270
+ **Follow-up ([#776](https://github.com/ffroliva/gflow-cli/issues/776)) — the same
1271
+ confusion survived one gate later, on the *click*.** The table above covers the readiness
1272
+ *wait*. A control that passes that wait and then refuses the click used to expire as a bare
1273
+ Playwright `TimeoutError`: exit 1, no locator, no cause. It now reports what was observed
1274
+ at the moment it expired, because the cause could not be measured — Flow's announcement
1275
+ overlay is a labs.google measurement that has never been reproduced on this host, and a
1276
+ mid-run agent-mode flip is equally consistent with the evidence.
1277
+
1278
+ | The message says | What it means | What to do |
1279
+ |---|---|---|
1280
+ | `… did not accept a click … the account is in Flow's agent mode` | the mode flipped after the editor was ready | turn the **Agent** chip off in a browser; re-run |
1281
+ | `… it is covered by <tag>.<class>` | something is stacked over the control — the class names it | dismiss it in a browser; re-run |
1282
+ | `… the page is accepting no pointer events at all` | an overlay has the whole app blocked (#593's shape) | dismiss it in a browser; re-run |
1283
+ | `… it carries a bare `hidden` attribute` / `it is disabled` | the control is present but not usable | usually agent mode or a cohort difference; check the Agent chip first |
1284
+ | `… it is not rendered (display, visibility, or a zero-sized box)` | it is in the DOM but not on screen | as above — check the Agent chip, then file a bug with the log |
1285
+ | `… it answers no hit test at its own centre` | nothing named itself as the cover, but the click still landed elsewhere | re-run once; if it repeats, file a bug — an overlay outside the document is the usual shape |
1286
+ | `… it was visible, enabled and hit-testable … most likely still moving` | nothing readable was wrong | Playwright also needs a *stable* box; re-run once. If it repeats, file a bug — this message means we looked and found nothing, which is a real finding worth having |
1287
+ | `… it could not be read back` | the page changed under the diagnosis | re-run; if it repeats, attach the log |
1288
+
1289
+ The occluder is named by tag plus framework class only. That is deliberate — a signed-in
1290
+ Flow page carries the account email and signed media URLs on exactly the elements that
1291
+ tend to occlude things, and this message is printed, logged, and pasted into issues.
1292
+
1293
+ ### `gflow auth login --account` reports a mismatch but leaves the profile in place
1294
+
1295
+ - **Status:** Open · **Severity:** Medium (no data loss; the risk is *which account pays*) · **Affects:** `gflow auth login --account <email>`, v0.73.0 onward · **Tracked:** [#773](https://github.com/ffroliva/gflow-cli/issues/773) item 3
1296
+
1297
+ `--account` asserts that the login authenticated as the account you named, and a mismatch
1298
+ raises **exit 38** with one `auth.account_assert_failed` log line. What it does **not** do is
1299
+ quarantine, rename or otherwise mark the profile — so a later run re-reads a profile
1300
+ authenticated as somebody else, with nothing persisted to say so. On a product that bills
1301
+ generations to the signed-in Google account, that is the wrong account paying.
1302
+
1303
+ This was a deliberate "minimum" in review round 4 of
1304
+ [#764](https://github.com/ffroliva/gflow-cli/pull/764), recorded here so the decision stays
1305
+ revisitable rather than lost in a merged thread.
1306
+
1307
+ **Workaround:** after any exit 38 from `--account`, check `gflow auth list` and re-run
1308
+ `gflow auth login --account <email>` for that profile before generating. Do not assume the
1309
+ failed assert left the profile unusable — it is usable, just possibly as the wrong person.
1310
+
1311
+ Two further items on the same issue are unfixed and worth knowing about: a second chooser
1312
+ hop (chooser → consent → chooser) is not handled and degrades into the landing timeout, and
1313
+ that timeout is still an unmeasured number.
1314
+
1240
1315
  ### Auth verification depends on Google's NextAuth session endpoint
1241
1316
 
1242
1317
  - **Status:** Mitigated · **Severity:** Low (degrades fail-closed) · **Affects:** issue #15 fix onward · **Tracked:** issue #15
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.72.0
3
+ Version: 0.73.1
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
@@ -174,6 +174,18 @@ Set ffroliva as default profile.
174
174
  If a profile named after the email local-part already exists, the rename is skipped
175
175
  and the profile keeps the name `default`.
176
176
 
177
+ #### `--account <email>`
178
+
179
+ Asserts that the login authenticates as one exact Google account. After the
180
+ session verifies, the CLI compares the verified email against `--account`
181
+ (case-insensitive) and fails with `FlowAccountChooserError` (exit 38) on a
182
+ mismatch — including when no verified email was recorded at all, since an
183
+ identity assertion that cannot read the identity must not pass.
184
+
185
+ A mismatch means the profile now holds the *other* account's session: re-run
186
+ `gflow auth login --profile <name> --account <email>` while signed in as the
187
+ required account.
188
+
177
189
  #### `--browser [auto|chrome|internal]`
178
190
 
179
191
  | Value | Browser used | When to use |
@@ -107,7 +107,7 @@ at command startup).
107
107
 
108
108
  Captured: `FlowAppError` (31), `FlowAgentUiError` (25),
109
109
  `FlowHostMigratedError` (36), `UiModeUnavailableError` (28),
110
- `UiSelectorDriftError` (23),
110
+ `UiSelectorDriftError` (23), `FlowAccountChooserError` (38),
111
111
  `TransportTimeoutError` (9), `BrowserSessionClosedError` (15),
112
112
  `WireFormatError` (7), `WafRejectionError` (10), `NetworkError` (6),
113
113
  unexpected exceptions while a page is alive, and `ProfileLockedError` (11)
@@ -116,7 +116,15 @@ also shows the recorded lock owner's PID/start-time evidence — advisory
116
116
  only, the kernel lock stays authoritative and nothing is ever reclaimed).
117
117
 
118
118
  Never captured: expected `ContentPolicyError`, ordinary `AuthExpiredError`,
119
- usage/config validation, cancellation (Ctrl-C). Successful commands write
119
+ usage/config validation, cancellation (Ctrl-C). **That `AuthExpiredError` exclusion
120
+ now covers one more path than it used to:** since
121
+ [#756](https://github.com/ffroliva/gflow-cli/issues/756), landing on one of Flow's
122
+ OAuth/sign-in routes raises `AuthExpiredError` where it previously raised
123
+ `UiSelectorDriftError`, which *is* captured. The change is deliberate — the remediation
124
+ is `gflow auth login` either way, and a bundle there would put a DOM dump and a
125
+ full-page screenshot of a Google auth surface into the artifact users are prompted to
126
+ attach to issues. It is recorded here because swapping a class silently switches
127
+ capture off, which is exactly the trap `docs/PROJECT_STATUS.md` records. Successful commands write
120
128
  nothing. At most 3 bundles per command; repeats of the same failure
121
129
  fingerprint increment `suppressed_count` in the manifest instead.
122
130
 
@@ -77,6 +77,75 @@ e2e ─┬─ e2e_auth (auth/session, health check — zero credits)
77
77
 
78
78
  ---
79
79
 
80
+ ## BDD-bound e2e
81
+
82
+ A live test can be written as Gherkin. This is the required form for a bug whose
83
+ scenario can only happen in a browser — see
84
+ [`skills/issue-resolve/SKILL.md`](../skills/issue-resolve/SKILL.md) § The Bug Lane,
85
+ step 5. It needs **no new machinery**: pytest-bdd (already a dependency) converts every
86
+ Gherkin tag into a pytest marker, so a tagged scenario is filtered by the same
87
+ `addopts` and selected by the same `-m <tier>` as a hand-written e2e test.
88
+
89
+ **The three moving parts:**
90
+
91
+ ```gherkin
92
+ # tests/features/landing_state_diagnosis.feature
93
+ @e2e @e2e_auth # ← tags become pytest markers
94
+ Feature: A known landing state is named, never reported as selector drift
95
+ Scenario: the labs gallery is answered with a NextAuth sign-in error
96
+ Given the labs Flow gallery URL
97
+ When Flow answers it with a NextAuth sign-in error page
98
+ Then the failure says the session is signed out
99
+ And the failure does not blame the New project anchor
100
+ ```
101
+
102
+ ```python
103
+ # tests/e2e/test_landing_state_diagnosis_bdd.py
104
+ from pytest_bdd import given, scenarios, then, when
105
+
106
+ scenarios("../features/landing_state_diagnosis.feature")
107
+ # step defs here; tests/e2e/conftest.py fixtures (e2e_profile_dir, …) apply
108
+ ```
109
+
110
+ **Feature-level tags propagate to every scenario** — measured on pytest-bdd 8.1, not
111
+ assumed: a scenario carrying no tags of its own was still selected by `-m e2e_auth` from
112
+ its Feature's tags. So tag the Feature once; per-scenario tags are for narrowing a single
113
+ scenario to a different tier (an `@e2e_video` case inside an otherwise `@e2e_auth`
114
+ feature), not for repeating the feature's own.
115
+
116
+ | Rule | Why |
117
+ |---|---|
118
+ | Feature file stays in `tests/features/` | one home for Gherkin; the guard scans one directory |
119
+ | Step module lives in `tests/e2e/` | inherits `tests/e2e/conftest.py` — profile gating, `e2e_env`, `skip_on_migrated_host` |
120
+ | `@e2e` **plus** a cost tier | a bare `@e2e` cannot be selected by `-m e2e_auth`, so the nightly canary never runs it |
121
+ | One feature file, one binding module | bound from two modules, every scenario runs twice |
122
+
123
+ **Enforced offline** by `tests/features/test_e2e_binding_guard.py` (no browser, normal
124
+ CI), in four directions: an `@e2e` feature with no binder under `tests/e2e/` fails; so
125
+ does one with no cost tier; so does the dangerous inverse — a feature bound from
126
+ `tests/e2e/` but left untagged, which carries no `e2e` marker, escapes `addopts`, and
127
+ makes hosted CI try to drive Chrome; and so does a feature bound from **both**
128
+ directories, whose scenarios would run twice.
129
+
130
+ > **What this does and does not prove.** The guard proves the test **exists and is
131
+ > wired**, and runs anywhere. Proving it **passes** needs a warm profile and a real
132
+ > browser — that is the nightly canary's job (`scripts/canary/`), on a machine that has
133
+ > one. Hosted CI cannot run the live tiers and never could.
134
+
135
+ **Two worked examples, deliberately different in kind:**
136
+
137
+ | Feature | Binder | What only a browser could prove |
138
+ |---|---|---|
139
+ | `landing_state_diagnosis.feature` | `test_landing_state_diagnosis_bdd.py` | Flow's hop to `/about` is a **client-side** redirect, so `goto` returns before it runs (#639). A mocked page whose `url` the test assigns cannot fail that way |
140
+ | `click_attribution.feature` | `test_click_attribution_bdd.py` | Playwright's **actionability** gate — visible, stable, receives-events, enabled (#776). Each scenario breaks a different one *for real*: a stacked `div` that intercepts pointers, and a CSS animation that never lets the box settle while visibility and the hit test stay healthy |
141
+
142
+ Both are route-intercepted and cost **$0** — real Chromium, `page.route(...).fulfill(...)`,
143
+ no Google, no profile, no credits. That combination is what makes a browser-only scenario
144
+ cheap enough to be non-negotiable: if a scenario needs a browser, the answer is an e2e
145
+ test, not a mocked proxy — the Bug Lane's step 5.
146
+
147
+ ---
148
+
80
149
  ## Environment variables
81
150
 
82
151
  | Variable | Default | Purpose |
@@ -137,6 +137,8 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
137
137
  **"How do we use Copilot review on PRs?"** → [GITHUB § GitHub Copilot Code Review](GITHUB.md#github-copilot-code-review)
138
138
  **"Why did SonarCloud skip or fail on a forked PR?"** → [GITHUB § Forked PRs And SonarCloud](GITHUB.md#forked-prs-and-sonarcloud)
139
139
  **"How do I run e2e tests before a release?"** → [DEVELOPMENT § E2e gate](DEVELOPMENT.md#e2e-gate-before-merging-develop--main)
140
+ **"A bug came in — what is the route from symptom to shipped fix?"** → [skills/issue-resolve § The Bug Lane](../skills/issue-resolve/SKILL.md) (spike → debug → BDD → TDD → fix → e2e, and which steps a given bug may skip)
141
+ **"The scenario only reproduces in a browser — where does its test go?"** → [E2E_TESTING § BDD-bound e2e](E2E_TESTING.md#bdd-bound-e2e)
140
142
  **"What does each e2e marker cost? How do I run only the cheap tests?"** → [E2E_TESTING § Run commands](E2E_TESTING.md#run-commands)
141
143
  **"Has Flow drifted since the last release? What is the nightly canary telling me?"** → [E2E_TESTING § Nightly canary](E2E_TESTING.md#nightly-canary-502)
142
144
  **"Which Flow selector moved? What is the CI selector probe telling me (exit 0/1/2)?"** → [E2E_TESTING § Selector drift probe](E2E_TESTING.md#selector-drift-probe-563)
@@ -158,7 +160,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
158
160
  **"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
159
161
  **"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
160
162
  **"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
161
- **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.72.0](LIVE_VERIFICATION_v0.72.0.md) (**auto-closing `gflow auth login`, verified 2026-09-09 on a migrated account at $0 across six runs.** Four paths: auto-close fires (`probe=in_context` at `elapsed_s` **84.8**, reproduced 3x), a manual close still verifies from disk (exit 0, never exit 12), `--browser auto` selects and completes, and a window closed **mid-2FA** is noticed in **2 s** (exit 8) where it previously ran the full 600 s deadline with the session endpoint touched **zero** times. **Two runs were discarded rather than counted**, and that is the useful part: the first returned exit 0 at `elapsed_s: 0.2` because a throwaway profile had survived the previous session and nobody signed in — a cached session reading as a clean pass — and three attempts at the manual-close path all returned exit 0 while being the *auto-close* path in disguise, separable only by an **absent** `probe=in_context`. The manual path was obtained by widening the poll interval for one run so the competing branch could not fire; the 2FA path by killing the profile's own Chrome, because hand-timing lost every race on a host that completes passkey sign-in in ~15 s. **Recorded as NOT verified rather than omitted:** the migrated-host image slice (#692) was **re-run this cycle** — CLI `t2i` PASSED first-hand on a moved account, while the queued-MCP `i2i` twin failed with a typed non-retryable exit 27 whose **cause is unknown** — some dialog opened after the file was chosen and no `maseQ` left the page, on an account that has ALREADY consented, so the message's "most likely the one-time upload-terms dialog" does not fit; no incident bundle was written, so nothing names the dialog, and it is filed for a spike rather than guessed; the subprocess fallback is unit-tested only; and the OAuth-callback *mechanism* behind the poll fix is **inferred, not proven** — a host-only gate does not exclude NextAuth's callback, since it runs on the app's own origin, yet all four sign-ins passed under it, so #769 carries the spike that would settle it.) · previous: [LIVE_VERIFICATION_v0.71.1](LIVE_VERIFICATION_v0.71.1.md) (**two migrated-host error paths stopped blaming the wrong thing, 2026-09-08, $0 across three profiles.** The agent-mode recovery landed earlier in this same release (#749) and worked, but its first cut collapsed three outcomes into one message — chip clicked / chip found but click blocked / chip clicked and mode still on — so a modal eating the click sent users to toggle a chip that was never the problem, and genuine selector drift *after* the mode was left was filed under an account setting the driver had already changed. Verified by an e2e that drives the account INTO agent mode and carries its own neutered-selector control; run **twice**, because review fixes landed after the first run and it no longer covered the code. **The larger find:** an account's FIRST upload on this host is blocked by Flow's one-time *"Rights to use this image"* dialog, which renders *after* the file chooser hands the file over — so `_dismiss_dialog` never sees it and the driver spent 60 s waiting for a request the page had already declined to make, then advised re-encoding the image. Six runs on `ci-probe` close the chain: guard fires while the dialog is up → owner-authorised accept → uploads (`media_id 8914400f`) → fresh session uploads clean with `dialog: None`. The order was forced, because the dialog is one-off and accepting it destroys the failing state — so the guard was written and verified BEFORE anything was clicked, and its firing branch is now unrepeatable here. `maseQ` is confirmed **not** renamed (six uploads, three profiles), killing #719's top hypothesis. Also: Flow's queue listing is on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, and two `abra_r2v_8s` records sat at status 6 for ~20 h unseen by any CLI command (#741). Three documents are corrected rather than patched — a KNOWN_ISSUES entry that told #719's reader this dialog did not affect gflow-cli, and a v0.71.0 host label calling `ci-probe` *labs* when it is migrated, which helped a credit-based theory survive four runs. Recorded as NOT verified: #719's second failure shape — an upload request that leaves the page and is never answered, ~1 run in 4 — which is unfixed and keeps #719 open.) · previous: [LIVE_VERIFICATION_v0.71.0](LIVE_VERIFICATION_v0.71.0.md) (**`gflow character create --voice` verified end to end for the first time, 2026-09-07 on profile `ffroliva`.** Before this release a repo-wide grep for `--voice` across `tests/e2e/` matched **nothing** — every voice test was a unit test of the hardcoded `VOICES` constant and the one that looked live parsed a fixture, so a voice that silently failed to attach was invisible to the whole suite while the command exited 0. A live create + `character show` read-back settles a contradiction between two of our own documents: `sent='Charon' stored='Charon' identical=True`, so the Capitalized canonical form round-trips and `CHARACTER_RECON.md`'s "preset id is the lowercased name" does not describe today's wire. Both docs also now record that `personalityNotes` is **Agent-scoped** per Flow's own editor copy, not a control on the audio engine. **A claim that was in the code is overturned:** the `_unported_form` entity guard said the submit "never produces a reply" and that the backend refuses — in fact `MZZa6b` replies with a null payload and the generation is **accepted and queued** (Flow types it `abra_r2v_8s` and renders it); the failure is the *observer*, which waits out `SUBMIT_REPLY_BUDGET_S` (60 s, calibrated on 4.0–4.6 s replies against an idle queue) and exits 9 while the video is still rendering. The guard stays until the observer is fixed, because a timeout reported on a healthy generation is worse than an explicit refusal. Also verified: credit shortfall reports exit **37** with `_raise_if_out_of_credits` called from **both** give-up paths — and it is *short for the selected model*, not empty (the measured account held **50** and asked for `veo-quality`, which costs **100**); the "+ New project" CTA anchored structurally on `add` (Tier-1 matches **1** where every previous entry matched **0**, control 47 ligature nodes) after this same release first asserted the control did not exist and a $0 run disproved it in one click; and the incident-bundle DOM dump de-blinded — it queried `i.google-symbols` only, so **every bundle a migrated user sent carried an empty ligature list**, which is why #727 and #731 stayed invisible. One item recorded as NOT verified rather than omitted: whether a bound character's **voice reaches rendered audio** (#738) — attachment is proven, application is not, because no entity-bound generation has yet returned a file to measure. The blocker is no longer credits or account access but retrieval, and the measurement is pre-calibrated: plate-bound takes of one character gave **88 / 103 / 118 Hz** against a **4.3 Hz** engine noise floor, so an applied Algenib should sit near its sample's **163.3 Hz**.) · previous: [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (**reference-to-video on the migrated `flow.google.com` host, verified 2026-09-06 on profile `denon82`.** Three r2v runs bound their references every time; the decisive one is semantic rather than structural — two hand-drawn reference images went in and the clip came back carrying the same marker strokes, face and paper texture, which is what separates "Flow bound the reference" from "Flow accepted and ignored it". A four-beat, two-character piece was then produced end to end and joined with the concat filter: 19.000s, 1280x576, `clip_qa` **ok**, A/V **+0.000s**, both actors recognisable across every cut from one face plate plus the canon repeated verbatim. Also verified as exit-code corrections on the real CLI: `-o <existing directory>` now exits **2 in 0.8s** instead of exit 1 after ~2 min **and a billed, orphaned clip**; `character create` on a moved account exits **36 immediately** instead of a bare `RuntimeError` exit 1 after a 20s wait. Four items recorded as NOT verified rather than omitted: #692's original failure could not be reproduced [the reporter's own re-run was on a build without the fix, so it shows the failure is intermittent, not that the fix works]; Flow CHARACTER entities were never exercised because `character create` cannot run on any account available here; `image`/`scene`/`movie`/`extend` all exit 36 on the migrated host and no unmoved account exists here; and the sign-in-interstitial fidelity question from #699 has no bundle evidence either way.) · previous: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
163
+ **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.73.1](LIVE_VERIFICATION_v0.73.1.md) (**Google's `glue` consent bar covering the migrated composer, measured and then cured, 2026-09-11 on `ci-probe` for one image generation and no Veo credits.** The premise was nearly rejected: both prior sightings of that selector in this repo are labs.google, and the 2026-09-10 spike had read 159 DOM samples on this exact host and project and watched the click land 3/3 — it simply never looked for a cookie bar. Seventeen hours later the bar was up: `position: fixed`, `z-index: 1000`, spanning y 547-655 of a 655 px viewport, with `elementFromPoint` over the settings trigger AND over the image submit both returning `span#glue-cookie-notification-bar-1-label` in **0 of 5** rendered samples hit-testable. **The control arm is what makes it a cure rather than a coincidence**: the same probe re-run through the driver's own `_dismiss_cookie_bar` restored both controls to **4/4**, one attempt, no error. A full `gflow image t2i` then ran end to end on the merged code — `status: ok`, a 807,761-byte `ffd8ffe0` JPEG that Pillow reads as 1376x768 RGB, matching the requested 16:9 and the reply's own dimensions, with `migrated.editor_ready` at 2.0 s and **no** `cookie_bar_not_dismissed`. A side finding the control arm produced by accident: the bar's buttons are `__accept` then `__reject` in DOM order, so anything taking "the first button" accepts cookies for the operator — the shipped fix anchors on reject. **Three items recorded as NOT verified rather than omitted:** the cure against a live bar outside the browser, because this release's own control arm consumed the consent on the only profile that had it; **prevalence**, because the second profile never reached an editor (both arms redirected to `/about`) so it is one account blocked and one already-consented, and KNOWN_ISSUES says so rather than generalising from n=1; and the video path live, which shares the identical function on the identical control but spends Veo credits.) · previous: [LIVE_VERIFICATION_v0.73.0](LIVE_VERIFICATION_v0.73.0.md) (**four error paths that stopped lying about what went wrong, verified 2026-09-10 on `ci-probe` and `denon82` at $0 — no run below reaches a Veo submit.** The decisive arm is an **A/B**, not an inspection: the pre-fix run printed an `accounts.google.com` challenge URL together with the OAuth `state` and `client_id`, and the identical command after the fix gave the same exit 38 and the same landing named with **five secret matches down to zero** — reading the post-fix output alone would only have shown that *these* secrets were absent. A second arm **falsified a claim already written into PR #775's body**: it said the change fixed the RED canary, and the live run showed `denon82` had moved to `accounts.google.com` mid-run, a landing the classifier excluded **by design**, with a unit test encoding the wrong reason — the offline suite was green throughout and could not have caught it. #776's happy path is verified by a real `gflow image t2i` (exit 0, 367 135-byte JPEG, `image_settings_applied` and `prompt_typed` both present, so **three of the four converted click sites** clicked successfully through the new helper); its **failure** path is real Chromium driving a page we wrote, which proves the mechanism and explicitly **not** that Flow still produces that state. **Three items recorded as NOT verified rather than omitted:** the `/about` redirect stopped reproducing (**0/5**, reported as *unmeasured* rather than argued into a retry flag), the `/fx/api/auth/*` landing moved before the run reached it, and #764's *success* path — an external contribution whose error boundary this release verifies but whose auto-selection needs an account currently behind a Google password challenge. The fourth converted click site is the **video** submit, unrun because it spends Veo credits, named rather than implied.) · previous: [LIVE_VERIFICATION_v0.72.0](LIVE_VERIFICATION_v0.72.0.md) (**auto-closing `gflow auth login`, verified 2026-09-09 on a migrated account at $0 across six runs.** Four paths: auto-close fires (`probe=in_context` at `elapsed_s` **84.8**, reproduced 3x), a manual close still verifies from disk (exit 0, never exit 12), `--browser auto` selects and completes, and a window closed **mid-2FA** is noticed in **2 s** (exit 8) where it previously ran the full 600 s deadline with the session endpoint touched **zero** times. **Two runs were discarded rather than counted**, and that is the useful part: the first returned exit 0 at `elapsed_s: 0.2` because a throwaway profile had survived the previous session and nobody signed in — a cached session reading as a clean pass — and three attempts at the manual-close path all returned exit 0 while being the *auto-close* path in disguise, separable only by an **absent** `probe=in_context`. The manual path was obtained by widening the poll interval for one run so the competing branch could not fire; the 2FA path by killing the profile's own Chrome, because hand-timing lost every race on a host that completes passkey sign-in in ~15 s. **Recorded as NOT verified rather than omitted:** the migrated-host image slice (#692) was **re-run this cycle** — CLI `t2i` PASSED first-hand on a moved account, while the queued-MCP `i2i` twin failed with a typed non-retryable exit 27 whose **cause is unknown** — some dialog opened after the file was chosen and no `maseQ` left the page, on an account that has ALREADY consented, so the message's "most likely the one-time upload-terms dialog" does not fit; no incident bundle was written, so nothing names the dialog, and it is filed for a spike rather than guessed; the subprocess fallback is unit-tested only; and the OAuth-callback *mechanism* behind the poll fix is **inferred, not proven** — a host-only gate does not exclude NextAuth's callback, since it runs on the app's own origin, yet all four sign-ins passed under it, so #769 carries the spike that would settle it.) · previous: [LIVE_VERIFICATION_v0.71.1](LIVE_VERIFICATION_v0.71.1.md) (**two migrated-host error paths stopped blaming the wrong thing, 2026-09-08, $0 across three profiles.** The agent-mode recovery landed earlier in this same release (#749) and worked, but its first cut collapsed three outcomes into one message — chip clicked / chip found but click blocked / chip clicked and mode still on — so a modal eating the click sent users to toggle a chip that was never the problem, and genuine selector drift *after* the mode was left was filed under an account setting the driver had already changed. Verified by an e2e that drives the account INTO agent mode and carries its own neutered-selector control; run **twice**, because review fixes landed after the first run and it no longer covered the code. **The larger find:** an account's FIRST upload on this host is blocked by Flow's one-time *"Rights to use this image"* dialog, which renders *after* the file chooser hands the file over — so `_dismiss_dialog` never sees it and the driver spent 60 s waiting for a request the page had already declined to make, then advised re-encoding the image. Six runs on `ci-probe` close the chain: guard fires while the dialog is up → owner-authorised accept → uploads (`media_id 8914400f`) → fresh session uploads clean with `dialog: None`. The order was forced, because the dialog is one-off and accepting it destroys the failing state — so the guard was written and verified BEFORE anything was clicked, and its firing branch is now unrepeatable here. `maseQ` is confirmed **not** renamed (six uploads, three profiles), killing #719's top hypothesis. Also: Flow's queue listing is on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, and two `abra_r2v_8s` records sat at status 6 for ~20 h unseen by any CLI command (#741). Three documents are corrected rather than patched — a KNOWN_ISSUES entry that told #719's reader this dialog did not affect gflow-cli, and a v0.71.0 host label calling `ci-probe` *labs* when it is migrated, which helped a credit-based theory survive four runs. Recorded as NOT verified: #719's second failure shape — an upload request that leaves the page and is never answered, ~1 run in 4 — which is unfixed and keeps #719 open.) · previous: [LIVE_VERIFICATION_v0.71.0](LIVE_VERIFICATION_v0.71.0.md) (**`gflow character create --voice` verified end to end for the first time, 2026-09-07 on profile `ffroliva`.** Before this release a repo-wide grep for `--voice` across `tests/e2e/` matched **nothing** — every voice test was a unit test of the hardcoded `VOICES` constant and the one that looked live parsed a fixture, so a voice that silently failed to attach was invisible to the whole suite while the command exited 0. A live create + `character show` read-back settles a contradiction between two of our own documents: `sent='Charon' stored='Charon' identical=True`, so the Capitalized canonical form round-trips and `CHARACTER_RECON.md`'s "preset id is the lowercased name" does not describe today's wire. Both docs also now record that `personalityNotes` is **Agent-scoped** per Flow's own editor copy, not a control on the audio engine. **A claim that was in the code is overturned:** the `_unported_form` entity guard said the submit "never produces a reply" and that the backend refuses — in fact `MZZa6b` replies with a null payload and the generation is **accepted and queued** (Flow types it `abra_r2v_8s` and renders it); the failure is the *observer*, which waits out `SUBMIT_REPLY_BUDGET_S` (60 s, calibrated on 4.0–4.6 s replies against an idle queue) and exits 9 while the video is still rendering. The guard stays until the observer is fixed, because a timeout reported on a healthy generation is worse than an explicit refusal. Also verified: credit shortfall reports exit **37** with `_raise_if_out_of_credits` called from **both** give-up paths — and it is *short for the selected model*, not empty (the measured account held **50** and asked for `veo-quality`, which costs **100**); the "+ New project" CTA anchored structurally on `add` (Tier-1 matches **1** where every previous entry matched **0**, control 47 ligature nodes) after this same release first asserted the control did not exist and a $0 run disproved it in one click; and the incident-bundle DOM dump de-blinded — it queried `i.google-symbols` only, so **every bundle a migrated user sent carried an empty ligature list**, which is why #727 and #731 stayed invisible. One item recorded as NOT verified rather than omitted: whether a bound character's **voice reaches rendered audio** (#738) — attachment is proven, application is not, because no entity-bound generation has yet returned a file to measure. The blocker is no longer credits or account access but retrieval, and the measurement is pre-calibrated: plate-bound takes of one character gave **88 / 103 / 118 Hz** against a **4.3 Hz** engine noise floor, so an applied Algenib should sit near its sample's **163.3 Hz**.) · previous: [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (**reference-to-video on the migrated `flow.google.com` host, verified 2026-09-06 on profile `denon82`.** Three r2v runs bound their references every time; the decisive one is semantic rather than structural — two hand-drawn reference images went in and the clip came back carrying the same marker strokes, face and paper texture, which is what separates "Flow bound the reference" from "Flow accepted and ignored it". A four-beat, two-character piece was then produced end to end and joined with the concat filter: 19.000s, 1280x576, `clip_qa` **ok**, A/V **+0.000s**, both actors recognisable across every cut from one face plate plus the canon repeated verbatim. Also verified as exit-code corrections on the real CLI: `-o <existing directory>` now exits **2 in 0.8s** instead of exit 1 after ~2 min **and a billed, orphaned clip**; `character create` on a moved account exits **36 immediately** instead of a bare `RuntimeError` exit 1 after a 20s wait. Four items recorded as NOT verified rather than omitted: #692's original failure could not be reproduced [the reporter's own re-run was on a build without the fix, so it shows the failure is intermittent, not that the fix works]; Flow CHARACTER entities were never exercised because `character create` cannot run on any account available here; `image`/`scene`/`movie`/`extend` all exit 36 on the migrated host and no unmoved account exists here; and the sign-in-interstitial fidelity question from #699 has no bundle evidence either way.) · previous: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
162
164
  **"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
163
165
  **"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
164
166
  **"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of what was then read as a flapping rollout** (superseded 2026-09-04: the handoff is a one-way per-account flag and exit 36 is non-retryable since). On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true` (then; `false` since 2026-09-04), `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.