gflow-cli 0.41.0__tar.gz → 0.42.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 (639) hide show
  1. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/llm-council.md +3 -3
  2. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/AGENTS.md +3 -3
  3. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CHANGELOG.md +58 -1
  4. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CLAUDE.md +1 -1
  5. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/KNOWN_ISSUES.md +23 -17
  6. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/PKG-INFO +2 -2
  7. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/PLAN.md +1 -1
  8. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/README.md +1 -1
  9. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AGENT_GUIDE.md +1 -1
  10. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/INDEX.md +5 -5
  11. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +63 -8
  12. gflow_cli-0.42.0/docs/LIVE_VERIFICATION_v0.41.0.md +57 -0
  13. gflow_cli-0.42.0/docs/LIVE_VERIFICATION_v0.42.0.md +30 -0
  14. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/MCP.md +1 -1
  15. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/PROJECT_STATUS.md +3 -3
  16. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +1 -1
  17. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/llms.txt +1 -1
  18. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/pyproject.toml +1 -1
  19. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_materiality.py +1 -1
  20. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_repo_hygiene.py +0 -1
  21. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/README.md +2 -2
  22. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/llm-council/SKILL.md +8 -11
  23. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/plan/SKILL.md +1 -1
  24. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/pr-council-review/SKILL.md +2 -2
  25. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/status/SKILL.md +1 -1
  26. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/__init__.py +1 -1
  27. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/client.py +76 -4
  28. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/errors.py +21 -9
  29. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/observability.py +6 -5
  30. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/worker/queue.py +0 -25
  31. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tasks/lessons.md +1 -1
  32. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_video.py +10 -0
  33. gflow_cli-0.42.0/tests/e2e/test_cancellation_e2e.py +152 -0
  34. gflow_cli-0.42.0/tests/e2e/test_crash_recovery_e2e.py +189 -0
  35. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_documentation_gate.py +5 -4
  36. gflow_cli-0.42.0/tests/test_errors_classification.py +157 -0
  37. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_daemon.py +0 -9
  38. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/uv.lock +1 -1
  39. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/AUTHENTICATION.md +14 -14
  40. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/CHARACTER.md +5 -5
  41. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/DATA_LAYER.md +2 -2
  42. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/KNOWN_ISSUES.md +11 -11
  43. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/MCP.md +1 -1
  44. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/SECURITY.md +4 -4
  45. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/USAGE.md +2 -2
  46. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/index.md +2 -2
  47. gflow_cli-0.42.0/website/docs/onboarding-mockup.html +738 -0
  48. gflow_cli-0.42.0/website/docs/onboarding.md +182 -0
  49. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/mkdocs.yml +1 -1
  50. gflow_cli-0.41.0/GEMINI.md +0 -37
  51. gflow_cli-0.41.0/tests/test_errors_403.py +0 -19
  52. gflow_cli-0.41.0/website/docs/quickstart.md +0 -63
  53. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/README.md +0 -0
  54. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/active.md +0 -0
  55. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/branch-review.md +0 -0
  56. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/changelog.md +0 -0
  57. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/check.md +0 -0
  58. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/doc-review.md +0 -0
  59. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  60. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  61. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/known-issues.md +0 -0
  62. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/live-verify.md +0 -0
  63. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/next.md +0 -0
  64. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/plan.md +0 -0
  65. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  66. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/predict.md +0 -0
  67. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/release.md +0 -0
  68. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/scenario.md +0 -0
  69. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/sonar.md +0 -0
  70. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/status.md +0 -0
  71. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.env.template +0 -0
  72. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.gitattributes +0 -0
  73. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/CODEOWNERS +0 -0
  74. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  75. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/copilot-instructions.md +0 -0
  76. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/dependabot.yml +0 -0
  77. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/ci.yml +0 -0
  78. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/external-pr-triage.yml +0 -0
  79. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/governance-advisory.yml +0 -0
  80. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/governance-benchmark.yml +0 -0
  81. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/main-base-guard.yml +0 -0
  82. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/pages.yml +0 -0
  83. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/release.yml +0 -0
  84. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.gitignore +0 -0
  85. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.gitleaks.toml +0 -0
  86. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.pre-commit-config.yaml +0 -0
  87. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.secrets.baseline +0 -0
  88. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CONFIGURATION.md +0 -0
  89. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CONTRIBUTING.md +0 -0
  90. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/DISCLAIMER.md +0 -0
  91. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/LICENSE +0 -0
  92. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/RELEASE.md +0 -0
  93. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/ROADMAP.md +0 -0
  94. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/conftest.py +0 -0
  95. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  96. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docker-compose.yml +0 -0
  97. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AGENT_UI_E2E.md +0 -0
  98. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AGENT_UI_RECON.md +0 -0
  99. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/ARCHITECTURE.md +0 -0
  100. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  101. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AUTHENTICATION.md +0 -0
  102. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/CHARACTER.md +0 -0
  103. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/CHARACTER_RECON.md +0 -0
  104. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/CONFIGURATION.md +0 -0
  105. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DATA_LAYER.md +0 -0
  106. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DEBUGGING.md +0 -0
  107. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DEMOS.md +0 -0
  108. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DEVELOPMENT.md +0 -0
  109. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/E2E_TESTING.md +0 -0
  110. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/EXTERNAL_STORAGE.md +0 -0
  111. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/GITHUB.md +0 -0
  112. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  113. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  114. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/INSTRUCTIONS.md +0 -0
  115. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  116. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  117. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  118. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  119. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  120. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  121. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  122. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  123. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  124. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  125. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  126. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  127. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  128. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  129. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  130. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  131. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  132. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  133. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  134. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  135. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  136. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  137. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  138. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  139. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  140. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  141. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  142. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  143. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  144. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  145. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  146. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  147. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  148. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  149. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  150. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  151. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  152. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  153. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  154. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  155. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/MOVIE.md +0 -0
  156. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/PROMPT_EXPANSION.md +0 -0
  157. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  158. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/SECURITY.md +0 -0
  159. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/TOOLS.md +0 -0
  160. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/USAGE.md +0 -0
  161. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/USER_GUIDE.md +0 -0
  162. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/assets/demo-split-pf.gif +0 -0
  163. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/assets/example-run.gif +0 -0
  164. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/assets/examples.webp +0 -0
  165. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/medium_tutorial.md +0 -0
  166. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/schemas/movie-handoff.schema.json +0 -0
  167. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/sonar-cleanup-tracker.md +0 -0
  168. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  169. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  170. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  171. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  172. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  173. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  174. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  175. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  176. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  177. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  178. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  179. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  180. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  181. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  182. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  183. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  184. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  185. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  186. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  187. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  188. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  189. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  190. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  191. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  192. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  193. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  194. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  195. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/eval/pr_triage_eval.py +0 -0
  196. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/eval/pr_triage_fixtures.json +0 -0
  197. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/README.md +0 -0
  198. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/batch_from_config.py +0 -0
  199. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/multi_prompt_t2i.py +0 -0
  200. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/sample_config.json +0 -0
  201. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/sample_prompts.txt +0 -0
  202. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/single_image_t2i.py +0 -0
  203. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/workflow_chain.py +0 -0
  204. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/index.html +0 -0
  205. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/README.md +0 -0
  206. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/01_upload_image.json +0 -0
  207. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  208. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  209. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/04_archive_workflow.json +0 -0
  210. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/05_createProject.json +0 -0
  211. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/06_batchGenerateImages.json +0 -0
  212. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  213. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  214. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  215. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  216. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  217. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/12_create_scene.json +0 -0
  218. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  219. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/14_get_scene_workflows.json +0 -0
  220. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  221. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/Dockerfile.triage +0 -0
  222. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/entrypoint.sh +0 -0
  223. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  224. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  225. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  226. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_doc_links.py +0 -0
  227. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_release_artifacts.py +0 -0
  228. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/debug_editor.py +0 -0
  229. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/debug_gen_settings.py +0 -0
  230. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/debug_settings.py +0 -0
  231. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/_recording_client.py +0 -0
  232. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/_spike_common.py +0 -0
  233. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/active_plan.py +0 -0
  234. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  235. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  236. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  237. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  238. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  239. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  240. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_locale_invariants.py +0 -0
  241. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  242. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/character_create_spike.py +0 -0
  243. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/character_create_spike_v2.py +0 -0
  244. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/dump_character_selectors.js +0 -0
  245. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/make_project.py +0 -0
  246. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/materiality_backtest.py +0 -0
  247. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/monitor_pr_38.py +0 -0
  248. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/patch_character.py +0 -0
  249. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/skillopt/README.md +0 -0
  250. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/skillopt/harness.py +0 -0
  251. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/skillopt/tasks.json +0 -0
  252. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/sonar-local-scan.sh +0 -0
  253. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  254. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  255. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  256. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  257. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  258. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  259. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  260. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  261. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  262. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  263. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  264. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  265. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  266. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  267. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  268. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  269. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  270. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  271. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_patch_entity.py +0 -0
  272. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_patchright.py +0 -0
  273. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/README.md +0 -0
  274. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/capture_flow_traffic.py +0 -0
  275. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/memory_profile.py +0 -0
  276. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/recaptcha_mint.py +0 -0
  277. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  278. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  279. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/record_demo.ps1 +0 -0
  280. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/smoke_image.py +0 -0
  281. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/smoke_video_editor.py +0 -0
  282. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/smoke_worker_style.py +0 -0
  283. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/spike_waf_camoufox.py +0 -0
  284. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/verify_chrome_auth_viability.py +0 -0
  285. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/changelog/SKILL.md +0 -0
  286. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/check/SKILL.md +0 -0
  287. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/doc-review/SKILL.md +0 -0
  288. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/gflow-cli/SKILL.md +0 -0
  289. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/issue-assessment/SKILL.md +0 -0
  290. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/issue-resolve/SKILL.md +0 -0
  291. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/known-issues/SKILL.md +0 -0
  292. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/live-verify/SKILL.md +0 -0
  293. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/predict/SKILL.md +0 -0
  294. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/release/SKILL.md +0 -0
  295. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/scenario/SKILL.md +0 -0
  296. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/sonar/SKILL.md +0 -0
  297. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/sonar-project.properties +0 -0
  298. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/__main__.py +0 -0
  299. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/_cli_helpers.py +0 -0
  300. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/__init__.py +0 -0
  301. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/_engine.py +0 -0
  302. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/_retry.py +0 -0
  303. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  304. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/character.py +0 -0
  305. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/dto.py +0 -0
  306. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/image.py +0 -0
  307. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/image_upscale.py +0 -0
  308. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/recaptcha.py +0 -0
  309. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/routes.py +0 -0
  310. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/scene.py +0 -0
  311. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  312. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/_common.py +0 -0
  313. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  314. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/base.py +0 -0
  315. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  316. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  317. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  318. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  319. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  320. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  321. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  322. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  323. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  324. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  325. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  326. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  327. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/video.py +0 -0
  328. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/__init__.py +0 -0
  329. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/base.py +0 -0
  330. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/cookies.py +0 -0
  331. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/factory.py +0 -0
  332. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  333. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  334. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/strategies.py +0 -0
  335. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/verification.py +0 -0
  336. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/browser_manager.py +0 -0
  337. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/chain.py +0 -0
  338. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/chain_manifest.py +0 -0
  339. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli.py +0 -0
  340. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_character.py +0 -0
  341. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_data.py +0 -0
  342. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_image.py +0 -0
  343. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_instructions.py +0 -0
  344. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_models.py +0 -0
  345. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_movie.py +0 -0
  346. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_run.py +0 -0
  347. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_scene.py +0 -0
  348. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_tools.py +0 -0
  349. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_video.py +0 -0
  350. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/composition.py +0 -0
  351. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/config.py +0 -0
  352. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/__init__.py +0 -0
  353. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/chain_repo.py +0 -0
  354. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  355. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  356. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  357. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  358. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  359. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  360. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  361. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  362. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  363. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  364. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/models.py +0 -0
  365. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/queries.py +0 -0
  366. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/recorder.py +0 -0
  367. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/redaction.py +0 -0
  368. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/repository.py +0 -0
  369. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/store.py +0 -0
  370. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/exceptions.py +0 -0
  371. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/image_batch.py +0 -0
  372. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/json_output.py +0 -0
  373. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/__init__.py +0 -0
  374. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/prompts.py +0 -0
  375. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/resources.py +0 -0
  376. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/server.py +0 -0
  377. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/tools.py +0 -0
  378. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/media.py +0 -0
  379. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/movie_manifest.py +0 -0
  380. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/paths.py +0 -0
  381. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/profile_lease.py +0 -0
  382. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/profile_store.py +0 -0
  383. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/services/__init__.py +0 -0
  384. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/services/character_create.py +0 -0
  385. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/services/mentions.py +0 -0
  386. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/storage.py +0 -0
  387. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/__init__.py +0 -0
  388. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/banned.py +0 -0
  389. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  390. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  391. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  392. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  393. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/expander.py +0 -0
  394. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/invocation.py +0 -0
  395. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/loader.py +0 -0
  396. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/registry.py +0 -0
  397. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/runtime.py +0 -0
  398. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/spec.py +0 -0
  399. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/ui/app.py +0 -0
  400. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/ui/server.py +0 -0
  401. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/worker/codec.py +0 -0
  402. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/worker/daemon.py +0 -0
  403. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/test_assets/sample_batch.json +0 -0
  404. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/test_assets/sample_batch.tsv +0 -0
  405. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/test_assets/sample_batch_invalid.tsv +0 -0
  406. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/__init__.py +0 -0
  407. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/__init__.py +0 -0
  408. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/fixtures/character_gen_response.json +0 -0
  409. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  410. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  411. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  412. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_bearer_redaction.py +0 -0
  413. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_character.py +0 -0
  414. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client.py +0 -0
  415. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_character.py +0 -0
  416. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_delete_characters.py +0 -0
  417. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_generate_character.py +0 -0
  418. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_image.py +0 -0
  419. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_launch_kwargs.py +0 -0
  420. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_patch_entity.py +0 -0
  421. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_scene.py +0 -0
  422. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_upscale.py +0 -0
  423. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_concurrency.py +0 -0
  424. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_dto.py +0 -0
  425. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_engine.py +0 -0
  426. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_image.py +0 -0
  427. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_image_dto.py +0 -0
  428. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_image_upscale.py +0 -0
  429. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  430. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_recaptcha.py +0 -0
  431. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_retry.py +0 -0
  432. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_routes.py +0 -0
  433. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_routes_character.py +0 -0
  434. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_routes_scene.py +0 -0
  435. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_sapisidhash_helper.py +0 -0
  436. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_scene_models.py +0 -0
  437. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_video_request.py +0 -0
  438. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/__init__.py +0 -0
  439. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/conftest.py +0 -0
  440. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/__init__.py +0 -0
  441. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  442. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_classic.py +0 -0
  443. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_factory.py +0 -0
  444. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  445. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_base.py +0 -0
  446. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_bearer.py +0 -0
  447. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_common.py +0 -0
  448. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  449. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_factory.py +0 -0
  450. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_fingerprint.py +0 -0
  451. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_mode_control.py +0 -0
  452. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_sapisidhash.py +0 -0
  453. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  454. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_transport_timeout.py +0 -0
  455. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation.py +0 -0
  456. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  457. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  458. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  459. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  460. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/strategies/test_factory.py +0 -0
  461. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/strategies/test_strategies.py +0 -0
  462. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/test_cookies.py +0 -0
  463. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/test_real_chrome.py +0 -0
  464. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/test_verification.py +0 -0
  465. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  466. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/__init__.py +0 -0
  467. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_auth_list.py +0 -0
  468. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_character.py +0 -0
  469. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_character_create.py +0 -0
  470. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_data.py +0 -0
  471. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_data_errors.py +0 -0
  472. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image.py +0 -0
  473. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  474. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  475. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image_upscale.py +0 -0
  476. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_instructions.py +0 -0
  477. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_models.py +0 -0
  478. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_movie.py +0 -0
  479. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_run.py +0 -0
  480. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_scene.py +0 -0
  481. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_tools.py +0 -0
  482. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_video.py +0 -0
  483. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_video_chain.py +0 -0
  484. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_error_handling.py +0 -0
  485. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_failure_funnel.py +0 -0
  486. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_helpers.py +0 -0
  487. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_movie_manifest.py +0 -0
  488. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  489. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_settings_validation.py +0 -0
  490. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  491. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_character.py +0 -0
  492. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_compose_prompt.py +0 -0
  493. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_handoff.py +0 -0
  494. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_style_variants.py +0 -0
  495. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_style_variants_e2e.py +0 -0
  496. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/conftest.py +0 -0
  497. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/__init__.py +0 -0
  498. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_chain_repo.py +0 -0
  499. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_failure_recording.py +0 -0
  500. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_find_incomplete_character.py +0 -0
  501. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_models.py +0 -0
  502. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_packaging.py +0 -0
  503. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_recorder.py +0 -0
  504. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_recorder_character.py +0 -0
  505. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_redaction.py +0 -0
  506. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_repository.py +0 -0
  507. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_scene_persistence.py +0 -0
  508. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_settings_and_errors.py +0 -0
  509. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_store_migrations.py +0 -0
  510. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/dev/test_recording_client.py +0 -0
  511. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/__init__.py +0 -0
  512. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/conftest.py +0 -0
  513. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  514. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  515. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  516. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  517. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_chain_e2e.py +0 -0
  518. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_character_create_e2e.py +0 -0
  519. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_daemon_e2e.py +0 -0
  520. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  521. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  522. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  523. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  524. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  525. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_json_output_e2e.py +0 -0
  526. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  527. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  528. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_scene_compose_live.py +0 -0
  529. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_tools_e2e.py +0 -0
  530. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_transports_e2e.py +0 -0
  531. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  532. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  533. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/__init__.py +0 -0
  534. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/asset_tagging.feature +0 -0
  535. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/auth.feature +0 -0
  536. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/auth_login.feature +0 -0
  537. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/character_create.feature +0 -0
  538. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/character_read.feature +0 -0
  539. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/conftest.py +0 -0
  540. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/image.feature +0 -0
  541. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/image_upscale.feature +0 -0
  542. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/instructions.feature +0 -0
  543. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/locale_picker_include.feature +0 -0
  544. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_asset_tagging_steps.py +0 -0
  545. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_auth_login_steps.py +0 -0
  546. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_auth_steps.py +0 -0
  547. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_character_create_steps.py +0 -0
  548. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_character_read_steps.py +0 -0
  549. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_image_steps.py +0 -0
  550. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_image_upscale_steps.py +0 -0
  551. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_instructions_steps.py +0 -0
  552. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  553. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_step_collision_guard.py +0 -0
  554. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  555. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_video_chain_steps.py +0 -0
  556. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/video_agent_ui.feature +0 -0
  557. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/video_chain.feature +0 -0
  558. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/fixtures/__init__.py +0 -0
  559. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/fixtures/seeded_catalog.py +0 -0
  560. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/__init__.py +0 -0
  561. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/test_image_manifest.py +0 -0
  562. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/test_jitter_config.py +0 -0
  563. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/test_observability_events.py +0 -0
  564. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/__init__.py +0 -0
  565. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/conftest.py +0 -0
  566. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/constants.py +0 -0
  567. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/test_storage_gcs.py +0 -0
  568. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/test_storage_s3.py +0 -0
  569. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/__init__.py +0 -0
  570. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/conftest.py +0 -0
  571. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_cli_parity.py +0 -0
  572. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_server.py +0 -0
  573. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_stdio_transport.py +0 -0
  574. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_tools_helpers.py +0 -0
  575. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_tools_instructions.py +0 -0
  576. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_tools_wired.py +0 -0
  577. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  578. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  579. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_check_materiality.py +0 -0
  580. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  581. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  582. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_materiality_backtest.py +0 -0
  583. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/__init__.py +0 -0
  584. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_character_create_redaction.py +0 -0
  585. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_character_create_saga.py +0 -0
  586. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  587. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_mentions_observability.py +0 -0
  588. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_mentions_parse.py +0 -0
  589. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_mentions_resolve.py +0 -0
  590. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_resolve_and_apply.py +0 -0
  591. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/smoke/__init__.py +0 -0
  592. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  593. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/smoke/test_real_flow.py +0 -0
  594. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_auth.py +0 -0
  595. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_browser_manager.py +0 -0
  596. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_chain.py +0 -0
  597. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_chain_manifest.py +0 -0
  598. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_cli_data.py +0 -0
  599. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_config.py +0 -0
  600. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_conftest_isolation.py +0 -0
  601. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_data_queries.py +0 -0
  602. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_errors.py +0 -0
  603. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_json_output.py +0 -0
  604. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_marker_registry.py +0 -0
  605. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_media.py +0 -0
  606. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_observability.py +0 -0
  607. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_paths.py +0 -0
  608. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_profile_lease.py +0 -0
  609. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_profile_lease_subprocess.py +0 -0
  610. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_profile_store.py +0 -0
  611. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_smoke.py +0 -0
  612. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/__init__.py +0 -0
  613. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_banned.py +0 -0
  614. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_expander.py +0 -0
  615. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_invocation.py +0 -0
  616. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_loader.py +0 -0
  617. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_registry.py +0 -0
  618. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_runtime.py +0 -0
  619. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_spec.py +0 -0
  620. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/ui/test_app.py +0 -0
  621. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_codec.py +0 -0
  622. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  623. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_queue.py +0 -0
  624. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_queue_multiprocess.py +0 -0
  625. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_queue_reconciliation.py +0 -0
  626. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/ARCHITECTURE.md +0 -0
  627. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/CONFIGURATION.md +0 -0
  628. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/DEBUGGING.md +0 -0
  629. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/DEVELOPMENT.md +0 -0
  630. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/E2E_TESTING.md +0 -0
  631. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  632. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/INSTRUCTIONS.md +0 -0
  633. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/MOVIE.md +0 -0
  634. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  635. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/TOOLS.md +0 -0
  636. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/USER_GUIDE.md +0 -0
  637. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/agents.md +0 -0
  638. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/installation.md +0 -0
  639. {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/stylesheets/extra.css +0 -0
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: Run pr-council-review (PR or branch mode) plus an external-tools corroboration layer (codex, gemini, opt-in agy) for high-stakes reviews where a same-model-family blind spot is a real risk. Tiers: small (internal only, default) / medium (+codex) / high (+codex+gemini). Wrapper around skills/llm-council/SKILL.md.
2
+ description: Run pr-council-review (PR or branch mode) plus an external-tools corroboration layer (codex, plus Antigravity via the agy harness) for high-stakes reviews where a same-model-family blind spot is a real risk. Tiers: small (internal only, default) / medium (+codex) / high (+codex+antigravity). Wrapper around skills/llm-council/SKILL.md.
3
3
  ---
4
4
 
5
- # `/gflow:llm-council [PR# | --base <ref>] [--tier small|medium|high] [--include-agy]`
5
+ # `/gflow:llm-council [PR# | --base <ref>] [--tier small|medium|high]`
6
6
 
7
- **Read `skills/llm-council/SKILL.md` and follow its protocol now**, treating `$ARGUMENTS` as: the PR number or `--base <ref>` (branch mode, same as `/gflow:pr-council-review` / `/gflow:branch-review`), plus `--tier <small|medium|high>` (default `small`) and the optional `--include-agy` flag.
7
+ **Read `skills/llm-council/SKILL.md` and follow its protocol now**, treating `$ARGUMENTS` as: the PR number or `--base <ref>` (branch mode, same as `/gflow:pr-council-review` / `/gflow:branch-review`), plus `--tier <small|medium|high>` (default `small`). The `high` tier adds Antigravity (`agy`) alongside `codex`.
8
8
 
9
9
  > Do **not** call `Skill(skill="llm-council")` or `Skill(skill="pr-council-review")` — the repo's `skills/*/SKILL.md` files are plain Markdown, not registered as Skill-tool-invocable (only `.claude/commands/gflow/*` are). Invoking either errors with `Unknown skill: ...`. Read the files directly instead.
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Universal entry point for AI coding agents. Read this first; everything else routes from here.
4
4
 
5
- Supported tools that auto-discover this file: Cursor, Codex, Aider, Jules, Devin, Windsurf, Zed, Warp, opencode, RooCode, Amp, Junie, Phoenix, GitHub Copilot, VS Code, Factory, Augment, Semgrep, Kilo Code, UiPath. Gemini CLI reads [GEMINI.md](GEMINI.md) and Claude Code reads [CLAUDE.md](CLAUDE.md), both of which cross-reference this file.
5
+ Supported tools that auto-discover this file: Cursor, Codex, Aider, Antigravity (`agy`), Jules, Devin, Windsurf, Zed, Warp, opencode, RooCode, Amp, Junie, Phoenix, GitHub Copilot, VS Code, Factory, Augment, Semgrep, Kilo Code, UiPath. Claude Code reads [CLAUDE.md](CLAUDE.md), which cross-references this file.
6
6
 
7
7
  ## Project at a glance
8
8
 
@@ -92,7 +92,7 @@ The `skills/` directory ships installable agent skill docs in plain Markdown wit
92
92
  | `plan` | [`skills/plan/SKILL.md`](skills/plan/SKILL.md) | Create a structured task-by-task implementation plan for a feature |
93
93
  | `status` | [`skills/status/SKILL.md`](skills/status/SKILL.md) | Show current plan state, progress, and next unchecked task |
94
94
  | `pr-council-review` | [`skills/pr-council-review/SKILL.md`](skills/pr-council-review/SKILL.md) | Multi-dimensional PR council review |
95
- | `llm-council` | [`skills/llm-council/SKILL.md`](skills/llm-council/SKILL.md) | Wraps `pr-council-review` with external CLI reviewers (`codex`/`gemini`, opt-in `agy`) for high-stakes reviews |
95
+ | `llm-council` | [`skills/llm-council/SKILL.md`](skills/llm-council/SKILL.md) | Wraps `pr-council-review` with external CLI reviewers (`codex` + Antigravity `agy`) for high-stakes reviews |
96
96
  | `issue-assessment` | [`skills/issue-assessment/SKILL.md`](skills/issue-assessment/SKILL.md) | Triage a GitHub issue (read-only) before any fix work |
97
97
  | `issue-resolve` | [`skills/issue-resolve/SKILL.md`](skills/issue-resolve/SKILL.md) | Drive an assessed issue to a test-first fix + draft PR |
98
98
  | `check` | [`skills/check/SKILL.md`](skills/check/SKILL.md) | Quality gates (lint/format/types/tests) before every commit |
@@ -108,7 +108,7 @@ and must be resolvable by ANY agent via this file. Vendor directories hold thin
108
108
  only (`.claude/commands/gflow/*.md` are pointers into `skills/`); never put protocol
109
109
  content in a vendor directory.
110
110
 
111
- **Cursor / Aider / Codex / Gemini CLI (`agy`):** paste or include the relevant `SKILL.md` in your system context. Note: in the `agy` TUI prompt, custom slash commands (e.g. `/gflow:pr-council-review`) are blocked by the TUI's command parser. Type them as plain text without the leading slash (e.g. `gflow:pr-council-review`, `gflow:branch-review`, or `gflow:check`) to trigger the corresponding agent skill workflow.
111
+ **Cursor / Aider / Codex / Antigravity (`agy`):** paste or include the relevant `SKILL.md` in your system context. Note: in the `agy` TUI prompt, custom slash commands (e.g. `/gflow:pr-council-review`) are blocked by the TUI's command parser. Type them as plain text without the leading slash (e.g. `gflow:pr-council-review`, `gflow:branch-review`, or `gflow:check`) to trigger the corresponding agent skill workflow.
112
112
  **Claude Code:** the `/gflow:` slash commands in `.claude/commands/gflow/` are auto-discovered when the project is open — no extra setup needed. To register a skill globally, copy the command file to `~/.claude/commands/`.
113
113
  **Custom agents:** fetch `skills/gflow-cli/SKILL.md` into your knowledge base before answering gflow questions.
114
114
 
@@ -7,6 +7,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.42.0] — 2026-07-21
11
+
12
+ ### Fixed
13
+
14
+ - Content-safety `400` responses from Flow are now classified as
15
+ `ContentPolicyError` (exit code 5) instead of the misleading `WireFormatError`,
16
+ so callers can branch on a policy rejection deterministically. (#359)
17
+ - Corrected a false `flow_operation_id` invariant. Live verification found
18
+ `veo-lite` can produce a `remote_started` checkpoint with `operation_id` unset,
19
+ contradicting the prior claim that only `omni-flash` omits the operation name.
20
+ `flow_operation_id` is best-effort/optional; `media_id` is the canonical handle
21
+ used by polling, download, and every CLI lookup. No behaviour change; a
22
+ regression test now locks the operation-name parser against the real veo
23
+ capture fixture. (#361)
24
+
25
+ ### Changed
26
+
27
+ - **Replaced Gemini CLI with Antigravity (`agy`) as the supported Google coding
28
+ agent** across skills and docs (Google retired Gemini CLI in favor of the
29
+ Antigravity harness). Antigravity auto-discovers `AGENTS.md` natively, so the
30
+ dedicated `GEMINI.md` hub is **removed** and Antigravity is listed among the
31
+ auto-discovering tools in `AGENTS.md`. (#360)
32
+ - **`llm-council` skill:** the `high` tier's second external reviewer is now
33
+ Antigravity (`agy`) instead of Gemini CLI; `agy` is promoted from an opt-in
34
+ tool to the pinned `high`-tier slot and the `--include-agy` flag is dropped.
35
+ When `agy` is unavailable or fails non-interactively, the skill suggests
36
+ installing Antigravity or substituting another external CLI coding agent rather
37
+ than failing. (#360)
38
+ - Forward-looking agent references updated for consistency across `AGENTS.md`,
39
+ `CLAUDE.md`, `README.md`, `llms.txt`, `docs/INDEX.md`, `docs/AGENT_GUIDE.md`,
40
+ `skills/*`, and CI helper strings. Historical release notes and past
41
+ verification records are left unchanged. (#360)
42
+
43
+ ### Removed
44
+
45
+ - Removed the dead `fail_processing_tasks` daemon-recovery method, superseded by
46
+ the checkpoint-classifying `recover_processing` (internal cleanup; no
47
+ user-facing behaviour change). (#361)
48
+
49
+ ### Documentation
50
+
51
+ - Added an onboarding page and quickstart flow to the published docs site, and
52
+ anonymized personal account data across it. Security vulnerabilities now report
53
+ through GitHub's private vulnerability reporting rather than a personal email. (#362)
54
+ - Corrected the same-profile concurrency framing (MCP page and docs) to the
55
+ cross-process `ProfileLease` fail-fast contract (`ProfileLockedError`, exit 11),
56
+ and recorded that the POSIX `fcntl.flock` lease was verified green on the
57
+ Windows/macOS/Linux CI matrix. (#361)
58
+
59
+ ### Tests
60
+
61
+ - Added live-gated end-to-end tests for crash-recovery (a crashed post-submit task
62
+ recovers as `indeterminate` and is never resubmitted) and cancellation-safe
63
+ teardown (the profile lease releases on mid-launch cancel). Both were confirmed
64
+ against real Flow on 2026-07-21. (#361)
65
+
10
66
  ## [0.41.0] — 2026-07-20
11
67
 
12
68
  ### Added
@@ -2169,7 +2225,8 @@ shell-script template that branches on these codes.
2169
2225
 
2170
2226
  First skeleton. Not functional end-to-end yet.
2171
2227
 
2172
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.41.0...HEAD
2228
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.42.0...HEAD
2229
+ [0.42.0]: https://github.com/ffroliva/gflow-cli/compare/v0.41.0...v0.42.0
2173
2230
  [0.41.0]: https://github.com/ffroliva/gflow-cli/compare/v0.40.0...v0.41.0
2174
2231
  [0.40.0]: https://github.com/ffroliva/gflow-cli/compare/v0.39.0...v0.40.0
2175
2232
  [0.39.0]: https://github.com/ffroliva/gflow-cli/compare/v0.38.1...v0.39.0
@@ -1,6 +1,6 @@
1
1
  # CLAUDE.md
2
2
 
3
- > Project memory hub for **Claude Code**. The universal coding-agent rules for any tool (Cursor, Codex, Aider, Gemini CLI, etc.) live in [AGENTS.md](AGENTS.md) — this file carries Claude-Code-specific session protocol only.
3
+ > Project memory hub for **Claude Code**. The universal coding-agent rules for any tool (Cursor, Codex, Aider, Antigravity, etc.) live in [AGENTS.md](AGENTS.md) — this file carries Claude-Code-specific session protocol only.
4
4
 
5
5
  ## What this project is
6
6
 
@@ -585,31 +585,37 @@ one of the 14 supported locales or in English.
585
585
 
586
586
  ---
587
587
 
588
- ### `omni-flash` t2v response omits operation name — `flow_operation_id` persists NULL
588
+ ### t2v response can omit operation name — `flow_operation_id` persists NULL
589
589
 
590
590
  - **Status:** Open · **Severity:** Low · **Affects:** v0.9.0+ (data layer)
591
591
 
592
592
  The data layer's `on_started` callback captures
593
593
  `operations[0].operation.name` from each `batchAsyncGenerateVideoText`
594
- response and persists it as `operations.flow_operation_id`. The
595
- `omni-flash` model's response shape does not carry that field, so
596
- omni-flash rows end up with `flow_operation_id` NULL while `veo-*` rows
597
- carry the expected `operations/...` identifier. The rest of the row
598
- (prompt, model, aspect, started/completed timestamps, batch ID, output
599
- paths) is recorded normally.
600
-
601
- **Impact:** cosmetic for now — `gflow data media <id>` and provenance
602
- lookup by Flow media ID still work. Any future feature that joins on
603
- `flow_operation_id` (none in the current CLI) would miss omni-flash
604
- rows.
594
+ response and persists it as `operations.flow_operation_id`. This field
595
+ is **best-effort, not guaranteed for any model**: `omni-flash`'s response
596
+ shape does not carry it, so omni-flash rows end up with
597
+ `flow_operation_id` NULL. **Update 2026-07-21 (live):** the same NULL
598
+ was observed on a live `veo-lite` t2v run (`remote_started` checkpoint
599
+ with `operation_id=None`), on an agentic-UI-cohort account — so `veo-*`
600
+ is not a reliable guarantee either; the original claim that veo-* rows
601
+ always carry the operation name was false. The rest of the row (prompt,
602
+ model, aspect, started/completed timestamps, batch ID, output paths) is
603
+ recorded normally regardless.
604
+
605
+ **Impact:** cosmetic/provenance-only — `media_id` is the canonical
606
+ handle (poll, download, and every CLI lookup use it, not
607
+ `flow_operation_id`). `gflow data media <id>` and provenance lookup by
608
+ Flow media ID still work. Nothing in the current CLI queries by
609
+ `flow_operation_id`; a future feature that did would miss rows on any
610
+ model whose response omits the operation name.
605
611
 
606
612
  **Workaround:** none needed if you don't query by `flow_operation_id`.
607
613
 
608
- **Roadmap:** capture an `omni-flash` `batchAsyncGenerateVideoText`
609
- response sample, identify the equivalent provenance handle (if any), and
610
- either map it into `flow_operation_id` or document that omni-flash
611
- legitimately has no such identifier. Track via a follow-up issue once a
612
- sample is captured.
614
+ **Roadmap:** capture response samples across models (including veo-lite)
615
+ where the operation name is absent, identify the equivalent provenance
616
+ handle (if any), and either map it into `flow_operation_id` or document
617
+ that these cases legitimately have no such identifier. Track via a
618
+ follow-up issue once samples are captured.
613
619
 
614
620
  ---
615
621
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gflow-cli
3
- Version: 0.41.0
3
+ Version: 0.42.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
@@ -161,7 +161,7 @@ gflow-cli ships four agent entry points. Pick the one your tool reads first.
161
161
 
162
162
  | File | Audience | Tools |
163
163
  |---|---|---|
164
- | [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider · Gemini CLI · Jules · Devin · Windsurf · Zed · Warp · opencode · Copilot |
164
+ | [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider · Antigravity · Jules · Devin · Windsurf · Zed · Warp · opencode · Copilot |
165
165
  | [**CLAUDE.md**](CLAUDE.md) | Claude Code's auto-loaded memory | Claude Code |
166
166
  | [**llms.txt**](llms.txt) | LLM-readable summary (llmstxt.org format) | Paste into ChatGPT, Claude, or Gemini to onboard the model |
167
167
  | [`skills/gflow-cli/SKILL.md`](skills/gflow-cli/SKILL.md) | Claude Code Skill | Symlink into `~/.claude/skills/` |
@@ -369,7 +369,7 @@ The video-generation feature has its own sub-phase plan (spike → Phase A → P
369
369
  - [ ] **Integrated Filmmaking Studio, Flow Worker & MCP SSE Service.** (Backlog) The MCP→FlowWorker wiring shipped in v0.23.0 (PR #228). Remaining: a local FastAPI/React filmmaking studio dashboard + HTTP/SSE MCP. Planned in [gflow-studio-scaffold/PLAN.md](file:///C:/development/github/gflow-cli/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md) and [rest-api-layer/PLAN.md](file:///C:/development/github/gflow-cli/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md).
370
370
  - [x] **Issue #92: Google account identity persistence shipped 2026-05-28 (PR #110).** After every `gflow auth login`, both auth strategies write the verified email to `$GFLOW_CLI_HOME/profile_<name>/.gflow_account`. `ProfileMeta.google_account` surfaces it; `gflow auth list` and `gflow auth list --json` display it. First-login auto-rename: when no `--profile` flag was given and the only profile is named `default`, it is renamed to the email local-part. `profile_store.rename_profile()` primitive added. Zero-credit smoke test (`tests/smoke/test_profile_account_smoke.py`) ships with backfill path for pre-existing profiles. LLM council (9-dim) run; all must-fix items applied before merge. See `KNOWN_ISSUES.md` § Resolved for full detail.
371
371
  - [x] **`/gflow:pr-council-review` slash command shipped 2026-05-26 (PR #97).** Multi-dimensional LLM council for open PRs (4 baseline + 8 adaptive dimensions, mandatory memory-slug binding, draft-PR guard, YELLOW escape valve, live-verify gate). Validated on PR #93; self-audited by 3-agent meta-council surfacing 13 must-fix items applied before merge. See memory `[[llm-council-code-review-pr93]]`.
372
- - **Phase A (Backlog — Portability):** extract command body into `skills/pr-council-review/SKILL.md` so Gemini CLI / Codex / Cursor / Aider can consume it. Keep `.claude/commands/gflow/pr-council-review.md` as a thin wrapper. Memory: `[[pr-council-review-portability-backlog]]`.
372
+ - **Phase A (Backlog — Portability):** extract command body into `skills/pr-council-review/SKILL.md` so Antigravity / Codex / Cursor / Aider can consume it. Keep `.claude/commands/gflow/pr-council-review.md` as a thin wrapper. Memory: `[[pr-council-review-portability-backlog]]`.
373
373
  - **Phase B (Backlog — Token optimization):** add `scripts/dev/pr_council_prefetch.py` (single gh-call producing structured JSON for agents) and `scripts/dev/memory_filter.py` (relevant slug bodies only). Targets ~30-50% per-agent context cost reduction.
374
374
  - **Phase C (Backlog — Reusable meta-council):** codify the 3-dim audit (completeness / robustness / prompt-clarity) we used on this command as `/gflow:meta-council-audit <path>` for re-use on future skills/commands.
375
375
  - Sequencing: **A → C → B**.
@@ -90,7 +90,7 @@ gflow-cli ships four agent entry points. Pick the one your tool reads first.
90
90
 
91
91
  | File | Audience | Tools |
92
92
  |---|---|---|
93
- | [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider · Gemini CLI · Jules · Devin · Windsurf · Zed · Warp · opencode · Copilot |
93
+ | [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider · Antigravity · Jules · Devin · Windsurf · Zed · Warp · opencode · Copilot |
94
94
  | [**CLAUDE.md**](CLAUDE.md) | Claude Code's auto-loaded memory | Claude Code |
95
95
  | [**llms.txt**](llms.txt) | LLM-readable summary (llmstxt.org format) | Paste into ChatGPT, Claude, or Gemini to onboard the model |
96
96
  | [`skills/gflow-cli/SKILL.md`](skills/gflow-cli/SKILL.md) | Claude Code Skill | Symlink into `~/.claude/skills/` |
@@ -124,7 +124,7 @@ is reserved in `check_materiality.py` (which already classifies every change).
124
124
  ### Satisfying a gate without Claude Code
125
125
 
126
126
  Every gate enforces a **deliverable**, not a Claude-specific command. Non-Claude agents
127
- (Cursor / Codex / Gemini CLI / Aider) and humans read the relevant `skills/<name>/SKILL.md`
127
+ (Cursor / Codex / Antigravity / Aider) and humans read the relevant `skills/<name>/SKILL.md`
128
128
  directly and produce the same artifact — e.g. read `skills/predict/SKILL.md` and write the
129
129
  5-persona verdict into the PR, instead of running `/gflow:predict`.
130
130
 
@@ -6,7 +6,7 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
6
6
  |---|---|---|
7
7
  | [README](../README.md) | Project overview, install, quick start | First time landing on the repo |
8
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 / Gemini CLI / Jules / etc. | Any AI coding agent enters the repo |
9
+ | [AGENTS.md](../AGENTS.md) | Universal coding-agent spec — Cursor / Codex / Aider / Antigravity / Jules / etc. | Any AI coding agent enters the repo |
10
10
  | [llms.txt](../llms.txt) | LLM-readable summary (llmstxt.org format) | A user pastes context about gflow into ChatGPT / Claude / Gemini |
11
11
  | [docs/PROJECT_STATUS.md](PROJECT_STATUS.md) | Full milestone history + lifecycle policy | Auditing where the project is in its lifecycle |
12
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 |
@@ -46,7 +46,7 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
46
46
  | **[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) |
47
47
  | **[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 |
48
48
  | **[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?" |
49
- | **[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, Gemini CLI, Aider, etc. | Any agent wanting to use gflow-cli correctly |
49
+ | **[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 |
50
50
  | **[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 |
51
51
  | **[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 |
52
52
  | [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 |
@@ -74,7 +74,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
74
74
  | `/gflow:scenario <feature>` | 12-dimension edge-case explorer → severity-ranked scenario table + BDD skeleton | After predict GO/CAUTION; before `/gflow:plan` |
75
75
  | `/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 |
76
76
  | `/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 |
77
- | `/gflow:llm-council [PR#\|--base <ref>] [--tier small\|medium\|high]` | Wraps `pr-council-review` with external CLI reviewers (`codex`/`gemini`, opt-in `agy`) for cross-model corroboration | High-stakes reviews where a same-model-family blind spot is a real risk |
77
+ | `/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 |
78
78
  | `/gflow:doc-review` | Systematic council-driven audit of documentation completeness and drift | Before cutting a release; after major documentation changes |
79
79
 
80
80
  **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.
@@ -114,7 +114,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
114
114
  **"Where can I look up a media ID I generated yesterday?"** → [DATA_LAYER § Querying the data layer](DATA_LAYER.md#querying-the-data-layer)
115
115
  **"How do I stop gflow from storing my prompts?"** → [DATA_LAYER § Privacy and redaction](DATA_LAYER.md#privacy-and-redaction)
116
116
  **"What does exit code 16 mean and how do I recover?"** → [DATA_LAYER § Persistence-failure handling](DATA_LAYER.md#persistence-failure-handling)
117
- **"How do I use this project's skills in Cursor / Codex / Gemini CLI / Aider?"** → [skills/README.md](../skills/README.md#use-with-other-agents)
117
+ **"How do I use this project's skills in Cursor / Codex / Antigravity / Aider?"** → [skills/README.md](../skills/README.md#use-with-other-agents)
118
118
  **"How do I benchmark a skill doc against real tasks?"** → [scripts/dev/skillopt/README.md](../scripts/dev/skillopt/README.md)
119
119
  **"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))
120
120
  **"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))
@@ -132,7 +132,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
132
132
  **"A gflow command hangs / fails — where do I start?"** → [DEBUGGING § Quick reference](DEBUGGING.md#quick-reference)
133
133
  **"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
134
134
  **"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
135
- **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_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)
135
+ **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_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)
136
136
  **"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)).
137
137
  **"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)
138
138
  **"What was live-verified for the video-download feature (#29)?"** → [LIVE_VERIFICATION_video_download](LIVE_VERIFICATION_video_download.md)
@@ -15,6 +15,56 @@
15
15
  > and why, per the design spec's evidence rule
16
16
  > (`docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md`
17
17
  > § Evidence deliverable).
18
+ >
19
+ > **Update — see the "2026-07-21 live follow-up" section immediately below:** a
20
+ > second live session closed the crash-recovery `remote_started` chain and the
21
+ > D4 mid-launch cancellation path, added two durable live-gated e2e tests, and
22
+ > corrected a false `flow_operation_id` invariant surfaced live. The lists in
23
+ > this document describe the original v0.40.0 run; the follow-up section is the
24
+ > authoritative update.
25
+
26
+ ## 2026-07-21 live follow-up (0.42.0 cycle)
27
+
28
+ A second live session (profile `ffroliva`, 2026-07-21) closed several items left
29
+ open by the original run and added durable live-gated e2e tests. `ffroliva` was
30
+ on Flow's agentic UI cohort that day (classic mode unreachable, issue #174 A/B).
31
+
32
+ **Crash-recovery `remote_started` chain — CONFIRMED (1 credit).** A real
33
+ `veo-lite` t2v driven through the worker path with the C1 checkpoint observer
34
+ completed, and the observer persisted a real `remote_started` checkpoint
35
+ carrying the media handle to the DB — live-confirming the
36
+ observer→checkpoint→DB chain for a *paid* generation. The recovery step
37
+ (`remote_started` → `indeterminate`, never resubmit) is deterministic, proven by
38
+ unit tests plus the credit-free phase-2 of the new e2e test. Durable artifact:
39
+ `tests/e2e/test_crash_recovery_e2e.py` (live-gated, ~1 credit). Auto-reconciliation
40
+ of a crashed paid job remains a deliberate **unimplemented** seam (the safe stub:
41
+ `indeterminate` + manual reconcile).
42
+
43
+ **Finding — `flow_operation_id` NULL on veo-lite → false invariant corrected.**
44
+ That run also surfaced `operation_id=None` in the `remote_started` checkpoint for
45
+ `veo-lite`, contradicting the prior claim that only omni-flash omits it.
46
+ Root-caused: the operation-name parser is correct; `flow_operation_id` is
47
+ best-effort/optional and `media_id` is the canonical handle (poll + download +
48
+ every CLI lookup use it). The false invariant was corrected in `KNOWN_ISSUES.md`
49
+ and the `client.py` docstring, and a regression test now locks the parser against
50
+ the real veo fixture. No production behavior change — generation completed and
51
+ downloaded correctly on the `None`.
52
+
53
+ **D4 cancellation (mid-launch) — CONFIRMED (credit-free).** A real Chrome context
54
+ was launched and the operation cancelled during `__aenter__` (before any submit
55
+ gesture); the ProfileLease released (proven by successful re-acquisition) and no
56
+ gflow-owned Chrome process remained. Durable artifact:
57
+ `tests/e2e/test_cancellation_e2e.py` (live-gated, 0 credits). The other three D4
58
+ cancellation sub-paths (mid-context-close with a wedged page, Ctrl-C during
59
+ passive-capture reap, daemon SIGINT in-flight) remain deterministically
60
+ unit-proven (`tests/api/test_concurrency.py`) and are not separately
61
+ live-triggered — they are timing-fragile to reproduce live, and the mid-launch
62
+ path exercises the same `run_teardown_step` release contract.
63
+
64
+ **Still open (honest).** The full daemon/MCP lifecycle over HTTP (`gflow serve`)
65
+ was not live-exercised (the worker path was exercised directly in the e2e test);
66
+ auto-reconciliation remains unimplemented by design; the three fragile
67
+ cancellation sub-paths remain unit-proven only.
18
68
 
19
69
  ## Commit and environment
20
70
 
@@ -265,12 +315,13 @@ step in the live sequence above ran to completion. What was deliberately
265
315
  run observed the handle capture but did not drive a crash-and-reconcile
266
316
  scenario live. Keep the underlying issue open; this is remaining work, not
267
317
  a regression.
268
- - **Remote macOS/Linux legs of the D2 `profile-lease-matrix` CI job** are
269
- pending an authorized push — the POSIX `fcntl.flock` lease branch has not
270
- been executed anywhere yet (Windows leg ran locally and is GREEN, see
271
- Offline gates below). Per design-spec guidance, remote execution requires
272
- explicit push/PR authorization and must not be reported as locally
273
- executed.
318
+ - **Remote macOS/Linux legs of the D2 `profile-lease-matrix` CI job**: this
319
+ gap is now CLOSED. PR #357 was pushed and its CI ran the
320
+ `profile-lease-matrix` job GREEN on all three OSes — `windows-latest`,
321
+ `macos-latest`, `ubuntu-latest` — exercising the POSIX `fcntl.flock` lease
322
+ branch on macOS/Linux for the first time (PR #357, `profile-lease-matrix`
323
+ job, merged 2026-07-20). This closes the CI-execution gap only; it is
324
+ CI-level evidence, not a live run against real Flow.
274
325
  - **omni-flash NULL-operation-id path** was not exercised — `veo-lite` was
275
326
  used deliberately for the T2V generation instead.
276
327
  - **D4's four live cancellation paths** (mid-launch cancel, mid-context.close
@@ -364,8 +415,12 @@ blocked paths" above for detail, not just offline-covered):
364
415
  - **Daemon/MCP live lifecycle and live queue-claim**: not exercised this
365
416
  pass — the live sequence used the direct `gflow image`/`gflow video`
366
417
  client path, not `gflow serve`/MCP.
367
- - **D2 remote CI legs (POSIX `fcntl` lease branch)**: pending an authorized
368
- push; unexecuted anywhere in this branch's history.
418
+ - **D2 remote CI legs (POSIX `fcntl` lease branch)**: CLOSED — PR #357 was
419
+ pushed and its CI ran the `profile-lease-matrix` job GREEN on all three
420
+ OSes (`windows-latest`, `macos-latest`, `ubuntu-latest`), exercising the
421
+ POSIX `fcntl.flock` lease branch on macOS/Linux (PR #357,
422
+ `profile-lease-matrix` job, merged 2026-07-20). CI-level evidence only —
423
+ not a live-Flow run.
369
424
  - **D4's four live cancellation paths**: unit-proven only, not driven live.
370
425
  - **omni-flash NULL-operation-id path**: not exercised (veo-lite used
371
426
  deliberately instead).
@@ -0,0 +1,57 @@
1
+ # Live verification — v0.41.0 (2026-07-20)
2
+
3
+ Release scope: **production-readiness hardening** ([#357]) — queue safety
4
+ (versioned payloads, atomic claims, checkpointed execution phases),
5
+ cross-process profile lease (`ProfileLockedError` exit 11),
6
+ cancellation-safe browser teardown, driver honesty (typed
7
+ `SupportsSendPrompt` injection, frozen `TransportSetup`), mention-index
8
+ fail-closed (`MentionIndexUnavailableError` exit 29), external-CDP lifecycle
9
+ removal, and nonfunctional `gflow video batch` removal.
10
+
11
+ ## Live matrix (ffroliva profile, 2026-07-20)
12
+
13
+ Exercised against live Flow on `develop@a0c7a3f` (post-merge of #357):
14
+
15
+ 1. **Stale-session fail-fast**: authenticated session expired →
16
+ `AuthExpiredError` (exit 3) raised immediately, **no credits spent**.
17
+ Re-auth succeeded.
18
+ 2. **Free image generation**: `batchGenerateImages` returned HTTP 200, valid
19
+ 768×1376 JPEG produced. Provenance recorded, zero leftover gflow-owned
20
+ Chrome processes, healthy cookie DB.
21
+ 3. **Paid veo-lite T2V**: `batchAsyncGenerateVideoText` returned HTTP 200,
22
+ `MEDIA_GENERATION_STATUS_SUCCESSFUL`, valid `ftyp` MP4 output. Clean
23
+ lease acquire/release/reacquire cycle observed.
24
+
25
+ ## 5-layer evidence ledger
26
+
27
+ | Layer | Evidence |
28
+ |---|---|
29
+ | Stale-session | `AuthExpiredError` exit 3, no spend, re-auth succeeds |
30
+ | Free image gen | `batchGenerateImages` 200, valid JPEG, provenance row |
31
+ | Paid T2V | `batchAsyncGenerateVideoText` 200, `SUCCESSFUL`, valid MP4 |
32
+ | Profile lease | Clean acquire/release/reacquire across runs, no `ProfileLockedError` |
33
+ | Browser lifecycle | Zero leftover gflow-owned Chrome processes after each run |
34
+
35
+ ## Not verified live this cycle
36
+
37
+ - Daemon/MCP live queue-claim and credit-free `remote_started`
38
+ re-entry reconciliation are offline-proven only.
39
+ - The four D4 live cancellation paths are unit-proven.
40
+ - omni-flash NULL-operation-id path not exercised (used veo-lite
41
+ deliberately).
42
+ - The POSIX `fcntl.flock` lease branch has not executed anywhere yet — only
43
+ the Windows leg ran locally. A `profile-lease-matrix` CI job covers
44
+ Windows/macOS/Linux.
45
+
46
+ ## Pre-tag gates
47
+
48
+ - Offline: repo hygiene, doc-links, `ruff check`, `ruff format --check`,
49
+ `pyright src` (0 errors) all clean.
50
+ - Test suite: **2513 passed, 4 skipped**, 72 deselected.
51
+
52
+ ## Post-tag evidence
53
+
54
+ - Tag: `v0.41.0`, signed (SSH), pushed to origin.
55
+ - Release PR: [#358](https://github.com/ffroliva/gflow-cli/pull/358).
56
+
57
+ [#357]: https://github.com/ffroliva/gflow-cli/pull/357
@@ -0,0 +1,30 @@
1
+ # Live verification — v0.42.0
2
+
3
+ Per the release protocol's live-verification gate, this records the live-verification
4
+ status of v0.42.0's user-facing changes.
5
+
6
+ ## Content-safety 400 → ContentPolicyError (#359)
7
+
8
+ **Status: not live-triggered — unit-covered.** Live-triggering this would require
9
+ deliberately submitting a content-policy-violating prompt to Flow, which is
10
+ inadvisable. The classification is covered by unit tests (`tests/test_errors_403.py`,
11
+ `tests/test_errors_classification.py`), which assert that a content-safety `400`
12
+ maps to `ContentPolicyError` (exit code 5) rather than `WireFormatError`.
13
+
14
+ ## Production-readiness live-gaps (#361)
15
+
16
+ **Status: live-confirmed 2026-07-21** (profile `ffroliva`, 1 Veo credit). A real
17
+ `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint
18
+ (observer→checkpoint→DB chain confirmed), and crash-recovery classifies such a task
19
+ `indeterminate` without resubmitting. Mid-launch cancellation released the ProfileLease
20
+ and left no browser process behind (credit-free). Full evidence:
21
+ [`docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md`](LIVE_VERIFICATION_v0.40.0-production-readiness.md)
22
+ § "2026-07-21 live follow-up". Durable live-gated tests:
23
+ `tests/e2e/test_crash_recovery_e2e.py`, `tests/e2e/test_cancellation_e2e.py`.
24
+
25
+ ## Documentation (#360, #362)
26
+
27
+ **Status: n/a — no runtime feature.** Docs-only changes (Antigravity agent references;
28
+ onboarding page; data anonymization; security contact → GitHub private vulnerability
29
+ reporting). Verified by the documentation gates (`check_doc_links.py`,
30
+ `test_documentation_gate.py`).
@@ -78,7 +78,7 @@ We analyzed whether a terminal-driven CLI guided by a text skill (e.g., `skills/
78
78
  | :--- | :--- | :--- |
79
79
  | **Output Fragility** | Ephemeral `stdout`/`stderr` log outputs are fragile to format adjustments, progress bars, and ANSI colors. | Strictly structured JSON payloads containing explicit metadata and absolute output file URIs. |
80
80
  | **Process Lifecycle**| High process startup overhead (Python import latency) on every individual execution. | Warm daemon process. Retains active caching of database metadata. |
81
- | **Concurrency** | Independent OS runs collide and crash the Chromium profile lock. | Serialized request execution via an internal `asyncio.Lock` queue. |
81
+ | **Concurrency** | A second concurrent process against the same profile is rejected immediately by the cross-process `ProfileLease` with `ProfileLockedError` (exit code 11) — a clean fail-fast, never a crash, never a wait. Different profiles run fully in parallel. | Same `ProfileLease` enforcement applies to the daemon's requests — a same-profile call made while another is in flight (from the CLI or the MCP daemon) is rejected immediately with `ProfileLockedError` rather than queued or crashed; different profiles still run fully in parallel. |
82
82
  | **Error Handling** | Agent must scan logs for strings or parse exit codes to check status. | Strongly-typed JSON-RPC errors with mapped codes and clear remediation. |
83
83
  | **Transport Safety** | Volatile console printing. | Stdout is strictly isolated for JSON-RPC; all logs and warnings route to stderr. |
84
84
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Current release
6
6
 
7
- **v0.41.0 — alpha.** **Production-readiness hardening** ([#357]): queue safety (versioned payloads, atomic claims, checkpointed execution phases), cross-process profile lease (`ProfileLockedError` exit 11), cancellation-safe browser teardown, driver honesty (typed `SupportsSendPrompt` injection, frozen `TransportSetup`), mention-index fail-closed (`MentionIndexUnavailableError` exit 29), and external-CDP lifecycle removal. Removed nonfunctional `gflow video batch` command. Also: `/gflow:live-verify` skill for per-feature live-verification enforcement. 2513 tests pass; live-verified against real Flow (stale-session fail-fast, free image gen, paid veo-lite T2V). See [LIVE_VERIFICATION_v0.40.0-production-readiness.md](LIVE_VERIFICATION_v0.40.0-production-readiness.md).
7
+ **v0.41.0 — alpha.** **Production-readiness hardening** ([#357]): queue safety (versioned payloads, atomic claims, checkpointed execution phases), cross-process profile lease (`ProfileLockedError` exit 11), cancellation-safe browser teardown, driver honesty (typed `SupportsSendPrompt` injection, frozen `TransportSetup`), mention-index fail-closed (`MentionIndexUnavailableError` exit 29), and external-CDP lifecycle removal. Removed nonfunctional manifest-driven video batch command (never worked end-to-end; loop `gflow video t2v`/`i2v` from the shell instead). Also: `/gflow:live-verify` skill for per-feature live-verification enforcement. 2513 tests pass; live-verified against real Flow (stale-session fail-fast, free image gen, paid veo-lite T2V). See [LIVE_VERIFICATION_v0.40.0-production-readiness.md](LIVE_VERIFICATION_v0.40.0-production-readiness.md).
8
8
 
9
9
  **Develop (unreleased, post-v0.41.0):** *(empty — develop is the staging branch for the next release).*
10
10
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  <details><summary>v0.39.0 — failed-generation persistence + gflow data list errors</summary>
18
18
 
19
- **v0.39.0 — alpha.** **Failed generations are now persisted to the local catalog (#341).** Every paid-generation path (`video t2v/i2v/r2v`, `video chain`, `image t2i/i2i`, multi-prompt t2i, `gflow run`, `image batch`, `movie run`, and the async worker) now records a terminal `status="failed"` operation row — with a stable `error_type` derived from the exception's RFC 9457 `problem_type` and a redacted `error_detail` — before the error propagates, so WAF-403 block onset, duration, and recovery windows are measurable instead of reconstructed from memory. The new `gflow data list errors` subcommand browses failed operations newest-first, and videos whose poll returns `succeeded=false` are now recorded as `failed` (previously mis-recorded as `succeeded`). Bounded retention + export deferred to #345. Verification: [LIVE_VERIFICATION_v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (a real `image t2i` HTTP-400 wire failure produced the first `failed` row in the production catalog, $0).
19
+ **v0.39.0 — alpha.** **Failed generations are now persisted to the local catalog (#341).** Every paid-generation path (`video t2v/i2v/r2v`, `video chain`, `image t2i/i2i`, multi-prompt t2i, `gflow run`, `movie run`, and the async worker) now records a terminal `status="failed"` operation row — with a stable `error_type` derived from the exception's RFC 9457 `problem_type` and a redacted `error_detail` — before the error propagates, so WAF-403 block onset, duration, and recovery windows are measurable instead of reconstructed from memory. The new `gflow data list errors` subcommand browses failed operations newest-first, and videos whose poll returns `succeeded=false` are now recorded as `failed` (previously mis-recorded as `succeeded`). Bounded retention + export deferred to #345. Verification: [LIVE_VERIFICATION_v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (a real `image t2i` HTTP-400 wire failure produced the first `failed` row in the production catalog, $0).
20
20
 
21
21
  </details>
22
22
 
@@ -250,7 +250,7 @@ reporter-verified e2e on macOS).
250
250
  | Agentic-pin recovery: opt-in reload after a real Agent-toggle click (#338) | ✅ done (v0.38.1) |
251
251
  | Failed generations persisted to the local catalog + `gflow data list errors` (#341) | ✅ done (v0.39.0) |
252
252
  | Prompt `@`-mention resolution for asset tagging (#344) | ✅ done (v0.40.0) |
253
- | Manifest-driven video batch runner on `ui_automation` | ❌ removed — never worked end-to-end, shipped as a nonfunctional stub; see [CHANGELOG § Unreleased](../CHANGELOG.md#unreleased). For multi-clip video, loop `gflow video t2v`/`i2v` from the shell; `gflow image batch` remains supported for images. |
253
+ | Manifest-driven video batch runner on `ui_automation` | ❌ removed — never worked end-to-end, shipped as a nonfunctional stub; see v0.41.0 changelog. For multi-clip video, loop `gflow video t2v`/`i2v` from the shell; `gflow image batch` remains supported for images. |
254
254
  | Persistence layer (stay-mounted batch sessions across project boundaries) | ⏳ Phase B |
255
255
  | Provider abstraction for official Veo 3.1 API | ⏳ planned |
256
256
  | Signed-tag CI verification automation (no manual signing in CI yet) | ⏳ planned |
@@ -76,7 +76,7 @@ gflow-cli work done, especially anything touching a generation path — Part 2")
76
76
  proactive-invocation mechanism fires it at both points, the same way `brainstorming` already
77
77
  auto-triggers on "let's build X." This mechanism is specific to agents that honor the
78
78
  `using-superpowers` convention (this project's primary Claude Code workflow) — it is not a
79
- substitute for discoverability by other agents this repo explicitly supports (Cursor/Codex/Gemini
79
+ substitute for discoverability by other agents this repo explicitly supports (Cursor/Codex/Antigravity
80
80
  CLI/Aider), which is why the `AGENTS.md` skills-reference table row (3.5) is required, not optional
81
81
  reinforcement.
82
82
 
@@ -24,7 +24,7 @@ This file is forward-staged for a future docs site at https://ffroliva.github.io
24
24
 
25
25
  ## For AI coding agents
26
26
 
27
- - [AGENTS.md](https://github.com/ffroliva/gflow-cli/blob/main/AGENTS.md): Universal coding-agent spec (Cursor, Codex, Aider, Gemini CLI, Claude Code, etc.).
27
+ - [AGENTS.md](https://github.com/ffroliva/gflow-cli/blob/main/AGENTS.md): Universal coding-agent spec (Cursor, Codex, Aider, Antigravity, Claude Code, etc.).
28
28
  - [CLAUDE.md](https://github.com/ffroliva/gflow-cli/blob/main/CLAUDE.md): Claude Code's auto-loaded memory hub.
29
29
  - [docs/AGENT_GUIDE.md](https://github.com/ffroliva/gflow-cli/blob/main/docs/AGENT_GUIDE.md): Mandates and routing rules for agents.
30
30
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gflow-cli"
3
- version = "0.41.0"
3
+ version = "0.42.0"
4
4
  description = "Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal."
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -95,7 +95,7 @@ def build_report(material: list[str], routine: list[str], signals: dict[str, boo
95
95
  "### Recommended gates",
96
96
  "- Run **`/gflow:predict`** (Claude Code), **or**",
97
97
  "- Read **`skills/predict/SKILL.md`** and produce the 5-persona "
98
- "verdict yourself (Cursor / Codex / Gemini / Aider), **or**",
98
+ "verdict yourself (Cursor / Codex / Antigravity / Aider), **or**",
99
99
  "- A human reviewer documents the risk assessment in the PR.",
100
100
  "",
101
101
  "Then a council pass: `/gflow:pr-council-review` or read "