gflow-cli 0.70.0__tar.gz → 0.71.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1052) hide show
  1. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/dependabot.yml +0 -26
  3. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/pages.yml +1 -1
  4. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/release.yml +1 -1
  5. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.gitignore +9 -0
  6. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/AGENTS.md +3 -2
  7. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/CHANGELOG.md +257 -1
  8. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/KNOWN_ISSUES.md +3 -1
  9. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/PKG-INFO +2 -2
  10. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/AGENT_GUIDE.md +1 -1
  11. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/CHARACTER.md +41 -15
  12. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/CHARACTER_RECON.md +7 -2
  13. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/GITHUB.md +4 -2
  14. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/INDEX.md +1 -1
  15. gflow_cli-0.71.0/docs/LIVE_VERIFICATION_v0.71.0.md +120 -0
  16. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/MOVIE.md +60 -0
  17. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/PROJECT_STATUS.md +38 -0
  18. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/USAGE.md +10 -1
  19. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +8 -1
  20. gflow_cli-0.71.0/docs/superpowers/memory/ligature-carrier-differs-by-host.md +45 -0
  21. gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +145 -0
  22. gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +102 -0
  23. gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +120 -0
  24. gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +113 -0
  25. gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +106 -0
  26. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/pyproject.toml +3 -3
  27. gflow_cli-0.71.0/scripts/dev/acceptance/__init__.py +47 -0
  28. gflow_cli-0.71.0/scripts/dev/acceptance/bench.py +140 -0
  29. gflow_cli-0.71.0/scripts/dev/acceptance/domain.py +109 -0
  30. gflow_cli-0.71.0/scripts/dev/acceptance/judge.py +381 -0
  31. gflow_cli-0.71.0/scripts/dev/acceptance/settings.py +83 -0
  32. gflow_cli-0.71.0/scripts/dev/capture_i2v_frame_slots_dom.py +203 -0
  33. gflow_cli-0.71.0/scripts/dev/capture_i2v_intercept_submit.py +267 -0
  34. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_i2v_model_select_repro.py +38 -33
  35. gflow_cli-0.71.0/scripts/dev/capture_i2v_post_bind_state.py +293 -0
  36. gflow_cli-0.71.0/scripts/dev/capture_image_add_media_dom.py +192 -0
  37. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_locale_invariants.py +6 -1
  38. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +27 -9
  39. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_cdp_har_without_node.py +6 -1
  40. gflow_cli-0.71.0/scripts/dev/spike_character_editor_ready_gate.py +204 -0
  41. gflow_cli-0.71.0/scripts/dev/spike_character_prompt_format.py +270 -0
  42. gflow_cli-0.71.0/scripts/dev/spike_entity_submit_rpcs.py +263 -0
  43. gflow_cli-0.71.0/scripts/dev/spike_format_prompt_effect.py +208 -0
  44. gflow_cli-0.71.0/scripts/dev/spike_host_lane.py +156 -0
  45. gflow_cli-0.71.0/scripts/dev/spike_ligature_carrier_sweep.py +315 -0
  46. gflow_cli-0.71.0/scripts/dev/spike_migrated_composer_mode_axis.py +208 -0
  47. gflow_cli-0.71.0/scripts/dev/spike_migrated_entity_submit.py +243 -0
  48. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_image_capability.py +58 -4
  49. gflow_cli-0.71.0/scripts/dev/spike_migrated_picker_option_kind.py +132 -0
  50. gflow_cli-0.71.0/scripts/dev/spike_migrated_submit_anchor.py +149 -0
  51. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +123 -118
  52. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_patchright.py +5 -1
  53. gflow_cli-0.71.0/scripts/dev/spike_project_media_status.py +120 -0
  54. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/pr-council-review/SKILL.md +2 -2
  55. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/spike/SKILL.md +27 -0
  56. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/video-production/SKILL.md +149 -1
  57. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/__init__.py +1 -1
  58. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/_cli_helpers.py +11 -0
  59. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/client.py +36 -9
  60. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/migrated_composer.py +175 -11
  61. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/ui_automation.py +251 -49
  62. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_character.py +7 -3
  63. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/diagnostics.py +7 -2
  64. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/errors.py +44 -0
  65. gflow_cli-0.71.0/tests/api/transports/test_ligature_carrier.py +202 -0
  66. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_composer.py +129 -1
  67. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_dispatch.py +28 -0
  68. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_r2v.py +91 -0
  69. gflow_cli-0.71.0/tests/api/transports/test_new_project_cta_migrated.py +72 -0
  70. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation.py +29 -13
  71. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_character_editor.py +283 -15
  72. gflow_cli-0.71.0/tests/cli/test_run_with_handlers_context_leak.py +74 -0
  73. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/conftest.py +7 -0
  74. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +26 -6
  75. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_character_create_e2e.py +260 -25
  76. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_character_mcp_parity_e2e.py +17 -1
  77. gflow_cli-0.71.0/tests/e2e/test_e2e_env_isolation.py +44 -0
  78. gflow_cli-0.71.0/tests/e2e/test_insufficient_credits_e2e.py +90 -0
  79. gflow_cli-0.71.0/tests/scripts/test_frame_acceptance.py +321 -0
  80. gflow_cli-0.71.0/tests/scripts/test_spike_page_pool.py +81 -0
  81. gflow_cli-0.71.0/tests/scripts/test_spike_profile_lease.py +72 -0
  82. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_documentation_gate.py +17 -0
  83. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/uv.lock +31 -31
  84. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/CHARACTER.md +41 -15
  85. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/KNOWN_ISSUES.md +3 -1
  86. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/MOVIE.md +60 -0
  87. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/USAGE.md +10 -1
  88. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/installation.md +1 -1
  89. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/requirements.txt +3 -3
  90. gflow_cli-0.70.0/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -163
  91. gflow_cli-0.70.0/eval/pr_triage_eval.py +0 -42
  92. gflow_cli-0.70.0/eval/pr_triage_fixtures.json +0 -194
  93. gflow_cli-0.70.0/scripts/autopilot/Dockerfile.triage +0 -54
  94. gflow_cli-0.70.0/scripts/autopilot/entrypoint.sh +0 -10
  95. gflow_cli-0.70.0/scripts/autopilot/package-lock.json +0 -152
  96. gflow_cli-0.70.0/scripts/autopilot/package.json +0 -8
  97. gflow_cli-0.70.0/scripts/autopilot/pr_triage_autopilot.py +0 -859
  98. gflow_cli-0.70.0/scripts/autopilot/pr_triage_gate.py +0 -192
  99. gflow_cli-0.70.0/scripts/autopilot/run_sandboxed_review.sh +0 -188
  100. gflow_cli-0.70.0/scripts/dev/capture_i2v_frame_slots_dom.py +0 -198
  101. gflow_cli-0.70.0/scripts/dev/capture_i2v_intercept_submit.py +0 -262
  102. gflow_cli-0.70.0/scripts/dev/capture_i2v_post_bind_state.py +0 -288
  103. gflow_cli-0.70.0/scripts/dev/capture_image_add_media_dom.py +0 -184
  104. gflow_cli-0.70.0/scripts/dev/spike_character_prompt_format.py +0 -121
  105. gflow_cli-0.70.0/tests/autopilot/test_pr_triage_autopilot.py +0 -1149
  106. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.agents/plugins/marketplace.json +0 -0
  107. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/README.md +0 -0
  108. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/active.md +0 -0
  109. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/branch-review.md +0 -0
  110. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/changelog.md +0 -0
  111. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/check.md +0 -0
  112. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/doc-review.md +0 -0
  113. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  114. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  115. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/known-issues.md +0 -0
  116. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/live-verify.md +0 -0
  117. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/llm-council.md +0 -0
  118. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/next.md +0 -0
  119. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/plan.md +0 -0
  120. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  121. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/predict.md +0 -0
  122. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/release.md +0 -0
  123. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/scenario.md +0 -0
  124. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/sonar.md +0 -0
  125. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/spike.md +0 -0
  126. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.claude/commands/gflow/status.md +0 -0
  127. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.env.template +0 -0
  128. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.gitattributes +0 -0
  129. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/CODEOWNERS +0 -0
  130. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/FUNDING.yml +0 -0
  131. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  132. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/copilot-instructions.md +0 -0
  133. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/ci.yml +0 -0
  134. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/deps-watch.yml +0 -0
  135. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/external-pr-triage.yml +0 -0
  136. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/governance-advisory.yml +0 -0
  137. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/governance-benchmark.yml +0 -0
  138. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/labels.yml +0 -0
  139. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/main-base-guard.yml +0 -0
  140. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/scorecard.yml +0 -0
  141. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/selector-probe.yml +0 -0
  142. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.github/workflows/star-history-watch.yml +0 -0
  143. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.gitleaks.toml +0 -0
  144. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.pre-commit-config.yaml +0 -0
  145. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/.secrets.baseline +0 -0
  146. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/CLAUDE.md +0 -0
  147. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/CONFIGURATION.md +0 -0
  148. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/CONTRIBUTING.md +0 -0
  149. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/DISCLAIMER.md +0 -0
  150. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/LICENSE +0 -0
  151. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/PLAN.md +0 -0
  152. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/README.md +0 -0
  153. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/RELEASE.md +0 -0
  154. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/ROADMAP.md +0 -0
  155. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/conftest.py +0 -0
  156. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/deploy/logrotate-pr-triage +0 -0
  157. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docker-compose.yml +0 -0
  158. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/ACCOUNT_SAFETY.md +0 -0
  159. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/AGENT_UI_E2E.md +0 -0
  160. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/AGENT_UI_RECON.md +0 -0
  161. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/ARCHITECTURE.md +0 -0
  162. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  163. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/AUTHENTICATION.md +0 -0
  164. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/CONFIGURATION.md +0 -0
  165. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/DATA_LAYER.md +0 -0
  166. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/DEBUGGING.md +0 -0
  167. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/DEMOS.md +0 -0
  168. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/DEVELOPMENT.md +0 -0
  169. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/E2E_TESTING.md +0 -0
  170. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/EXTERNAL_STORAGE.md +0 -0
  171. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  172. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  173. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/INSTRUCTIONS.md +0 -0
  174. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  175. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  176. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  177. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  178. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  179. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  180. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  181. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  182. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  183. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  184. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  185. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  186. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  187. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  188. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  189. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  190. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  191. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  192. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  193. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  194. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  195. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  196. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  197. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  198. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  199. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  200. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  201. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  202. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  203. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  204. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  205. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  206. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  207. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  208. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  209. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  210. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  211. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  212. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  213. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  214. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  215. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  216. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  217. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  218. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  219. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  220. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  221. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  222. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  223. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  224. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  225. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  226. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  227. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  228. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  229. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  230. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  231. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  232. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  233. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  234. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  235. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  236. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  237. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  238. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  239. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  240. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  241. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  242. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  243. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  244. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  245. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  246. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  247. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  248. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  249. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  250. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  251. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  252. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/MCP.md +0 -0
  253. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/MEDIA_LIBRARY.md +0 -0
  254. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/PROMPT_EXPANSION.md +0 -0
  255. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  256. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/SECURITY.md +0 -0
  257. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/TOOLS.md +0 -0
  258. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/USER_GUIDE.md +0 -0
  259. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/assets/demo-split-pf.gif +0 -0
  260. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/assets/example-run.gif +0 -0
  261. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/assets/examples.webp +0 -0
  262. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/medium_tutorial.md +0 -0
  263. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/schemas/movie-handoff.schema.json +0 -0
  264. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/sonar-cleanup-tracker.md +0 -0
  265. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/README.md +0 -0
  266. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  267. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  268. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  269. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  270. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  271. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  272. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  273. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  274. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  275. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  276. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  277. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  278. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
  279. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  280. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  281. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  282. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  283. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  284. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  285. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
  286. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  287. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  288. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  289. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  290. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  291. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  292. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  293. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  294. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  295. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  296. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  297. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/release-signing.md +0 -0
  298. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  299. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  300. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  301. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  302. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  303. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  304. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  305. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  306. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  307. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  308. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  309. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  310. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  311. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  312. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  313. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  314. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  315. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  316. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  317. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  318. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  319. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  320. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  321. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  322. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  323. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  324. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  325. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  326. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  327. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  328. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  329. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  330. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  331. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  332. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  333. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  334. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  335. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  336. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  337. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  338. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  339. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  340. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  341. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  342. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  343. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  344. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  345. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  346. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  347. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  348. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  349. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  350. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  351. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  352. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  353. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  354. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  355. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  356. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  357. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  358. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  359. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  360. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  361. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  362. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  363. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  364. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  365. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  366. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  367. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  368. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  369. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  370. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  371. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  372. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  373. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  374. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  375. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  376. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  377. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  378. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  379. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  380. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  381. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  382. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/README.md +0 -0
  383. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/batch_from_config.py +0 -0
  384. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/multi_prompt_t2i.py +0 -0
  385. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/sample_config.json +0 -0
  386. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/sample_prompts.txt +0 -0
  387. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/single_image_t2i.py +0 -0
  388. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/examples/workflow_chain.py +0 -0
  389. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/index.html +0 -0
  390. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/llms.txt +0 -0
  391. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/README.md +0 -0
  392. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/01_upload_image.json +0 -0
  393. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  394. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  395. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/04_archive_workflow.json +0 -0
  396. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/05_createProject.json +0 -0
  397. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/06_batchGenerateImages.json +0 -0
  398. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  399. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  400. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  401. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  402. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  403. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/12_create_scene.json +0 -0
  404. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  405. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/14_get_scene_workflows.json +0 -0
  406. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  407. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/canary/register_task.ps1 +0 -0
  408. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/canary/run_canary.py +0 -0
  409. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_council_memory.py +0 -0
  410. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_doc_links.py +0 -0
  411. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_materiality.py +0 -0
  412. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_release_artifacts.py +0 -0
  413. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_repo_hygiene.py +0 -0
  414. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_test_count.py +0 -0
  415. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/check_website_docs_pii.py +0 -0
  416. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/ci/generate_website_docs.py +0 -0
  417. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/debug_editor.py +0 -0
  418. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/debug_gen_settings.py +0 -0
  419. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/debug_settings.py +0 -0
  420. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/_recording_client.py +0 -0
  421. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/_spike_common.py +0 -0
  422. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/active_plan.py +0 -0
  423. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  424. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  425. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  426. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  427. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  428. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  429. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  430. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  431. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  432. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_project_listing.py +0 -0
  433. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  434. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  435. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  436. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  437. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/character_create_spike.py +0 -0
  438. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/character_create_spike_v2.py +0 -0
  439. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/dump_character_selectors.js +0 -0
  440. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/README.md +0 -0
  441. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  442. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  443. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  444. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  445. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  446. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  447. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  448. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  449. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  450. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  451. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  452. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/incident_bundle_quality.py +0 -0
  453. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  454. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  455. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  456. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/make_project.py +0 -0
  457. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/materiality_backtest.py +0 -0
  458. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  459. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/measure_locale_probe.py +0 -0
  460. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  461. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/patch_character.py +0 -0
  462. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/skillopt/README.md +0 -0
  463. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/skillopt/harness.py +0 -0
  464. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/skillopt/tasks.json +0 -0
  465. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/sonar-local-scan.sh +0 -0
  466. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  467. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_changelog_capture.py +0 -0
  468. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  469. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  470. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  471. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  472. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  473. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  474. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  475. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  476. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  477. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  478. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  479. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_incident_live.py +0 -0
  480. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  481. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  482. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  483. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  484. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  485. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_locale_poison.py +0 -0
  486. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  487. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  488. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  489. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  490. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  491. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  492. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  493. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  494. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  495. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  496. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  497. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  498. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  499. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  500. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  501. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  502. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_model_inventory.py +0 -0
  503. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  504. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  505. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  506. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  507. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  508. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_patch_entity.py +0 -0
  509. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  510. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  511. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  512. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/verify_language_agnostic.py +0 -0
  513. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  514. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/dev/verify_model_attribution.py +0 -0
  515. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/diag/README.md +0 -0
  516. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/diag/capture_flow_traffic.py +0 -0
  517. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  518. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/diag/memory_profile.py +0 -0
  519. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/diag/recaptcha_mint.py +0 -0
  520. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  521. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  522. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  523. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/probe/run_probe.py +0 -0
  524. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/probe/spike_auth_matrix.py +0 -0
  525. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/record_demo.ps1 +0 -0
  526. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/smoke_image.py +0 -0
  527. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/smoke_video_editor.py +0 -0
  528. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/smoke_worker_style.py +0 -0
  529. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/spike_waf_camoufox.py +0 -0
  530. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/scripts/verify_chrome_auth_viability.py +0 -0
  531. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/README.md +0 -0
  532. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/changelog/SKILL.md +0 -0
  533. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/check/SKILL.md +0 -0
  534. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/doc-review/SKILL.md +0 -0
  535. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/gflow-cli/SKILL.md +0 -0
  536. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/issue-assessment/SKILL.md +0 -0
  537. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/issue-resolve/SKILL.md +0 -0
  538. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/known-issues/SKILL.md +0 -0
  539. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/live-verify/SKILL.md +0 -0
  540. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/llm-council/SKILL.md +0 -0
  541. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/plan/SKILL.md +0 -0
  542. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/predict/SKILL.md +0 -0
  543. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/release/SKILL.md +0 -0
  544. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/scenario/SKILL.md +0 -0
  545. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/sonar/SKILL.md +0 -0
  546. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/status/SKILL.md +0 -0
  547. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/video-production/clip_qa.py +0 -0
  548. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/video-production/composition.md +0 -0
  549. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/video-production/consistency.md +0 -0
  550. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/video-production/failure-modes.md +0 -0
  551. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/skills/video-production/tasks.json +0 -0
  552. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/sonar-project.properties +0 -0
  553. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/__main__.py +0 -0
  554. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/__init__.py +0 -0
  555. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/_engine.py +0 -0
  556. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/_retry.py +0 -0
  557. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  558. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/character.py +0 -0
  559. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/credits.py +0 -0
  560. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/dto.py +0 -0
  561. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/extend_chain.py +0 -0
  562. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/image.py +0 -0
  563. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/image_upscale.py +0 -0
  564. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/recaptcha.py +0 -0
  565. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/routes.py +0 -0
  566. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/scene.py +0 -0
  567. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  568. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/_common.py +0 -0
  569. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  570. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/base.py +0 -0
  571. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  572. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  573. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  574. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  575. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  576. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  577. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  578. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  579. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  580. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  581. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  582. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  583. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/video.py +0 -0
  584. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/api/video_extend.py +0 -0
  585. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/__init__.py +0 -0
  586. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/base.py +0 -0
  587. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/cookies.py +0 -0
  588. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/factory.py +0 -0
  589. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  590. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  591. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/strategies.py +0 -0
  592. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/verification.py +0 -0
  593. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/browser_manager.py +0 -0
  594. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/chain.py +0 -0
  595. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/chain_manifest.py +0 -0
  596. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli.py +0 -0
  597. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_credits.py +0 -0
  598. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_data.py +0 -0
  599. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_doctor.py +0 -0
  600. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_image.py +0 -0
  601. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_instructions.py +0 -0
  602. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_models.py +0 -0
  603. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_movie.py +0 -0
  604. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_project.py +0 -0
  605. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_run.py +0 -0
  606. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_scene.py +0 -0
  607. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_tools.py +0 -0
  608. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_update.py +0 -0
  609. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_video.py +0 -0
  610. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/composition.py +0 -0
  611. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/config.py +0 -0
  612. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/__init__.py +0 -0
  613. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/chain_repo.py +0 -0
  614. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  615. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  616. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  617. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  618. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  619. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  620. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  621. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  622. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  623. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  624. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/models.py +0 -0
  625. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/queries.py +0 -0
  626. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/recorder.py +0 -0
  627. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/redaction.py +0 -0
  628. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/repository.py +0 -0
  629. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/data/store.py +0 -0
  630. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/exceptions.py +0 -0
  631. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/file_integrity.py +0 -0
  632. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  633. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  634. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  635. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  636. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/image_batch.py +0 -0
  637. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/json_output.py +0 -0
  638. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/__init__.py +0 -0
  639. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/prompts.py +0 -0
  640. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/resources.py +0 -0
  641. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/server.py +0 -0
  642. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/setup.py +0 -0
  643. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  644. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/tools.py +0 -0
  645. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/media.py +0 -0
  646. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/movie_manifest.py +0 -0
  647. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/observability.py +0 -0
  648. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/paths.py +0 -0
  649. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/profile_lease.py +0 -0
  650. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/profile_store.py +0 -0
  651. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/redaction.py +0 -0
  652. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/services/__init__.py +0 -0
  653. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  654. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/services/character_create.py +0 -0
  655. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/services/credits.py +0 -0
  656. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/services/doctor.py +0 -0
  657. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/services/mentions.py +0 -0
  658. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/storage.py +0 -0
  659. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/__init__.py +0 -0
  660. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/banned.py +0 -0
  661. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  662. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  663. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  664. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  665. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/expander.py +0 -0
  666. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/invocation.py +0 -0
  667. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/loader.py +0 -0
  668. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/registry.py +0 -0
  669. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/runtime.py +0 -0
  670. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/spec.py +0 -0
  671. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/ui/app.py +0 -0
  672. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/ui/server.py +0 -0
  673. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/update_check.py +0 -0
  674. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/winsec.py +0 -0
  675. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/worker/codec.py +0 -0
  676. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/worker/daemon.py +0 -0
  677. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/src/gflow_cli/worker/queue.py +0 -0
  678. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tasks/lessons.md +0 -0
  679. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/test_assets/sample_batch.json +0 -0
  680. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/test_assets/sample_batch.tsv +0 -0
  681. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/test_assets/sample_batch_invalid.tsv +0 -0
  682. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/__init__.py +0 -0
  683. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/__init__.py +0 -0
  684. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/fixtures/character_gen_response.json +0 -0
  685. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  686. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  687. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  688. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  689. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_bearer_redaction.py +0 -0
  690. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_character.py +0 -0
  691. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_character_readback_fallback.py +0 -0
  692. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client.py +0 -0
  693. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_character.py +0 -0
  694. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_delete_characters.py +0 -0
  695. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_errors.py +0 -0
  696. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_extend.py +0 -0
  697. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_generate_character.py +0 -0
  698. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_image.py +0 -0
  699. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_incidents.py +0 -0
  700. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_launch_kwargs.py +0 -0
  701. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_locale_cache.py +0 -0
  702. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_migrated_mint.py +0 -0
  703. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_patch_entity.py +0 -0
  704. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_scene.py +0 -0
  705. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_client_upscale.py +0 -0
  706. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_concurrency.py +0 -0
  707. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_credits.py +0 -0
  708. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_credits_http.py +0 -0
  709. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_dto.py +0 -0
  710. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_engine.py +0 -0
  711. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_extend_chain.py +0 -0
  712. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_image.py +0 -0
  713. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_image_dto.py +0 -0
  714. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_image_upscale.py +0 -0
  715. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  716. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_recaptcha.py +0 -0
  717. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_retry.py +0 -0
  718. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_routes.py +0 -0
  719. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_routes_character.py +0 -0
  720. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_routes_locale.py +0 -0
  721. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_routes_scene.py +0 -0
  722. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_sapisidhash_helper.py +0 -0
  723. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_scene_models.py +0 -0
  724. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_video.py +0 -0
  725. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_video_extend.py +0 -0
  726. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_video_request.py +0 -0
  727. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/test_video_status_poll.py +0 -0
  728. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/__init__.py +0 -0
  729. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/conftest.py +0 -0
  730. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/__init__.py +0 -0
  731. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  732. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_classic.py +0 -0
  733. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_factory.py +0 -0
  734. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  735. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  736. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_base.py +0 -0
  737. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_batchexecute.py +0 -0
  738. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_bearer.py +0 -0
  739. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_character_model_picker.py +0 -0
  740. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_common.py +0 -0
  741. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  742. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_factory.py +0 -0
  743. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_fingerprint.py +0 -0
  744. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_locale_navigation.py +0 -0
  745. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  746. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_route.py +0 -0
  747. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_mode_control.py +0 -0
  748. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  749. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_navigation_settled.py +0 -0
  750. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  751. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_policy_400.py +0 -0
  752. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_sapisidhash.py +0 -0
  753. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  754. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_transport_timeout.py +0 -0
  755. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  756. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  757. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  758. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  759. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/auth/strategies/test_factory.py +0 -0
  760. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/auth/strategies/test_strategies.py +0 -0
  761. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/auth/test_cookies.py +0 -0
  762. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/auth/test_real_chrome.py +0 -0
  763. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/auth/test_verification.py +0 -0
  764. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/auth/test_windows_acl.py +0 -0
  765. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/__init__.py +0 -0
  766. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_auth_status.py +0 -0
  767. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_auth_list.py +0 -0
  768. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_character.py +0 -0
  769. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_character_create.py +0 -0
  770. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_credits.py +0 -0
  771. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data.py +0 -0
  772. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data_errors.py +0 -0
  773. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  774. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data_sync.py +0 -0
  775. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_doctor.py +0 -0
  776. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image.py +0 -0
  777. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  778. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  779. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_upscale.py +0 -0
  780. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  781. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_instructions.py +0 -0
  782. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_models.py +0 -0
  783. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_movie.py +0 -0
  784. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_run.py +0 -0
  785. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_scene.py +0 -0
  786. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_tools.py +0 -0
  787. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_video.py +0 -0
  788. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_video_chain.py +0 -0
  789. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_cli_video_extend.py +0 -0
  790. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_error_handling.py +0 -0
  791. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_failure_funnel.py +0 -0
  792. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_helpers.py +0 -0
  793. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_incident_output.py +0 -0
  794. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_movie_manifest.py +0 -0
  795. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  796. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_predictable_output.py +0 -0
  797. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  798. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_settings_validation.py +0 -0
  799. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  800. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/composition/test_character.py +0 -0
  801. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/composition/test_compose_prompt.py +0 -0
  802. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/composition/test_handoff.py +0 -0
  803. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/composition/test_style_variants.py +0 -0
  804. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/composition/test_style_variants_e2e.py +0 -0
  805. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/conftest.py +0 -0
  806. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/__init__.py +0 -0
  807. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_chain_repo.py +0 -0
  808. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_failure_recording.py +0 -0
  809. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_find_incomplete_character.py +0 -0
  810. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_models.py +0 -0
  811. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_null_columns_stay_null.py +0 -0
  812. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_packaging.py +0 -0
  813. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_recorder.py +0 -0
  814. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_recorder_character.py +0 -0
  815. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_redaction.py +0 -0
  816. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_repository.py +0 -0
  817. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_scene_persistence.py +0 -0
  818. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_settings_and_errors.py +0 -0
  819. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_store.py +0 -0
  820. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/data/test_store_migrations.py +0 -0
  821. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/dev/test_recording_client.py +0 -0
  822. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/__init__.py +0 -0
  823. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  824. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  825. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  826. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  827. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_chain_e2e.py +0 -0
  828. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  829. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  830. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_credits_e2e.py +0 -0
  831. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  832. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_daemon_e2e.py +0 -0
  833. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  834. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  835. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  836. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  837. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  838. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  839. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  840. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  841. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  842. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_json_output_e2e.py +0 -0
  843. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  844. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  845. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_migrated_host_e2e.py +0 -0
  846. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  847. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  848. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  849. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_scene_compose_live.py +0 -0
  850. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  851. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_tools_e2e.py +0 -0
  852. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_transports_e2e.py +0 -0
  853. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  854. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  855. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  856. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/__init__.py +0 -0
  857. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/asset_tagging.feature +0 -0
  858. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/auth.feature +0 -0
  859. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/auth_login.feature +0 -0
  860. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/character_create.feature +0 -0
  861. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/character_read.feature +0 -0
  862. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/conftest.py +0 -0
  863. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/credits.feature +0 -0
  864. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/duration_tab_drift.feature +0 -0
  865. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/entity_provenance.feature +0 -0
  866. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/image.feature +0 -0
  867. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/image_batch_references.feature +0 -0
  868. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/image_upscale.feature +0 -0
  869. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/incident_diagnostics.feature +0 -0
  870. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/instructions.feature +0 -0
  871. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/latched_locale_recovery.feature +0 -0
  872. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/locale_picker_include.feature +0 -0
  873. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/mcp_tasks.feature +0 -0
  874. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/media_picker_tiers.feature +0 -0
  875. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/migrated_driver.feature +0 -0
  876. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/migrated_host_gate.feature +0 -0
  877. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/migrated_i2v.feature +0 -0
  878. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/output_hardening.feature +0 -0
  879. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_asset_tagging_steps.py +0 -0
  880. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_auth_login_steps.py +0 -0
  881. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_auth_steps.py +0 -0
  882. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_character_create_steps.py +0 -0
  883. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_character_read_steps.py +0 -0
  884. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_credits_steps.py +0 -0
  885. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_image_steps.py +0 -0
  886. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_image_upscale_steps.py +0 -0
  887. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  888. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_instructions_steps.py +0 -0
  889. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  890. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  891. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  892. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_migrated_driver_steps.py +0 -0
  893. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  894. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_migrated_i2v_steps.py +0 -0
  895. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_output_hardening_steps.py +0 -0
  896. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_step_collision_guard.py +0 -0
  897. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  898. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/test_video_chain_steps.py +0 -0
  899. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/video_agent_ui.feature +0 -0
  900. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/features/video_chain.feature +0 -0
  901. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/__init__.py +0 -0
  902. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/changelog_modal_page.html +0 -0
  903. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/doctor_env.py +0 -0
  904. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/flow_model_inventory.json +0 -0
  905. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  906. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/listing_payload.py +0 -0
  907. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/fixtures/seeded_catalog.py +0 -0
  908. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/flow_selectors/__init__.py +0 -0
  909. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_grading.py +0 -0
  910. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_model.py +0 -0
  911. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_model_governance.py +0 -0
  912. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_registry.py +0 -0
  913. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_report.py +0 -0
  914. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/image_batch/__init__.py +0 -0
  915. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/image_batch/test_image_manifest.py +0 -0
  916. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/image_batch/test_jitter_config.py +0 -0
  917. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/image_batch/test_observability_events.py +0 -0
  918. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/integration/__init__.py +0 -0
  919. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/integration/conftest.py +0 -0
  920. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/integration/constants.py +0 -0
  921. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/integration/test_expander_gateway.py +0 -0
  922. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/integration/test_storage_gcs.py +0 -0
  923. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/integration/test_storage_s3.py +0 -0
  924. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/__init__.py +0 -0
  925. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/conftest.py +0 -0
  926. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_auth_status_tool.py +0 -0
  927. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_character_tools.py +0 -0
  928. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_cli_parity.py +0 -0
  929. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_credits_tool.py +0 -0
  930. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_error_funnel.py +0 -0
  931. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_http_transport.py +0 -0
  932. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_known_issues_resource.py +0 -0
  933. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  934. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_no_spend.py +0 -0
  935. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  936. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  937. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_resources.py +0 -0
  938. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_server.py +0 -0
  939. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_setup.py +0 -0
  940. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_stdio_transport.py +0 -0
  941. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_tasks_extension.py +0 -0
  942. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_tools_helpers.py +0 -0
  943. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_tools_instructions.py +0 -0
  944. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/mcp/test_tools_wired.py +0 -0
  945. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  946. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_canary_classify.py +0 -0
  947. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_canary_reexec.py +0 -0
  948. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  949. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  950. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_check_council_memory.py +0 -0
  951. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_check_materiality.py +0 -0
  952. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  953. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  954. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_check_test_count.py +0 -0
  955. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  956. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_codex_plugin.py +0 -0
  957. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_extract_har_summary.py +0 -0
  958. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_generate_website_docs.py +0 -0
  959. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  960. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_materiality_backtest.py +0 -0
  961. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  962. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/scripts/test_workflow_hardening.py +0 -0
  963. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/__init__.py +0 -0
  964. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_catalog_sync.py +0 -0
  965. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_character_create_redaction.py +0 -0
  966. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_character_create_saga.py +0 -0
  967. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  968. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_credits.py +0 -0
  969. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_doctor.py +0 -0
  970. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_media_attribution.py +0 -0
  971. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_mentions_observability.py +0 -0
  972. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_mentions_parse.py +0 -0
  973. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_mentions_resolve.py +0 -0
  974. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/services/test_resolve_and_apply.py +0 -0
  975. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/smoke/__init__.py +0 -0
  976. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  977. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/smoke/test_real_flow.py +0 -0
  978. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_auth.py +0 -0
  979. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_browser_manager.py +0 -0
  980. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_chain.py +0 -0
  981. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_chain_manifest.py +0 -0
  982. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_cli_data.py +0 -0
  983. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_cli_project.py +0 -0
  984. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_cli_update.py +0 -0
  985. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_config.py +0 -0
  986. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_conftest_isolation.py +0 -0
  987. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_data_queries.py +0 -0
  988. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_diagnostics_bundle.py +0 -0
  989. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_diagnostics_events.py +0 -0
  990. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_diagnostics_journal.py +0 -0
  991. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_diagnostics_recorder.py +0 -0
  992. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_diagnostics_retention.py +0 -0
  993. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_diagnostics_sanitize.py +0 -0
  994. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_duration_tab_drift.py +0 -0
  995. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_entity_provenance.py +0 -0
  996. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_errors.py +0 -0
  997. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_errors_classification.py +0 -0
  998. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_image_batch_references.py +0 -0
  999. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_incident_generation_requests.py +0 -0
  1000. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_json_output.py +0 -0
  1001. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_marker_registry.py +0 -0
  1002. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_media.py +0 -0
  1003. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_observability.py +0 -0
  1004. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1005. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_paths.py +0 -0
  1006. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_playwright_pin.py +0 -0
  1007. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_profile_lease.py +0 -0
  1008. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_profile_lease_subprocess.py +0 -0
  1009. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_profile_store.py +0 -0
  1010. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_profile_store_locale.py +0 -0
  1011. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_project_list_urls.py +0 -0
  1012. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_self_documenting_errors.py +0 -0
  1013. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_smoke.py +0 -0
  1014. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/test_update_check.py +0 -0
  1015. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/__init__.py +0 -0
  1016. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_banned.py +0 -0
  1017. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_expander.py +0 -0
  1018. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_invocation.py +0 -0
  1019. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_loader.py +0 -0
  1020. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_registry.py +0 -0
  1021. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_runtime.py +0 -0
  1022. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/tools/test_spec.py +0 -0
  1023. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/ui/test_app.py +0 -0
  1024. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/worker/test_codec.py +0 -0
  1025. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/worker/test_daemon.py +0 -0
  1026. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1027. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/worker/test_queue.py +0 -0
  1028. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1029. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1030. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1031. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/ARCHITECTURE.md +0 -0
  1032. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/AUTHENTICATION.md +0 -0
  1033. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/CONFIGURATION.md +0 -0
  1034. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/DATA_LAYER.md +0 -0
  1035. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/DEBUGGING.md +0 -0
  1036. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/DEVELOPMENT.md +0 -0
  1037. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/E2E_TESTING.md +0 -0
  1038. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1039. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/INSTRUCTIONS.md +0 -0
  1040. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/MCP.md +0 -0
  1041. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1042. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1043. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/SECURITY.md +0 -0
  1044. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/TOOLS.md +0 -0
  1045. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/USER_GUIDE.md +0 -0
  1046. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/agents.md +0 -0
  1047. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/index.md +0 -0
  1048. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/onboarding-mockup.html +0 -0
  1049. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/onboarding.md +0 -0
  1050. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/docs/stylesheets/extra.css +0 -0
  1051. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/mkdocs.yml +0 -0
  1052. {gflow_cli-0.70.0 → gflow_cli-0.71.0}/website/requirements.in +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.70.0",
