gflow-cli 0.58.0__tar.gz → 0.59.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 (784) hide show
  1. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.env.template +7 -0
  3. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/AGENTS.md +1 -1
  4. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/CHANGELOG.md +54 -1
  5. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/KNOWN_ISSUES.md +6 -4
  6. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/PKG-INFO +1 -1
  7. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/DATA_LAYER.md +24 -0
  8. gflow_cli-0.59.0/docs/INDEX.md +159 -0
  9. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.58.0.md +5 -2
  10. gflow_cli-0.59.0/docs/LIVE_VERIFICATION_v0.59.0.md +66 -0
  11. gflow_cli-0.59.0/docs/MEDIA_LIBRARY.md +188 -0
  12. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/PROJECT_STATUS.md +26 -1
  13. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/USAGE.md +140 -1
  14. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/pyproject.toml +1 -1
  15. gflow_cli-0.59.0/scripts/dev/capture_project_listing.py +90 -0
  16. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/__init__.py +1 -1
  17. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/client.py +86 -1
  18. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/base.py +14 -2
  19. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/experimental/bearer.py +2 -0
  20. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +2 -0
  21. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +2 -0
  22. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/ui_automation.py +6 -1
  23. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/ui_automation_video.py +51 -6
  24. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli.py +2 -0
  25. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_data.py +257 -2
  26. gflow_cli-0.59.0/src/gflow_cli/cli_doctor.py +86 -0
  27. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_image.py +134 -2
  28. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_video.py +15 -0
  29. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/redaction.py +3 -1
  30. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/repository.py +172 -0
  31. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/store.py +79 -0
  32. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/errors.py +48 -0
  33. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/json_output.py +23 -0
  34. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/observability.py +14 -4
  35. gflow_cli-0.59.0/src/gflow_cli/services/catalog_sync.py +382 -0
  36. gflow_cli-0.59.0/src/gflow_cli/services/doctor.py +529 -0
  37. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_ui_automation_video.py +234 -0
  38. gflow_cli-0.59.0/tests/cli/test_cli_data_sync.py +243 -0
  39. gflow_cli-0.59.0/tests/cli/test_cli_doctor.py +264 -0
  40. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +122 -0
  41. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/conftest.py +5 -0
  42. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_redaction.py +7 -0
  43. gflow_cli-0.59.0/tests/data/test_repository.py +804 -0
  44. gflow_cli-0.59.0/tests/data/test_store.py +160 -0
  45. gflow_cli-0.59.0/tests/e2e/test_data_sync_names_e2e.py +208 -0
  46. gflow_cli-0.59.0/tests/e2e/test_refresh_on_miss_e2e.py +164 -0
  47. gflow_cli-0.59.0/tests/fixtures/doctor_env.py +58 -0
  48. gflow_cli-0.59.0/tests/fixtures/listing_payload.py +107 -0
  49. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_cli_parity.py +2 -0
  50. gflow_cli-0.59.0/tests/services/test_catalog_sync.py +572 -0
  51. gflow_cli-0.59.0/tests/services/test_doctor.py +577 -0
  52. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/uv.lock +1 -1
  53. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/DATA_LAYER.md +24 -0
  54. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/KNOWN_ISSUES.md +6 -4
  55. gflow_cli-0.59.0/website/docs/MEDIA_LIBRARY.md +188 -0
  56. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/USAGE.md +140 -1
  57. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/mkdocs.yml +1 -0
  58. gflow_cli-0.58.0/docs/INDEX.md +0 -155
  59. gflow_cli-0.58.0/tests/data/test_repository.py +0 -418
  60. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.agents/plugins/marketplace.json +0 -0
  61. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/README.md +0 -0
  62. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/active.md +0 -0
  63. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/branch-review.md +0 -0
  64. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/changelog.md +0 -0
  65. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/check.md +0 -0
  66. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/doc-review.md +0 -0
  67. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  68. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  69. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/known-issues.md +0 -0
  70. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/live-verify.md +0 -0
  71. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/llm-council.md +0 -0
  72. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/next.md +0 -0
  73. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/plan.md +0 -0
  74. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  75. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/predict.md +0 -0
  76. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/release.md +0 -0
  77. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/scenario.md +0 -0
  78. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/sonar.md +0 -0
  79. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.claude/commands/gflow/status.md +0 -0
  80. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.gitattributes +0 -0
  81. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/CODEOWNERS +0 -0
  82. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  83. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/copilot-instructions.md +0 -0
  84. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/dependabot.yml +0 -0
  85. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/ci.yml +0 -0
  86. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/deps-watch.yml +0 -0
  87. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/external-pr-triage.yml +0 -0
  88. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/governance-advisory.yml +0 -0
  89. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/governance-benchmark.yml +0 -0
  90. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/labels.yml +0 -0
  91. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/main-base-guard.yml +0 -0
  92. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/pages.yml +0 -0
  93. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/release.yml +0 -0
  94. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.github/workflows/scorecard.yml +0 -0
  95. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.gitignore +0 -0
  96. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.gitleaks.toml +0 -0
  97. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.pre-commit-config.yaml +0 -0
  98. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/.secrets.baseline +0 -0
  99. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/CLAUDE.md +0 -0
  100. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/CONFIGURATION.md +0 -0
  101. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/CONTRIBUTING.md +0 -0
  102. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/DISCLAIMER.md +0 -0
  103. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/LICENSE +0 -0
  104. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/PLAN.md +0 -0
  105. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/README.md +0 -0
  106. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/RELEASE.md +0 -0
  107. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/ROADMAP.md +0 -0
  108. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/conftest.py +0 -0
  109. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  110. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docker-compose.yml +0 -0
  111. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/AGENT_GUIDE.md +0 -0
  112. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/AGENT_UI_E2E.md +0 -0
  113. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/AGENT_UI_RECON.md +0 -0
  114. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/ARCHITECTURE.md +0 -0
  115. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  116. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/AUTHENTICATION.md +0 -0
  117. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/CHARACTER.md +0 -0
  118. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/CHARACTER_RECON.md +0 -0
  119. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/CONFIGURATION.md +0 -0
  120. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/DEBUGGING.md +0 -0
  121. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/DEMOS.md +0 -0
  122. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/DEVELOPMENT.md +0 -0
  123. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/E2E_TESTING.md +0 -0
  124. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/EXTERNAL_STORAGE.md +0 -0
  125. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/GITHUB.md +0 -0
  126. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  127. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  128. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/INSTRUCTIONS.md +0 -0
  129. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  130. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  131. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  132. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  133. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  134. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  135. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  136. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  137. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  138. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  139. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  140. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  141. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  142. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  143. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  144. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  145. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  146. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  147. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  148. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  149. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  150. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  151. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  152. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  153. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  154. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  155. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  156. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  157. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  158. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  159. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  160. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  161. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  162. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  163. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  164. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  165. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  166. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  167. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  168. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  169. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  170. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  171. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  172. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  173. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  174. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  175. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  176. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  177. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  178. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  179. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  180. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  181. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  182. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  183. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  184. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  185. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  186. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  187. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  188. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  189. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/MCP.md +0 -0
  190. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/MOVIE.md +0 -0
  191. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/PROMPT_EXPANSION.md +0 -0
  192. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  193. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/SECURITY.md +0 -0
  194. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/TOOLS.md +0 -0
  195. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/USER_GUIDE.md +0 -0
  196. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/assets/demo-split-pf.gif +0 -0
  197. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/assets/example-run.gif +0 -0
  198. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/assets/examples.webp +0 -0
  199. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/medium_tutorial.md +0 -0
  200. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/schemas/movie-handoff.schema.json +0 -0
  201. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/sonar-cleanup-tracker.md +0 -0
  202. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  203. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  204. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  205. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  206. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  207. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  208. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  209. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  210. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  211. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  212. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  213. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  214. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  215. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  216. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  217. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  218. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  219. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  220. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  221. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  222. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  223. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  224. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  225. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  226. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  227. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  228. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  229. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  230. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  231. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  232. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  233. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  234. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  235. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  236. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  237. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  238. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  239. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  240. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  241. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  242. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  243. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  244. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  245. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  246. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  247. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  248. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  249. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  250. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  251. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  252. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  253. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  254. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  255. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/eval/pr_triage_eval.py +0 -0
  256. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/eval/pr_triage_fixtures.json +0 -0
  257. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/README.md +0 -0
  258. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/batch_from_config.py +0 -0
  259. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/multi_prompt_t2i.py +0 -0
  260. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/sample_config.json +0 -0
  261. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/sample_prompts.txt +0 -0
  262. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/single_image_t2i.py +0 -0
  263. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/examples/workflow_chain.py +0 -0
  264. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/index.html +0 -0
  265. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/llms.txt +0 -0
  266. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/README.md +0 -0
  267. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/01_upload_image.json +0 -0
  268. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  269. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  270. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/04_archive_workflow.json +0 -0
  271. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/05_createProject.json +0 -0
  272. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/06_batchGenerateImages.json +0 -0
  273. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  274. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  275. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  276. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  277. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  278. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/12_create_scene.json +0 -0
  279. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  280. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/14_get_scene_workflows.json +0 -0
  281. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  282. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/Dockerfile.triage +0 -0
  283. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/entrypoint.sh +0 -0
  284. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/package-lock.json +0 -0
  285. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/package.json +0 -0
  286. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  287. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  288. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  289. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/check_doc_links.py +0 -0
  290. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/check_materiality.py +0 -0
  291. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/check_release_artifacts.py +0 -0
  292. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/check_repo_hygiene.py +0 -0
  293. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/check_test_count.py +0 -0
  294. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/check_website_docs_pii.py +0 -0
  295. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/ci/generate_website_docs.py +0 -0
  296. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/debug_editor.py +0 -0
  297. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/debug_gen_settings.py +0 -0
  298. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/debug_settings.py +0 -0
  299. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/_recording_client.py +0 -0
  300. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/_spike_common.py +0 -0
  301. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/active_plan.py +0 -0
  302. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  303. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  304. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  305. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  306. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  307. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  308. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  309. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_locale_invariants.py +0 -0
  310. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  311. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  312. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  313. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  314. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  315. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/character_create_spike.py +0 -0
  316. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/character_create_spike_v2.py +0 -0
  317. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/dump_character_selectors.js +0 -0
  318. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/incident_bundle_quality.py +0 -0
  319. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  320. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/make_project.py +0 -0
  321. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/materiality_backtest.py +0 -0
  322. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/patch_character.py +0 -0
  323. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/skillopt/README.md +0 -0
  324. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/skillopt/harness.py +0 -0
  325. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/skillopt/tasks.json +0 -0
  326. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/sonar-local-scan.sh +0 -0
  327. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  328. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  329. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  330. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  331. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  332. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  333. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  334. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  335. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_incident_live.py +0 -0
  336. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  337. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  338. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  339. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  340. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  341. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  342. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  343. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  344. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  345. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  346. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  347. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  348. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  349. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_patch_entity.py +0 -0
  350. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/dev/spike_patchright.py +0 -0
  351. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/diag/README.md +0 -0
  352. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/diag/capture_flow_traffic.py +0 -0
  353. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/diag/memory_profile.py +0 -0
  354. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/diag/recaptcha_mint.py +0 -0
  355. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  356. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  357. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  358. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/record_demo.ps1 +0 -0
  359. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/smoke_image.py +0 -0
  360. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/smoke_video_editor.py +0 -0
  361. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/smoke_worker_style.py +0 -0
  362. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/spike_waf_camoufox.py +0 -0
  363. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/scripts/verify_chrome_auth_viability.py +0 -0
  364. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/README.md +0 -0
  365. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/changelog/SKILL.md +0 -0
  366. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/check/SKILL.md +0 -0
  367. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/doc-review/SKILL.md +0 -0
  368. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/gflow-cli/SKILL.md +0 -0
  369. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/issue-assessment/SKILL.md +0 -0
  370. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/issue-resolve/SKILL.md +0 -0
  371. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/known-issues/SKILL.md +0 -0
  372. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/live-verify/SKILL.md +0 -0
  373. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/llm-council/SKILL.md +0 -0
  374. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/plan/SKILL.md +0 -0
  375. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/pr-council-review/SKILL.md +0 -0
  376. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/predict/SKILL.md +0 -0
  377. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/release/SKILL.md +0 -0
  378. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/scenario/SKILL.md +0 -0
  379. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/sonar/SKILL.md +0 -0
  380. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/skills/status/SKILL.md +0 -0
  381. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/sonar-project.properties +0 -0
  382. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/__main__.py +0 -0
  383. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/_cli_helpers.py +0 -0
  384. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/__init__.py +0 -0
  385. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/_engine.py +0 -0
  386. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/_retry.py +0 -0
  387. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  388. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/character.py +0 -0
  389. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/dto.py +0 -0
  390. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/image.py +0 -0
  391. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/image_upscale.py +0 -0
  392. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/recaptcha.py +0 -0
  393. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/routes.py +0 -0
  394. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/scene.py +0 -0
  395. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  396. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/_common.py +0 -0
  397. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  398. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  399. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  400. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  401. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  402. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  403. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  404. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  405. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/api/video.py +0 -0
  406. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/__init__.py +0 -0
  407. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/base.py +0 -0
  408. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/cookies.py +0 -0
  409. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/factory.py +0 -0
  410. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  411. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  412. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/strategies.py +0 -0
  413. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/auth/verification.py +0 -0
  414. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/browser_manager.py +0 -0
  415. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/chain.py +0 -0
  416. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/chain_manifest.py +0 -0
  417. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_character.py +0 -0
  418. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_instructions.py +0 -0
  419. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_models.py +0 -0
  420. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_movie.py +0 -0
  421. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_project.py +0 -0
  422. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_run.py +0 -0
  423. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_scene.py +0 -0
  424. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/cli_tools.py +0 -0
  425. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/composition.py +0 -0
  426. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/config.py +0 -0
  427. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/__init__.py +0 -0
  428. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/chain_repo.py +0 -0
  429. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  430. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  431. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  432. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  433. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  434. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  435. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  436. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  437. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  438. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  439. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/models.py +0 -0
  440. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/queries.py +0 -0
  441. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/data/recorder.py +0 -0
  442. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/diagnostics.py +0 -0
  443. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/exceptions.py +0 -0
  444. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/file_integrity.py +0 -0
  445. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/image_batch.py +0 -0
  446. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/__init__.py +0 -0
  447. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/prompts.py +0 -0
  448. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/resources.py +0 -0
  449. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/server.py +0 -0
  450. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/setup.py +0 -0
  451. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  452. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/mcp/tools.py +0 -0
  453. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/media.py +0 -0
  454. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/movie_manifest.py +0 -0
  455. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/paths.py +0 -0
  456. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/profile_lease.py +0 -0
  457. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/profile_store.py +0 -0
  458. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/redaction.py +0 -0
  459. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/services/__init__.py +0 -0
  460. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/services/character_create.py +0 -0
  461. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/services/mentions.py +0 -0
  462. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/storage.py +0 -0
  463. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/__init__.py +0 -0
  464. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/banned.py +0 -0
  465. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  466. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  467. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  468. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  469. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/expander.py +0 -0
  470. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/invocation.py +0 -0
  471. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/loader.py +0 -0
  472. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/registry.py +0 -0
  473. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/runtime.py +0 -0
  474. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/tools/spec.py +0 -0
  475. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/ui/app.py +0 -0
  476. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/ui/server.py +0 -0
  477. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/update_check.py +0 -0
  478. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/winsec.py +0 -0
  479. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/worker/codec.py +0 -0
  480. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/worker/daemon.py +0 -0
  481. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/src/gflow_cli/worker/queue.py +0 -0
  482. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tasks/lessons.md +0 -0
  483. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/test_assets/sample_batch.json +0 -0
  484. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/test_assets/sample_batch.tsv +0 -0
  485. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/test_assets/sample_batch_invalid.tsv +0 -0
  486. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/__init__.py +0 -0
  487. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/__init__.py +0 -0
  488. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/fixtures/character_gen_response.json +0 -0
  489. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  490. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  491. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  492. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_bearer_redaction.py +0 -0
  493. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_character.py +0 -0
  494. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client.py +0 -0
  495. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_character.py +0 -0
  496. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_delete_characters.py +0 -0
  497. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_errors.py +0 -0
  498. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_generate_character.py +0 -0
  499. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_image.py +0 -0
  500. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_incidents.py +0 -0
  501. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_launch_kwargs.py +0 -0
  502. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_patch_entity.py +0 -0
  503. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_scene.py +0 -0
  504. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_client_upscale.py +0 -0
  505. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_concurrency.py +0 -0
  506. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_dto.py +0 -0
  507. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_engine.py +0 -0
  508. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_image.py +0 -0
  509. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_image_dto.py +0 -0
  510. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_image_upscale.py +0 -0
  511. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  512. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_recaptcha.py +0 -0
  513. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_retry.py +0 -0
  514. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_routes.py +0 -0
  515. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_routes_character.py +0 -0
  516. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_routes_scene.py +0 -0
  517. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_sapisidhash_helper.py +0 -0
  518. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_scene_models.py +0 -0
  519. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_video.py +0 -0
  520. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/test_video_request.py +0 -0
  521. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/__init__.py +0 -0
  522. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/conftest.py +0 -0
  523. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/drivers/__init__.py +0 -0
  524. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  525. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/drivers/test_classic.py +0 -0
  526. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/drivers/test_factory.py +0 -0
  527. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  528. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  529. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_base.py +0 -0
  530. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_bearer.py +0 -0
  531. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_common.py +0 -0
  532. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  533. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_factory.py +0 -0
  534. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_fingerprint.py +0 -0
  535. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_mode_control.py +0 -0
  536. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_sapisidhash.py +0 -0
  537. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  538. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_transport_timeout.py +0 -0
  539. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_ui_automation.py +0 -0
  540. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  541. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  542. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  543. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/auth/strategies/test_factory.py +0 -0
  544. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/auth/strategies/test_strategies.py +0 -0
  545. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/auth/test_cookies.py +0 -0
  546. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/auth/test_real_chrome.py +0 -0
  547. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/auth/test_verification.py +0 -0
  548. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/auth/test_windows_acl.py +0 -0
  549. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  550. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/__init__.py +0 -0
  551. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_auth_status.py +0 -0
  552. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_auth_list.py +0 -0
  553. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_character.py +0 -0
  554. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_character_create.py +0 -0
  555. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_data.py +0 -0
  556. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_data_errors.py +0 -0
  557. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  558. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_image.py +0 -0
  559. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  560. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  561. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_image_upscale.py +0 -0
  562. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_instructions.py +0 -0
  563. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_models.py +0 -0
  564. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_movie.py +0 -0
  565. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_run.py +0 -0
  566. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_scene.py +0 -0
  567. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_tools.py +0 -0
  568. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_video.py +0 -0
  569. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_cli_video_chain.py +0 -0
  570. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_error_handling.py +0 -0
  571. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_failure_funnel.py +0 -0
  572. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_helpers.py +0 -0
  573. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_incident_output.py +0 -0
  574. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_movie_manifest.py +0 -0
  575. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  576. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_predictable_output.py +0 -0
  577. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_settings_validation.py +0 -0
  578. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  579. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/composition/test_character.py +0 -0
  580. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/composition/test_compose_prompt.py +0 -0
  581. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/composition/test_handoff.py +0 -0
  582. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/composition/test_style_variants.py +0 -0
  583. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/composition/test_style_variants_e2e.py +0 -0
  584. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/__init__.py +0 -0
  585. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_chain_repo.py +0 -0
  586. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_failure_recording.py +0 -0
  587. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_find_incomplete_character.py +0 -0
  588. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_models.py +0 -0
  589. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_packaging.py +0 -0
  590. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_recorder.py +0 -0
  591. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_recorder_character.py +0 -0
  592. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_scene_persistence.py +0 -0
  593. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_settings_and_errors.py +0 -0
  594. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/data/test_store_migrations.py +0 -0
  595. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/dev/test_recording_client.py +0 -0
  596. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/__init__.py +0 -0
  597. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/conftest.py +0 -0
  598. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  599. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  600. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  601. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  602. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  603. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_chain_e2e.py +0 -0
  604. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_character_create_e2e.py +0 -0
  605. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  606. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  607. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_daemon_e2e.py +0 -0
  608. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  609. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  610. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  611. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  612. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  613. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  614. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  615. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  616. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_json_output_e2e.py +0 -0
  617. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  618. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  619. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  620. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_scene_compose_live.py +0 -0
  621. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  622. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_tools_e2e.py +0 -0
  623. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_transports_e2e.py +0 -0
  624. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  625. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  626. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  627. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/__init__.py +0 -0
  628. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/asset_tagging.feature +0 -0
  629. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/auth.feature +0 -0
  630. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/auth_login.feature +0 -0
  631. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/character_create.feature +0 -0
  632. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/character_read.feature +0 -0
  633. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/conftest.py +0 -0
  634. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/duration_tab_drift.feature +0 -0
  635. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/entity_provenance.feature +0 -0
  636. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/image.feature +0 -0
  637. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/image_batch_references.feature +0 -0
  638. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/image_upscale.feature +0 -0
  639. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/incident_diagnostics.feature +0 -0
  640. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/instructions.feature +0 -0
  641. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/locale_picker_include.feature +0 -0
  642. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/mcp_tasks.feature +0 -0
  643. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/media_picker_tiers.feature +0 -0
  644. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/output_hardening.feature +0 -0
  645. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_asset_tagging_steps.py +0 -0
  646. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_auth_login_steps.py +0 -0
  647. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_auth_steps.py +0 -0
  648. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_character_create_steps.py +0 -0
  649. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_character_read_steps.py +0 -0
  650. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_image_steps.py +0 -0
  651. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_image_upscale_steps.py +0 -0
  652. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  653. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_instructions_steps.py +0 -0
  654. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  655. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  656. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  657. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_output_hardening_steps.py +0 -0
  658. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_step_collision_guard.py +0 -0
  659. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  660. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/test_video_chain_steps.py +0 -0
  661. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/video_agent_ui.feature +0 -0
  662. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/features/video_chain.feature +0 -0
  663. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/fixtures/__init__.py +0 -0
  664. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/fixtures/seeded_catalog.py +0 -0
  665. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/image_batch/__init__.py +0 -0
  666. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/image_batch/test_image_manifest.py +0 -0
  667. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/image_batch/test_jitter_config.py +0 -0
  668. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/image_batch/test_observability_events.py +0 -0
  669. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/integration/__init__.py +0 -0
  670. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/integration/conftest.py +0 -0
  671. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/integration/constants.py +0 -0
  672. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/integration/test_expander_gateway.py +0 -0
  673. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/integration/test_storage_gcs.py +0 -0
  674. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/integration/test_storage_s3.py +0 -0
  675. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/__init__.py +0 -0
  676. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/conftest.py +0 -0
  677. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_auth_status_tool.py +0 -0
  678. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_error_funnel.py +0 -0
  679. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_http_transport.py +0 -0
  680. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_known_issues_resource.py +0 -0
  681. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_no_spend.py +0 -0
  682. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  683. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_resources.py +0 -0
  684. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_server.py +0 -0
  685. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_setup.py +0 -0
  686. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_stdio_transport.py +0 -0
  687. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_tasks_extension.py +0 -0
  688. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_tools_helpers.py +0 -0
  689. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_tools_instructions.py +0 -0
  690. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/mcp/test_tools_wired.py +0 -0
  691. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  692. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  693. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_check_materiality.py +0 -0
  694. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  695. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  696. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_check_test_count.py +0 -0
  697. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  698. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_codex_plugin.py +0 -0
  699. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_generate_website_docs.py +0 -0
  700. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  701. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/scripts/test_materiality_backtest.py +0 -0
  702. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/__init__.py +0 -0
  703. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_character_create_redaction.py +0 -0
  704. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_character_create_saga.py +0 -0
  705. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  706. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_mentions_observability.py +0 -0
  707. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_mentions_parse.py +0 -0
  708. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_mentions_resolve.py +0 -0
  709. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/services/test_resolve_and_apply.py +0 -0
  710. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/smoke/__init__.py +0 -0
  711. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  712. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/smoke/test_real_flow.py +0 -0
  713. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_auth.py +0 -0
  714. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_browser_manager.py +0 -0
  715. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_chain.py +0 -0
  716. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_chain_manifest.py +0 -0
  717. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_cli_data.py +0 -0
  718. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_cli_project.py +0 -0
  719. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_config.py +0 -0
  720. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_conftest_isolation.py +0 -0
  721. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_data_queries.py +0 -0
  722. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_diagnostics_bundle.py +0 -0
  723. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_diagnostics_events.py +0 -0
  724. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_diagnostics_journal.py +0 -0
  725. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_diagnostics_recorder.py +0 -0
  726. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_diagnostics_retention.py +0 -0
  727. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_diagnostics_sanitize.py +0 -0
  728. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_documentation_gate.py +0 -0
  729. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_duration_tab_drift.py +0 -0
  730. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_entity_provenance.py +0 -0
  731. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_errors.py +0 -0
  732. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_errors_classification.py +0 -0
  733. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_image_batch_references.py +0 -0
  734. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_json_output.py +0 -0
  735. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_marker_registry.py +0 -0
  736. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_media.py +0 -0
  737. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_observability.py +0 -0
  738. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_overlay_banner_dismissal.py +0 -0
  739. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_paths.py +0 -0
  740. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_playwright_pin.py +0 -0
  741. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_profile_lease.py +0 -0
  742. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_profile_lease_subprocess.py +0 -0
  743. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_profile_store.py +0 -0
  744. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_self_documenting_errors.py +0 -0
  745. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_smoke.py +0 -0
  746. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/test_update_check.py +0 -0
  747. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/__init__.py +0 -0
  748. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_banned.py +0 -0
  749. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_expander.py +0 -0
  750. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_invocation.py +0 -0
  751. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_loader.py +0 -0
  752. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_registry.py +0 -0
  753. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_runtime.py +0 -0
  754. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/tools/test_spec.py +0 -0
  755. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/ui/test_app.py +0 -0
  756. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/worker/test_codec.py +0 -0
  757. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/worker/test_daemon.py +0 -0
  758. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  759. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/worker/test_queue.py +0 -0
  760. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/worker/test_queue_multiprocess.py +0 -0
  761. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/tests/worker/test_queue_reconciliation.py +0 -0
  762. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/ARCHITECTURE.md +0 -0
  763. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/AUTHENTICATION.md +0 -0
  764. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/CHARACTER.md +0 -0
  765. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/CONFIGURATION.md +0 -0
  766. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/DEBUGGING.md +0 -0
  767. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/DEVELOPMENT.md +0 -0
  768. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/E2E_TESTING.md +0 -0
  769. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  770. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/INSTRUCTIONS.md +0 -0
  771. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/MCP.md +0 -0
  772. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/MOVIE.md +0 -0
  773. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  774. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/SECURITY.md +0 -0
  775. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/TOOLS.md +0 -0
  776. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/USER_GUIDE.md +0 -0
  777. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/agents.md +0 -0
  778. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/index.md +0 -0
  779. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/installation.md +0 -0
  780. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/onboarding-mockup.html +0 -0
  781. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/onboarding.md +0 -0
  782. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/docs/stylesheets/extra.css +0 -0
  783. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/requirements.in +0 -0
  784. {gflow_cli-0.58.0 → gflow_cli-0.59.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.58.0",
3
+ "version": "0.59.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -143,6 +143,13 @@
143
143
  # editable/source installs. Set to 0 to disable.
144
144
  # GFLOW_CLI_UPDATE_CHECK=1
145
145
 
146
+ # Whether generation prompts (and the prompt-derived display names used as the
147
+ # picker search key) are stored in the local catalog — store | redacted.
148
+ # Under 'redacted', `gflow doctor` reports missing display names as info
149
+ # (backfill is deliberately suppressed) instead of warn, and name backfill via
150
+ # `gflow data sync --names` requires switching back to 'store' first.
151
+ # GFLOW_CLI_HISTORY_PROMPTS=store
152
+
146
153
  # MCP no-spend mode (#496): when set to 1, the MCP server (gflow mcp run AND
147
154
  # gflow serve) never registers the credit-spending generate tools — agents
148
155
  # cannot see them in tools/list. Equivalent to the --no-spend flag.
@@ -58,7 +58,7 @@ Or invoke the wrapper: `/gflow:check`.
58
58
 
59
59
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
60
60
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
61
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–31, 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.
61
+ - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–31, 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.
62
62
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
63
63
  - **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.
64
64
  - **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,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.59.0] — 2026-08-16
