gflow-cli 0.70.0__tar.gz → 0.71.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 (1059) hide show
  1. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/dependabot.yml +0 -26
  3. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/pages.yml +1 -1
  4. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/release.yml +1 -1
  5. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.gitignore +9 -0
  6. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/AGENTS.md +4 -3
  7. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CHANGELOG.md +355 -1
  8. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/KNOWN_ISSUES.md +70 -8
  9. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/PKG-INFO +3 -3
  10. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/README.md +1 -1
  11. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AGENT_GUIDE.md +1 -1
  12. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/ARCHITECTURE.md +1 -1
  13. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/CHARACTER.md +41 -15
  14. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/CHARACTER_RECON.md +7 -2
  15. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/GITHUB.md +4 -2
  16. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/INDEX.md +2 -2
  17. gflow_cli-0.71.1/docs/LIVE_VERIFICATION_v0.71.0.md +129 -0
  18. gflow_cli-0.71.1/docs/LIVE_VERIFICATION_v0.71.1.md +147 -0
  19. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/MOVIE.md +60 -0
  20. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/PROJECT_STATUS.md +102 -2
  21. {gflow_cli-0.70.0/website → gflow_cli-0.71.1}/docs/PROMPT_EXPANSION.md +1 -1
  22. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/USAGE.md +10 -1
  23. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +8 -1
  24. gflow_cli-0.71.1/docs/superpowers/memory/ligature-carrier-differs-by-host.md +45 -0
  25. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +145 -0
  26. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +102 -0
  27. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +120 -0
  28. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +113 -0
  29. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +106 -0
  30. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +89 -0
  31. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +89 -0
  32. gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +185 -0
  33. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/llms.txt +1 -1
  34. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/pyproject.toml +3 -3
  35. gflow_cli-0.71.1/scripts/dev/acceptance/__init__.py +47 -0
  36. gflow_cli-0.71.1/scripts/dev/acceptance/bench.py +140 -0
  37. gflow_cli-0.71.1/scripts/dev/acceptance/domain.py +109 -0
  38. gflow_cli-0.71.1/scripts/dev/acceptance/judge.py +381 -0
  39. gflow_cli-0.71.1/scripts/dev/acceptance/settings.py +83 -0
  40. gflow_cli-0.71.1/scripts/dev/capture_i2v_frame_slots_dom.py +203 -0
  41. gflow_cli-0.71.1/scripts/dev/capture_i2v_intercept_submit.py +267 -0
  42. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_i2v_model_select_repro.py +38 -33
  43. gflow_cli-0.71.1/scripts/dev/capture_i2v_post_bind_state.py +293 -0
  44. gflow_cli-0.71.1/scripts/dev/capture_image_add_media_dom.py +192 -0
  45. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_locale_invariants.py +6 -1
  46. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_submit_payload.py +27 -9
  47. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_cdp_har_without_node.py +6 -1
  48. gflow_cli-0.71.1/scripts/dev/spike_character_editor_ready_gate.py +204 -0
  49. gflow_cli-0.71.1/scripts/dev/spike_character_prompt_format.py +270 -0
  50. gflow_cli-0.71.1/scripts/dev/spike_entity_submit_rpcs.py +263 -0
  51. gflow_cli-0.71.1/scripts/dev/spike_format_prompt_effect.py +208 -0
  52. gflow_cli-0.71.1/scripts/dev/spike_host_lane.py +156 -0
  53. gflow_cli-0.71.1/scripts/dev/spike_ligature_carrier_sweep.py +315 -0
  54. gflow_cli-0.71.1/scripts/dev/spike_migrated_composer_arms.py +319 -0
  55. gflow_cli-0.71.1/scripts/dev/spike_migrated_composer_mode_axis.py +208 -0
  56. gflow_cli-0.71.1/scripts/dev/spike_migrated_entity_submit.py +243 -0
  57. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_image_capability.py +58 -4
  58. gflow_cli-0.71.1/scripts/dev/spike_migrated_picker_option_kind.py +132 -0
  59. gflow_cli-0.71.1/scripts/dev/spike_migrated_queue_read.py +164 -0
  60. gflow_cli-0.71.1/scripts/dev/spike_migrated_submit_anchor.py +149 -0
  61. gflow_cli-0.71.1/scripts/dev/spike_migrated_upload_wire.py +284 -0
  62. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +123 -118
  63. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_patchright.py +5 -1
  64. gflow_cli-0.71.1/scripts/dev/spike_project_media_status.py +120 -0
  65. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/pr-council-review/SKILL.md +2 -2
  66. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/spike/SKILL.md +27 -0
  67. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/SKILL.md +149 -1
  68. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/__init__.py +1 -1
  69. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/_cli_helpers.py +11 -0
  70. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/client.py +36 -9
  71. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/migrated_composer.py +416 -25
  72. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/ui_automation.py +251 -49
  73. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_character.py +7 -3
  74. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/diagnostics.py +7 -2
  75. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/errors.py +44 -0
  76. gflow_cli-0.71.1/tests/api/transports/test_ligature_carrier.py +202 -0
  77. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_composer.py +517 -9
  78. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_dispatch.py +28 -0
  79. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_r2v.py +91 -0
  80. gflow_cli-0.71.1/tests/api/transports/test_new_project_cta_migrated.py +72 -0
  81. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation.py +29 -13
  82. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_character_editor.py +283 -15
  83. gflow_cli-0.71.1/tests/cli/test_run_with_handlers_context_leak.py +74 -0
  84. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/conftest.py +7 -0
  85. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_agentic_count_enforcement_e2e.py +26 -6
  86. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_character_create_e2e.py +260 -25
  87. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_character_mcp_parity_e2e.py +17 -1
  88. gflow_cli-0.71.1/tests/e2e/test_e2e_env_isolation.py +44 -0
  89. gflow_cli-0.71.1/tests/e2e/test_insufficient_credits_e2e.py +90 -0
  90. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_migrated_host_e2e.py +71 -1
  91. gflow_cli-0.71.1/tests/scripts/test_frame_acceptance.py +321 -0
  92. gflow_cli-0.71.1/tests/scripts/test_spike_page_pool.py +81 -0
  93. gflow_cli-0.71.1/tests/scripts/test_spike_profile_lease.py +72 -0
  94. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_documentation_gate.py +17 -0
  95. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/uv.lock +31 -31
  96. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/ARCHITECTURE.md +1 -1
  97. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/CHARACTER.md +41 -15
  98. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/KNOWN_ISSUES.md +70 -8
  99. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/MOVIE.md +60 -0
  100. {gflow_cli-0.70.0 → gflow_cli-0.71.1/website}/docs/PROMPT_EXPANSION.md +1 -1
  101. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/USAGE.md +10 -1
  102. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/installation.md +1 -1
  103. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/requirements.txt +3 -3
  104. gflow_cli-0.70.0/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -163
  105. gflow_cli-0.70.0/eval/pr_triage_eval.py +0 -42
  106. gflow_cli-0.70.0/eval/pr_triage_fixtures.json +0 -194
  107. gflow_cli-0.70.0/scripts/autopilot/Dockerfile.triage +0 -54
  108. gflow_cli-0.70.0/scripts/autopilot/entrypoint.sh +0 -10
  109. gflow_cli-0.70.0/scripts/autopilot/package-lock.json +0 -152
  110. gflow_cli-0.70.0/scripts/autopilot/package.json +0 -8
  111. gflow_cli-0.70.0/scripts/autopilot/pr_triage_autopilot.py +0 -859
  112. gflow_cli-0.70.0/scripts/autopilot/pr_triage_gate.py +0 -192
  113. gflow_cli-0.70.0/scripts/autopilot/run_sandboxed_review.sh +0 -188
  114. gflow_cli-0.70.0/scripts/dev/capture_i2v_frame_slots_dom.py +0 -198
  115. gflow_cli-0.70.0/scripts/dev/capture_i2v_intercept_submit.py +0 -262
  116. gflow_cli-0.70.0/scripts/dev/capture_i2v_post_bind_state.py +0 -288
  117. gflow_cli-0.70.0/scripts/dev/capture_image_add_media_dom.py +0 -184
  118. gflow_cli-0.70.0/scripts/dev/spike_character_prompt_format.py +0 -121
  119. gflow_cli-0.70.0/tests/autopilot/test_pr_triage_autopilot.py +0 -1149
  120. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.agents/plugins/marketplace.json +0 -0
  121. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/README.md +0 -0
  122. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/active.md +0 -0
  123. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/branch-review.md +0 -0
  124. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/changelog.md +0 -0
  125. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/check.md +0 -0
  126. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/doc-review.md +0 -0
  127. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/issue-assessment.md +0 -0
  128. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/issue-resolve.md +0 -0
  129. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/known-issues.md +0 -0
  130. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/live-verify.md +0 -0
  131. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/llm-council.md +0 -0
  132. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/next.md +0 -0
  133. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/plan.md +0 -0
  134. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/pr-council-review.md +0 -0
  135. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/predict.md +0 -0
  136. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/release.md +0 -0
  137. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/scenario.md +0 -0
  138. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/sonar.md +0 -0
  139. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/spike.md +0 -0
  140. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/status.md +0 -0
  141. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.env.template +0 -0
  142. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.gitattributes +0 -0
  143. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/CODEOWNERS +0 -0
  144. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/FUNDING.yml +0 -0
  145. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  146. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/copilot-instructions.md +0 -0
  147. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/ci.yml +0 -0
  148. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/deps-watch.yml +0 -0
  149. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/external-pr-triage.yml +0 -0
  150. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/governance-advisory.yml +0 -0
  151. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/governance-benchmark.yml +0 -0
  152. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/labels.yml +0 -0
  153. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/main-base-guard.yml +0 -0
  154. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/scorecard.yml +0 -0
  155. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/selector-probe.yml +0 -0
  156. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/star-history-watch.yml +0 -0
  157. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.gitleaks.toml +0 -0
  158. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.pre-commit-config.yaml +0 -0
  159. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.secrets.baseline +0 -0
  160. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CLAUDE.md +0 -0
  161. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CONFIGURATION.md +0 -0
  162. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CONTRIBUTING.md +0 -0
  163. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/DISCLAIMER.md +0 -0
  164. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/LICENSE +0 -0
  165. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/PLAN.md +0 -0
  166. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/RELEASE.md +0 -0
  167. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/ROADMAP.md +0 -0
  168. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/conftest.py +0 -0
  169. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/deploy/logrotate-pr-triage +0 -0
  170. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docker-compose.yml +0 -0
  171. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/ACCOUNT_SAFETY.md +0 -0
  172. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AGENT_UI_E2E.md +0 -0
  173. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AGENT_UI_RECON.md +0 -0
  174. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/ASSET_TAGGING_RECON.md +0 -0
  175. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AUTHENTICATION.md +0 -0
  176. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/CONFIGURATION.md +0 -0
  177. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DATA_LAYER.md +0 -0
  178. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DEBUGGING.md +0 -0
  179. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DEMOS.md +0 -0
  180. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DEVELOPMENT.md +0 -0
  181. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/E2E_TESTING.md +0 -0
  182. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/EXTERNAL_STORAGE.md +0 -0
  183. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  184. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  185. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/INSTRUCTIONS.md +0 -0
  186. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  187. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  188. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  189. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  190. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  191. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  192. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  193. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  194. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  195. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  196. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  197. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  198. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  199. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  200. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  201. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  202. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  203. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  204. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  205. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  206. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  207. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  208. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  209. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  210. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  211. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  212. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  213. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  214. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  215. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  216. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  217. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  218. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  219. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  220. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  221. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  222. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  223. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  224. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  225. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  226. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  227. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  228. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  229. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  230. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  231. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  232. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  233. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  234. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  235. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  236. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  237. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  238. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  239. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  240. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  241. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  242. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  243. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  244. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  245. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  246. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  247. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  248. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  249. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  250. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  251. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  252. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  253. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  254. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  255. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  256. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  257. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  258. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  259. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  260. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  261. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  262. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  263. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  264. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/MCP.md +0 -0
  265. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/MEDIA_LIBRARY.md +0 -0
  266. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/REFERENCE_STRATEGIES.md +0 -0
  267. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/SECURITY.md +0 -0
  268. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/TOOLS.md +0 -0
  269. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/USER_GUIDE.md +0 -0
  270. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/assets/demo-split-pf.gif +0 -0
  271. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/assets/example-run.gif +0 -0
  272. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/assets/examples.webp +0 -0
  273. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/medium_tutorial.md +0 -0
  274. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/schemas/movie-handoff.schema.json +0 -0
  275. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/sonar-cleanup-tracker.md +0 -0
  276. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/README.md +0 -0
  277. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  278. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  279. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  280. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  281. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/data-layer-overview.md +0 -0
  282. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  283. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  284. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  285. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  286. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  287. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  288. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  289. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
  290. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  291. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  292. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  293. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  294. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  295. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  296. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
  297. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  298. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  299. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  300. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  301. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  302. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  303. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  304. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  305. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  306. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  307. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  308. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-signing.md +0 -0
  309. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  310. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  311. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  312. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  313. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  314. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  315. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  316. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  317. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  318. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  319. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  320. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  321. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  322. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  323. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  324. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  325. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  326. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  327. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  328. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  329. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  330. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  331. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  332. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  333. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  334. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  335. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  336. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  337. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  338. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  339. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  340. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  341. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  342. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  343. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  344. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  345. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  346. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  347. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  348. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  349. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  350. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  351. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  352. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  353. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  354. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  355. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  356. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  357. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  358. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  359. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  360. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  361. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  362. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  363. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  364. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  365. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  366. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  367. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  368. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  369. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  370. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  371. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  372. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  373. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  374. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  375. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  376. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  377. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  378. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  379. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  380. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  381. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  382. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  383. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  384. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  385. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  386. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  387. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  388. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  389. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  390. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  391. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  392. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  393. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/README.md +0 -0
  394. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/batch_from_config.py +0 -0
  395. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/multi_prompt_t2i.py +0 -0
  396. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/sample_config.json +0 -0
  397. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/sample_prompts.txt +0 -0
  398. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/single_image_t2i.py +0 -0
  399. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/workflow_chain.py +0 -0
  400. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/index.html +0 -0
  401. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/README.md +0 -0
  402. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/01_upload_image.json +0 -0
  403. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  404. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  405. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/04_archive_workflow.json +0 -0
  406. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/05_createProject.json +0 -0
  407. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/06_batchGenerateImages.json +0 -0
  408. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  409. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  410. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  411. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  412. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  413. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/12_create_scene.json +0 -0
  414. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/13_sceneWorkflows_update.json +0 -0
  415. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/14_get_scene_workflows.json +0 -0
  416. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/15_commit_flowWorkflow.json +0 -0
  417. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/canary/register_task.ps1 +0 -0
  418. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/canary/run_canary.py +0 -0
  419. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_council_memory.py +0 -0
  420. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_doc_links.py +0 -0
  421. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_materiality.py +0 -0
  422. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_release_artifacts.py +0 -0
  423. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_repo_hygiene.py +0 -0
  424. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_test_count.py +0 -0
  425. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_website_docs_pii.py +0 -0
  426. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/generate_website_docs.py +0 -0
  427. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/debug_editor.py +0 -0
  428. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/debug_gen_settings.py +0 -0
  429. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/debug_settings.py +0 -0
  430. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/_recording_client.py +0 -0
  431. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/_spike_common.py +0 -0
  432. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/active_plan.py +0 -0
  433. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  434. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  435. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  436. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  437. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  438. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_model_menu.py +0 -0
  439. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  440. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  441. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  442. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_project_listing.py +0 -0
  443. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  444. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  445. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  446. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/cdp_drive_and_probe.py +0 -0
  447. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/character_create_spike.py +0 -0
  448. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/character_create_spike_v2.py +0 -0
  449. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/dump_character_selectors.js +0 -0
  450. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/README.md +0 -0
  451. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  452. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  453. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  454. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  455. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  456. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  457. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  458. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  459. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  460. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  461. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  462. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/incident_bundle_quality.py +0 -0
  463. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  464. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  465. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_video_model_select.py +0 -0
  466. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/make_project.py +0 -0
  467. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/materiality_backtest.py +0 -0
  468. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/measure_html_lang_settle.py +0 -0
  469. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/measure_locale_probe.py +0 -0
  470. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/measure_migrated_host_flip.py +0 -0
  471. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/patch_character.py +0 -0
  472. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/README.md +0 -0
  473. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/harness.py +0 -0
  474. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/tasks.json +0 -0
  475. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/sonar-local-scan.sh +0 -0
  476. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  477. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_changelog_capture.py +0 -0
  478. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_char_editor_dom.py +0 -0
  479. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_char_gen_capture.py +0 -0
  480. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_model_recon.py +0 -0
  481. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  482. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_route_capture.py +0 -0
  483. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_submit_capture.py +0 -0
  484. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_ui_recon.py +0 -0
  485. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_capture.py +0 -0
  486. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_drive.py +0 -0
  487. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  488. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  489. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_incident_live.py +0 -0
  490. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  491. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  492. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  493. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  494. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  495. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_locale_poison.py +0 -0
  496. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  497. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  498. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  499. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  500. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  501. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_surface.py +0 -0
  502. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  503. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  504. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  505. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  506. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  507. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  508. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  509. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  510. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_mode_roundtrip.py +0 -0
  511. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  512. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_model_inventory.py +0 -0
  513. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_attach_payload.py +0 -0
  514. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_entity_recon.py +0 -0
  515. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_gen_capture.py +0 -0
  516. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_picker_select.py +0 -0
  517. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_voice_list.py +0 -0
  518. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_patch_entity.py +0 -0
  519. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  520. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_video_tab_dom.py +0 -0
  521. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_lang_settle_fix.py +0 -0
  522. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_language_agnostic.py +0 -0
  523. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_locale_navigation_race.py +0 -0
  524. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_model_attribution.py +0 -0
  525. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/README.md +0 -0
  526. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/capture_flow_traffic.py +0 -0
  527. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  528. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/memory_profile.py +0 -0
  529. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/recaptcha_mint.py +0 -0
  530. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/spike_387_openai_compat.py +0 -0
  531. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  532. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/e2e/capture_agent_toggle.py +0 -0
  533. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/probe/run_probe.py +0 -0
  534. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/probe/spike_auth_matrix.py +0 -0
  535. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/record_demo.ps1 +0 -0
  536. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/smoke_image.py +0 -0
  537. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/smoke_video_editor.py +0 -0
  538. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/smoke_worker_style.py +0 -0
  539. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/spike_waf_camoufox.py +0 -0
  540. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/verify_chrome_auth_viability.py +0 -0
  541. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/README.md +0 -0
  542. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/changelog/SKILL.md +0 -0
  543. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/check/SKILL.md +0 -0
  544. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/doc-review/SKILL.md +0 -0
  545. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/gflow-cli/SKILL.md +0 -0
  546. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/issue-assessment/SKILL.md +0 -0
  547. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/issue-resolve/SKILL.md +0 -0
  548. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/known-issues/SKILL.md +0 -0
  549. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/live-verify/SKILL.md +0 -0
  550. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/llm-council/SKILL.md +0 -0
  551. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/plan/SKILL.md +0 -0
  552. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/predict/SKILL.md +0 -0
  553. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/release/SKILL.md +0 -0
  554. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/scenario/SKILL.md +0 -0
  555. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/sonar/SKILL.md +0 -0
  556. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/status/SKILL.md +0 -0
  557. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/clip_qa.py +0 -0
  558. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/composition.md +0 -0
  559. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/consistency.md +0 -0
  560. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/failure-modes.md +0 -0
  561. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/tasks.json +0 -0
  562. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/sonar-project.properties +0 -0
  563. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/__main__.py +0 -0
  564. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/__init__.py +0 -0
  565. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_engine.py +0 -0
  566. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_retry.py +0 -0
  567. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_sapisidhash.py +0 -0
  568. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/character.py +0 -0
  569. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/credits.py +0 -0
  570. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/dto.py +0 -0
  571. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/extend_chain.py +0 -0
  572. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/image.py +0 -0
  573. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/image_upscale.py +0 -0
  574. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/recaptcha.py +0 -0
  575. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/routes.py +0 -0
  576. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/scene.py +0 -0
  577. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/__init__.py +0 -0
  578. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/_common.py +0 -0
  579. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  580. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/base.py +0 -0
  581. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  582. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  583. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  584. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  585. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  586. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  587. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  588. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  589. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  590. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  591. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/mode_control.py +0 -0
  592. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  593. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/video.py +0 -0
  594. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/video_extend.py +0 -0
  595. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/__init__.py +0 -0
  596. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/base.py +0 -0
  597. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/cookies.py +0 -0
  598. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/factory.py +0 -0
  599. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/internal_chromium.py +0 -0
  600. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/real_chrome.py +0 -0
  601. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/strategies.py +0 -0
  602. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/verification.py +0 -0
  603. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/browser_manager.py +0 -0
  604. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/chain.py +0 -0
  605. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/chain_manifest.py +0 -0
  606. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli.py +0 -0
  607. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_credits.py +0 -0
  608. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_data.py +0 -0
  609. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_doctor.py +0 -0
  610. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_image.py +0 -0
  611. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_instructions.py +0 -0
  612. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_models.py +0 -0
  613. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_movie.py +0 -0
  614. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_project.py +0 -0
  615. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_run.py +0 -0
  616. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_scene.py +0 -0
  617. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_tools.py +0 -0
  618. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_update.py +0 -0
  619. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_video.py +0 -0
  620. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/composition.py +0 -0
  621. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/config.py +0 -0
  622. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/__init__.py +0 -0
  623. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/chain_repo.py +0 -0
  624. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  625. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  626. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  627. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  628. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  629. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  630. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  631. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  632. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  633. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/__init__.py +0 -0
  634. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/models.py +0 -0
  635. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/queries.py +0 -0
  636. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/recorder.py +0 -0
  637. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/redaction.py +0 -0
  638. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/repository.py +0 -0
  639. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/store.py +0 -0
  640. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/exceptions.py +0 -0
  641. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/file_integrity.py +0 -0
  642. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  643. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/grading.py +0 -0
  644. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/model.py +0 -0
  645. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/registry.py +0 -0
  646. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/image_batch.py +0 -0
  647. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/json_output.py +0 -0
  648. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/__init__.py +0 -0
  649. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/prompts.py +0 -0
  650. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/resources.py +0 -0
  651. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/server.py +0 -0
  652. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/setup.py +0 -0
  653. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  654. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/tools.py +0 -0
  655. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/media.py +0 -0
  656. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/movie_manifest.py +0 -0
  657. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/observability.py +0 -0
  658. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/paths.py +0 -0
  659. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/profile_lease.py +0 -0
  660. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/profile_store.py +0 -0
  661. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/redaction.py +0 -0
  662. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/__init__.py +0 -0
  663. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/catalog_sync.py +0 -0
  664. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/character_create.py +0 -0
  665. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/credits.py +0 -0
  666. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/doctor.py +0 -0
  667. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/mentions.py +0 -0
  668. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/storage.py +0 -0
  669. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/__init__.py +0 -0
  670. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/banned.py +0 -0
  671. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  672. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  673. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  674. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  675. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/expander.py +0 -0
  676. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/invocation.py +0 -0
  677. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/loader.py +0 -0
  678. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/registry.py +0 -0
  679. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/runtime.py +0 -0
  680. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/spec.py +0 -0
  681. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/ui/app.py +0 -0
  682. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/ui/server.py +0 -0
  683. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/update_check.py +0 -0
  684. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/winsec.py +0 -0
  685. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/codec.py +0 -0
  686. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/daemon.py +0 -0
  687. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/queue.py +0 -0
  688. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tasks/lessons.md +0 -0
  689. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/test_assets/sample_batch.json +0 -0
  690. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/test_assets/sample_batch.tsv +0 -0
  691. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/test_assets/sample_batch_invalid.tsv +0 -0
  692. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/__init__.py +0 -0
  693. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/__init__.py +0 -0
  694. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/fixtures/character_gen_response.json +0 -0
  695. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/fixtures/patch_entity_response.json +0 -0
  696. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  697. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_aisandbox_auth_error.py +0 -0
  698. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_aisandbox_auth_headers.py +0 -0
  699. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_bearer_redaction.py +0 -0
  700. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_character.py +0 -0
  701. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_character_readback_fallback.py +0 -0
  702. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client.py +0 -0
  703. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_character.py +0 -0
  704. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_delete_characters.py +0 -0
  705. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_errors.py +0 -0
  706. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_extend.py +0 -0
  707. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_generate_character.py +0 -0
  708. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_image.py +0 -0
  709. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_incidents.py +0 -0
  710. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_launch_kwargs.py +0 -0
  711. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_locale_cache.py +0 -0
  712. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_migrated_mint.py +0 -0
  713. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_patch_entity.py +0 -0
  714. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_scene.py +0 -0
  715. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_upscale.py +0 -0
  716. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_concurrency.py +0 -0
  717. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_credits.py +0 -0
  718. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_credits_http.py +0 -0
  719. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_dto.py +0 -0
  720. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_engine.py +0 -0
  721. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_extend_chain.py +0 -0
  722. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_image.py +0 -0
  723. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_image_dto.py +0 -0
  724. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_image_upscale.py +0 -0
  725. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  726. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_recaptcha.py +0 -0
  727. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_retry.py +0 -0
  728. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes.py +0 -0
  729. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes_character.py +0 -0
  730. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes_locale.py +0 -0
  731. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes_scene.py +0 -0
  732. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_sapisidhash_helper.py +0 -0
  733. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_scene_models.py +0 -0
  734. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video.py +0 -0
  735. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video_extend.py +0 -0
  736. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video_request.py +0 -0
  737. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video_status_poll.py +0 -0
  738. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/__init__.py +0 -0
  739. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/conftest.py +0 -0
  740. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/__init__.py +0 -0
  741. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_agentic.py +0 -0
  742. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_classic.py +0 -0
  743. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_factory.py +0 -0
  744. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  745. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  746. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_base.py +0 -0
  747. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_batchexecute.py +0 -0
  748. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_bearer.py +0 -0
  749. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_character_model_picker.py +0 -0
  750. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_common.py +0 -0
  751. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_evaluate_fetch.py +0 -0
  752. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_factory.py +0 -0
  753. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_fingerprint.py +0 -0
  754. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_locale_navigation.py +0 -0
  755. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_host_gate.py +0 -0
  756. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_route.py +0 -0
  757. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_mode_control.py +0 -0
  758. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_model_selection_loud.py +0 -0
  759. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_navigation_settled.py +0 -0
  760. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_overlay_precondition.py +0 -0
  761. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_policy_400.py +0 -0
  762. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_sapisidhash.py +0 -0
  763. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_selector_symmetry.py +0 -0
  764. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_transport_timeout.py +0 -0
  765. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_batch.py +0 -0
  766. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  767. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_video.py +0 -0
  768. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  769. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/strategies/test_factory.py +0 -0
  770. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/strategies/test_strategies.py +0 -0
  771. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_cookies.py +0 -0
  772. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_real_chrome.py +0 -0
  773. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_verification.py +0 -0
  774. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_windows_acl.py +0 -0
  775. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/__init__.py +0 -0
  776. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_auth_status.py +0 -0
  777. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_auth_list.py +0 -0
  778. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_character.py +0 -0
  779. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_character_create.py +0 -0
  780. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_credits.py +0 -0
  781. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data.py +0 -0
  782. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_errors.py +0 -0
  783. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_errors_retention.py +0 -0
  784. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_sync.py +0 -0
  785. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_doctor.py +0 -0
  786. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image.py +0 -0
  787. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_seed_removed.py +0 -0
  788. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_selector_drift.py +0 -0
  789. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_upscale.py +0 -0
  790. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  791. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_instructions.py +0 -0
  792. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_models.py +0 -0
  793. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_movie.py +0 -0
  794. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_run.py +0 -0
  795. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_scene.py +0 -0
  796. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_tools.py +0 -0
  797. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video.py +0 -0
  798. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video_chain.py +0 -0
  799. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video_extend.py +0 -0
  800. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_error_handling.py +0 -0
  801. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_failure_funnel.py +0 -0
  802. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_helpers.py +0 -0
  803. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_incident_output.py +0 -0
  804. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_movie_manifest.py +0 -0
  805. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  806. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_predictable_output.py +0 -0
  807. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  808. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_settings_validation.py +0 -0
  809. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_t2i_multi_prompt.py +0 -0
  810. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_character.py +0 -0
  811. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_compose_prompt.py +0 -0
  812. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_handoff.py +0 -0
  813. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_style_variants.py +0 -0
  814. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_style_variants_e2e.py +0 -0
  815. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/conftest.py +0 -0
  816. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/__init__.py +0 -0
  817. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_chain_repo.py +0 -0
  818. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_failure_recording.py +0 -0
  819. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_find_incomplete_character.py +0 -0
  820. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_models.py +0 -0
  821. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_null_columns_stay_null.py +0 -0
  822. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_packaging.py +0 -0
  823. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_recorder.py +0 -0
  824. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_recorder_character.py +0 -0
  825. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_redaction.py +0 -0
  826. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_repository.py +0 -0
  827. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_scene_persistence.py +0 -0
  828. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_settings_and_errors.py +0 -0
  829. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_store.py +0 -0
  830. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_store_migrations.py +0 -0
  831. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/dev/test_recording_client.py +0 -0
  832. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/__init__.py +0 -0
  833. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  834. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  835. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_auth_verification_e2e.py +0 -0
  836. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_cancellation_e2e.py +0 -0
  837. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_chain_e2e.py +0 -0
  838. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  839. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  840. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_credits_e2e.py +0 -0
  841. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  842. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_daemon_e2e.py +0 -0
  843. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_data_layer_e2e.py +0 -0
  844. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  845. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  846. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  847. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  848. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_image_batch_e2e.py +0 -0
  849. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  850. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  851. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_incident_quality_e2e.py +0 -0
  852. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_json_output_e2e.py +0 -0
  853. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_live_agentic_instructions.py +0 -0
  854. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  855. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  856. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_project_naming_e2e.py +0 -0
  857. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  858. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_scene_compose_live.py +0 -0
  859. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  860. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_tools_e2e.py +0 -0
  861. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_transports_e2e.py +0 -0
  862. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  863. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  864. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_video_t2v_e2e.py +0 -0
  865. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/__init__.py +0 -0
  866. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/asset_tagging.feature +0 -0
  867. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/auth.feature +0 -0
  868. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/auth_login.feature +0 -0
  869. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/character_create.feature +0 -0
  870. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/character_read.feature +0 -0
  871. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/conftest.py +0 -0
  872. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/credits.feature +0 -0
  873. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/duration_tab_drift.feature +0 -0
  874. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/entity_provenance.feature +0 -0
  875. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/image.feature +0 -0
  876. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/image_batch_references.feature +0 -0
  877. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/image_upscale.feature +0 -0
  878. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/incident_diagnostics.feature +0 -0
  879. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/instructions.feature +0 -0
  880. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/latched_locale_recovery.feature +0 -0
  881. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/locale_picker_include.feature +0 -0
  882. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/mcp_tasks.feature +0 -0
  883. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/media_picker_tiers.feature +0 -0
  884. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/migrated_driver.feature +0 -0
  885. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/migrated_host_gate.feature +0 -0
  886. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/migrated_i2v.feature +0 -0
  887. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/output_hardening.feature +0 -0
  888. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_asset_tagging_steps.py +0 -0
  889. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_auth_login_steps.py +0 -0
  890. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_auth_steps.py +0 -0
  891. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_character_create_steps.py +0 -0
  892. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_character_read_steps.py +0 -0
  893. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_credits_steps.py +0 -0
  894. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_image_steps.py +0 -0
  895. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_image_upscale_steps.py +0 -0
  896. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_incident_diagnostics_steps.py +0 -0
  897. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_instructions_steps.py +0 -0
  898. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_locale_picker_include_steps.py +0 -0
  899. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_mcp_tasks_steps.py +0 -0
  900. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_media_picker_tiers_steps.py +0 -0
  901. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_migrated_driver_steps.py +0 -0
  902. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_migrated_host_gate_steps.py +0 -0
  903. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_migrated_i2v_steps.py +0 -0
  904. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_output_hardening_steps.py +0 -0
  905. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_step_collision_guard.py +0 -0
  906. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_video_agent_ui_steps.py +0 -0
  907. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_video_chain_steps.py +0 -0
  908. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/video_agent_ui.feature +0 -0
  909. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/video_chain.feature +0 -0
  910. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/__init__.py +0 -0
  911. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/changelog_modal_page.html +0 -0
  912. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/doctor_env.py +0 -0
  913. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/flow_model_inventory.json +0 -0
  914. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/flow_project_listing_media.json +0 -0
  915. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/listing_payload.py +0 -0
  916. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/seeded_catalog.py +0 -0
  917. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/__init__.py +0 -0
  918. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_grading.py +0 -0
  919. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_model.py +0 -0
  920. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_model_governance.py +0 -0
  921. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_registry.py +0 -0
  922. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_report.py +0 -0
  923. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/__init__.py +0 -0
  924. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/test_image_manifest.py +0 -0
  925. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/test_jitter_config.py +0 -0
  926. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/test_observability_events.py +0 -0
  927. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/__init__.py +0 -0
  928. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/conftest.py +0 -0
  929. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/constants.py +0 -0
  930. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/test_expander_gateway.py +0 -0
  931. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/test_storage_gcs.py +0 -0
  932. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/test_storage_s3.py +0 -0
  933. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/__init__.py +0 -0
  934. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/conftest.py +0 -0
  935. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_auth_status_tool.py +0 -0
  936. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_character_tools.py +0 -0
  937. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_cli_parity.py +0 -0
  938. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_credits_tool.py +0 -0
  939. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_error_funnel.py +0 -0
  940. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_http_transport.py +0 -0
  941. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_known_issues_resource.py +0 -0
  942. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  943. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_no_spend.py +0 -0
  944. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_rate_limit_envelope.py +0 -0
  945. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  946. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_resources.py +0 -0
  947. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_server.py +0 -0
  948. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_setup.py +0 -0
  949. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_stdio_transport.py +0 -0
  950. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tasks_extension.py +0 -0
  951. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_helpers.py +0 -0
  952. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_instructions.py +0 -0
  953. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_wired.py +0 -0
  954. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  955. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_canary_classify.py +0 -0
  956. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_canary_reexec.py +0 -0
  957. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_capture_locale_invariants.py +0 -0
  958. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  959. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_council_memory.py +0 -0
  960. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_materiality.py +0 -0
  961. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_release_artifacts.py +0 -0
  962. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_repo_hygiene.py +0 -0
  963. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_test_count.py +0 -0
  964. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_website_docs_pii.py +0 -0
  965. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_codex_plugin.py +0 -0
  966. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_extract_har_summary.py +0 -0
  967. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_generate_website_docs.py +0 -0
  968. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_incident_bundle_quality.py +0 -0
  969. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_materiality_backtest.py +0 -0
  970. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_skillopt_scoring.py +0 -0
  971. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_workflow_hardening.py +0 -0
  972. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/__init__.py +0 -0
  973. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_catalog_sync.py +0 -0
  974. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_character_create_redaction.py +0 -0
  975. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_character_create_saga.py +0 -0
  976. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_character_gen_no_direct_post.py +0 -0
  977. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_credits.py +0 -0
  978. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_doctor.py +0 -0
  979. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_media_attribution.py +0 -0
  980. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_mentions_observability.py +0 -0
  981. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_mentions_parse.py +0 -0
  982. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_mentions_resolve.py +0 -0
  983. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_resolve_and_apply.py +0 -0
  984. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/smoke/__init__.py +0 -0
  985. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/smoke/test_profile_account_smoke.py +0 -0
  986. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/smoke/test_real_flow.py +0 -0
  987. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_auth.py +0 -0
  988. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_browser_manager.py +0 -0
  989. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_chain.py +0 -0
  990. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_chain_manifest.py +0 -0
  991. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_cli_data.py +0 -0
  992. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_cli_project.py +0 -0
  993. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_cli_update.py +0 -0
  994. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_config.py +0 -0
  995. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_conftest_isolation.py +0 -0
  996. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_data_queries.py +0 -0
  997. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_bundle.py +0 -0
  998. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_events.py +0 -0
  999. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_journal.py +0 -0
  1000. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_recorder.py +0 -0
  1001. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_retention.py +0 -0
  1002. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_sanitize.py +0 -0
  1003. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_duration_tab_drift.py +0 -0
  1004. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_entity_provenance.py +0 -0
  1005. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_errors.py +0 -0
  1006. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_errors_classification.py +0 -0
  1007. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_image_batch_references.py +0 -0
  1008. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_incident_generation_requests.py +0 -0
  1009. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_json_output.py +0 -0
  1010. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_marker_registry.py +0 -0
  1011. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_media.py +0 -0
  1012. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_observability.py +0 -0
  1013. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_overlay_banner_dismissal.py +0 -0
  1014. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_paths.py +0 -0
  1015. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_playwright_pin.py +0 -0
  1016. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_lease.py +0 -0
  1017. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_lease_subprocess.py +0 -0
  1018. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_store.py +0 -0
  1019. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_store_locale.py +0 -0
  1020. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_project_list_urls.py +0 -0
  1021. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_self_documenting_errors.py +0 -0
  1022. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_smoke.py +0 -0
  1023. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_update_check.py +0 -0
  1024. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/__init__.py +0 -0
  1025. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_banned.py +0 -0
  1026. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_expander.py +0 -0
  1027. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_invocation.py +0 -0
  1028. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_loader.py +0 -0
  1029. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_registry.py +0 -0
  1030. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_runtime.py +0 -0
  1031. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_spec.py +0 -0
  1032. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/ui/test_app.py +0 -0
  1033. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_codec.py +0 -0
  1034. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_daemon.py +0 -0
  1035. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_mcp_daemon_race.py +0 -0
  1036. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_queue.py +0 -0
  1037. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_queue_multiprocess.py +0 -0
  1038. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_queue_reconciliation.py +0 -0
  1039. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1040. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/AUTHENTICATION.md +0 -0
  1041. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/CONFIGURATION.md +0 -0
  1042. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/DATA_LAYER.md +0 -0
  1043. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/DEBUGGING.md +0 -0
  1044. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/DEVELOPMENT.md +0 -0
  1045. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/E2E_TESTING.md +0 -0
  1046. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1047. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/INSTRUCTIONS.md +0 -0
  1048. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/MCP.md +0 -0
  1049. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/MEDIA_LIBRARY.md +0 -0
  1050. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/SECURITY.md +0 -0
  1051. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/TOOLS.md +0 -0
  1052. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/USER_GUIDE.md +0 -0
  1053. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/agents.md +0 -0
  1054. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/index.md +0 -0
  1055. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/onboarding-mockup.html +0 -0
  1056. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/onboarding.md +0 -0
  1057. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/stylesheets/extra.css +0 -0
  1058. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/mkdocs.yml +0 -0
  1059. {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/requirements.in +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.70.0",
3
+ "version": "0.71.1",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -111,32 +111,6 @@ updates:
111
111
  applies-to: version-updates
112
112
  patterns: ["*"]
113
113
 
114
- # npm — the PR-triage sandbox's pinned Claude Code CLI
115
- # (scripts/autopilot/package-lock.json, installed via `npm ci` in
116
- # Dockerfile.triage).
117
- - package-ecosystem: "npm"
118
- directory: "/scripts/autopilot"
119
- schedule:
120
- interval: "weekly"
121
- day: "monday"
122
- time: "08:00"
123
- timezone: "Europe/Lisbon"
124
- open-pull-requests-limit: 2
125
- labels:
126
- - "dependencies"
127
-
128
- # Docker — the digest-pinned node:20-slim base of Dockerfile.triage.
129
- - package-ecosystem: "docker"
130
- directory: "/scripts/autopilot"
131
- schedule:
132
- interval: "weekly"
133
- day: "monday"
134
- time: "08:00"
135
- timezone: "Europe/Lisbon"
136
- open-pull-requests-limit: 2
137
- labels:
138
- - "dependencies"
139
-
140
114
  # uv — the hash-pinned MkDocs set for the Pages build
141
115
  # (website/requirements.txt, compiled from website/requirements.in).
142
116
  # "uv", NOT "pip", for the same reason as the root entry: the pip ecosystem
@@ -59,4 +59,4 @@ jobs:
59
59
  url: ${{ steps.deployment.outputs.page_url }}
60
60
  steps:
61
61
  - id: deployment
62
- uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5
62
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5
@@ -73,7 +73,7 @@ jobs:
73
73
  # Configure once at https://pypi.org/manage/account/publishing/
74
74
 
75
75
  - name: Create GitHub Release
76
- uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3
76
+ uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3
77
77
  with:
78
78
  generate_release_notes: true
79
79
  files: dist/*
@@ -45,6 +45,15 @@ secrets.json
45
45
  .env.local
46
46
  .env.*.local
47
47
 
48
+ # Runtime state written into this repo by tools run FROM this directory.
49
+ # social-publisher's queue defaults to a RELATIVE path (its cli.py: SP_QUEUE_DB,
50
+ # default "state/queue.sqlite"), so invoking it — or its MCP server — with this repo
51
+ # as CWD silently creates state/queue.sqlite here. On 2026-09-07 that produced a
52
+ # second, EMPTY queue that a dry-run then read and reported as "nothing pending",
53
+ # while the real queue sat in social-publisher/state/. Untracked and unignored, it
54
+ # was also one `git add -A` from being committed.
55
+ state/
56
+
48
57
  # Generated outputs
49
58
  out/
50
59
  tmp/
@@ -42,7 +42,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
42
42
 
43
43
  ## Project at a glance
44
44
 
45
- - Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, and image-to-video from a local `--initial-frame`, today; `GFLOW_CLI_FLOW_HOST`).
45
+ - Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, and reference-to-video from local `--ref` files, today; `GFLOW_CLI_FLOW_HOST`).
46
46
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
47
47
  - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
48
48
  - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
@@ -62,7 +62,8 @@ If you can help unblock a pure HTTP transport (especially for video generation,
62
62
  ## Dev environment tips
63
63
 
64
64
  - `uv sync` then `uv run playwright install chromium`. No global Python install needed.
65
- - Copy `.env.template` to `.env.local`; never commit `.env.local`. It documents every env var.
65
+ - Copy `.env.template` to **`.env`** — either in the directory you run `gflow` from (project-local) or at `$GFLOW_CLI_HOME/.env` (machine-wide); on conflict the CWD one wins. It documents every env var. Both are gitignored; never commit either.
66
+ **Not `.env.local` — nothing loads that file.** `config.py::_env_files()` returns exactly `(<home>/.env, .env)`, so `GFLOW_CLI_*` settings put in `.env.local` are silently ignored and `get_settings()` reports the default as though you had set nothing. Keeping a `.env.local` for credentials **you** read by hand (e.g. `SONAR_TOKEN`) is fine — it is only wrong as a home for gflow's own settings.
66
67
  - Output goes to `./tmp/` for scripts/tests or `$GFLOW_CLI_OUTPUT_DIR` for CLI outputs (defaults to `./out/`).
67
68
  - One-time auth: `gflow auth login --browser chrome` (recommended — a real-Chrome profile is what generation runs need; the default `--browser auto` can also pick the internal strategy, and generation later fails fast on profiles created with a non-chrome strategy).
68
69
  - Use `/gflow:status` to see the current task before starting work; `/gflow:known-issues` before touching auth or reCAPTCHA code paths.
@@ -105,7 +106,7 @@ the five other mirror axes), which no command here can check and no CI gate can
105
106
 
106
107
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
107
108
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
108
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–36, 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`). 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.
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.
109
110
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
110
111
  - **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.
111
112
  - **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`.
@@ -7,6 +7,358 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.71.1] — 2026-09-08
11
+
12
+ ### Fixed
13
+
14
+ - **A blocked first upload no longer reads as a broken file or a broken network.** On the
15
+ migrated `flow.google.com` host, `video i2v --initial-frame` and `video r2v --ref` failed
16
+ on an account's **first** upload with `MediaUploadRejectedError` (exit 27) — *"no maseQ
17
+ reply within 60s of choosing the file — the upload never reached Flow or was dropped"* —
18
+ and advised re-encoding the image to strip metadata. Neither the file nor the network was
19
+ involved: Flow shows a one-time **"Rights to use this image"** confirmation *after* the
20
+ chooser hands the file over, and sends nothing until a human accepts it, so the driver
21
+ spent its whole budget waiting for a request the page had already declined to make.
22
+ Measured across 8 runs on 3 profiles — the two accounts that had uploaded before never saw
23
+ the dialog and uploaded fine, the account that never had failed 3/3, and accepting it once
24
+ made that account upload on the next run and every run after
25
+ ([spike](docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md)).
26
+
27
+ The driver now counts dialogs across the upload and, when one appeared *during* it, names
28
+ the one-time confirmation and tells the user to accept it once in a browser. **It is
29
+ counted rather than matched on purpose:** the dialog's two buttons are
30
+ `button.flow-button-medium` with no ligature and no data attribute, separable only by DOM
31
+ order, and its copy is translated — there is no anchor there that satisfies this project's
32
+ locale rule, whereas "a dialog appeared between the file being chosen and the wait
33
+ expiring" is upload-related by construction and cannot rot when Angular renames a class.
34
+
35
+ **gflow does not accept the dialog for you**, and there is no flag to make it: the dialog
36
+ affirms that *you* hold the rights to what you upload, it is one-off per account, and the
37
+ path already requires an interactive `gflow auth login` — so a setting that could never
38
+ safely default to on would be a flag nobody sets.
39
+
40
+ The driver also now watches the upload **request**, not just the response, so the timeout
41
+ splits into two distinct messages: `no upload request ever left the page` and `the request
42
+ left the page and Flow did not answer in time`. That distinction is load-bearing — the
43
+ second argues for a retry and the first argues against one — and it exposes a **second,
44
+ unfixed** failure on this path, an intermittent no-reply on already-consented accounts
45
+ (~1 run in 4) that keeps [#719](https://github.com/ffroliva/gflow-cli/issues/719) open and
46
+ now has its own [KNOWN_ISSUES.md](KNOWN_ISSUES.md) entry.
47
+ ([#719](https://github.com/ffroliva/gflow-cli/issues/719))
48
+
49
+ ### Documentation
50
+
51
+ - **Three documents said things that were not true, and are corrected rather than quietly
52
+ patched.** [KNOWN_ISSUES.md](KNOWN_ISSUES.md) said Flow's first-upload terms dialog affected
53
+ "the legacy in-tree Compiled Growth worker, **NOT `gflow-cli` itself** … workaround: none
54
+ needed" — true of the old REST path, false since the migrated driver began using the
55
+ editor's own upload, so it was the entry a user hitting #719 would find and be *reassured*
56
+ by. [LIVE_VERIFICATION_v0.71.0](docs/LIVE_VERIFICATION_v0.71.0.md) labelled the `ci-probe`
57
+ profile **labs** when it is migrated, contradicting v0.70.0 one day earlier; in a repo where
58
+ "Flow's UI shows X" is not a fact until the host is named, that silently re-scoped every
59
+ conclusion keyed to it — and it helped a credit-based theory for #719 survive four runs.
60
+ Six "unreleased line" phrases, which go stale the moment a release ships and had accumulated
61
+ across four of them, are now dated from the CHANGELOG.
62
+
63
+ ### Added
64
+
65
+ - **Two `$0` read-only dev instruments** for the migrated host.
66
+ [`scripts/dev/spike_migrated_queue_read.py`](scripts/dev/spike_migrated_queue_read.py) reads
67
+ a project's generation queue by listening to the page's own traffic — establishing that the
68
+ listing arrives on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, which is what a
69
+ future `gflow video status` ([#741](https://github.com/ffroliva/gflow-cli/issues/741)) should
70
+ read. [`scripts/dev/spike_migrated_upload_wire.py`](scripts/dev/spike_migrated_upload_wire.py)
71
+ drives the real `_upload_via_toolbar` with a listener on every request, which is how the
72
+ consent dialog above was found. Neither is wired into the CLI.
73
+
74
+ - **Flow's agent mode no longer bricks the account for every later run.** On the migrated
75
+ `flow.google.com` host the composer carries an **agent-mode chip**
76
+ (`button.agent-mode-chip[aria-pressed]`). Pressed, Flow swaps `flow-prompt-box` for
77
+ `flow-creative-agent-prompt-box`: the `.settings-trigger-button` this driver waits on stays
78
+ in the DOM but gains a bare `hidden` (`display: none`, 0×0, not hit-testable), so
79
+ `wait_for(state="visible")` could never pass and every run died at 30 s as
80
+ `UiSelectorDriftError` (exit 23) — telling the user to file a frontend-drift bug about a
81
+ frontend that was working fine. Flow **remembers the chip per account**, so one click in a
82
+ browser broke every subsequent `gflow video t2v`, with nothing on the CLI to say why or how
83
+ to undo it. `ensure_editor` now leaves agent mode before the readiness gate, and if the
84
+ classic composer still does not come back it says *that* instead of blaming drift. Measured
85
+ 2026-09-08 on two accounts, $0 —
86
+ [`scripts/dev/spike_migrated_composer_arms.py`](scripts/dev/spike_migrated_composer_arms.py),
87
+ finding in
88
+ [`docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md`](docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md).
89
+ The reporter's suggested anchor (`aria-label="Configuración"`) is not used: it is a translated
90
+ label, and the chip's own component class plus `aria-pressed` carry the same identity in every
91
+ locale. ([#749](https://github.com/ffroliva/gflow-cli/issues/749))
92
+
93
+ **Follow-up ([#752](https://github.com/ffroliva/gflow-cli/issues/752)):** the fix worked and
94
+ its diagnostics did not. Three states were collapsed into one message — the chip was clicked,
95
+ the chip was found but the click was blocked, the chip was clicked and the mode is still on —
96
+ and all three read as *"the chip was clicked to leave it … the mode may be pinned"*. A modal
97
+ eating the click sent the user to toggle a chip; genuine selector drift **after** the mode was
98
+ successfully left was reported as a pinned mode, so the drift bug never got filed. The chip's
99
+ `aria-pressed` is now read back before that claim is made, a blocked click raises at once
100
+ instead of waiting out the 20 s recovery window (worst case 55 s → 35 s), the click's own
101
+ exception is chained rather than truncated into a log line, and `_open_pane` — the same gate
102
+ one step later — guards on **visibility** rather than `count()`, so a mode flip mid-run maps
103
+ to exit 23 naming agent mode instead of escaping as a bare Playwright timeout. Searchable
104
+ entry added to [KNOWN_ISSUES.md](KNOWN_ISSUES.md), which the shipped message gave a user no
105
+ way to find.
106
+
107
+ ## [0.71.0] — 2026-09-07
108
+
109
+ ### Fixed
110
+
111
+ - **`--format-prompt` could submit an EMPTY prompt and log it as success.** The
112
+ observed-rewrite gate compared `abs(len(current) - len(typed)) >= 16`, and `abs` accepts
113
+ change in either direction. Flow **clears** the composer before repopulating it, so a poll
114
+ landing in that window read `""`, `abs(0 - 19) = 19` passed the gate, and `_send_prompt`
115
+ called `_click_submit` on the very next line — submitting nothing, on a path that spends
116
+ image quota, while `ui_automation.prompt_formatted` logged `prompt_len_after=0`
117
+ (`prompt_hash=e3b0c442`, the SHA-256 of the empty string).
118
+
119
+ Silent, billed, and self-certifying: a user hitting it would see a charge, an empty
120
+ result, and a log line saying it worked. It is also the exact defect the same release
121
+ fixes — a success signal that fires on the **absence** of the thing it measures — rebuilt
122
+ inside its own fix.
123
+
124
+ The gate now requires **growth** (`len(current) >= len(typed) + MIN_DELTA`) rather than an
125
+ absolute delta, plus a settle check: two reads one poll-interval apart must agree, because
126
+ the single discrete swap measured live was sampled at 250 ms and a partial write between
127
+ samples was never ruled out. Found by an adversarial review of the fix, not by the fix's
128
+ own tests. ([#745](https://github.com/ffroliva/gflow-cli/issues/745))
129
+
130
+ - **The entity guard recorded a cause that was wrong, and it is retracted.** The
131
+ `reference_entities` refusal in `_unported_form` said the submit *"never produces a
132
+ YhhmEf/eb1hJf/MZZa6b reply"*, cause unknown, undiagnosable without fixing
133
+ [#722](https://github.com/ffroliva/gflow-cli/issues/722). Reading the wire live shows
134
+ otherwise: `MZZa6b` **does** reply, with a null payload and an error slot, and the generation
135
+ is **accepted and queued** — Flow derives an `abra_r2v_8s` model key and renders it. What
136
+ fails is the observer: a null payload never names a media id, so `submit_and_observe`'s
137
+ `submitted` future never resolves and `SUBMIT_REPLY_BUDGET_S` (60 s) expires. That budget's
138
+ own comment records its calibration — *"the submit reply arrived 4.0–4.6 s after the click"* —
139
+ against an idle queue, while Flow allows **five concurrent generations** and throttles
140
+ per-minute throughput after heavy daily use. The run exits 9 `TransportTimeoutError` while the
141
+ video is still rendering. The guard **stays** (a timeout reported on a generation that is
142
+ actually running is worse for the user than an explicit refusal) but its reason is now
143
+ accurate and the fix is named beside it: on a null submit payload, fall through to the
144
+ `jwpduf`/`as29s` status poll. Two earlier comments on that guard, including one added in this
145
+ release, asserted the wrong cause.
146
+ ([#723](https://github.com/ffroliva/gflow-cli/issues/723),
147
+ [#742](https://github.com/ffroliva/gflow-cli/pull/742))
148
+ - **`docs/CHARACTER.md` and `docs/CHARACTER_RECON.md` disagreed on the voice wire case, and one
149
+ was wrong.** CHARACTER.md called the Capitalized UI name canonical while flagging the question
150
+ UNVERIFIED; CHARACTER_RECON.md recorded `presetVoiceId: "gacrux"` and stated the preset id is
151
+ the lowercased name. A live run settles it: `sent='Charon' stored='Charon' identical=True`.
152
+ Both documents now also record that `personalityNotes` is **Agent-scoped** — Flow's own editor
153
+ says *"The Flow agent can use this information to help craft scenes with your character"* — so
154
+ it is not a control on the audio engine and should not be expected to steer a `t2v`/`r2v`
155
+ performance. ([#736](https://github.com/ffroliva/gflow-cli/pull/736))
156
+ - **The "+ New project" CTA is found by structure again, not by English.** Its Tier-1 anchors
157
+ all targeted the `add_2` ligature. The migrated `flow.google.com` gallery renders **`add`**
158
+ under a `<mat-icon>` and renders `add_2` nowhere on that surface, so every structural entry
159
+ missed and the CTA was reached only by `button:has-text('New project')` — the localised-text
160
+ anti-pattern Tier 1 exists to avoid, and one that fails outright on a non-English migrated
161
+ profile. Tier 1 now leads with a class-only `add` anchor covering both carriers; measured on
162
+ the live gallery (control: 47 ligature nodes) it matches 1 where every previous entry
163
+ matched 0.
164
+
165
+ Also removed: `button:text-matches('^\+\s+\S+$', 'i')`. It is not a valid Playwright
166
+ selector and **raised on every evaluation** — observed twice against the live gallery — with
167
+ `except Exception: continue` swallowing it, so it had never matched anything on any host
168
+ while costing a round trip per attempt.
169
+
170
+ **This reverts the guard added moments earlier in the same release.** That guard raised
171
+ `FlowHostMigratedError` claiming the migrated host "renders no '+ New project' control gflow
172
+ can drive". It was an unproven negative, generalised from a sweep of two other surfaces to a
173
+ third that was never probed, and a live run disproved it in one click by creating a project
174
+ there. On a non-EN migrated profile it would have told the user that host has no such
175
+ control — false, and a dead end — when the real fix was to anchor on `add`.
176
+ ([#730](https://github.com/ffroliva/gflow-cli/issues/730))
177
+
178
+ - **~~A migrated-host gallery no longer reports a missing control as selector drift.~~ REVERTED WITHIN THIS RELEASE — kept for the record, see the bullet above.** The guard described below shipped and was removed again before the tag, because a live run created a project on that very surface in one click. The net change in v0.71.0 is the one above: the CTA is anchored structurally on `add` instead of by English text. Nothing in the paragraph that follows is behaviour you will find in this release.
179
+ `NEW_PROJECT_SELECTORS` anchors on the `add_2` ligature. The migrated `flow.google.com`
180
+ frontend renders **`add`** and renders `add_2` **nowhere** — composer `add=1/add_2=0`,
181
+ editor `add=2/add_2=0`, measured with per-surface controls. That is a ligature *name*
182
+ drift, not the carrier split, so a `mat-icon` twin would not have helped. Reaching the
183
+ sweep there produced `Could not find 'New project' CTA on Flow gallery`, whose remediation
184
+ is "check for a newer release, then file a frontend bug" — unfixable by the reader, and
185
+ pointing at the wrong culprit, exactly as a credit shortfall once reported as frontend
186
+ drift. It now raises `FlowHostMigratedError` naming the host and the way forward
187
+ (`--project`, which every migrated path already requires). On labs a missing CTA is still
188
+ reported as drift, because there it genuinely is.
189
+
190
+ No production path reaches this today — `migrated_can_serve` refuses without a
191
+ `project_id`, `ensure_editor` navigates straight to the project URL, and `character create`
192
+ requires `--project`. The `add_2` drift is therefore harmless **because of those guards**,
193
+ which is precisely what a future port relaxes; the measured fact now sits beside the
194
+ constant so the next person to un-guard a path meets it.
195
+ ([#730](https://github.com/ffroliva/gflow-cli/issues/730),
196
+ [spike](docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md))
197
+
198
+ - **Flow's own diagnostics were blind on the migrated host, and two selectors were broken behind
199
+ it.** `gflow`'s incident-bundle DOM dump queried `i.google-symbols, span.google-symbols`, and
200
+ `diagnostics.py`'s `STRUCTURAL_DOM_JS` queried `i.google-symbols` — so on `flow.google.com`,
201
+ where every Material Symbols ligature rides a `<mat-icon>`, **both reported zero ligatures**.
202
+ The instrument used to diagnose selector drift was blind to the host the drift lives on. That
203
+ is why [#727](https://github.com/ffroliva/gflow-cli/issues/727) and
204
+ [#731](https://github.com/ffroliva/gflow-cli/issues/731) stayed invisible, and why an incident
205
+ bundle from a migrated user named no ligatures at all. Both queries are now class-only.
206
+
207
+ Two selectors were broken behind that blindness. `SUBMIT_BUTTON_SELECTORS` was **working by
208
+ luck**: its two tag-qualified entries matched nothing on the migrated host and the submit only
209
+ landed because a third `has-text` entry matches the `<mat-icon>`'s *text* — observed live as
210
+ `prompt_submitted via="button:has-text('arrow_forward')"`, after paying two misses per submit.
211
+ `IMAGE_MODEL_PICKER_TRIGGER` had neither twin nor fallback, so its miss was total and silent:
212
+ the picker is best-effort, so generation simply proceeded on whatever model tier the editor
213
+ opened at. Both now anchor on the `google-symbols` **class**, which sits on the labs `<i>` and
214
+ the migrated `<mat-icon>` alike — verified against a real CSS engine, offline, in
215
+ `tests/api/transports/test_ligature_carrier.py`.
216
+
217
+ `SUBMIT_BUTTON_SELECTORS` also moves from `:text` to **`:text-is`**. `:text` is a substring
218
+ match and accepts `arrow_forward_ios`, a real Material Symbol; the `<i>` qualifier had been
219
+ containing that, and dropping it for the class-only carrier made the over-match reachable on
220
+ the submit path. The two-carrier fixture caught it as `matched 3 of 2` before it ran live.
221
+ ([#730](https://github.com/ffroliva/gflow-cli/issues/730),
222
+ [spike](docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md))
223
+
224
+ - **`character create --format-prompt` works again — both halves of it.** The flag had two
225
+ independent faults, and fixing only the first would have left it just as useless. On the
226
+ migrated `flow.google.com` host
227
+ all three entries of `PROMPT_FORMAT_SELECTORS` missed, so the flag degraded to a no-op:
228
+ `ui_automation.format_button_not_found`, exit **0**, prompt submitted as
229
+ typed, and the image quota spent on a run whose requested prompt-engineering step never
230
+ happened. The button was never absent. Measured on 2026-09-07 with
231
+ `scripts/dev/spike_character_prompt_format.py` (`$0` — navigation, one free `createEntity`,
232
+ DOM reads and typing; two control anchors, so a flat zero could not be mistaken for
233
+ absence): it renders as
234
+ `<flow-format-prompt-button>`, and the Angular frontend carries the unchanged
235
+ `personal_recommendations` ligature in **`<mat-icon>`** rather than `<i>` — the same carrier
236
+ split fixed for `add_2` / `arrow_drop_down` / `accessibility_new` in #703, which this constant
237
+ was not swept with. The EN `span:text-is('Format')` fallback missed too and is **deleted**
238
+ rather than translated: the button's own `aria-label` reads `"Formatar"` on a pt account, and
239
+ display labels are banned as anchors. The cascade now leads with the custom element and covers
240
+ both carriers. ([#727](https://github.com/ffroliva/gflow-cli/issues/727),
241
+ [spike](docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md))
242
+
243
+ - **`video t2v --reference-entity` no longer bills a clip that ignores the entity.** On the
244
+ migrated `flow.google.com` host the "character references are not ported" refusal lived inside
245
+ the r2v branch of the routing gate, so a t2v request returned from that gate before its
246
+ `reference_entities` were ever inspected — and nothing downstream attaches one there
247
+ (`attach_start_frame` is i2v-only, `attach_references` and the chip verification are r2v-only).
248
+ The run was submitted and **billed**, returning a plausible clip with an unbound face. That is
249
+ strictly worse than the exit 36 it was meant to give: a refusal is free and honest. The
250
+ sibling gate `migrated_can_serve` did refuse, but it only feeds `prefer_migrated`, and an
251
+ account Flow has already moved is routed by its URL without consulting it — so the refusal was
252
+ unreachable for exactly the accounts that needed it. The check is now mode-independent and
253
+ ahead of every early return. ([#716](https://github.com/ffroliva/gflow-cli/issues/716))
254
+ - **A credit shortfall is no longer diagnosed as a moved frontend.** On the migrated
255
+ `flow.google.com` host, an account whose balance is short **for the model it asked for**
256
+ produced `UiSelectorDriftError` (exit 23) — *"A Flow editor UI element could not be
257
+ located — Google may have updated their frontend. Check for a newer gflow-cli release,
258
+ then file a bug"*. Flow does not **disable** the submit control, it **replaces** it:
259
+ `arrow_forward` disappears and a `prompt-warning-button` carrying
260
+ `aria-label='Insufficient credits warning'` takes its place, so the anchor's absence
261
+ tracks the credit state, not the frontend. Measured by A/B on 2026-09-07 —
262
+ `scripts/dev/spike_migrated_submit_anchor.py`, same probe and same code ~60 s apart,
263
+ two accounts rendering the mirror image of each other. The wallet was **not** empty:
264
+ it held **50** credits and the run asked for `--model veo-quality`, which costs **100**.
265
+ That distinction is the actionable half — "you have no credits" is a dead end for
266
+ someone holding 50, while "short for this model" has a remedy: pick a cheaper tier
267
+ (`veo-lite` is 10). Every path that gives up on the submit control now checks for the
268
+ warning before naming a culprit, and reports the new `InsufficientCreditsError`
269
+ (**exit 37**) instead. Genuine drift — a missing anchor with no warning beside it —
270
+ still reports 23. Beyond the wrong message, the old behaviour manufactured
271
+ frontend-drift bug reports that no code change could ever fix.
272
+
273
+ ### Changed
274
+
275
+ - **`--format-prompt` now waits for the rewrite, and `ui_automation.prompt_formatted` means it
276
+ happened.** This is the second half of the #727 fix and the half that made the flag useful.
277
+ Flow rewrites **server-side** — a `batchexecute` round trip reaching the composer at ~5.4s
278
+ (measured, `denon82`) — while the old code waited `_jitter_ms(500)`, logged
279
+ `prompt_formatted` and returned; `_send_prompt` submits on the very next line. So the flag
280
+ shipped the prompt the user typed and discarded the rewrite on **every** run, with a success
281
+ event in the log and exit 0.
282
+
283
+ **The defect was never the duration. It was reporting a success we had not observed** — the
284
+ absence of a completion inside a window we chose, recorded as a completion. Same class as a
285
+ 20s selector timeout read as "the feature is absent" and a bundle captured after teardown
286
+ read as "the DOM was gone". This one was the worst of the three because it failed toward
287
+ **success**: a premature green looks exactly like the feature working, so nobody investigates
288
+ a pass.
289
+
290
+ `format_character_prompt` now polls the bound composer until its text actually changes, and
291
+ returns `True` only then. The gate is the DOM, not the wire — the `batchexecute` response
292
+ arrives **4.2s before** the text settles, so awaiting it would reproduce the same early
293
+ submit. Comparing against the string gflow inserted is locale-invariant by construction, and
294
+ a **length delta** rather than `!=` keeps Slate's whitespace normalisation from re-reporting
295
+ the same false success. Telemetry carries lengths and a stable hash, never the prompt text:
296
+ Flow *elaborates* a terse description into a detailed physical one, so the rewrite is more
297
+ PII-dense than the input.
298
+
299
+ New events: `format_button_clicked` (the old semantics), `format_not_observed` (clicked, no
300
+ rewrite inside the budget — it does not claim Flow failed, since an unchanged box also covers
301
+ Flow declining or judging the prompt already formatted).
302
+
303
+ **Two user-visible consequences.** A create with `--format-prompt` takes a few seconds longer
304
+ for the rewrite itself, and — because the reshaped prompt is longer and more detailed — the
305
+ generation is materially slower: **406s vs a 210s control** on the same account and prompt,
306
+ live-verified 2026-09-07.
307
+ ([#727](https://github.com/ffroliva/gflow-cli/issues/727),
308
+ [spike](docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md))
309
+
310
+ - **Retracted a false "measured" claim about the migrated composer.** A code comment asserted, as
311
+ "measured, not assumed", that the migrated project composer "has no image-generation mode".
312
+ Falsified live on 2026-09-07: its settings overlay opens to six radiogroups / sixteen radios and
313
+ the first is `[imageImage, videocamVideo]`, present and hit-testable, with the VIDEO option
314
+ carrying `aria-checked`. This reproduced an enumeration already committed on 2026-09-04,
315
+ exactly, on a different account. That does **not** establish that `image` works there — nothing
316
+ was clicked on the mode axis and nothing was submitted — only that the claim it cannot is
317
+ unfounded. Stating it more strongly would repeat the defect being retracted. The guard stays
318
+ until the port lands, but it no longer tells anyone the host cannot do this. ([#692](https://github.com/ffroliva/gflow-cli/issues/692),
319
+ [spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md))
320
+ - **A spike that cannot reach its surface now fails instead of concluding.**
321
+ `spike_migrated_image_capability.py` opened the settings overlay best-effort and swallowed the
322
+ exception, so it printed "the migrated composer looks VIDEO-ONLY" even when it had never opened
323
+ the panel — and that sentence became the retracted claim above. It now raises
324
+ `SpikeUnreachedError` and exits 3 with "This is a failed measurement, NOT evidence of absence".
325
+ Two features have now been declared absent by a probe that failed silently; the first was
326
+ `character create`, killed by a single 20 s selector timeout.
327
+
328
+ ### Added
329
+
330
+ - **`gflow character create --voice` is now verified end to end.**
331
+ `tests/e2e/test_character_create_e2e.py::test_character_create_attaches_voice_and_personality`
332
+ drives a live create then reads the character back from Flow. Until it existed, a repo-wide
333
+ grep for `--voice` across `tests/e2e/` matched **nothing**: every voice test was a unit test
334
+ of the hardcoded `VOICES` constant, and the one that looked live parsed a fixture. A voice
335
+ that silently failed to attach was invisible to the whole suite while the command exited 0.
336
+ Personality is asserted hard, unlike the sibling UTF-8 test which guards it as
337
+ `if shown_personality:` and passes vacuously when the field is absent.
338
+ ([#736](https://github.com/ffroliva/gflow-cli/pull/736))
339
+ - `scripts/dev/spike_entity_submit_rpcs.py` — attaches a character, submits, and logs **every**
340
+ `batchexecute` rpcid rather than only the three in `SUBMIT_RPCS`, plus the submit request's
341
+ model key. `scripts/dev/spike_project_media_status.py` — reads a project's generation state
342
+ read-only, `$0`, submitting nothing.
343
+ ([#741](https://github.com/ffroliva/gflow-cli/issues/741))
344
+ - **`video-production` skill § 4b-bis — the whole recipe for a cast with VOICES.** A character
345
+ entity is the only thing that carries a voice; a plate carries face and wardrobe as pixels and
346
+ the engine invents a new voice per clip. Measured across three plate-bound takes of one
347
+ character: **88 / 103 / 118 Hz**, three different actors, against a **4.3 Hz** engine noise
348
+ floor on an identical prompt repeated three times. The skill said to prefer rung 1 and never
349
+ said what skipping it costs, so a production could reach a finished cut before anyone noticed
350
+ the cast had no voices.
351
+ - `scripts/dev/spike_host_lane.py` — names a profile's lane (labs / migrated / **signed out**) in
352
+ one $0 run. It reports `SIGNED_OUT` as a distinct verdict and refuses to name a lane there,
353
+ because a signed-out profile is otherwise indistinguishable from a migrated one: with no
354
+ session, `labs.google/fx/…` renders its marketing shell and `flow.google.com/project/<id>`
355
+ redirects to `/about`. Read either in isolation and you conclude "this account was moved" from
356
+ a dead cookie.
357
+ - `scripts/dev/spike_migrated_composer_mode_axis.py` — hard-error probe that opens the migrated
358
+ composer's settings overlay and enumerates its radiogroups.
359
+ - `scripts/dev/spike_format_prompt_effect.py` — measures whether clicking Format actually
360
+ rewrites the prompt, and when. `$0`, never submits.
361
+
10
362
  ## [0.70.0] — 2026-09-06
11
363
 
12
364
  ### Fixed
@@ -4228,7 +4580,9 @@ shell-script template that branches on these codes.
4228
4580
 
4229
4581
  First skeleton. Not functional end-to-end yet.
4230
4582
 
4231
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...HEAD
4583
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...HEAD
4584
+ [0.71.1]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...v0.71.1
4585
+ [0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
4232
4586
  [0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
4233
4587
  [0.69.0]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...v0.69.0
4234
4588
  [0.68.0]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...v0.68.0
@@ -16,10 +16,12 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
16
16
 
17
17
  ### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v, i2v from a local start frame, and r2v from local reference files (rest of the matrix pending)
18
18
 
19
- - **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video, local-file image-to-video and local-file reference-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, references by `@Name` or `--reference-entity`, `image`, characters, scenes, extend, instructions and tools are not ported yet and still exit 36
19
+ - **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video, local-file image-to-video and local-file reference-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, references by `@Name` or `--reference-entity`, `image`, scenes, extend, instructions and tools are not ported yet and still exit 36. **`character` is NOT in that list any more** — `character create` was verified working on the migrated host in v0.70.0 and `character list` was re-verified there on 2026-09-07. This line claimed otherwise for a day, which is the dangerous direction for a stale doc to be stale in: a migrated user reading it concludes a working feature is impossible. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker's tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` have never had a probe run against them at all, so read them as *unported by gflow*, never as *impossible on the host*
20
20
  - **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
21
21
  - **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
22
- - **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in the unreleased line, post-v0.68.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
22
+ - **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
23
+ - **The migrated composer DOES have an image mode** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): a code comment claimed, as "measured, not assumed", that it has none. Falsified 2026-09-07 — its settings overlay carries a `mode` radiogroup of `[imageImage, videocamVideo]`, present and hit-testable. Nothing was clicked on that axis and nothing was submitted, so this does **not** establish that `image` works on a moved account; it establishes only that the claim it cannot is unfounded. Read the remaining exit 36 as *gflow does not drive this yet*, never as *the host cannot do it*; see [the spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md).
24
+ - **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in v0.69.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
23
25
 
24
26
  Google is moving Flow off Labs onto its own origin. On a migrated page load,
25
27
  `https://labs.google/fx/tools/flow/project/<id>` redirects to
@@ -389,7 +391,7 @@ Evidence: [LIVE_VERIFICATION_v0.23.0](docs/LIVE_VERIFICATION_v0.23.0.md).
389
391
 
390
392
  ### Expanded chat sidebar left the composer unrecoverable (exit 23)
391
393
 
392
- - **Status:** **Resolved** in the unreleased line — fixed and A/B-verified live;
394
+ - **Status:** **Resolved** in v0.60.0 — fixed and A/B-verified live;
393
395
  tracked in [#493](https://github.com/ffroliva/gflow-cli/issues/493)
394
396
  - **Severity:** High · **Affected:** `gflow image` / `gflow video` generation on
395
397
  accounts whose chat sidebar lacks the `edit_square` affordance, any locale
@@ -685,18 +687,52 @@ This is because Chromium holds an exclusive lock on its SQLite cookie database w
685
687
  ---
686
688
 
687
689
 
688
- ### Flow's first-upload terms-of-use dialog ("Aviso") blocks the worker (worker-only)
690
+ ### Flow's one-time upload-terms dialog blocks the FIRST upload on an account
689
691
 
690
- - **Status:** Open · **Severity:** Low · **Affects:** the legacy in-tree Compiled Growth worker, NOT `gflow-cli` itself
692
+ - **Status:** Mitigated · **Severity:** High until accepted (every `i2v --initial-frame` and `r2v --ref` on that account fails) · **Affects:** the migrated `flow.google.com` host, all versions through 0.71.0 · **Tracked:** [#719](https://github.com/ffroliva/gflow-cli/issues/719)
691
693
 
692
- Flow shows a one-time "Aviso" / "Notice" terms-of-use confirmation on the first image upload of a new account session. The legacy Playwright worker has to explicitly click "Concordo" / "Agree". `gflow-cli`'s API-driven path bypasses this dialog entirely (the REST endpoint already implies acceptance).
694
+ Flow shows a one-time **"Rights to use this image"** confirmation the first time an account uploads a file. It renders **after** the file chooser has handed the file over, and Flow sends **nothing** until it is accepted — so the driver waited out its full 60 s budget for an upload request the page had already decided not to make, then reported:
693
695
 
694
- **Workaround in gflow-cli:** none needed.
696
+ ```
697
+ MediaUploadRejectedError (exit 27): migrated host: no maseQ reply within 60s of choosing
698
+ the file — the upload never reached Flow or was dropped
699
+ ```
700
+
701
+ …and advised re-encoding the image to strip metadata. Neither the file nor the network was ever involved. Measured 2026-09-08 on three profiles, eight runs: the two accounts that had uploaded before never saw the dialog and uploaded fine; the account that never had failed 3/3. See [the spike](docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md).
702
+
703
+ > **This entry previously said the opposite.** It read *"Affects: the legacy in-tree Compiled Growth worker, NOT `gflow-cli` itself"*, because *"gflow-cli's API-driven path bypasses this dialog entirely (the REST endpoint already implies acceptance)"*, with *"Workaround in gflow-cli: none needed."* That was true of the REST path and became false when the migrated driver started using the editor's **own** upload — so the entry a user hitting #719 would find was reassuring them about the exact thing that was breaking their run.
704
+
705
+ **Mitigation** (v0.71.1): when the upload budget expires, the driver checks whether a dialog opened *during* the upload window and, if so, says so and points the user at the one-time acceptance instead of blaming the file.
706
+
707
+ **Workaround / how to clear it — once per account, ever:** open the project on `flow.google.com`, upload any image by hand, and accept the dialog. Uploads on that account then stop hitting *this* failure.
695
708
 
696
- **Workaround in legacy worker:** see Compiled Growth's `flow_video.py` consent-dismiss block.
709
+ > **Accepting does not make every upload succeed — there is a second, unrelated failure on this path.** See the next entry. If you have already accepted the dialog and an upload still times out, you are not looking at this issue and repeating the workaround will not help.
710
+
711
+ **gflow does not accept it for you, by design.** The dialog affirms that *you* hold the rights to the content you upload; that is not a claim a tool may make on an account owner's behalf. It is also a 30-second step, once, on a path that already requires an interactive browser login (`gflow auth login`) — so automating it would buy nothing and assert something on your behalf. There is deliberately no config flag: a setting that can never safely default to on, on a once-per-account event, is a flag nobody sets.
712
+
713
+ **Legacy worker:** Compiled Growth's `flow_video.py` clicks "Concordo" / "Agree" in its own consent-dismiss block. That is a different product decision, recorded here so the two are not confused.
697
714
 
698
715
  ---
699
716
 
717
+ ### An upload request leaves the page and Flow never answers (intermittent, migrated host)
718
+
719
+ - **Status:** Open · **Severity:** Medium (intermittent; costs a re-run, spends nothing) · **Affects:** the migrated `flow.google.com` host, `video i2v --initial-frame` and `video r2v --ref` · **Tracked:** [#719](https://github.com/ffroliva/gflow-cli/issues/719)
720
+
721
+ Distinct from the one-time upload-terms dialog above, and **not** fixed by accepting it. On an account that has already consented, roughly **1 upload in 4** sends the `maseQ` request — measured at 8 675 B for a 4 321-byte PNG, so the image is genuinely on the wire — and no reply ever arrives. Since v0.71.1 that reports:
722
+
723
+ ```
724
+ MediaUploadRejectedError (exit 27): migrated host: no maseQ reply within 60s of choosing
725
+ the file — the request left the page and Flow did not answer in time
726
+ ```
727
+
728
+ The contrasting message, **`no upload request ever left the page`**, means something client-side stopped it before the network — the consent dialog above being the known cause.
729
+
730
+ **Workaround:** re-run. The same file usually succeeds on the next attempt, and nothing is spent when it fails — Flow refuses before any submit.
731
+
732
+ **Not the file.** Three different images were ruled out in [#719](https://github.com/ffroliva/gflow-cli/issues/719), including a 4.3 KB synthetic flat colour with no metadata, and the same file uploads successfully on other attempts. Re-encoding does not help; the remediation text that used to suggest it was wrong.
733
+
734
+ **What is known.** A healthy upload window issues **4** POSTs; a failing one issued **24** — the full project-load rpcid inventory, firing ~2.6 s after the request went out, which is just before the ~2.8 s successful uploads take to answer. That has the shape of the page re-initialising underneath the in-flight upload, but no navigation event was captured, so the cause is unconfirmed. Measured 2026-09-08, 1 failure in 4 runs on one funded account — enough for "intermittent", not enough for a rate.
735
+
700
736
  ### Flow's release-notes ("What's new") changelog popup blocks first-run UI automation
701
737
 
702
738
  - **Status:** Mitigated · **Severity:** Medium · **Tracked:** [#26](https://github.com/ffroliva/gflow-cli/issues/26)
@@ -1167,6 +1203,32 @@ a `WireFormatError` about video bytes — neither naming the cause). `auto` now
1167
1203
  instead of a mid-run failure, and `GFLOW_CLI_PREFER_CLASSIC=1` is no longer the
1168
1204
  workaround anyone needs to discover.
1169
1205
 
1206
+ ### Flow's agent-mode chip hides the settings trigger on `flow.google.com` (exit 23)
1207
+
1208
+ - **Status:** Mitigated · **Severity:** High while it lasts (every video run on the account fails) · **Affects:** the migrated `flow.google.com` host, all versions through 0.71.0 · **Tracked:** [#749](https://github.com/ffroliva/gflow-cli/issues/749), follow-up [#752](https://github.com/ffroliva/gflow-cli/issues/752)
1209
+
1210
+ The migrated composer has an **Agent** chip. Pressed, Flow swaps the prompt box and
1211
+ leaves `.settings-trigger-button` — the element this driver waits on — in the DOM under
1212
+ a bare `hidden` (`display: none`, 0×0). Flow **remembers the chip per account**, so a
1213
+ single click in a browser made every later `gflow video` run on that account die at 30 s
1214
+ as `UiSelectorDriftError` (exit 23), telling the user to file a frontend-drift bug about
1215
+ a frontend that was working correctly.
1216
+
1217
+ **Mitigation** (v0.71.1): the readiness gate leaves agent mode by
1218
+ itself, so an account parked there recovers with no user action. If it cannot, the error
1219
+ now names which of three things happened rather than blaming drift:
1220
+
1221
+ | The message says | What it means | What to do |
1222
+ |---|---|---|
1223
+ | `the account is in Flow's agent mode … the chip could not be clicked` | something is covering the chip (a modal) | dismiss it in a browser; re-run |
1224
+ | `the chip was clicked, and it is STILL pressed` | the mode is pinned on this account | turn the **Agent** chip off in a browser; re-run |
1225
+ | `agent mode was left, but the settings trigger … still did not become visible` | the mode is off — this is real selector drift | file a bug; it is not this issue |
1226
+ | `the chip could not be read back, so whether the mode is still on is unknown` | the page went dark mid-recovery | check the **Agent** chip in a browser *before* filing this as drift |
1227
+ | `the settings trigger … is not visible — the account is in Flow's agent mode` | the mode flipped **mid-run**, after the editor was already ready | turn the **Agent** chip off in a browser; re-run |
1228
+
1229
+ **On 0.71.0 and earlier there is no recovery.** Open the project on
1230
+ `flow.google.com`, click the **Agent** chip off, and the account works again.
1231
+
1170
1232
  ### Auth verification depends on Google's NextAuth session endpoint
1171
1233
 
1172
1234
  - **Status:** Mitigated · **Severity:** Low (degrades fail-closed) · **Affects:** issue #15 fix onward · **Tracked:** issue #15