3
+ "version": "0.71.0",
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/
@@ -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,261 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.71.0] — 2026-09-07
11
+
12
+ ### Fixed
13
+
14
+ - **`--format-prompt` could submit an EMPTY prompt and log it as success.** The
15
+ observed-rewrite gate compared `abs(len(current) - len(typed)) >= 16`, and `abs` accepts
16
+ change in either direction. Flow **clears** the composer before repopulating it, so a poll
17
+ landing in that window read `""`, `abs(0 - 19) = 19` passed the gate, and `_send_prompt`
18
+ called `_click_submit` on the very next line — submitting nothing, on a path that spends
19
+ image quota, while `ui_automation.prompt_formatted` logged `prompt_len_after=0`
20
+ (`prompt_hash=e3b0c442`, the SHA-256 of the empty string).
21
+
22
+ Silent, billed, and self-certifying: a user hitting it would see a charge, an empty
23
+ result, and a log line saying it worked. It is also the exact defect the same release
24
+ fixes — a success signal that fires on the **absence** of the thing it measures — rebuilt
25
+ inside its own fix.
26
+
27
+ The gate now requires **growth** (`len(current) >= len(typed) + MIN_DELTA`) rather than an
28
+ absolute delta, plus a settle check: two reads one poll-interval apart must agree, because
29
+ the single discrete swap measured live was sampled at 250 ms and a partial write between
30
+ samples was never ruled out. Found by an adversarial review of the fix, not by the fix's
31
+ own tests. ([#745](https://github.com/ffroliva/gflow-cli/issues/745))
32
+
33
+ - **The entity guard recorded a cause that was wrong, and it is retracted.** The
34
+ `reference_entities` refusal in `_unported_form` said the submit *"never produces a
35
+ YhhmEf/eb1hJf/MZZa6b reply"*, cause unknown, undiagnosable without fixing
36
+ [#722](https://github.com/ffroliva/gflow-cli/issues/722). Reading the wire live shows
37
+ otherwise: `MZZa6b` **does** reply, with a null payload and an error slot, and the generation
38
+ is **accepted and queued** — Flow derives an `abra_r2v_8s` model key and renders it. What
39
+ fails is the observer: a null payload never names a media id, so `submit_and_observe`'s
40
+ `submitted` future never resolves and `SUBMIT_REPLY_BUDGET_S` (60 s) expires. That budget's
41
+ own comment records its calibration — *"the submit reply arrived 4.0–4.6 s after the click"* —
42
+ against an idle queue, while Flow allows **five concurrent generations** and throttles
43
+ per-minute throughput after heavy daily use. The run exits 9 `TransportTimeoutError` while the
44
+ video is still rendering. The guard **stays** (a timeout reported on a generation that is
45
+ actually running is worse for the user than an explicit refusal) but its reason is now
46
+ accurate and the fix is named beside it: on a null submit payload, fall through to the
47
+ `jwpduf`/`as29s` status poll. Two earlier comments on that guard, including one added in this
48
+ release, asserted the wrong cause.
49
+ ([#723](https://github.com/ffroliva/gflow-cli/issues/723),
50
+ [#742](https://github.com/ffroliva/gflow-cli/pull/742))
51
+ - **`docs/CHARACTER.md` and `docs/CHARACTER_RECON.md` disagreed on the voice wire case, and one
52
+ was wrong.** CHARACTER.md called the Capitalized UI name canonical while flagging the question
53
+ UNVERIFIED; CHARACTER_RECON.md recorded `presetVoiceId: "gacrux"` and stated the preset id is
54
+ the lowercased name. A live run settles it: `sent='Charon' stored='Charon' identical=True`.
55
+ Both documents now also record that `personalityNotes` is **Agent-scoped** — Flow's own editor
56
+ says *"The Flow agent can use this information to help craft scenes with your character"* — so
57
+ it is not a control on the audio engine and should not be expected to steer a `t2v`/`r2v`
58
+ performance. ([#736](https://github.com/ffroliva/gflow-cli/pull/736))
59
+ - **The "+ New project" CTA is found by structure again, not by English.** Its Tier-1 anchors
60
+ all targeted the `add_2` ligature. The migrated `flow.google.com` gallery renders **`add`**
61
+ under a `<mat-icon>` and renders `add_2` nowhere on that surface, so every structural entry
62
+ missed and the CTA was reached only by `button:has-text('New project')` — the localised-text
63
+ anti-pattern Tier 1 exists to avoid, and one that fails outright on a non-English migrated
64
+ profile. Tier 1 now leads with a class-only `add` anchor covering both carriers; measured on
65
+ the live gallery (control: 47 ligature nodes) it matches 1 where every previous entry
66
+ matched 0.
67
+
68
+ Also removed: `button:text-matches('^\+\s+\S+$', 'i')`. It is not a valid Playwright
69
+ selector and **raised on every evaluation** — observed twice against the live gallery — with
70
+ `except Exception: continue` swallowing it, so it had never matched anything on any host
71
+ while costing a round trip per attempt.
72
+
73
+ **This reverts the guard added moments earlier in the same release.** That guard raised
74
+ `FlowHostMigratedError` claiming the migrated host "renders no '+ New project' control gflow
75
+ can drive". It was an unproven negative, generalised from a sweep of two other surfaces to a
76
+ third that was never probed, and a live run disproved it in one click by creating a project
77
+ there. On a non-EN migrated profile it would have told the user that host has no such
78
+ control — false, and a dead end — when the real fix was to anchor on `add`.
79
+ ([#730](https://github.com/ffroliva/gflow-cli/issues/730))
80
+
81
+ - **~~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.
82
+ `NEW_PROJECT_SELECTORS` anchors on the `add_2` ligature. The migrated `flow.google.com`
83
+ frontend renders **`add`** and renders `add_2` **nowhere** — composer `add=1/add_2=0`,
84
+ editor `add=2/add_2=0`, measured with per-surface controls. That is a ligature *name*
85
+ drift, not the carrier split, so a `mat-icon` twin would not have helped. Reaching the
86
+ sweep there produced `Could not find 'New project' CTA on Flow gallery`, whose remediation
87
+ is "check for a newer release, then file a frontend bug" — unfixable by the reader, and
88
+ pointing at the wrong culprit, exactly as a credit shortfall once reported as frontend
89
+ drift. It now raises `FlowHostMigratedError` naming the host and the way forward
90
+ (`--project`, which every migrated path already requires). On labs a missing CTA is still
91
+ reported as drift, because there it genuinely is.
92
+
93
+ No production path reaches this today — `migrated_can_serve` refuses without a
94
+ `project_id`, `ensure_editor` navigates straight to the project URL, and `character create`
95
+ requires `--project`. The `add_2` drift is therefore harmless **because of those guards**,
96
+ which is precisely what a future port relaxes; the measured fact now sits beside the
97
+ constant so the next person to un-guard a path meets it.
98
+ ([#730](https://github.com/ffroliva/gflow-cli/issues/730),
99
+ [spike](docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md))
100
+
101
+ - **Flow's own diagnostics were blind on the migrated host, and two selectors were broken behind
102
+ it.** `gflow`'s incident-bundle DOM dump queried `i.google-symbols, span.google-symbols`, and
103
+ `diagnostics.py`'s `STRUCTURAL_DOM_JS` queried `i.google-symbols` — so on `flow.google.com`,
104
+ where every Material Symbols ligature rides a `<mat-icon>`, **both reported zero ligatures**.
105
+ The instrument used to diagnose selector drift was blind to the host the drift lives on. That
106
+ is why [#727](https://github.com/ffroliva/gflow-cli/issues/727) and
107
+ [#731](https://github.com/ffroliva/gflow-cli/issues/731) stayed invisible, and why an incident
108
+ bundle from a migrated user named no ligatures at all. Both queries are now class-only.
109
+
110
+ Two selectors were broken behind that blindness. `SUBMIT_BUTTON_SELECTORS` was **working by
111
+ luck**: its two tag-qualified entries matched nothing on the migrated host and the submit only
112
+ landed because a third `has-text` entry matches the `<mat-icon>`'s *text* — observed live as
113
+ `prompt_submitted via="button:has-text('arrow_forward')"`, after paying two misses per submit.
114
+ `IMAGE_MODEL_PICKER_TRIGGER` had neither twin nor fallback, so its miss was total and silent:
115
+ the picker is best-effort, so generation simply proceeded on whatever model tier the editor
116
+ opened at. Both now anchor on the `google-symbols` **class**, which sits on the labs `<i>` and
117
+ the migrated `<mat-icon>` alike — verified against a real CSS engine, offline, in
118
+ `tests/api/transports/test_ligature_carrier.py`.
119
+
120
+ `SUBMIT_BUTTON_SELECTORS` also moves from `:text` to **`:text-is`**. `:text` is a substring
121
+ match and accepts `arrow_forward_ios`, a real Material Symbol; the `<i>` qualifier had been
122
+ containing that, and dropping it for the class-only carrier made the over-match reachable on
123
+ the submit path. The two-carrier fixture caught it as `matched 3 of 2` before it ran live.
124
+ ([#730](https://github.com/ffroliva/gflow-cli/issues/730),
125
+ [spike](docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md))
126
+
127
+ - **`character create --format-prompt` works again — both halves of it.** The flag had two
128
+ independent faults, and fixing only the first would have left it just as useless. On the
129
+ migrated `flow.google.com` host
130
+ all three entries of `PROMPT_FORMAT_SELECTORS` missed, so the flag degraded to a no-op:
131
+ `ui_automation.format_button_not_found`, exit **0**, prompt submitted as
132
+ typed, and the image quota spent on a run whose requested prompt-engineering step never
133
+ happened. The button was never absent. Measured on 2026-09-07 with
134
+ `scripts/dev/spike_character_prompt_format.py` (`$0` — navigation, one free `createEntity`,
135
+ DOM reads and typing; two control anchors, so a flat zero could not be mistaken for
136
+ absence): it renders as
137
+ `<flow-format-prompt-button>`, and the Angular frontend carries the unchanged
138
+ `personal_recommendations` ligature in **`<mat-icon>`** rather than `<i>` — the same carrier
139
+ split fixed for `add_2` / `arrow_drop_down` / `accessibility_new` in #703, which this constant
140
+ was not swept with. The EN `span:text-is('Format')` fallback missed too and is **deleted**
141
+ rather than translated: the button's own `aria-label` reads `"Formatar"` on a pt account, and
142
+ display labels are banned as anchors. The cascade now leads with the custom element and covers
143
+ both carriers. ([#727](https://github.com/ffroliva/gflow-cli/issues/727),
144
+ [spike](docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md))
145
+
146
+ - **`video t2v --reference-entity` no longer bills a clip that ignores the entity.** On the
147
+ migrated `flow.google.com` host the "character references are not ported" refusal lived inside
148
+ the r2v branch of the routing gate, so a t2v request returned from that gate before its
149
+ `reference_entities` were ever inspected — and nothing downstream attaches one there
150
+ (`attach_start_frame` is i2v-only, `attach_references` and the chip verification are r2v-only).
151
+ The run was submitted and **billed**, returning a plausible clip with an unbound face. That is
152
+ strictly worse than the exit 36 it was meant to give: a refusal is free and honest. The
153
+ sibling gate `migrated_can_serve` did refuse, but it only feeds `prefer_migrated`, and an
154
+ account Flow has already moved is routed by its URL without consulting it — so the refusal was
155
+ unreachable for exactly the accounts that needed it. The check is now mode-independent and
156
+ ahead of every early return. ([#716](https://github.com/ffroliva/gflow-cli/issues/716))
157
+ - **A credit shortfall is no longer diagnosed as a moved frontend.** On the migrated
158
+ `flow.google.com` host, an account whose balance is short **for the model it asked for**
159
+ produced `UiSelectorDriftError` (exit 23) — *"A Flow editor UI element could not be
160
+ located — Google may have updated their frontend. Check for a newer gflow-cli release,
161
+ then file a bug"*. Flow does not **disable** the submit control, it **replaces** it:
162
+ `arrow_forward` disappears and a `prompt-warning-button` carrying
163
+ `aria-label='Insufficient credits warning'` takes its place, so the anchor's absence
164
+ tracks the credit state, not the frontend. Measured by A/B on 2026-09-07 —
165
+ `scripts/dev/spike_migrated_submit_anchor.py`, same probe and same code ~60 s apart,
166
+ two accounts rendering the mirror image of each other. The wallet was **not** empty:
167
+ it held **50** credits and the run asked for `--model veo-quality`, which costs **100**.
168
+ That distinction is the actionable half — "you have no credits" is a dead end for
169
+ someone holding 50, while "short for this model" has a remedy: pick a cheaper tier
170
+ (`veo-lite` is 10). Every path that gives up on the submit control now checks for the
171
+ warning before naming a culprit, and reports the new `InsufficientCreditsError`
172
+ (**exit 37**) instead. Genuine drift — a missing anchor with no warning beside it —
173
+ still reports 23. Beyond the wrong message, the old behaviour manufactured
174
+ frontend-drift bug reports that no code change could ever fix.
175
+
176
+ ### Changed
177
+
178
+ - **`--format-prompt` now waits for the rewrite, and `ui_automation.prompt_formatted` means it
179
+ happened.** This is the second half of the #727 fix and the half that made the flag useful.
180
+ Flow rewrites **server-side** — a `batchexecute` round trip reaching the composer at ~5.4s
181
+ (measured, `denon82`) — while the old code waited `_jitter_ms(500)`, logged
182
+ `prompt_formatted` and returned; `_send_prompt` submits on the very next line. So the flag
183
+ shipped the prompt the user typed and discarded the rewrite on **every** run, with a success
184
+ event in the log and exit 0.
185
+
186
+ **The defect was never the duration. It was reporting a success we had not observed** — the
187
+ absence of a completion inside a window we chose, recorded as a completion. Same class as a
188
+ 20s selector timeout read as "the feature is absent" and a bundle captured after teardown
189
+ read as "the DOM was gone". This one was the worst of the three because it failed toward
190
+ **success**: a premature green looks exactly like the feature working, so nobody investigates
191
+ a pass.
192
+
193
+ `format_character_prompt` now polls the bound composer until its text actually changes, and
194
+ returns `True` only then. The gate is the DOM, not the wire — the `batchexecute` response
195
+ arrives **4.2s before** the text settles, so awaiting it would reproduce the same early
196
+ submit. Comparing against the string gflow inserted is locale-invariant by construction, and
197
+ a **length delta** rather than `!=` keeps Slate's whitespace normalisation from re-reporting
198
+ the same false success. Telemetry carries lengths and a stable hash, never the prompt text:
199
+ Flow *elaborates* a terse description into a detailed physical one, so the rewrite is more
200
+ PII-dense than the input.
201
+
202
+ New events: `format_button_clicked` (the old semantics), `format_not_observed` (clicked, no
203
+ rewrite inside the budget — it does not claim Flow failed, since an unchanged box also covers
204
+ Flow declining or judging the prompt already formatted).
205
+
206
+ **Two user-visible consequences.** A create with `--format-prompt` takes a few seconds longer
207
+ for the rewrite itself, and — because the reshaped prompt is longer and more detailed — the
208
+ generation is materially slower: **406s vs a 210s control** on the same account and prompt,
209
+ live-verified 2026-09-07.
210
+ ([#727](https://github.com/ffroliva/gflow-cli/issues/727),
211
+ [spike](docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md))
212
+
213
+ - **Retracted a false "measured" claim about the migrated composer.** A code comment asserted, as
214
+ "measured, not assumed", that the migrated project composer "has no image-generation mode".
215
+ Falsified live on 2026-09-07: its settings overlay opens to six radiogroups / sixteen radios and
216
+ the first is `[imageImage, videocamVideo]`, present and hit-testable, with the VIDEO option
217
+ carrying `aria-checked`. This reproduced an enumeration already committed on 2026-09-04,
218
+ exactly, on a different account. That does **not** establish that `image` works there — nothing
219
+ was clicked on the mode axis and nothing was submitted — only that the claim it cannot is
220
+ unfounded. Stating it more strongly would repeat the defect being retracted. The guard stays
221
+ until the port lands, but it no longer tells anyone the host cannot do this. ([#692](https://github.com/ffroliva/gflow-cli/issues/692),
222
+ [spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md))
223
+ - **A spike that cannot reach its surface now fails instead of concluding.**
224
+ `spike_migrated_image_capability.py` opened the settings overlay best-effort and swallowed the
225
+ exception, so it printed "the migrated composer looks VIDEO-ONLY" even when it had never opened
226
+ the panel — and that sentence became the retracted claim above. It now raises
227
+ `SpikeUnreachedError` and exits 3 with "This is a failed measurement, NOT evidence of absence".
228
+ Two features have now been declared absent by a probe that failed silently; the first was
229
+ `character create`, killed by a single 20 s selector timeout.
230
+
231
+ ### Added
232
+
233
+ - **`gflow character create --voice` is now verified end to end.**
234
+ `tests/e2e/test_character_create_e2e.py::test_character_create_attaches_voice_and_personality`
235
+ drives a live create then reads the character back from Flow. Until it existed, a repo-wide
236
+ grep for `--voice` across `tests/e2e/` matched **nothing**: every voice test was a unit test
237
+ of the hardcoded `VOICES` constant, and the one that looked live parsed a fixture. A voice
238
+ that silently failed to attach was invisible to the whole suite while the command exited 0.
239
+ Personality is asserted hard, unlike the sibling UTF-8 test which guards it as
240
+ `if shown_personality:` and passes vacuously when the field is absent.
241
+ ([#736](https://github.com/ffroliva/gflow-cli/pull/736))
242
+ - `scripts/dev/spike_entity_submit_rpcs.py` — attaches a character, submits, and logs **every**
243
+ `batchexecute` rpcid rather than only the three in `SUBMIT_RPCS`, plus the submit request's
244
+ model key. `scripts/dev/spike_project_media_status.py` — reads a project's generation state
245
+ read-only, `$0`, submitting nothing.
246
+ ([#741](https://github.com/ffroliva/gflow-cli/issues/741))
247
+ - **`video-production` skill § 4b-bis — the whole recipe for a cast with VOICES.** A character
248
+ entity is the only thing that carries a voice; a plate carries face and wardrobe as pixels and
249
+ the engine invents a new voice per clip. Measured across three plate-bound takes of one
250
+ character: **88 / 103 / 118 Hz**, three different actors, against a **4.3 Hz** engine noise
251
+ floor on an identical prompt repeated three times. The skill said to prefer rung 1 and never
252
+ said what skipping it costs, so a production could reach a finished cut before anyone noticed
253
+ the cast had no voices.
254
+ - `scripts/dev/spike_host_lane.py` — names a profile's lane (labs / migrated / **signed out**) in
255
+ one $0 run. It reports `SIGNED_OUT` as a distinct verdict and refuses to name a lane there,
256
+ because a signed-out profile is otherwise indistinguishable from a migrated one: with no
257
+ session, `labs.google/fx/…` renders its marketing shell and `flow.google.com/project/<id>`
258
+ redirects to `/about`. Read either in isolation and you conclude "this account was moved" from
259
+ a dead cookie.
260
+ - `scripts/dev/spike_migrated_composer_mode_axis.py` — hard-error probe that opens the migrated
261
+ composer's settings overlay and enumerates its radiogroups.
262
+ - `scripts/dev/spike_format_prompt_effect.py` — measures whether clicking Format actually
263
+ rewrites the prompt, and when. `$0`, never submits.
264
+
10
265
  ## [0.70.0] — 2026-09-06
11
266
 
12
267
  ### Fixed
@@ -4228,7 +4483,8 @@ shell-script template that branches on these codes.
4228
4483
 
4229
4484
  First skeleton. Not functional end-to-end yet.
4230
4485
 
4231
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...HEAD
4486
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...HEAD
4487
+ [0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
4232
4488
  [0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
4233
4489
  [0.69.0]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...v0.69.0
4234
4490
  [0.68.0]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...v0.68.0
@@ -16,9 +16,11 @@ 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
+ - **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in the unreleased line, post-v0.70.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).
22
24
  - **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.
23
25
 
24
26
  Google is moving Flow off Labs onto its own origin. On a migrated page load,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.70.0
3
+ Version: 0.71.0
4
4
  Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
@@ -58,7 +58,7 @@ Requires-Dist: numpy>=1.24; extra == 'dev'
58
58
  Requires-Dist: pyright>=1.1.0; extra == 'dev'
59
59
  Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
60
60
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
61
- Requires-Dist: ruff==0.16.5; extra == 'dev'
61
+ Requires-Dist: ruff==0.16.6; extra == 'dev'
62
62
  Provides-Extra: gcs
63
63
  Requires-Dist: gcsfs>=2024.2.0; extra == 'gcs'
64
64
  Requires-Dist: universal-pathlib>=0.2.5; extra == 'gcs'
@@ -16,7 +16,7 @@ These are non-negotiable. They override default agent behavior where conflicts e
16
16
  - **TDD before code.** Write a failing test, then the minimum production code to make it pass, then refactor. Coverage floor: 80% overall. See [CONTRIBUTING.md](../CONTRIBUTING.md).
17
17
  - **Documentation is first-class.** Any user-facing, operator-facing, architecture, configuration, workflow, or agent-rule change must update the matching docs, changelog/release note when relevant, and docs index if a new doc is added. If no docs change, record the reason in the PR/checklist. `scripts/ci/check_doc_links.py` must pass before merge.
18
18
  - **No raw `print()` or `import logging` in `src/`.** Structured logging via `structlog` only.
19
- - **No secrets in commits.** `.env.local` is gitignored; never commit it. `pre-commit` hooks run `detect-secrets` on staged content.
19
+ - **No secrets in commits.** `.env`, `.env.local` and `$GFLOW_CLI_HOME/.env` are all gitignored; never commit any of them. Note gflow only READS `.env` (CWD and home) — see [CONFIGURATION.md](CONFIGURATION.md). `pre-commit` hooks run `detect-secrets` on staged content.
20
20
  - **No AI attribution in commit messages.** `Co-Authored-By:` trailers are fine when explicitly requested; auto-generated `🤖 Generated with…` footers are not.
21
21
  - **Branch naming.** `feature/`, `bugfix/`, `hotfix/`, `chore/`, `docs/`, `test/`, `release/`. Never `claude/` or unprefixed.
22
22
  - **Signed tags only.** Releases tag with `git tag -s vX.Y.Z`. CI rejects unsigned or lightweight tags.
@@ -262,12 +262,28 @@ token that drives the sample URL, so a canonical id round-trips to a playable sa
262
262
  `gflow character create --voice <Name>` validates the value **case-insensitively** (so `charon` and `Charon`
263
263
  both normalize to the canonical `Charon`) and sets `audioReferences[].presetVoiceId` via the entity PATCH.
264
264
 
265
- > **Wire-case caveat (open):** a prior live run sent a **lowercase** id (`"charon"`) and Flow persisted it,
266
- > but whether Flow applies the voice from a lowercase id vs the Capitalized canonical form is **UNVERIFIED**.
267
- > gflow adopts the Capitalized form as canonical per the UI. The voice list is currently a **hardcoded
268
- > constant**; fetching the live list from Flow's voice API and confirming the `presetVoiceId` wire-case are
269
- > tracked in the [Backlog](#14-backlog--not-yet-implemented). A "create new voice" flow ("Criar nova voz")
270
- > exists in the UI but is **not yet implemented**.
265
+ > **Wire-case: Capitalized round-trips — VERIFIED 2026-09-07.** A live e2e
266
+ > (`tests/e2e/test_character_create_e2e.py::test_character_create_attaches_voice_and_personality`,
267
+ > profile `ffroliva`) created a character with `--voice Charon` and read it back from Flow:
268
+ > `sent='Charon' stored='Charon' identical=True`. The Capitalized canonical form is stored
269
+ > unchanged, so `CHARACTER_RECON.md`'s older note that "the preset id is the lowercased name"
270
+ > does **not** describe what the wire does today.
271
+ >
272
+ > **Still untested:** whether a *lowercase* id is also accepted (gflow never sends one — it
273
+ > normalizes to Capitalized before the PATCH), and — separately and more importantly —
274
+ > whether a bound voice is actually **applied to generated video audio**. Attachment to the
275
+ > entity is proven; application at render time is not.
276
+ >
277
+ > **`personalityNotes` is Agent-scoped.** Flow's own character editor labels the field
278
+ > "Character info (optional) — Describe how your character acts…" and states underneath:
279
+ > *"The Flow agent can use this information to help craft scenes with your character."*
280
+ > It is an input to Flow's **agent** when it writes scenes, not a control on the audio engine
281
+ > and not a documented input to a direct composer generation. Do not expect it to steer
282
+ > performance on a `video t2v` / `r2v` call — put the direction in the prompt instead.
283
+ >
284
+ > The voice list is currently a **hardcoded constant**; fetching the live list from Flow's
285
+ > voice API is tracked in the [Backlog](#14-backlog--not-yet-implemented). A "create new voice"
286
+ > flow ("Criar nova voz") exists in the UI but is **not yet implemented**.
271
287
 
272
288
  ## 8. CLI surface (shipped v0.12.0)
273
289
 
@@ -417,11 +433,21 @@ convenience later.
417
433
  - **Cost reality:** the feature is UI-automation-heavy (new character-editor + picker selectors), not the
418
434
  "mostly REST" earlier framing. Structural metadata is REST; the value-generating steps are UI.
419
435
 
420
- ## 12. UI-automation selectors (Option B) — VERIFIED 2026-06-02
436
+ ## 12. UI-automation selectors (Option B)
421
437
 
422
438
  Language-agnostic (ligature/structural) selectors. Flow renders in the profile locale, so **never match on
423
- localized text** — use Material-Symbol ligatures (`i.google-symbols:text('<lig>')`) or structure. Rows marked
424
- **VERIFIED** are confirmed against the shipped `api/transports/ui_automation.py` + spike DOM dumps (denon82).
439
+ localized text** — use Material-Symbol ligatures or structure.
440
+
441
+ > **The ligature carrier differs by host.** `labs.google` renders ligatures in
442
+ > `<i class="google-symbols">`; the migrated `flow.google.com` Angular frontend renders the SAME ligature in
443
+ > `<mat-icon>` (which also carries the `google-symbols` class — the class was never the discriminator, the
444
+ > tag is). A cascade anchored on one carrier returns a flat zero on the other host while the control is
445
+ > fully visible — indistinguishable, from the driver's side, from the feature being gone. Tracked in #730.
446
+ >
447
+ > **Each row is dated against the code it was read from, and rows are re-derived from the shipped
448
+ > constants rather than edited in place.** They previously carried an undated **VERIFIED** marker and went
449
+ > stale at #703 without anyone noticing — a row marked verified that is not is worse than no row, because
450
+ > it is what a reader trusts *instead of* reading the code (#731).
425
451
 
426
452
  **Editor URL (VERIFIED — `/fx/` prefix required).** After REST `createEntity`, the character-editor path is
427
453
 
@@ -437,16 +463,16 @@ owned by gflow) and the body-mode activation/settle signals.
437
463
 
438
464
  | Purpose | Selector | Conf. |
439
465
  |---|---|---|
440
- | Editor-ready anchor | the prompt textbox becoming visible: `div[role=textbox][data-slate-editor='true']` (`_CHARACTER_EDITOR_READY_SELECTOR`) | **VERIFIED** |
441
- | Prompt box (char editor) | `div[role=textbox][data-slate-editor='true']` (== `PROMPT_INPUT_SELECTORS[0]`) | **VERIFIED** |
442
- | Generate / submit | `arrow_forward` google-symbols button: `button:has(i.google-symbols:text('arrow_forward'))` (== `SUBMIT_BUTTON_SELECTORS`) | **VERIFIED** |
466
+ | Editor-ready anchor | `div[role="textbox"][data-slate-editor="true"], div.ProseMirror[contenteditable="true"]` (`_CHARACTER_EDITOR_READY_SELECTOR`) — **both frontends**: labs mounts Slate, `flow.google.com` mounts ProseMirror. Asking only for Slate reported 0 boxes on a migrated editor whose box was visible the whole time. | read from code 2026-09-07 |
467
+ | Prompt box (char editor) | the `PROMPT_INPUT_SELECTORS` cascade, **not** its first entry. `[0]` is the Slate anchor; on the migrated host it misses and `[1]` `div[contenteditable="true"]` is what matches (observed live 2026-09-07, `ui_automation.prompt_input_found`). | read from code + live 2026-09-07 |
468
+ | Generate / submit | `SUBMIT_BUTTON_SELECTORS` — `button:has(i.google-symbols:text('arrow_forward'))`, then `button:has(i:text(…))`, then `button:has-text('arrow_forward')`. ⚠️ **Single-carrier**: on the migrated host both `<i>` entries miss and only the third (which matches the `<mat-icon>`'s text) fires — observed live 2026-09-07, `prompt_submitted via="button:has-text('arrow_forward')"`. Working by luck, not by design; tracked in #730. | read from code + live 2026-09-07 |
443
469
  | Name field | `input[placeholder]` — localized placeholder; **do NOT rely on the text** (structural: it is the editor's lone placeholdered input) | **VERIFIED** |
444
470
  | Personality field | the panel `textarea` (localized placeholder) — **prefer REST PATCH** | **VERIFIED** |
445
471
  | Slot 0 image (face) | aria-label `"Imagem do personagem 1"` — **localized**, note only (do not load-bear on the text) | med (localized) |
446
- | **Body mode (slot 1)** | Current cohort: portrait-image sibling `button:has(img) + button:has(i.google-symbols:text-is('accessibility_new'))`; settle signal: a newly mounted generated-media card with an `img` and exact `cancel` icon. Legacy cohort fallback: icon-only `[role=button]` carrying exact `add_2`, followed by Slate-box count rise. No localized button text or positional index. | **VERIFIED** live 2026-07-26 |
447
- | Model picker (char editor) | `button[aria-haspopup='menu']:has(i.google-symbols:text-is('arrow_drop_down'))` *(normal editor uses `crop_16_9`)* | **VERIFIED** |
472
+ | **Body mode (slot 1)** | `_CHARACTER_BODY_MODE_SELECTOR` = `button:has(img) + button:has(i.google-symbols:text-is('accessibility_new'))` **or** `flow-slot-chip-button:has(mat-icon:text-is('accessibility_new')) button` — the second alternative is the migrated host's custom element and was added in #703; the row omitted it until #731. Settle signal: a newly mounted generated-media card with an `img` and exact `cancel` icon. The chip ships `disabled` until a portrait exists. | read from code 2026-09-07; behaviour live 2026-07-26 |
473
+ | Model picker (char editor) | `_CHARACTER_MODEL_PICKER_TRIGGER_SELECTORS` — `arrow_drop_down` under **either** carrier, on `button` **and** `[role='button']` (4 entries). The row previously showed an `aria-haspopup='menu'` variant that appears in none of them. Omitting the `mat-icon` entries logged `model-picker trigger not found` on the migrated host and generated on whatever tier the editor opened at (live 2026-09-06). | read from code 2026-09-07 |
448
474
  | Voice picker | `voice_selection` google-symbols ligature | **VERIFIED** (ligature) |
449
- | Personagens nav (project) | `button:has(i.google-symbols:text-is('accessibility_new'))` (cards are `div[role=button]`; tag disambiguates) | high |
475
+ | Personagens nav (project) | `button:has(i.google-symbols:text-is('accessibility_new'))` (cards are `div[role=button]`; tag disambiguates). ⚠️ single-carrier — see #730. | high (unre-verified) |
450
476
  | Delete character (rm, v2) | `button:has(i.google-symbols:text-is('delete'))` | high |
451
477
  | Picker tab → Personagens | `[role=dialog] button[role=tab]:has(i.google-symbols:text-is('accessibility_new'))` | high |
452
478
  | **Picker "include in command"** | primary `button` in the dialog footer — **no ligature → structural anchor (last/primary dialog button)**; only appears *after* an option is selected | low ⚠️ |
@@ -28,8 +28,13 @@ entity {
28
28
  entityType: "CHARACTER"
29
29
  displayName # "Denidra" (default "Untitled Character")
30
30
  characterInfo {
31
- personalityNotes # free text — guides actions when not specified in a prompt
32
- audioReferences: [ { presetVoiceId: "gacrux" } ] # voice; preset id is lowercased name
31
+ personalityNotes # free text — Flow's editor says the AGENT uses it to craft
32
+ # scenes; NOT a documented input to a composer generation
33
+ audioReferences: [ { presetVoiceId: "Charon" } ] # voice; Capitalized id round-trips
34
+ # unchanged (e2e-verified 2026-09-07: sent 'Charon', stored
35
+ # 'Charon'). The earlier "lowercased name" note above this
36
+ # line came from one capture and does NOT hold today; see
37
+ # CHARACTER.md § 7.
33
38
  imageReferences: [ { workflowId }, { workflowId } ] # face + body (point to WORKFLOWS, not media)
34
39
  }
35
40
  }
@@ -38,8 +38,10 @@ This workflow must not checkout the PR branch, install dependencies, run tests,
38
38
 
39
39
  ### PR-Triage Autopilot (VPS Sandbox)
40
40
 
41
- To automate deeper verification, an hourly `hermes-ops` cron job runs on the host VPS to triage eligible external PRs.
42
- - It uses the deterministic **Stage 0 pre-filter** (`pr_triage_gate.py`) to confirm eligibility.
41
+ > **Moved out of this repo in v0.71.0.** The runner is hosted privately; `scripts/autopilot/`, `eval/pr_triage_*` and `pr_triage_gate.py` are no longer here. The design notes below are kept as history — do not go looking for the scripts.
42
+
43
+ An hourly `hermes-ops` cron job triaged eligible external PRs on the host VPS.
44
+ - It used the deterministic **Stage 0 pre-filter** (`pr_triage_gate.py`) to confirm eligibility.
43
45
  - It fetches the PR branch and runs the full `/gflow:pr-council-review` inside an **ephemeral, non-root, read-only Docker container sandbox** (with restricted network egress and no write credentials).
44
46
  - The host orchestrator posts the review comment to the PR and alerts the maintainer via Telegram.
45
47
  - For design details, see [2026-07-04-pr-triage-autopilot-design.md](superpowers/specs/2026-07-04-pr-triage-autopilot-design.md) and the implementation plan [PLAN.md](superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md).