11
+
12
+ ### Added
13
+
14
+ - **Refresh-on-miss: stale catalog names self-heal during generation
15
+ ([#546](https://github.com/ffroliva/gflow-cli/issues/546)).** When a UUID
16
+ reference's picker name-search misses (e.g. the asset was renamed in the
17
+ Flow UI after being cataloged), the transport now consults the credit-free
18
+ `flow.projectInitialData` listing once (~0.5 s) for the *current* name,
19
+ retries the search exactly once, and attaches the existing tile — instead
20
+ of silently downgrading to a duplicate upload. The fresh name is written
21
+ back with `sync.source = "refresh"` provenance (`store` history mode only;
22
+ `redacted` heals the run without touching disk). Applies to `image i2i
23
+ --ref <uuid>` and `video i2v` frame refs; any resolver failure is logged
24
+ and the pre-existing fallback chain proceeds unchanged. Completes the
25
+ [#543](https://github.com/ffroliva/gflow-cli/issues/543) freshness model —
26
+ see [MEDIA_LIBRARY § freshness](docs/MEDIA_LIBRARY.md).
27
+
28
+ - **`gflow doctor` — read-only pre-flight diagnostics
29
+ ([#542](https://github.com/ffroliva/gflow-cli/issues/542)).** Ten checks
30
+ across the catalog (missing display names / local files / sha256), the
31
+ database (migration drift, WAL state + `PRAGMA quick_check`), stuck
32
+ operations and queue tasks (24h recency threshold), and the environment
33
+ (deprecated env vars, missing Playwright Chromium, auth profiles without
34
+ cookies). Brew-doctor philosophy: diagnoses, never heals — nothing is
35
+ migrated, repaired, or written, and all DB access is strictly read-only.
36
+ Exit `0` when clean, `33` when any warn/fail finding is present (a
37
+ successful diagnosis, not an error class); internal errors keep their typed
38
+ codes (e.g. `16` for `DataStoreError`). `--json` emits an experimental
39
+ machine-readable envelope (`overall_status` + per-check `checks[]` entries).
40
+ Output is redaction-safe: rows are identified by UUID only, paths are
41
+ sanitized, and under `GFLOW_CLI_HISTORY_PROMPTS=redacted` the display-name
42
+ check reports info instead of warn. See
43
+ [USAGE § `gflow doctor`](docs/USAGE.md#gflow-doctor).
44
+
45
+ - **`gflow data sync --names` — reconcile catalog display names from Flow's
46
+ listing endpoint ([#543](https://github.com/ffroliva/gflow-cli/issues/543)).**
47
+ Sweeps nameless catalog rows project-by-project via the credit-free
48
+ `flow.projectInitialData` listing (~0.5s/project, session-cookie auth, no
49
+ generation surface) and writes back the display names the picker searches
50
+ by — restoring the [#529](https://github.com/ffroliva/gflow-cli/issues/529)
51
+ picker contract (search by name, verify by UUID) for rows recorded before
52
+ their caption existed. Rows whose media no longer exists remotely are
53
+ ghost-marked `sync.status = "missing_remote"` (tombstones, never deletions)
54
+ only when the listing is provably complete. Write-by-default with
55
+ `--dry-run` preview; scoped via `--project` / `--limit` / `--since` /
56
+ `--max-projects`; idempotent re-runs. Refuses under
57
+ `GFLOW_CLI_HISTORY_PROMPTS=redacted` (exit `11`); exit `34`
58
+ (`SyncPartialError`, retryable) when some projects fail mid-sweep. This is
59
+ the remediation `gflow doctor`'s missing-display-name check points at. See
60
+ [USAGE § `gflow data sync`](docs/USAGE.md#gflow-data-sync).
61
+
10
62
  ## [0.58.0] — 2026-08-16
11
63
 
12
64
  ### Fixed
@@ -3021,7 +3073,8 @@ shell-script template that branches on these codes.
3021
3073
 
3022
3074
  First skeleton. Not functional end-to-end yet.
3023
3075
 
3024
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.58.0...HEAD
3076
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.59.0...HEAD
3077
+ [0.59.0]: https://github.com/ffroliva/gflow-cli/compare/v0.58.0...v0.59.0
3025
3078
  [0.58.0]: https://github.com/ffroliva/gflow-cli/compare/v0.57.1...v0.58.0
3026
3079
  [0.57.1]: https://github.com/ffroliva/gflow-cli/compare/v0.57.0...v0.57.1
3027
3080
  [0.57.0]: https://github.com/ffroliva/gflow-cli/compare/v0.56.0...v0.57.0
@@ -142,7 +142,7 @@ full-page media-library UI (#174) can fail earlier at `mode_switch_trigger`.
142
142
 
143
143
  ### Fresh generations may record without a `display_name` (async Flow caption)
144
144
 
145
- - **Status:** Open — tracked in [#543](https://github.com/ffroliva/gflow-cli/issues/543) (backfill command)
145
+ - **Status:** Mitigated — remedies shipped via [#543](https://github.com/ffroliva/gflow-cli/issues/543) and [#542](https://github.com/ffroliva/gflow-cli/issues/542)
146
146
  - **Affected:** UUID `--ref` / frame references to *just-generated* assets (v0.58.0+)
147
147
 
148
148
  Flow computes an asset's caption (`displayName`) asynchronously server-side, so
@@ -151,9 +151,11 @@ stores no name (observed live 2026-08-16 during the r2v e2e). Such rows skip
151
151
  the picker-selection path and use the integrity-verified local-file upload
152
152
  fallback instead — correct but a duplicate upload. Also by design, rows
153
153
  recorded before v0.58.0 and all rows under
154
- `GFLOW_CLI_HISTORY_PROMPTS=redacted` have no stored name. #543 proposes a
155
- credit-free, privacy-gated `gflow data backfill-names` command; #542's
156
- `gflow doctor` will surface the affected-row count.
154
+ `GFLOW_CLI_HISTORY_PROMPTS=redacted` have no stored name. **Remedies:**
155
+ `gflow data sync --names` (#543) backfills names credit-free from the Flow
156
+ listing endpoint (privacy-gated to `store` history mode), and `gflow doctor`
157
+ (#542) surfaces the affected-row count. Freshly generated rows whose caption
158
+ has not landed yet stay nameless until the next sync sweep.
157
159
 
158
160
  ### Video duration tab probe misses on the current Frames-submode DOM
159
161
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.58.0
3
+ Version: 0.59.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
@@ -69,6 +69,30 @@ same treatment `character create` already gave them. Keep that in mind before
69
69
  adding a key here: anything prompt-derived must be hashed by its own builder
70
70
  (as `tool` does) rather than relying on column-level redaction.
71
71
 
72
+ ### Asset `metadata_json.sync.*` provenance (#543)
73
+
74
+ `assets.metadata_json` carries a `sync` object recording what
75
+ `gflow data sync --names` did to the row and when — so a restored name is
76
+ distinguishable from one recorded at generation time, and a ghost mark carries
77
+ its own audit trail:
78
+
79
+ | Key | Shape | Writer |
80
+ |---|---|---|
81
+ | `sync.named_at` | UTC ISO timestamp | `DataRepository.set_asset_display_name` — set (with `$.display_name`) when a sync sweep writes or overwrites the name; skipped when the stored name is already identical, so re-runs never churn the timestamp |
82
+ | `sync.source` | `"sync"` \| `"refresh"` | Same writer, same statement — provenance for the name value: `"sync"` from a bulk `gflow data sync --names` sweep; `"refresh"` from the refresh-on-miss resolver (#546, `cli_image`), which writes back the freshly fetched name after a picker miss |
83
+ | `sync.status` | `"missing_remote"` | `DataRepository.mark_asset_missing_remote` — the ghost tombstone, set only when a **complete** remote listing lacks the asset; rows are flagged, never deleted, and tombstoned rows are excluded from later sweeps; cleared automatically if the media reappears in a listing |
84
+ | `sync.checked_at` | UTC ISO timestamp | Same writer — when the absence was last confirmed |
85
+
86
+ All four are written via single-statement atomic `json_set` updates that
87
+ preserve unrelated metadata keys. See
88
+ [USAGE § `gflow data sync`](USAGE.md#gflow-data-sync).
89
+
90
+ Two caveats: an in-flight generation's recorder completion can overwrite
91
+ `metadata_json` written concurrently by a sync sweep — self-healing, since the
92
+ row simply re-enters the next sweep. And the nested `sync.*` stamps rely on
93
+ SQLite's `json_set` auto-creating intermediate objects; a very old system
94
+ SQLite (pre-json1 era, roughly < 3.9) may silently no-op them.
95
+
72
96
  ### What is NOT recorded
73
97
 
74
98
  - Signed CDN URLs (e.g., `fifeUrl?Signature=...`) — they expire and contain bearer-style tokens.
@@ -0,0 +1,159 @@
1
+ # Documentation Index
2
+
3
+ Welcome to the `gflow-cli` documentation. This index is the routing layer: it tells you where each topic lives. Keep `README.md` slim (high-level overview + install) and document deep details here.
4
+
5
+ | Doc | Purpose | Read when… |
6
+ |---|---|---|
7
+ | [README](../README.md) | Project overview, install, quick start | First time landing on the repo |
8
+ | [docs/DEMOS.md](DEMOS.md) | Gallery of `gflow` in action (terminal + split-screen Flow recordings) | You want to see what gflow looks like running |
9
+ | [AGENTS.md](../AGENTS.md) | Universal coding-agent spec — Cursor / Codex / Aider / Antigravity / Jules / etc. | Any AI coding agent enters the repo |
10
+ | [llms.txt](../llms.txt) | LLM-readable summary (llmstxt.org format) | A user pastes context about gflow into ChatGPT / Claude / Gemini |
11
+ | [docs/PROJECT_STATUS.md](PROJECT_STATUS.md) | Full milestone history + lifecycle policy | Auditing where the project is in its lifecycle |
12
+ | [docs/AGENT_GUIDE.md](AGENT_GUIDE.md) | Mandates and routing rules for AI agents (companion to AGENTS.md) | A coding agent needs the longer non-negotiable rules |
13
+ | [docs/GOVERNANCE_BENCHMARK.md](GOVERNANCE_BENCHMARK.md) | How the advisory materiality gate is measured (false-positive / coverage backtest) and calibrated | You're changing `MATERIAL_PATHS` or auditing whether the governance gate earns its friction |
14
+ | [CLAUDE.md](../CLAUDE.md) | Claude Code's session memory hub (Claude-Code-specific protocol; delegates universal rules to AGENTS.md) | First time Claude Code opens the repo |
15
+ | [PLAN.md](../PLAN.md) | Implementation plan (DDD / CQRS / phases / ADRs) | You want the architectural intent and roadmap |
16
+ | [RELEASE.md](../RELEASE.md) | Release checklist, prerelease policy, PyPI/GitHub publishing protocol | Cutting or auditing a release |
17
+ | [ROADMAP.md](../ROADMAP.md) | Themed milestones from v0.9 through v1.0 | You want a multi-release view of where the project is heading |
18
+ | [CHANGELOG](../CHANGELOG.md) | Version-by-version user-visible changes | Upgrading or auditing what shipped |
19
+ | [KNOWN_ISSUES](../KNOWN_ISSUES.md) | Open / mitigated / resolved issues with workarounds | Before opening a bug report; when something feels off |
20
+ | [DISCLAIMER](../DISCLAIMER.md) | Legal scope, takedown policy, prohibited uses | Before deploying anywhere non-trivial |
21
+ | [LICENSE](../LICENSE) | MIT license text | Always |
22
+ | [CONTRIBUTING](../CONTRIBUTING.md) | TDD workflow, test categories, coverage targets | Before opening a PR |
23
+ | **[docs/DEVELOPMENT.md](DEVELOPMENT.md)** | Branching model, PR protocol, e2e gate, version bump protocol, AI-assisted workflow | Understanding the end-to-end dev process |
24
+ | **[docs/E2E_TESTING.md](E2E_TESTING.md)** | Layer model, cost sub-markers, run commands, isolation patterns, roadmap to contract/replay layer | Running or extending e2e tests; cost control |
25
+ | **[docs/AGENT_UI_E2E.md](AGENT_UI_E2E.md)** | Deterministic e2e runbook for the Agentic UI image path (force-agent trigger, validation ledger) | Live-verifying Agentic-UI features |
26
+ | **[docs/GITHUB.md](GITHUB.md)** | Maintainer PR triage protocol, forked PR handling, SonarCloud scenarios | Reviewing or merging a GitHub PR |
27
+ | [docs/sonar-cleanup-tracker.md](sonar-cleanup-tracker.md) | SonarCloud zero-smells cleanup tracker (`chore/sonar-zero-cleanup`) | Resuming or auditing the Sonar cleanup effort |
28
+ | [docs/medium_tutorial.md](medium_tutorial.md) | Long-form tutorial article (Medium draft): Veo + Imagen from the terminal | Writing or updating outreach/tutorial content |
29
+ | [.env.template](../.env.template) | All environment variables with defaults | Setting up a new shell or container |
30
+ | **[docs/AUTHENTICATION.md](AUTHENTICATION.md)** | Full auth flow, session storage, multi-account, refresh | First `gflow auth login`, or auth errors |
31
+ | **[docs/CONFIGURATION.md](CONFIGURATION.md)** | All env vars, precedence chain, default paths per OS | Tuning behaviour, picking output paths |
32
+ | **[docs/EXTERNAL_STORAGE.md](EXTERNAL_STORAGE.md)** | S3, MinIO, and Google Cloud Storage output configuration | Sending generated assets to a bucket instead of local disk |
33
+ | **[docs/USER_GUIDE.md](USER_GUIDE.md)** | Task-oriented walkthroughs (first setup, batch video, multi-image, log forensics, recovery, multi-account, migration) | You want to GET SOMETHING DONE — not look up a flag |
34
+ | **[docs/USAGE.md](USAGE.md)** | Command-by-command reference, manifest format, recipes, exit-code table | Day-to-day CLI use — look up specific commands / flags |
35
+ | **[docs/ARCHITECTURE.md](ARCHITECTURE.md)** | Modular monolith, per-worker Page pool, RFC 9457 Problem Details, retry layer | Adding a feature or a new provider |
36
+ | **[docs/SECURITY.md](SECURITY.md)** | What secrets are stored where, threat model, hardening | Audit, code review, multi-user machines |
37
+ | **[docs/DATA_LAYER.md](DATA_LAYER.md)** | Local SQLite catalog: goals, schema, recording flow, redaction, `gflow data` CLI, migrations, extension guide | Anything touching `gflow_cli.data`, debugging missing rows, building I2V/repair tooling, auditing what is stored |
38
+ | **[docs/CHARACTER.md](CHARACTER.md)** | Characters feature spec & system design: domain model, endpoint/cost matrix, sequence diagrams, JSON payloads (I/O), CLI surface, reuse via `referenceEntities` (#145) | Working on `gflow character`, reusing a character in generations, or understanding Flow's character wire protocol |
39
+ | **[docs/REFERENCE_STRATEGIES.md](REFERENCE_STRATEGIES.md)** | How to reference an asset: `@Name` mention vs `--reference-entity` vs `--ref` — the two-axis model (identity vs image), same-wire+dedupe rule, per-path support matrix, image-less-entity prerequisite, agent rule | Deciding how to tag a saved character/asset in a prompt, or wiring `@`-mentions into a generation |
40
+ | **[docs/MEDIA_LIBRARY.md](MEDIA_LIBRARY.md)** | Flow's media library as a component: asset-kind taxonomy (`media[]`/`workflows[]`/preset voices), UUID-vs-displayName identity rules (AI caption ≤~35 chars, mutable, async, non-unique), the `projectInitialData` listing endpoint (complete, direct-GET-able), picker UI facts (virtualized grid, per-picker project, no a11y tree, single-click attach) + full pitfall table | Touching any picker/listing/reference code, or debugging why an asset "isn't found" |
41
+ | **[docs/MOVIE.md](MOVIE.md)** | `gflow movie` — multi-scene character-consistent films: manifest format, run lifecycle (browser stays open through generate→poll→download), entity-attach mechanism (Personagens right-click), resume/handoff, credits | Working on `gflow movie`, debugging scene generation, or understanding the character-entity attach + consistency model |
42
+ | **[docs/TOOLS.md](TOOLS.md)** | Tools framework: the `gflow tools list/show/run` group, the `--tool/-t` option on generation commands, the TOML tool schema, how a tool is defined, "My Tools" user-authored tools, MCP exposure + §61 parity | Working on `gflow_cli.tools`, adding a built-in or user tool, or wiring `--tool` into a command |
43
+ | **[docs/INSTRUCTIONS.md](INSTRUCTIONS.md)** | Agent Instructions: project-brief cards for Flow's Agent Mode — the mechanism (enabled cards steer generation via the reasoning path), ephemeral `-i` vs persistent cards, the `gflow instructions` CRUD surface with the single generic `--ref` (image **or** character), and the 3-layer pipeline | Working on `-i`/agent instructions, the `gflow instructions` group, or understanding how the project brief anchors generations |
44
+ | **[docs/MCP.md](MCP.md)** | MCP server: `gflow mcp run` (stdio) + `gflow serve` (Streamable HTTP, SSE deprecated), the tools/prompts/resources surface, the CLI↔MCP parity contract (AGENTS.md "MCP & CLI Schema Symmetry", enforced by `tests/mcp/test_cli_parity.py`), security model, client setup | Configuring an MCP client, working on `gflow_cli.mcp`, or debugging the stdio/HTTP transports |
45
+ | **[docs/PROMPT_EXPANSION.md](PROMPT_EXPANSION.md)** | The `creative-director` tool: 5-component formula, 15 domain styles, banned-keyword policy, Gemini endpoint + I/O, never-fatal contract, `expanded_prompt` + `metadata_json.tool` provenance/redaction, config | Using or debugging `--tool creative-director`, editing the tool TOML, or auditing recorded prompt provenance |
46
+ | **[docs/IMAGE_UPSCALE_RECON.md](IMAGE_UPSCALE_RECON.md)** | `gflow image upscale` wire protocol: `upsampleImage` endpoint, full clientContext (projectId/sessionId/tool/userPaygateTier), reCAPTCHA action `IMAGE_GENERATION`, inline base64 response, 4K Ultra-gating, REST-is-dead proof | Working on `gflow image upscale`, debugging the 403/reCAPTCHA path, or understanding Flow's image-upscale wire protocol (#171) |
47
+ | **[docs/AGENT_UI_RECON.md](AGENT_UI_RECON.md)** | Agentic Flow UI cohort: classic-vs-agentic DOM signature, server-side + volatile (flapping) A/B gating (no client-readable flag), why `_exit_agent_mode` fails, runtime-DOM-detection recommendation | Touching `_exit_agent_mode` / composer mode-switch, diagnosing exit 23 selector drift, or understanding Flow's agentic-UI A/B (#183/#174) |
48
+ | **[docs/ASSET_TAGGING_RECON.md](ASSET_TAGGING_RECON.md)** | `@`-mention asset tagging research & integration design: what Flow's `@CharacterName`/`@me`/`@ingredient` tags are, how they map onto the already-verified `referenceEntities`/`referenceImages` wire, the H1-vs-H2 serialization hypothesis, the CLI-side mention-resolver proposal, and the pre-implementation capture spike plan | Working on inline `@` mentions in prompts, `video --character` reuse, or planning the mention-capture spike |
49
+ | **[tasks/lessons.md](../tasks/lessons.md)** | Running notebook of patterns + reviewer findings, dated and traced to commits | Starting a new phase; debugging "why did the council flag this?" |
50
+ | **[skills/README.md](../skills/README.md)** | Installable agent skill docs (gflow-cli, predict, pr-council-review, scenario) — cross-tool portable Markdown consumed by Claude Code, Cursor, Codex, Antigravity, Aider, etc. | Any agent wanting to use gflow-cli correctly |
51
+ | **[scripts/dev/skillopt/README.md](../scripts/dev/skillopt/README.md)** | SkillOpt mock harness — rollout→score loop for measuring and improving skill doc accuracy across multiple LLM providers | Measuring a skill edit's impact; comparing Claude vs GPT-4o vs Gemini on gflow tasks |
52
+ | **[scripts/diag/README.md](../scripts/diag/README.md)** | Diagnostic investigation scripts — run against a live authenticated profile to capture wire samples, measure Chrome memory, or mint reCAPTCHA tokens | Running a one-off investigation against a live Flow session; establishing baseline measurements for issue #155 |
53
+ | [docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md](superpowers/specs/2026-07-04-pr-triage-autopilot-design.md) | PR-triage autopilot design spec: Stage 0/1 gate, Docker sandboxing, Telegram and audit ledger | Reviewing or auditing the automated PR-triage setup |
54
+ | [docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md](superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md) | Implementation plan for the PR-Triage Autopilot | Tracking task-by-task execution |
55
+ | [docs/superpowers/specs/2026-07-18-asset-tagging-design.md](superpowers/specs/2026-07-18-asset-tagging-design.md) | Asset-tagging (`@`-mention) design spec: mention grammar, resolution contract, Option-B architecture, error taxonomy, spike gate | Reviewing or implementing the `@`-mention feature |
56
+ | [docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md](superpowers/plans/2026-07-18-asset-tagging/PLAN.md) | Task-by-task implementation plan for asset tagging (spike gate → resolver → CLI/MCP → live e2e) | Tracking task-by-task execution of the `@`-mention feature |
57
+ | [docs/superpowers/specs/2026-07-19-live-verify-design.md](superpowers/specs/2026-07-19-live-verify-design.md) | `/gflow:live-verify` design spec: pre-flight state check + per-feature live-verification gate generalizing release step 4b, council-reviewed | Reviewing or implementing the live-verification enforcement skill |
58
+ | [docs/superpowers/plans/2026-07-19-live-verify/PLAN.md](superpowers/plans/2026-07-19-live-verify/PLAN.md) | Task-by-task implementation plan for `/gflow:live-verify` (skill file → AGENTS.md/check.md wiring → INDEX row) | Tracking task-by-task execution of the live-verify skill |
59
+ | [docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md](superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md) | Edge-case matrix for replacing fixed chain/movie credit estimates with truthful pending-operation guidance | Reviewing the financial-safety, resume, dry-run, and compatibility scenarios |
60
+ | [docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md](superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md) | TDD implementation plan for tier-aware chain/movie planning and confirmation output | Tracking the isolated runtime pricing-guidance bugfix |
61
+
62
+ ## Agent commands
63
+
64
+ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixed `/gflow:` to signal project scope and avoid colliding with Claude Code built-ins or user-global commands.
65
+
66
+ | Command | Purpose | Call when… |
67
+ |---|---|---|
68
+ | `/gflow:check` | Hygiene + auto-fix lint/format + type/test report | Before every commit |
69
+ | `/gflow:status [feature]` | Full state: active plan, progress, next unchecked task | Starting a session; after completing a task |
70
+ | `/gflow:next [feature]` | Next unchecked task only — no context noise | Quick "what do I do right now?" |
71
+ | `/gflow:active` | Which plan is active and its goal — no task detail | Before predict/scenario; quick orientation |
72
+ | `/gflow:plan <feature>` | Create a task-by-task implementation plan → writes `docs/superpowers/plans/` | After predict GO/CAUTION; when a backlog item needs a concrete breakdown |
73
+ | `/gflow:known-issues` | Surface open and mitigated issues | Before touching auth, reCAPTCHA, or previously-flagged code |
74
+ | `/gflow:changelog` | Show `[Unreleased]` entries + last tagged release | Need a quick picture of recent work |
75
+ | `/gflow:release` | Full release flow (calls `/gflow:changelog` + `/gflow:check`) | Cutting a new version |
76
+ | `/gflow:predict <proposal>` | 5-persona pre-implementation analysis → GO / CAUTION / STOP | Before any high-stakes design decision (new transport, auth change, selector redesign, schema migration) |
77
+ | `/gflow:scenario <feature>` | 12-dimension edge-case explorer → severity-ranked scenario table + BDD skeleton | After predict GO/CAUTION; before `/gflow:plan` |
78
+ | `/gflow:pr-council-review [PR#]` | Multi-dimensional council review of an open PR (5 baseline + adaptive dimensions) | Before merging any non-trivial PR; mandatory for auth/transport/data changes |
79
+ | `/gflow:branch-review` | Same council review run against the current local feature branch (no PR needed) | Pre-PR self-audit; after predict/scenario on a high-stakes branch |
80
+ | `/gflow:llm-council [PR#\|--base <ref>] [--tier small\|medium\|high]` | Wraps `pr-council-review` with external CLI reviewers (`codex` + Antigravity `agy`) for cross-model corroboration | High-stakes reviews where a same-model-family blind spot is a real risk |
81
+ | `/gflow:doc-review` | Systematic council-driven audit of documentation completeness and drift | Before cutting a release; after major documentation changes |
82
+
83
+ **Governance:** commands are executable docs — they decay like any doc. When a phase advances or a file path changes, update the relevant command in the same commit. `/gflow:release` includes a staleness review step.
84
+
85
+ ## Topic shortcuts
86
+
87
+ **"What's the governance flow, and which paths require predict/council?"** → [AGENT_GUIDE § Governance & Enforcement](AGENT_GUIDE.md#governance--enforcement)
88
+ **"Why did the materiality advisory flag my PR?"** → [AGENT_GUIDE § Materiality coverage](AGENT_GUIDE.md#materiality-coverage-path--recommended-gate)
89
+ **"I just installed gflow — how do I get to my first video?"** → [USER_GUIDE § Journey 1](USER_GUIDE.md#journey-1--first-time-setup-10-minutes)
90
+ **"How do I render 20 clips overnight?"** → [USER_GUIDE § Journey 3](USER_GUIDE.md#journey-3--batch-video-from-a-prompt-list-shell-loop)
91
+ **"How much will this batch cost me in Veo credits?"** → [USER_GUIDE § Journey 10](USER_GUIDE.md#journey-10--budgeting-credits-before-a-batch-run)
92
+ **"How do I feed gflow outputs into ffmpeg / a pipeline?"** → [USER_GUIDE § Journey 11](USER_GUIDE.md#journey-11--wiring-gflow-outputs-into-a-downstream-pipeline)
93
+ **"How do I chain clips into one continuous video (initial-frame I2V)?"** → [USAGE § `gflow video chain`](USAGE.md#gflow-video-chain)
94
+ **"How do I stitch existing clips into one extended .mp4 (credit-free, no ffmpeg)?"** → [USAGE § `gflow scene`](USAGE.md#gflow-scene)
95
+ **"How do I create a reusable character (face + body) I can reuse across generations?"** → [USAGE § `gflow character`](USAGE.md#gflow-character) · design: [CHARACTER](CHARACTER.md)
96
+ **"Should I use an `@mention`, `--reference-entity`, or `--ref` to tag an asset?"** → [REFERENCE_STRATEGIES](REFERENCE_STRATEGIES.md) — saved named identity → `@Name`/`--reference-entity`; one-off image → `--ref`
97
+ **"How does Flow's media library / picker actually behave (names, tabs, scrolling, listing)?"** → [MEDIA_LIBRARY](MEDIA_LIBRARY.md) — identity = UUID, names are async AI captions; grid is virtualized; full pitfall table
98
+ **"How do I turn a terse prompt into a vivid one before generating?"** → `--tool creative-director:style=cinema` on any generation command — see [PROMPT_EXPANSION](PROMPT_EXPANSION.md) · framework: [TOOLS](TOOLS.md)
99
+ **"What tools are available and what styles do they support?"** → run `gflow tools list` / `gflow tools show creative-director` — see [TOOLS](TOOLS.md)
100
+ **"How do I make Flow's agent follow a style/reference across a project's generations?"** → agent instruction cards — ephemeral `-i "text"` (shipped) or the persistent `gflow instructions` group with a generic `--ref` (image or character), see [INSTRUCTIONS](INSTRUCTIONS.md)
101
+ **"What preset voices can a character use?"** → run `gflow character voices` — see [USAGE § `gflow character voices`](USAGE.md#gflow-character-voices)
102
+ **"My batch run died with exit code 3 (auth) — what now?"** → [USER_GUIDE § Journey 7](USER_GUIDE.md#journey-7--recovering-from-an-authexpirederror-mid-run)
103
+ **"Exit code 4 (rate-limit) or 5 (content-policy) — how do I recover?"** → [USER_GUIDE § Journey 12](USER_GUIDE.md#journey-12--recovering-from-contentpolicyerror-or-ratelimiterror)
104
+ **"How do I read the structured log (`error_raised` events)?"** → [USER_GUIDE § Journey 6](USER_GUIDE.md#journey-6--reading-structured-logs-jq-recipes)
105
+ **"What exit code does shell branching see for each error class?"** → [USAGE § Exit codes](USAGE.md#exit-codes)
106
+ **"Is `v0.5.0a1` a prerelease, and how do I cut a full release?"** → [RELEASE § Prerelease Versus Full Release](../RELEASE.md#prerelease-versus-full-release)
107
+ **"Where is my session stored?"** → [AUTHENTICATION § Session storage](AUTHENTICATION.md#session-storage)
108
+ **"Where do generated files land?"** → [CONFIGURATION § Output paths](CONFIGURATION.md#output-paths)
109
+ **"How do I write outputs to S3, MinIO, or Google Cloud Storage?"** → [EXTERNAL_STORAGE](EXTERNAL_STORAGE.md) and [CONFIGURATION § `GFLOW_CLI_STORAGE_URI`](CONFIGURATION.md#gflow_cli_storage_uri)
110
+ **"How do I run with multiple Google accounts?"** → [AUTHENTICATION § Multiple accounts](AUTHENTICATION.md#multiple-accounts)
111
+ **"How do I know which Google account a profile is signed into?"** → [AUTHENTICATION § gflow auth list](AUTHENTICATION.md#gflow-auth-list)
112
+ **"Why is my profile named 'default' and how do I rename it?"** → [AUTHENTICATION § Profile naming](AUTHENTICATION.md#profile-naming)
113
+ **"How does login verification work without launching a browser?"** → [AUTHENTICATION § Session verification](AUTHENTICATION.md#session-verification-cookie-store-fast-path) (cookie-store fast path, v0.17.0)
114
+ **"How does the layered structure work?"** → [ARCHITECTURE § Layers](ARCHITECTURE.md#layers)
115
+ **"What env var should I set for X?"** → [CONFIGURATION § Reference](CONFIGURATION.md#reference)
116
+ **"What does gflow remember after a generation finishes?"** → [DATA_LAYER § What is recorded](DATA_LAYER.md#what-is-recorded)
117
+ **"How do I see what's in my gflow catalog?"** → run `gflow data list projects` (or `images` / `videos` / `profiles`) — see [DATA_LAYER § Querying the data layer](DATA_LAYER.md#querying-the-data-layer)
118
+ **"Where can I look up a media ID I generated yesterday?"** → [DATA_LAYER § Querying the data layer](DATA_LAYER.md#querying-the-data-layer)
119
+ **"How do I stop gflow from storing my prompts?"** → [DATA_LAYER § Privacy and redaction](DATA_LAYER.md#privacy-and-redaction)
120
+ **"What does exit code 16 mean and how do I recover?"** → [DATA_LAYER § Persistence-failure handling](DATA_LAYER.md#persistence-failure-handling)
121
+ **"Is my install/catalog healthy?"** → run `gflow doctor` (read-only, never migrates; exit 33 = findings present) — see [USAGE § `gflow doctor`](USAGE.md#gflow-doctor)
122
+ **"My old assets re-upload / have no names?"** → run `gflow data sync --names` (credit-free name backfill from Flow's listing) — see [USAGE § `gflow data sync`](USAGE.md#gflow-data-sync)
123
+ **"How do I use this project's skills in Cursor / Codex / Antigravity / Aider?"** → [skills/README.md](../skills/README.md#use-with-other-agents)
124
+ **"How do I benchmark a skill doc against real tasks?"** → [scripts/dev/skillopt/README.md](../scripts/dev/skillopt/README.md)
125
+ **"How do I compare Claude vs GPT-4o vs Gemini on gflow tasks?"** → `python scripts/dev/skillopt/harness.py --provider openai --model gpt-4o` (see [skillopt README](../scripts/dev/skillopt/README.md))
126
+ **"What does Chrome actually use in RAM during a generation?"** → run `uv run python scripts/diag/memory_profile.py --profile NAME` (see [scripts/diag/README.md](../scripts/diag/README.md))
127
+ **"How do I report a security issue?"** → [SECURITY § Reporting](SECURITY.md#reporting)
128
+ **"What branch do I work on? How do I name it?"** → [DEVELOPMENT § Branching model](DEVELOPMENT.md#branching-model)
129
+ **"How do I handle an external GitHub PR?"** → [GITHUB § Scenario Matrix](GITHUB.md#scenario-matrix)
130
+ **"What automation runs on external PRs?"** → [GITHUB § Automated External PR Triage](GITHUB.md#automated-external-pr-triage)
131
+ **"How do we use Copilot review on PRs?"** → [GITHUB § GitHub Copilot Code Review](GITHUB.md#github-copilot-code-review)
132
+ **"Why did SonarCloud skip or fail on a forked PR?"** → [GITHUB § Forked PRs And SonarCloud](GITHUB.md#forked-prs-and-sonarcloud)
133
+ **"How do I run e2e tests before a release?"** → [DEVELOPMENT § E2e gate](DEVELOPMENT.md#e2e-gate-before-merging-develop--main)
134
+ **"What does each e2e marker cost? How do I run only the cheap tests?"** → [E2E_TESTING § Run commands](E2E_TESTING.md#run-commands)
135
+ **"When does the version get bumped?"** → [DEVELOPMENT § Version bump protocol](DEVELOPMENT.md#version-bump-protocol)
136
+ **"How do I embed FlowApiClient in a long-lived worker / service?"** → [USER_GUIDE § Journey 14](USER_GUIDE.md#journey-14--embedding-flowapiclient-in-a-long-lived-worker)
137
+ **"What's the standard way to import gflow errors in my code?"** → [USAGE § Programmatic use](USAGE.md#programmatic-use)
138
+ **"gflow refuses to open my profile after a downgrade (exit 11, 'written by a newer Chromium')"** → [AUTHENTICATION § Chromium downgrade guard](AUTHENTICATION.md#chromium-downgrade-guard)
139
+ **"Two gflow runs on the same profile — can the second one wait instead of failing (exit 11)?"** → [CONFIGURATION § GFLOW_CLI_LEASE_WAIT_SECONDS](CONFIGURATION.md#gflow_cli_lease_wait_seconds) (v0.56.0 opt-in bounded wait)
140
+ **"How do I silence the 'newer version on PyPI' stderr notice?"** → [CONFIGURATION § GFLOW_CLI_UPDATE_CHECK](CONFIGURATION.md#gflow_cli_update_check) (`0` disables; auto-skipped in CI and for editable installs)
141
+ **"How do I run the MCP server so an agent can't spend credits?"** → [CONFIGURATION § GFLOW_MCP_NO_SPEND](CONFIGURATION.md#gflow_mcp_no_spend) + [MCP § Option A2](MCP.md#option-a2-read-only-server) (`gflow mcp run --no-spend` / `GFLOW_MCP_NO_SPEND=1`; v0.57.0 — both generate tools go unregistered, not merely refused)
142
+ **"Which Flow UI arm does a video run require, and why did it exit 2 or 28?"** → [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode) (v0.57.0 — video is classic-only: `auto` ≡ `classic`, explicit `agentic` exits 2, unreachable classic aborts pre-submit with exit 28, $0)
143
+ **"A gflow command hangs / fails — where do I start?"** → [DEBUGGING § Quick reference](DEBUGGING.md#quick-reference)
144
+ **"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
145
+ **"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
146
+ **"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
147
+ **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.59.0](LIVE_VERIFICATION_v0.59.0.md) (**#542 doctor + #543 data sync + #546 refresh-on-miss, verified 2026-08-16 on profile `denon82`, ~4 Imagen credits** — doctor offline-verified (byte-identical never-writes proof); sync live-verified by a zero-credit e2e AND a real 117-project backfill (398 nameless rows → 338 named / 57 tombstoned / 0 failures); refresh-on-miss live-healed a deliberately-corrupted catalog name mid-generation via picker attach with `sync.source=refresh`); previously: [LIVE_VERIFICATION_v0.58.0](LIVE_VERIFICATION_v0.58.0.md) (**#529 catalog-UUID→displayName picker contract + r2v named-reference fixes, verified 2026-08-15/16 on profile `denon82` (pt-BR) via four committed e2e tests, ~7 Imagen + 1 veo-lite generation** — same-project exact-UUID tile attach, cross-project verified upload fallback, loud abort on unresolvable UUIDs, and a real r2v video generated from a catalog name; the r2v e2e caught and fixed two live UI drifts: the picker exposes no accessible tree so tiles are now text-matched, and a tile click attaches directly with the include button demoted to legacy fallback); previously: [LIVE_VERIFICATION_v0.57.1](LIVE_VERIFICATION_v0.57.1.md) (**#493 and #451/#288 root-caused and fixed from live evidence, verified 2026-08-14 on profile `denon82` (pt-BR — the #493 reporter's locale), ZERO credits** — #493 was NOT an unrecognized "third editor variant": "Inicial"/"Final" are the Frames sub-mode's Start/End slots and the "Agente" pill is the ordinary Agent button, both stock classic features. The real trigger is Flow's **expanded chat sidebar**, which removes the classic composer entirely [`crop_* = 0` AND `Agent pill = 0` simultaneously] — one state producing both reported symptoms, and the reason the failure was exit 23 rather than the retryable 25 [no agentic indicator on screen, so the cohort detector matched nothing]. Recovery hinged on a close button scoped to the sidebar's `edit_square` affordance, a single point of failure for any cohort lacking that ligature; an unscoped fallback now fires only from the demonstrably stuck state, **A/B-proven three ways** [scoped broken + fallback present → rescued; both broken → NOT recovered, which is what proves the fallback rescues rather than the surrounding loop]. #451/#288 were never selector drift either — Flow's settings popover is **model-conditional**, only `omni-flash` renders a duration row, so `--duration` on a Veo model hunted a control that is never drawn [verified on 2 accounts × 2 locales]; it now exits 2 before any browser work. Two #493 hypotheses were tested and **refuted** first and are committed so they are not re-derived [a `crop_free` sub-mode trigger — the trigger reflects the *aspect*, not the sub-mode; and a hydration race — a wait was written, A/B-neutered, and cold loads passed 3/3 BOTH ways, so it was reverted rather than shipped]. Recorded not-verified: the `veo_3_1_lite_lower_priority` picker miss is **inconclusive** [the capture came after the menu closed] so that selector was deliberately left untouched, and `chain.py`'s per-link duration aborts mid-run after billing — deferred with the finding recorded). Prior: [LIVE_VERIFICATION_v0.57.0](LIVE_VERIFICATION_v0.57.0.md) (**#299 video UI-mode policy + the #496/#497/#498/#501 MCP wave live-verified 2026-08-14 on profile `ffroliva`, ZERO credits** — three real video-editor loads bound the classic driver through `get_ui_driver` [`ui_driver.bound mode=classic`, 1.2–1.7 s, aborted pre-submit], `--ui-mode agentic` is refused with **exit 2 before any browser launch** [deliberately not exit 28, whose "retry may land it" hint would mislead for a driver that does not exist], and a real-editor classic→agent→classic round-trip proved `ensure_agent_mode`'s aria-verified real click [`{"agent_acted":true,"after_agent":"agent","after_media":"media"}`]; the MCP surfaces were driven over the **real stdio JSON-RPC wire** [subprocess `gflow mcp run`, so registration *and* stream routing are covered]: `--no-spend` cut `tools/list` from 11 tools to 9 with both generate tools genuinely unregistered rather than refused, zero-arg `gflow_auth_status` returned `authenticated` off a live `GET /fx/api/auth/session` **200**, `gflow_list_projects` returned **different project IDs** on offset 0 vs offset 2 [proving the offset is honored — catalogs larger than `limit` were previously unreachable] with `limit=0`→1 and `offset=-5`→0 clamps holding, and the known-issues resource served a **7,543-byte index** against a ~70 KB source file with a **111-byte** capped unknown-slug reply. The #498 rate-limited problem-details envelope is recorded **not live-verified with reason** — exhausting the token bucket needs ≥9 accepted generate calls, so the error path cannot be reached credit-free; it is unit-pinned for both tools instead). Prior: [LIVE_VERIFICATION_v0.56.0](LIVE_VERIFICATION_v0.56.0.md) (**#477 downgrade guard, #478 bounded lease wait, and the #493 mode-switch path live-verified 2026-08-13 on profile `denon82`, images only** — a fresh-project 16:9 `t2i` exercised the #493-touched mode-switch path end-to-end [valid `ff d8` JPEG 1376×768, `image_mode_entered` → `batch_response_captured`]; the #477 guard refused a scratch profile claiming Chromium 999 with **exit 11 pre-auth, pre-credits** at the generation-client call site; #478 was proven with three concurrent runs — `WAIT=0` control failed fast with `ProfileLockedError` exit 11 while the holder held, and the `WAIT=180` waiter polled ~11 s past the holder's natural release then generated successfully; the #493 drift branch itself is a named skip [only an affected account's new-editor cohort can reach it — the fix's message text is unit-pinned], and #479's update notice is deferred-with-reason to a post-release check [it needs a published newer version on PyPI and skips editable installs by design]; an expired denon82 session 401'd the first two attempts [external state, re-login fixed it, recorded not omitted]). Prior: [LIVE_VERIFICATION_v0.55.0](LIVE_VERIFICATION_v0.55.0.md) (**Tier-1 quick wins #471–#476 verified 2026-08-13 on profile `ffroliva`, ZERO credits** — `gflow auth status` probed the real Flow session endpoint live [`Flow session verified as ffroliva@gmail.com.`, exit 0, fail-closed contract pinned]; `gflow mcp setup` ran end-to-end with the real CLI against a scratch copy of the real Claude Desktop config [correct merged entry, pristine original]; the Windows profile-DACL two-step `icacls` idiom was derived empirically [the naive `/t` form broke file access] and is pinned by a real-icacls round-trip test on every Windows host; the incident bug-report template, MCP error funnel [all 11 tools guarded, raw exception text masked], and SecretStr settings are suite-verified with no live-Flow surface — reasons recorded, not omitted). Prior: [LIVE_VERIFICATION_v0.54.0](LIVE_VERIFICATION_v0.54.0.md) (**close-browser guidance #470, character-composer focus fix, overlay/jitter hardening, and SonarCloud-S2245 RNG swap live-verified 2026-08-12 on profile `ffroliva`, ZERO credits** — the new #470 login wording printed verbatim and the manual-close → `auth_flow_session_verified` round-trip worked end-to-end; a Classic-UI `t2i` produced a real 1024×1024 JPEG [`ff d8 ff e0`] exercising overlay dismissal + jitter + image-composer submit + mode controller, and a credit-free `character create` [entity `da3cd647…`, face 1376×768 JPEG] exercised the character-composer path directly [`entering_character_editor` → `prompt_submitted` → `entity_patched` → `completed`]; the first `t2i` hit the known agentic-cohort video-for-image condition [correctly refused via `WireFormatError`, tracked by #299, not a regression] and Classic UI worked around it. First mainline release after the orphaned v0.53.0/v0.53.1 tags — CHANGELOG restores honest 0.53.x sections). Prior: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
148
+ **"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
149
+ **"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
150
+ **"What was live-verified for the data layer (PR #58)?"** → [LIVE_VERIFICATION_data_layer](LIVE_VERIFICATION_data_layer.md) — 1 Imagen + 1 Veo credit on denon82, 6-layer ledger (file + magic + Pillow + DB rows + CLI round-trip + structlog)
151
+ **"What was live-verified for the video-download feature (#29)?"** → [LIVE_VERIFICATION_video_download](LIVE_VERIFICATION_video_download.md)
152
+ **"What is the jitter matrix evidence for `gflow image batch`?"** → [`LIVE_VERIFICATION_image_batch.md`](LIVE_VERIFICATION_image_batch.md) — jitter matrix evidence for `gflow image batch` (always-same-project mode)
153
+
154
+ ## Documentation governance
155
+
156
+ - `README.md` is for first-time visitors. Keep it under ~400 lines. Anything longer belongs in `docs/`.
157
+ - Every new behaviour or env var needs a row in this index AND a section in the relevant `docs/*.md`.
158
+ - Cross-link generously. Use markdown link syntax with an anchor wherever a reader might need to jump deeper — they should never get stuck.
159
+ - Keep file size sane. If `docs/USAGE.md` grows past ~600 lines, split into `docs/USAGE/<topic>.md`.
@@ -89,5 +89,8 @@ the caption asynchronously, so a fresh generation may record without a
89
89
 
90
90
  ## Post-tag evidence
91
91
 
92
- _To be filled after the v0.58.0 tag publishes: release workflow run link, PyPI
93
- listing, and `pipx install gflow-cli==0.58.0` smoke check._
92
+ - Release workflow: [run 31934310984](https://github.com/ffroliva/gflow-cli/actions/runs/31934310984)
93
+ — **success**, digital attestations generated and uploaded.
94
+ - GitHub Release: `v0.58.0` published 2026-08-16T07:37:15Z, stable (not draft,
95
+ not prerelease).
96
+ - PyPI: `gflow-cli` latest = **0.58.0** (JSON API confirmed post-publish).
@@ -0,0 +1,66 @@
1
+ # Live verification — v0.59.0
2
+
3
+ > Hand-run against real Flow on Windows 11, profile `denon82` (chrome strategy,
4
+ > pt-BR), 2026-08-16, during Phase D/S/R development on
5
+ > `feature/542-546-doctor-sync-refresh`. Doctor is offline (unit fixtures are
6
+ > its evidence); sync and refresh-on-miss were live-verified end to end.
7
+ > Credits spent: ~4 Imagen (two seed/heal pairs across refresh-on-miss e2e
8
+ > runs); sync verification was **zero-credit** (listing endpoint only).
9
+
10
+ ## Environment
11
+
12
+ | | |
13
+ |---|---|
14
+ | Branch | `feature/542-546-doctor-sync-refresh` (off `develop` @ v0.58.0) |
15
+ | Profile | `denon82` (pt-BR) |
16
+ | Date | 2026-08-16 |
17
+ | OS | Windows 11 |
18
+ | Credits spent | ~4 Imagen + 0 Veo |
19
+
20
+ ## Pre-tag gates
21
+
22
+ - Full four-dir suite on the finished tree: **2,088+ passed** (tests/cli,
23
+ tests/api, tests/services, tests/data, tests/mcp), `pyright src` 0 errors,
24
+ ruff clean, all doc gates green (mirror `--check`, links, PII, hygiene).
25
+ - Every task shipped through the subagent implement → spec-review →
26
+ quality-review loop (14 plan tasks + S6b hardening + 3 review-fix commits);
27
+ two live-caught bugs fixed with red-first regression tests (sqlite
28
+ cross-thread store open; MagicMock project-id leak past an `is None` guard).
29
+
30
+ ## Matrix
31
+
32
+ | # | Feature | Verification | Result |
33
+ |---|---|---|---|
34
+ | 1 | `gflow doctor` (#542) | Offline by design — 33 unit tests over migration-built fixture DBs incl. the byte-identical never-writes proof; real-output smoke run during review (grouped report, caveat, exit 33) | ✅ |
35
+ | 2 | `gflow data sync --names` (#543) e2e | `tests/e2e/test_data_sync_names_e2e.py` (zero credits): seeded name-stripped rows + fabricated ghost against a real project → names restored with `sync.named_at`/`sync.source="sync"`, ghost tombstoned `missing_remote`, idempotent re-run byte-identical | ✅ 1 passed, 9.7 s |
36
+ | 3 | Sync at real scale | **Real catalog backfill**: 117 projects swept in ~4 min, zero failures — 398 nameless rows → **338 named, 57 tombstoned, 3 left** (async captions; retry harmlessly). Dry-run first (50 projects, counts matched) | ✅ |
37
+ | 4† | Refresh-on-miss (#546) e2e | `tests/e2e/test_refresh_on_miss_e2e.py` (~2 credits/run): seed t2i → catalog name deliberately corrupted (simulated rename) → same-project `i2i --ref` → picker miss → resolver fetched the true caption mid-generation → `image_ref_selected_existing`, no upload fallback, no `name_resolver_failed`, catalog healed with `sync.source="refresh"` | ✅ 1 passed, 100 s (first attempt failed on transient live-Flow timing; clean pass on re-run) |
38
+
39
+ † i2v frame refresh shares the same `_select_existing_asset` path; live-covered
40
+ via i2i, i2v plumbing unit-tested.
41
+
42
+ ## 5-layer ledger (refresh-on-miss, the deepest chain)
43
+
44
+ 1. **File count** — one generated image from the heal run in the isolated out dir.
45
+ 2. **Magic bytes / artifact** — generation completed through the normal
46
+ download path (exit 0, `--json` payload with `ref_count == 1`).
47
+ 3. **Shape** — `image_ref_selected_existing` with `resolved_by=display_name`
48
+ after a first-search miss on the corrupted name.
49
+ 4. **Structlog invariants** — no `image_ref_upload_fallback`, no
50
+ `name_resolver_failed`; healed row carries `display_name == real Flow
51
+ caption` + `sync.source == "refresh"`.
52
+ 5. **User-confirmable artifact** — the referenced asset and the new generation
53
+ are visible in the `denon82` Flow project.
54
+
55
+ ## Known live behaviors recorded
56
+
57
+ - Flow captions remain async: 3 real catalog rows stayed nameless after the
58
+ full backfill — expected; they re-enter the next sweep.
59
+ - One transient heal-run failure on live Flow (timing); deterministic on
60
+ re-run. The e2e's seed retry (2 attempts) covers the caption race; the heal
61
+ step has no retry by design — a rerun is the operator remedy.
62
+
63
+ ## Post-tag evidence
64
+
65
+ _To be filled after the v0.59.0 tag publishes: release workflow run link, PyPI
66
+ listing._