gflow-cli 0.57.0__tar.gz → 0.58.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.
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/CHANGELOG.md +114 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/KNOWN_ISSUES.md +67 -23
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/PKG-INFO +1 -1
- {gflow_cli-0.57.0/website → gflow_cli-0.58.0}/docs/CONFIGURATION.md +11 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/INDEX.md +2 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.57.0.md +9 -5
- gflow_cli-0.58.0/docs/LIVE_VERIFICATION_v0.57.1.md +143 -0
- gflow_cli-0.58.0/docs/LIVE_VERIFICATION_v0.58.0.md +93 -0
- {gflow_cli-0.57.0/website → gflow_cli-0.58.0}/docs/MCP.md +6 -3
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/PROJECT_STATUS.md +44 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/REFERENCE_STRATEGIES.md +28 -11
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/USAGE.md +22 -8
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +33 -4
- gflow_cli-0.58.0/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +136 -0
- gflow_cli-0.58.0/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +103 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/pyproject.toml +1 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/check_doc_links.py +2 -0
- gflow_cli-0.58.0/scripts/dev/capture_frames_mode_trigger_ligature.py +220 -0
- gflow_cli-0.58.0/scripts/dev/capture_lower_priority_model_cost.py +188 -0
- gflow_cli-0.58.0/scripts/dev/capture_r2v_ingredient_lifecycle.py +263 -0
- gflow_cli-0.58.0/scripts/dev/capture_sidebar_state_dom.py +177 -0
- gflow_cli-0.58.0/scripts/dev/capture_video_model_capability_matrix.py +316 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/image.py +6 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/mode_control.py +41 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/ui_automation.py +8 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/ui_automation_video.py +224 -141
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/video.py +138 -31
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli.py +0 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_image.py +32 -18
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_movie.py +4 -4
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_video.py +122 -58
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/recorder.py +4 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/repository.py +23 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/errors.py +29 -0
- gflow_cli-0.58.0/src/gflow_cli/file_integrity.py +19 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/tools.py +52 -32
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/worker/codec.py +25 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_video.py +18 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_video_request.py +53 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_mode_control.py +47 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation.py +27 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation_video.py +338 -337
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +121 -40
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_models.py +4 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_video.py +238 -33
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_recorder.py +10 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_repository.py +43 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_image_uuid_ref_e2e.py +83 -3
- gflow_cli-0.58.0/tests/e2e/test_sidebar_recovery_e2e.py +167 -0
- gflow_cli-0.58.0/tests/e2e/test_video_r2v_uuid_name_e2e.py +165 -0
- gflow_cli-0.58.0/tests/features/media_picker_tiers.feature +38 -0
- gflow_cli-0.58.0/tests/features/test_media_picker_tiers_steps.py +222 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_server.py +25 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_tools_helpers.py +50 -10
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_errors.py +23 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_json_output.py +5 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/worker/test_codec.py +30 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/uv.lock +1 -1
- {gflow_cli-0.57.0 → gflow_cli-0.58.0/website}/docs/CONFIGURATION.md +11 -2
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/KNOWN_ISSUES.md +67 -23
- {gflow_cli-0.57.0 → gflow_cli-0.58.0/website}/docs/MCP.md +6 -3
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/USAGE.md +22 -8
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.env.template +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.gitattributes +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.gitignore +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/.secrets.baseline +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/AGENTS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/CLAUDE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/LICENSE +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/RELEASE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/ROADMAP.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docker-compose.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/eval/pr_triage_eval.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/eval/pr_triage_fixtures.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/index.html +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/llms.txt +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/Dockerfile.triage +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/entrypoint.sh +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/package-lock.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/package.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/pr_triage_gate.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/README.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/gflow-cli/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/sonar-project.properties +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/client.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_config.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_media.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/index.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/requirements.in +0 -0
- {gflow_cli-0.57.0 → gflow_cli-0.58.0}/website/requirements.txt +0 -0
|
@@ -7,6 +7,117 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.58.0] — 2026-08-16
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **R2V named remote references (`ref_names`) work again after Flow's picker
|
|
15
|
+
redesign — live-verified end to end (#529 follow-up).** Two UI drifts had
|
|
16
|
+
silently broken the name-attach path on every locale: the picker dialog no
|
|
17
|
+
longer exposes an accessible tree, so the old ARIA role+name tile match could
|
|
18
|
+
never find a result (the tile is now matched by its text, anchored so a
|
|
19
|
+
substring name still cannot attach the wrong asset, tolerating the localized
|
|
20
|
+
media-type badge the tile text appends, e.g. `…Imagem` on a pt profile); and
|
|
21
|
+
clicking a result tile now attaches directly and closes the picker — the
|
|
22
|
+
legacy include-button flow runs only if the dialog stays open. Proven by a
|
|
23
|
+
new live e2e that seeds a t2i image, reads its recorded `displayName` back
|
|
24
|
+
from the catalog by UUID, and generates a real R2V video with it
|
|
25
|
+
(`tests/e2e/test_video_r2v_uuid_name_e2e.py`), alongside a new same-project
|
|
26
|
+
image-picker e2e pinning the #529 exact-UUID-tile happy path.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Catalog image UUIDs now resolve through Flow display names instead of
|
|
31
|
+
scrolling or UUID/prompt searches (#529).** A headed-Chrome spike against a
|
|
32
|
+
populated Compiled Growth story project proved the picker contract:
|
|
33
|
+
catalog UUID → `workflows[].metadata.displayName` → browser name search →
|
|
34
|
+
exact UUID-in-thumbnail tile. A duplicate-name search surfaced two distinct
|
|
35
|
+
UUIDs and the exact matcher selected the requested identity, with zero scroll
|
|
36
|
+
calls or generation requests. The UI response collector now preserves the
|
|
37
|
+
sibling workflow name so new generated-image catalog rows retain the picker
|
|
38
|
+
search key when prompt history is stored (`history_prompts=redacted` omits the
|
|
39
|
+
potentially prompt-derived caption); image `--ref <uuid>` and I2V frame UUIDs
|
|
40
|
+
are enriched with that name before browser work. UUID, UUID-stem, prompt-hint,
|
|
41
|
+
and unfiltered-grid scroll fallbacks are removed from this path. Image refs
|
|
42
|
+
retain their recorded local-file upload fallback; CLI and MCP I2V frames keep
|
|
43
|
+
the UUID, name, and fallback together for both slots. Local fallbacks are used
|
|
44
|
+
only when their recorded byte count/SHA-256 still matches. A missing/stale
|
|
45
|
+
name or unavailable search input falls through to that verified upload or a
|
|
46
|
+
typed failure—never an unfiltered viewport click, grid scan, or implicit
|
|
47
|
+
Playwright scroll. UUID-backed I2V requests now also activate the post-submit
|
|
48
|
+
route guard that rejects a credit-spent T2V response.
|
|
49
|
+
This supersedes #287's prompt-hint and UUID-grid-scroll guidance; the sanitized
|
|
50
|
+
evidence is recorded in the [#529 picker spike](docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md),
|
|
51
|
+
and [#541](https://github.com/ffroliva/gflow-cli/issues/541) records the refuted
|
|
52
|
+
prompt-hint hypothesis.
|
|
53
|
+
|
|
54
|
+
## [0.57.1] — 2026-08-14
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **`gflow video`/`image` can no longer get stuck behind Flow's expanded chat
|
|
59
|
+
sidebar (#493).** Expanding the sidebar removes the classic composer
|
|
60
|
+
**entirely** — no `crop_*` settings trigger *and* no Agent pill — which is
|
|
61
|
+
exactly the fingerprint reported in #493 ("no `crop_*` settings button", "the
|
|
62
|
+
Agente pill matches neither selector"). It also explains the exit code: with
|
|
63
|
+
no agentic indicator on screen either, the cohort detector matches nothing, so
|
|
64
|
+
the run dies as `UiSelectorDriftError` (exit 23) instead of the retryable
|
|
65
|
+
agentic error (25). Recovery hinged on a single selector scoped to the
|
|
66
|
+
sidebar's `edit_square` affordance; a cohort whose sidebar lacks that ligature
|
|
67
|
+
never found the X, so the sidebar never closed and the composer never came
|
|
68
|
+
back. `ensure_media_mode` now falls back to an unscoped close **only** from
|
|
69
|
+
the demonstrably stuck state (no `crop_*` **and** no pill), where the classic
|
|
70
|
+
composer is gone and there is nothing else a close button could belong to.
|
|
71
|
+
Reproduced live and A/B-proven: with the scoped selector neutered the fallback
|
|
72
|
+
recovers; with both neutered it does not.
|
|
73
|
+
|
|
74
|
+
- **`--duration` now fails fast instead of masquerading as UI drift (#451, #288).**
|
|
75
|
+
Flow's video settings popover is **model-conditional**: only `omni-flash` renders
|
|
76
|
+
a `4s/6s/8s/10s` row, and the Veo 3.1 models render **no duration control at all**
|
|
77
|
+
— verified live on two accounts and two locales. `api/video.py` had claimed "the
|
|
78
|
+
four `VEO_3_1_*` models cap at 8s", which presumed a control that is never drawn,
|
|
79
|
+
so `_select_video_duration` hunted a missing element and died with
|
|
80
|
+
`UiSelectorDriftError` (exit 23) after ~30 s. That is why the bug reproduced
|
|
81
|
+
identically on playwright 1.59 and 1.61 (the version bound was correctly
|
|
82
|
+
exonerated) and why the locale hypothesis was refuted — it was never either.
|
|
83
|
+
`--duration` with a Veo model now exits **2 before any browser work**, naming the
|
|
84
|
+
model and the fix. New `VideoModel.supports_duration()`; the DTO guards it too, for
|
|
85
|
+
API callers.
|
|
86
|
+
- **`--reference-entity` no longer advertised on `video i2v`, where it always failed.**
|
|
87
|
+
The flag was registered on `t2v`/`i2v`/`r2v`, but `_validate_i2v_symmetry` rejects
|
|
88
|
+
reference entities on i2v — so the i2v form raised for every caller who believed
|
|
89
|
+
the help text. It is now applied to `t2v`/`r2v` only. The reverse error was in the
|
|
90
|
+
docs: `REFERENCE_STRATEGIES.md`, `USAGE.md` and the `t2v` help text all stated "the
|
|
91
|
+
video path has no `--reference-entity` flag" while `cli_video.py` registered it —
|
|
92
|
+
corrected in all four places.
|
|
93
|
+
- **A named remote reference that isn't in the picker now raises a typed error.**
|
|
94
|
+
`--ref-name` searches Flow's picker, which indexes Flow's own short auto-caption —
|
|
95
|
+
not the generation prompt — so a prompt passed as `--ref-name` surfaced as a bare
|
|
96
|
+
Playwright `TimeoutError` after 8 s, with no exit code to branch on and no hint
|
|
97
|
+
that the *name* was the problem. Now `ReferenceNotFoundError` (**exit 32**), listing
|
|
98
|
+
what the picker actually offered.
|
|
99
|
+
- `reference_cap_for` now records the live-verified ingredient rule it already
|
|
100
|
+
encoded: `veo-quality` refuses image ingredients (Flow: "You cannot use image
|
|
101
|
+
ingredients with this model") while Omni Flash / Fast / Lite accept them, and a cap
|
|
102
|
+
of 0 *is* the answer to "does this model take ingredients?". Deliberately no second
|
|
103
|
+
predicate — one was written, found to have no production caller, and deleted.
|
|
104
|
+
|
|
105
|
+
- **MCP `gflow_generate_image` `ui_mode` now matches the video tool's contract.**
|
|
106
|
+
The image tool rejected an unknown `ui_mode` with a flat `error` **string**, so a
|
|
107
|
+
client reading `error["title"]` — the RFC 9457 shape every other 400 from these
|
|
108
|
+
tools uses since #498 — crashed with `TypeError: string indices must be integers`.
|
|
109
|
+
It was also case-sensitive, while the CLI's `--ui-mode` is
|
|
110
|
+
`click.Choice(case_sensitive=False)` and the video tool normalizes. Both are fixed:
|
|
111
|
+
the value is lower-cased and an invalid one returns the standard problem-details
|
|
112
|
+
envelope. Found by `/code-review` against docs that asserted the param "mirrors the
|
|
113
|
+
CLI" — it did not.
|
|
114
|
+
- **`GFLOW_MCP_NO_SPEND` documentation corrected (no behavior change).**
|
|
115
|
+
[CONFIGURATION](docs/CONFIGURATION.md) described the falsy set as a literal lowercase
|
|
116
|
+
list, so a reader setting `GFLOW_MCP_NO_SPEND=FALSE` would conclude no-spend was
|
|
117
|
+
**on** when the value is lower-cased before comparison and it is **off**. On the one
|
|
118
|
+
variable whose purpose is a hard guarantee against spending credits, the wrong
|
|
119
|
+
reading failed toward spending. Now states the match is case-insensitive.
|
|
120
|
+
|
|
10
121
|
## [0.57.0] — 2026-08-14
|
|
11
122
|
|
|
12
123
|
### Added
|
|
@@ -2910,7 +3021,9 @@ shell-script template that branches on these codes.
|
|
|
2910
3021
|
|
|
2911
3022
|
First skeleton. Not functional end-to-end yet.
|
|
2912
3023
|
|
|
2913
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
3024
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.58.0...HEAD
|
|
3025
|
+
[0.58.0]: https://github.com/ffroliva/gflow-cli/compare/v0.57.1...v0.58.0
|
|
3026
|
+
[0.57.1]: https://github.com/ffroliva/gflow-cli/compare/v0.57.0...v0.57.1
|
|
2914
3027
|
[0.57.0]: https://github.com/ffroliva/gflow-cli/compare/v0.56.0...v0.57.0
|
|
2915
3028
|
[0.56.0]: https://github.com/ffroliva/gflow-cli/compare/v0.55.0...v0.56.0
|
|
2916
3029
|
[0.55.0]: https://github.com/ffroliva/gflow-cli/compare/v0.54.0...v0.55.0
|
|
@@ -133,6 +133,28 @@ upload). Negative check: a foreign UUID exits 9 pre-generation with a
|
|
|
133
133
|
project must be entered via `--project`, and projects that open in the
|
|
134
134
|
full-page media-library UI (#174) can fail earlier at `mode_switch_trigger`.
|
|
135
135
|
|
|
136
|
+
> **Superseded (v0.58.0, [#529](https://github.com/ffroliva/gflow-cli/issues/529)):**
|
|
137
|
+
> the scroll-tier/UUID-search picker mechanics described above are gone. Frame
|
|
138
|
+
> and image UUIDs now resolve through the catalog's recorded Flow
|
|
139
|
+
> `display_name` (name search → exact UUID-in-thumbnail tile), with an
|
|
140
|
+
> integrity-verified local-file upload as the only fallback. This entry is
|
|
141
|
+
> retained as the historical record of the #287-era behavior.
|
|
142
|
+
|
|
143
|
+
### Fresh generations may record without a `display_name` (async Flow caption)
|
|
144
|
+
|
|
145
|
+
- **Status:** Open — tracked in [#543](https://github.com/ffroliva/gflow-cli/issues/543) (backfill command)
|
|
146
|
+
- **Affected:** UUID `--ref` / frame references to *just-generated* assets (v0.58.0+)
|
|
147
|
+
|
|
148
|
+
Flow computes an asset's caption (`displayName`) asynchronously server-side, so
|
|
149
|
+
a generation's response occasionally lacks it and the recorder correctly
|
|
150
|
+
stores no name (observed live 2026-08-16 during the r2v e2e). Such rows skip
|
|
151
|
+
the picker-selection path and use the integrity-verified local-file upload
|
|
152
|
+
fallback instead — correct but a duplicate upload. Also by design, rows
|
|
153
|
+
recorded before v0.58.0 and all rows under
|
|
154
|
+
`GFLOW_CLI_HISTORY_PROMPTS=redacted` have no stored name. #543 proposes a
|
|
155
|
+
credit-free, privacy-gated `gflow data backfill-names` command; #542's
|
|
156
|
+
`gflow doctor` will surface the affected-row count.
|
|
157
|
+
|
|
136
158
|
### Video duration tab probe misses on the current Frames-submode DOM
|
|
137
159
|
|
|
138
160
|
- **Status:** Open ([#288](https://github.com/ffroliva/gflow-cli/issues/288))
|
|
@@ -181,31 +203,53 @@ accepted. Two corrections fixed it (verified end-to-end on macOS Apple Silicon):
|
|
|
181
203
|
|
|
182
204
|
Evidence: [LIVE_VERIFICATION_v0.23.0](docs/LIVE_VERIFICATION_v0.23.0.md).
|
|
183
205
|
|
|
184
|
-
###
|
|
206
|
+
### Expanded chat sidebar left the composer unrecoverable (exit 23)
|
|
185
207
|
|
|
186
|
-
- **Status:** **
|
|
208
|
+
- **Status:** **Resolved** in the unreleased line — fixed and A/B-verified live;
|
|
187
209
|
tracked in [#493](https://github.com/ffroliva/gflow-cli/issues/493)
|
|
188
|
-
- **Severity:** High · **
|
|
189
|
-
accounts
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
210
|
+
- **Severity:** High · **Affected:** `gflow image` / `gflow video` generation on
|
|
211
|
+
accounts whose chat sidebar lacks the `edit_square` affordance, any locale
|
|
212
|
+
|
|
213
|
+
Reported 2026-08-13 (macOS, v0.53.1 and v0.55.0) as an unrecognized "third
|
|
214
|
+
editor variant": frame-slot buttons ("Inicial"/"Final") on the composer next to
|
|
215
|
+
an "Agente" pill, and **no** classic `crop_*` settings button.
|
|
216
|
+
|
|
217
|
+
**Root cause (2026-08-14, reproduced live at zero credits):** there is no third
|
|
218
|
+
variant. Those are stock classic-composer features — "Inicial"/"Final" are the
|
|
219
|
+
**Frames** sub-mode's Start/End slots, and the Agent pill sits alongside the
|
|
220
|
+
classic popover. The real trigger is Flow's **expanded chat sidebar**, which
|
|
221
|
+
removes the classic composer *entirely*:
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
in sidebar state -> crop_* triggers = 0 Agent pill = 0
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
One state, both reported symptoms. It also explains the exit code: with no
|
|
228
|
+
agentic indicator on screen either, the cohort detector matches nothing, so the
|
|
229
|
+
run fails as `UiSelectorDriftError` (**exit 23**) rather than the retryable
|
|
230
|
+
exit-25 classification. The Portuguese UI was unrelated — the cascade is
|
|
231
|
+
locale-invariant (ligature-keyed), re-confirmed on a pt-BR account.
|
|
232
|
+
|
|
233
|
+
Recovery depended on a single selector scoped to the sidebar's `edit_square`
|
|
234
|
+
("new session") affordance. On a cohort whose sidebar lacks that ligature the
|
|
235
|
+
close button was never found, so the sidebar never closed, the composer never
|
|
236
|
+
returned, and **every** run failed. `mode_control.ensure_media_mode` now falls
|
|
237
|
+
back to an unscoped close, reached **only** from the demonstrably stuck state
|
|
238
|
+
(no `crop_*` **and** no Agent pill) — safe there because the classic composer is
|
|
239
|
+
gone, so nothing else a close button could belong to remains.
|
|
240
|
+
|
|
241
|
+
Verified by an A/B on a real editor: with the scoped selector neutered the
|
|
242
|
+
fallback recovers; with both neutered it does not. Two earlier hypotheses were
|
|
243
|
+
tested and refuted first (a `crop_free` sub-mode trigger, and a composer
|
|
244
|
+
hydration race) — see
|
|
245
|
+
[the spike evidence](docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md).
|
|
246
|
+
|
|
247
|
+
If you still hit exit 23 after upgrading, the run writes a PII-safe DOM
|
|
248
|
+
signature to `diag_mode_switch_miss.json` (structural allowlist: ligature names
|
|
249
|
+
and tag counts — no cookies, tokens, prompts, or page text; if absent, the
|
|
250
|
+
incident bundle's `ui.json` carries the same data). Attach it to
|
|
251
|
+
[#493](https://github.com/ffroliva/gflow-cli/issues/493) — that would indicate a
|
|
252
|
+
state genuinely different from the sidebar one.
|
|
209
253
|
|
|
210
254
|
### Flow's new full-page media-library UI breaks entity attach (A/B rollout)
|
|
211
255
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.58.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
|
|
@@ -215,8 +215,9 @@ gflow tools run creative-director "cat in space" --json # check "was_expanded"
|
|
|
215
215
|
|
|
216
216
|
**What:** Registration-time gating of the credit-spending MCP tools (#496). When set, `gflow mcp run` and `gflow serve` never register `gflow_generate_image` and `gflow_generate_video`, so a connected agent cannot even see them in `tools/list` — invisible beats refused (no wasted calls, no refusal path for prompt injection to probe, no reliance on the model honoring an error). Every read-only tool stays available.
|
|
217
217
|
**Default:** unset (both generate tools registered).
|
|
218
|
-
**Accepted:**
|
|
219
|
-
|
|
218
|
+
**Accepted:** the value is lower-cased and stripped before comparison, so the falsy set `0`/`false`/`off`/`no`/`n`/`f`/empty is matched **case-insensitively** — `FALSE`, `Off` and `NO` all leave no-spend **disabled**, exactly like their lowercase forms. Any other value enables it. The falsy vocabulary deliberately matches Click's, so a value cannot mean "off" to the `--no-spend` flag and "on" to the server-side policy.
|
|
219
|
+
**⚠️ Fails toward spending:** an unrecognised *falsy-looking* value is not a safety net — if you want the guarantee, set `GFLOW_MCP_NO_SPEND=1` (or pass `--no-spend`) and confirm the two generate tools are absent from `tools/list`.
|
|
220
|
+
**Equivalent flag:** `gflow mcp run --no-spend` (and `gflow serve --no-spend`), which sets this variable for you. The env var is the only route that covers a server you did not start yourself — e.g. one launched from an MCP client config. See [MCP § Option A2](MCP.md#option-a2-read-only-server).
|
|
220
221
|
**Note:** this is the one variable that does not carry the `GFLOW_CLI_` prefix — it is scoped to the MCP server, not the CLI.
|
|
221
222
|
|
|
222
223
|
Both generate tools are gated, not just video: image generation is only *empirically* free ("~0 credits observed"), and no-spend is meant to be a hard guarantee.
|
|
@@ -311,6 +312,14 @@ mode also records the submitted `expanded_prompt` and a full `metadata_json.tool
|
|
|
311
312
|
`redacted` withholds the expanded prompt and reduces the descriptor to
|
|
312
313
|
`{name, version, params_hash, config_hash}`. See [PROMPT_EXPANSION.md](PROMPT_EXPANSION.md).
|
|
313
314
|
|
|
315
|
+
**Reference-resolution trade-off (v0.58.0, #529):** `redacted` also withholds the
|
|
316
|
+
catalog `display_name` Flow assigns to generated images (the caption can closely
|
|
317
|
+
paraphrase the prompt). Since UUID `--ref`/frame references resolve through that
|
|
318
|
+
name in the media picker, redacted-mode catalog rows skip the picker-selection
|
|
319
|
+
path and fall back to the integrity-verified local-file upload — or a typed
|
|
320
|
+
failure when no verified file exists. This is deliberate: the privacy boundary
|
|
321
|
+
outranks picker convenience.
|
|
322
|
+
|
|
314
323
|
```bash
|
|
315
324
|
GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
|
|
316
325
|
```
|
|
@@ -134,13 +134,13 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
134
134
|
**"gflow refuses to open my profile after a downgrade (exit 11, 'written by a newer Chromium')"** → [AUTHENTICATION § Chromium downgrade guard](AUTHENTICATION.md#chromium-downgrade-guard)
|
|
135
135
|
**"Two gflow runs on the same profile — can the second one wait instead of failing (exit 11)?"** → [CONFIGURATION § GFLOW_CLI_LEASE_WAIT_SECONDS](CONFIGURATION.md#gflow_cli_lease_wait_seconds) (v0.56.0 opt-in bounded wait)
|
|
136
136
|
**"How do I silence the 'newer version on PyPI' stderr notice?"** → [CONFIGURATION § GFLOW_CLI_UPDATE_CHECK](CONFIGURATION.md#gflow_cli_update_check) (`0` disables; auto-skipped in CI and for editable installs)
|
|
137
|
-
**"How do I run the MCP server so an agent can't spend credits?"** → [CONFIGURATION § GFLOW_MCP_NO_SPEND](CONFIGURATION.md#gflow_mcp_no_spend) + [MCP § Option A2](MCP.md#
|
|
137
|
+
**"How do I run the MCP server so an agent can't spend credits?"** → [CONFIGURATION § GFLOW_MCP_NO_SPEND](CONFIGURATION.md#gflow_mcp_no_spend) + [MCP § Option A2](MCP.md#option-a2-read-only-server) (`gflow mcp run --no-spend` / `GFLOW_MCP_NO_SPEND=1`; v0.57.0 — both generate tools go unregistered, not merely refused)
|
|
138
138
|
**"Which Flow UI arm does a video run require, and why did it exit 2 or 28?"** → [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode) (v0.57.0 — video is classic-only: `auto` ≡ `classic`, explicit `agentic` exits 2, unreachable classic aborts pre-submit with exit 28, $0)
|
|
139
139
|
**"A gflow command hangs / fails — where do I start?"** → [DEBUGGING § Quick reference](DEBUGGING.md#quick-reference)
|
|
140
140
|
**"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
|
|
141
141
|
**"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
|
|
142
142
|
**"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
|
|
143
|
-
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.57.0](LIVE_VERIFICATION_v0.57.0.md) (**#299 video UI-mode policy + the #496/#497/#498/#501 MCP wave live-verified 2026-08-14 on profile `ffroliva`, ZERO credits** — three real video-editor loads bound the classic driver through `get_ui_driver` [`ui_driver.bound mode=classic`, 1.2–1.7 s, aborted pre-submit], `--ui-mode agentic` is refused with **exit 2 before any browser launch** [deliberately not exit 28, whose "retry may land it" hint would mislead for a driver that does not exist], and a real-editor classic→agent→classic round-trip proved `ensure_agent_mode`'s aria-verified real click [`{"agent_acted":true,"after_agent":"agent","after_media":"media"}`]; the MCP surfaces were driven over the **real stdio JSON-RPC wire** [subprocess `gflow mcp run`, so registration *and* stream routing are covered]: `--no-spend` cut `tools/list` from 11 tools to 9 with both generate tools genuinely unregistered rather than refused, zero-arg `gflow_auth_status` returned `authenticated` off a live `GET /fx/api/auth/session` **200**, `gflow_list_projects` returned **different project IDs** on offset 0 vs offset 2 [proving the offset is honored — catalogs larger than `limit` were previously unreachable] with `limit=0`→1 and `offset=-5`→0 clamps holding, and the known-issues resource served a **7,543-byte index** against a ~70 KB source file with a **111-byte** capped unknown-slug reply. The #498 rate-limited problem-details envelope is recorded **not live-verified with reason** — exhausting the token bucket needs ≥9 accepted generate calls, so the error path cannot be reached credit-free; it is unit-pinned for both tools instead). Prior: [LIVE_VERIFICATION_v0.56.0](LIVE_VERIFICATION_v0.56.0.md) (**#477 downgrade guard, #478 bounded lease wait, and the #493 mode-switch path live-verified 2026-08-13 on profile `denon82`, images only** — a fresh-project 16:9 `t2i` exercised the #493-touched mode-switch path end-to-end [valid `ff d8` JPEG 1376×768, `image_mode_entered` → `batch_response_captured`]; the #477 guard refused a scratch profile claiming Chromium 999 with **exit 11 pre-auth, pre-credits** at the generation-client call site; #478 was proven with three concurrent runs — `WAIT=0` control failed fast with `ProfileLockedError` exit 11 while the holder held, and the `WAIT=180` waiter polled ~11 s past the holder's natural release then generated successfully; the #493 drift branch itself is a named skip [only an affected account's new-editor cohort can reach it — the fix's message text is unit-pinned], and #479's update notice is deferred-with-reason to a post-release check [it needs a published newer version on PyPI and skips editable installs by design]; an expired denon82 session 401'd the first two attempts [external state, re-login fixed it, recorded not omitted]). Prior: [LIVE_VERIFICATION_v0.55.0](LIVE_VERIFICATION_v0.55.0.md) (**Tier-1 quick wins #471–#476 verified 2026-08-13 on profile `ffroliva`, ZERO credits** — `gflow auth status` probed the real Flow session endpoint live [`Flow session verified as ffroliva@gmail.com.`, exit 0, fail-closed contract pinned]; `gflow mcp setup` ran end-to-end with the real CLI against a scratch copy of the real Claude Desktop config [correct merged entry, pristine original]; the Windows profile-DACL two-step `icacls` idiom was derived empirically [the naive `/t` form broke file access] and is pinned by a real-icacls round-trip test on every Windows host; the incident bug-report template, MCP error funnel [all 11 tools guarded, raw exception text masked], and SecretStr settings are suite-verified with no live-Flow surface — reasons recorded, not omitted). Prior: [LIVE_VERIFICATION_v0.54.0](LIVE_VERIFICATION_v0.54.0.md) (**close-browser guidance #470, character-composer focus fix, overlay/jitter hardening, and SonarCloud-S2245 RNG swap live-verified 2026-08-12 on profile `ffroliva`, ZERO credits** — the new #470 login wording printed verbatim and the manual-close → `auth_flow_session_verified` round-trip worked end-to-end; a Classic-UI `t2i` produced a real 1024×1024 JPEG [`ff d8 ff e0`] exercising overlay dismissal + jitter + image-composer submit + mode controller, and a credit-free `character create` [entity `da3cd647…`, face 1376×768 JPEG] exercised the character-composer path directly [`entering_character_editor` → `prompt_submitted` → `entity_patched` → `completed`]; the first `t2i` hit the known agentic-cohort video-for-image condition [correctly refused via `WireFormatError`, tracked by #299, not a regression] and Classic UI worked around it. First mainline release after the orphaned v0.53.0/v0.53.1 tags — CHANGELOG restores honest 0.53.x sections). Prior: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
|
|
143
|
+
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.58.0](LIVE_VERIFICATION_v0.58.0.md) (**#529 catalog-UUID→displayName picker contract + r2v named-reference fixes, verified 2026-08-15/16 on profile `denon82` (pt-BR) via four committed e2e tests, ~7 Imagen + 1 veo-lite generation** — same-project exact-UUID tile attach, cross-project verified upload fallback, loud abort on unresolvable UUIDs, and a real r2v video generated from a catalog name; the r2v e2e caught and fixed two live UI drifts: the picker exposes no accessible tree so tiles are now text-matched, and a tile click attaches directly with the include button demoted to legacy fallback); previously: [LIVE_VERIFICATION_v0.57.1](LIVE_VERIFICATION_v0.57.1.md) (**#493 and #451/#288 root-caused and fixed from live evidence, verified 2026-08-14 on profile `denon82` (pt-BR — the #493 reporter's locale), ZERO credits** — #493 was NOT an unrecognized "third editor variant": "Inicial"/"Final" are the Frames sub-mode's Start/End slots and the "Agente" pill is the ordinary Agent button, both stock classic features. The real trigger is Flow's **expanded chat sidebar**, which removes the classic composer entirely [`crop_* = 0` AND `Agent pill = 0` simultaneously] — one state producing both reported symptoms, and the reason the failure was exit 23 rather than the retryable 25 [no agentic indicator on screen, so the cohort detector matched nothing]. Recovery hinged on a close button scoped to the sidebar's `edit_square` affordance, a single point of failure for any cohort lacking that ligature; an unscoped fallback now fires only from the demonstrably stuck state, **A/B-proven three ways** [scoped broken + fallback present → rescued; both broken → NOT recovered, which is what proves the fallback rescues rather than the surrounding loop]. #451/#288 were never selector drift either — Flow's settings popover is **model-conditional**, only `omni-flash` renders a duration row, so `--duration` on a Veo model hunted a control that is never drawn [verified on 2 accounts × 2 locales]; it now exits 2 before any browser work. Two #493 hypotheses were tested and **refuted** first and are committed so they are not re-derived [a `crop_free` sub-mode trigger — the trigger reflects the *aspect*, not the sub-mode; and a hydration race — a wait was written, A/B-neutered, and cold loads passed 3/3 BOTH ways, so it was reverted rather than shipped]. Recorded not-verified: the `veo_3_1_lite_lower_priority` picker miss is **inconclusive** [the capture came after the menu closed] so that selector was deliberately left untouched, and `chain.py`'s per-link duration aborts mid-run after billing — deferred with the finding recorded). Prior: [LIVE_VERIFICATION_v0.57.0](LIVE_VERIFICATION_v0.57.0.md) (**#299 video UI-mode policy + the #496/#497/#498/#501 MCP wave live-verified 2026-08-14 on profile `ffroliva`, ZERO credits** — three real video-editor loads bound the classic driver through `get_ui_driver` [`ui_driver.bound mode=classic`, 1.2–1.7 s, aborted pre-submit], `--ui-mode agentic` is refused with **exit 2 before any browser launch** [deliberately not exit 28, whose "retry may land it" hint would mislead for a driver that does not exist], and a real-editor classic→agent→classic round-trip proved `ensure_agent_mode`'s aria-verified real click [`{"agent_acted":true,"after_agent":"agent","after_media":"media"}`]; the MCP surfaces were driven over the **real stdio JSON-RPC wire** [subprocess `gflow mcp run`, so registration *and* stream routing are covered]: `--no-spend` cut `tools/list` from 11 tools to 9 with both generate tools genuinely unregistered rather than refused, zero-arg `gflow_auth_status` returned `authenticated` off a live `GET /fx/api/auth/session` **200**, `gflow_list_projects` returned **different project IDs** on offset 0 vs offset 2 [proving the offset is honored — catalogs larger than `limit` were previously unreachable] with `limit=0`→1 and `offset=-5`→0 clamps holding, and the known-issues resource served a **7,543-byte index** against a ~70 KB source file with a **111-byte** capped unknown-slug reply. The #498 rate-limited problem-details envelope is recorded **not live-verified with reason** — exhausting the token bucket needs ≥9 accepted generate calls, so the error path cannot be reached credit-free; it is unit-pinned for both tools instead). Prior: [LIVE_VERIFICATION_v0.56.0](LIVE_VERIFICATION_v0.56.0.md) (**#477 downgrade guard, #478 bounded lease wait, and the #493 mode-switch path live-verified 2026-08-13 on profile `denon82`, images only** — a fresh-project 16:9 `t2i` exercised the #493-touched mode-switch path end-to-end [valid `ff d8` JPEG 1376×768, `image_mode_entered` → `batch_response_captured`]; the #477 guard refused a scratch profile claiming Chromium 999 with **exit 11 pre-auth, pre-credits** at the generation-client call site; #478 was proven with three concurrent runs — `WAIT=0` control failed fast with `ProfileLockedError` exit 11 while the holder held, and the `WAIT=180` waiter polled ~11 s past the holder's natural release then generated successfully; the #493 drift branch itself is a named skip [only an affected account's new-editor cohort can reach it — the fix's message text is unit-pinned], and #479's update notice is deferred-with-reason to a post-release check [it needs a published newer version on PyPI and skips editable installs by design]; an expired denon82 session 401'd the first two attempts [external state, re-login fixed it, recorded not omitted]). Prior: [LIVE_VERIFICATION_v0.55.0](LIVE_VERIFICATION_v0.55.0.md) (**Tier-1 quick wins #471–#476 verified 2026-08-13 on profile `ffroliva`, ZERO credits** — `gflow auth status` probed the real Flow session endpoint live [`Flow session verified as ffroliva@gmail.com.`, exit 0, fail-closed contract pinned]; `gflow mcp setup` ran end-to-end with the real CLI against a scratch copy of the real Claude Desktop config [correct merged entry, pristine original]; the Windows profile-DACL two-step `icacls` idiom was derived empirically [the naive `/t` form broke file access] and is pinned by a real-icacls round-trip test on every Windows host; the incident bug-report template, MCP error funnel [all 11 tools guarded, raw exception text masked], and SecretStr settings are suite-verified with no live-Flow surface — reasons recorded, not omitted). Prior: [LIVE_VERIFICATION_v0.54.0](LIVE_VERIFICATION_v0.54.0.md) (**close-browser guidance #470, character-composer focus fix, overlay/jitter hardening, and SonarCloud-S2245 RNG swap live-verified 2026-08-12 on profile `ffroliva`, ZERO credits** — the new #470 login wording printed verbatim and the manual-close → `auth_flow_session_verified` round-trip worked end-to-end; a Classic-UI `t2i` produced a real 1024×1024 JPEG [`ff d8 ff e0`] exercising overlay dismissal + jitter + image-composer submit + mode controller, and a credit-free `character create` [entity `da3cd647…`, face 1376×768 JPEG] exercised the character-composer path directly [`entering_character_editor` → `prompt_submitted` → `entity_patched` → `completed`]; the first `t2i` hit the known agentic-cohort video-for-image condition [correctly refused via `WireFormatError`, tracked by #299, not a regression] and Classic UI worked around it. First mainline release after the orphaned v0.53.0/v0.53.1 tags — CHANGELOG restores honest 0.53.x sections). Prior: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
|
|
144
144
|
**"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
|
|
145
145
|
**"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)).
|
|
146
146
|
**"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)
|
|
@@ -38,17 +38,21 @@
|
|
|
38
38
|
signatures (the docs had drifted 4 params behind
|
|
39
39
|
`mcp/tools.py`); a no-spend MCP-client config block (Option A2); a
|
|
40
40
|
`GFLOW_MCP_NO_SPEND` section in `docs/CONFIGURATION.md` + two `docs/INDEX.md`
|
|
41
|
-
routing rows (the repo's own rule
|
|
41
|
+
routing rows (the repo's own rule under INDEX's *Documentation governance*
|
|
42
|
+
heading requires both); `--no-spend`
|
|
42
43
|
on the `gflow mcp run` reference in `docs/USAGE.md`; `--ui-mode` and the exit-2/28
|
|
43
44
|
behavior in `llms.txt`; the Security/Scorecard theme in `docs/PROJECT_STATUS.md`;
|
|
44
45
|
the pin example bumped to `==0.57.0`; and **a same-release factual error in this
|
|
45
46
|
changelog** — the Security entry described the triage image as pinning
|
|
46
47
|
`node:20-slim` when #522 had already moved it to `node:26-slim` (the stale
|
|
47
48
|
`Dockerfile.triage` line-1 comment was corrected too). Tier-3 deferred to a
|
|
48
|
-
follow-up issue (pre-existing, none introduced by this release): the
|
|
49
|
-
`--reference-entity`-on-video fiction (three docs plus the `t2v` help text
|
|
50
|
-
a flag that has shipped since v0.52.0
|
|
51
|
-
|
|
49
|
+
follow-up issue **#531** (pre-existing, none introduced by this release): the
|
|
50
|
+
`--reference-entity`-on-video fiction (three docs plus the `t2v` help text
|
|
51
|
+
**deny** a flag that has in fact shipped since v0.52.0 and is registered on
|
|
52
|
+
t2v/i2v/r2v — and it needs a maintainer decision, because `api/video.py:339`
|
|
53
|
+
*rejects* `reference_entities` on I2V while `:366` omits it from the T2V guard,
|
|
54
|
+
so the same flag hard-errors on one mode and is silently accepted on another),
|
|
55
|
+
the Windows profile-path
|
|
52
56
|
author segment (`%LOCALAPPDATA%\ffroliva\gflow-cli`) wrong in 6 docs + 2
|
|
53
57
|
docstrings, the `ARCHITECTURE.md` testing-topology table naming three
|
|
54
58
|
nonexistent test dirs, its missing driver/mode-control layer, module-inventory
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Live verification — v0.57.1
|
|
2
|
+
|
|
3
|
+
> Hand-run against real Flow on Windows 11, profile `denon82` (chrome strategy,
|
|
4
|
+
> **pt-BR** — the #493 reporter's locale), 2026-08-14. Every check in this
|
|
5
|
+
> release is **credit-free**: no Veo or Imagen generation was submitted at any
|
|
6
|
+
> point. Recon that led to the fixes was additionally run on `ffroliva`.
|
|
7
|
+
|
|
8
|
+
## Environment
|
|
9
|
+
|
|
10
|
+
| | |
|
|
11
|
+
|---|---|
|
|
12
|
+
| Branch | `chore/release-v0.57.1` (off `develop` @ `6a3f5ff`) |
|
|
13
|
+
| Local version | `0.57.1` editable |
|
|
14
|
+
| Profiles | `denon82` (pt-BR) primary; `ffroliva` for the capability matrix |
|
|
15
|
+
| Date | 2026-08-14 |
|
|
16
|
+
| OS | Windows 11 |
|
|
17
|
+
| Credits spent | **0** |
|
|
18
|
+
|
|
19
|
+
## Pre-tag gates
|
|
20
|
+
|
|
21
|
+
- Full offline suite: **3117 passed / 5 skipped / 89 deselected**.
|
|
22
|
+
- `pyright src`: **78 = the accepted baseline** (`mcp/*` + `ui/app.py` only), no delta.
|
|
23
|
+
- ruff check + `ruff format --check` (365 files), hygiene (754), doc links (29),
|
|
24
|
+
website PII (23), mirror in sync (18) — all green.
|
|
25
|
+
- `/code-review xhigh`: **15 findings, all addressed** — including a hole where
|
|
26
|
+
`model is None` bypassed the new guard (so i2v's *default* path still failed)
|
|
27
|
+
and a shipped `gflow movie template` scaffold that raised at request
|
|
28
|
+
construction.
|
|
29
|
+
- `/ponytail:ponytail-review`: **-330 lines** — two superseded spike scripts
|
|
30
|
+
deleted, a triplicated field tuple collapsed to one helper.
|
|
31
|
+
- **e2e re-run AFTER the reviews and again AFTER the merge** (the review edits
|
|
32
|
+
touched guard code, so the earlier run was stale): `-m e2e_auth` **18 passed /
|
|
33
|
+
49 deselected** on merged `develop`, 117 s, zero credits.
|
|
34
|
+
|
|
35
|
+
## Matrix
|
|
36
|
+
|
|
37
|
+
| # | Feature | Variation | Result |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| 1 | #493 — expanded-sidebar recovery | real editor, pt-BR | ✅ composer restored |
|
|
40
|
+
| 2 | #493 — reporter's cohort simulated | scoped close selector neutered | ✅ fallback rescues |
|
|
41
|
+
| 3 | #493 — negative control | scoped **and** fallback neutered | ✅ does **not** recover |
|
|
42
|
+
| 4 | #451/#288 — `--duration` on a Veo model | `t2v`/`i2v`/`r2v` × lite/fast/quality | ✅ exit 2, pre-browser |
|
|
43
|
+
| 5 | #451/#288 — negative control | `--duration` on `omni-flash` | ✅ passes the guard |
|
|
44
|
+
| 6 | `--reference-entity` surface | t2v / i2v / r2v | ✅ present / **absent** / present |
|
|
45
|
+
| 7 | Model capability matrix | 5 models × 2 accounts × 2 locales | ✅ identical |
|
|
46
|
+
|
|
47
|
+
## 1–3. #493 — the expanded chat sidebar (root cause)
|
|
48
|
+
|
|
49
|
+
Reported as an unrecognized "third editor variant". It is not: **"Inicial"/"Final"
|
|
50
|
+
are the Frames sub-mode's Start/End slots and the "Agente" pill is the ordinary
|
|
51
|
+
Agent button** — both stock classic-composer features (owner screenshots).
|
|
52
|
+
|
|
53
|
+
The real trigger is Flow's **expanded chat sidebar**, which removes the classic
|
|
54
|
+
composer entirely. Measured live:
|
|
55
|
+
|
|
56
|
+
| Layer | Evidence |
|
|
57
|
+
|---|---|
|
|
58
|
+
| Fingerprint | `crop_* triggers = 0` **and** `Agent pill = 0`, simultaneously |
|
|
59
|
+
| Why exit 23 | no agentic indicator either → cohort detector matches nothing → drift, not the retryable exit 25 |
|
|
60
|
+
| Recovery SPOF | the close X was scoped to the sidebar's `edit_square` affordance |
|
|
61
|
+
| Locale | pt-BR reproduced identically — the cascade is ligature-keyed, not text |
|
|
62
|
+
|
|
63
|
+
**A/B, three configurations** (`scripts/dev/capture_sidebar_state_dom.py`):
|
|
64
|
+
|
|
65
|
+
| scoped selector | fallback | recovered? |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| works | present | yes (baseline) |
|
|
68
|
+
| **broken** (reporter cohort) | present | **yes** — the fix |
|
|
69
|
+
| **broken** | **broken** | **no** — proves the fallback rescues |
|
|
70
|
+
|
|
71
|
+
The third row is what makes this a proof rather than a hope. Pinned by
|
|
72
|
+
`tests/e2e/test_sidebar_recovery_e2e.py` (`e2e_auth`, $0) and unit tests using a
|
|
73
|
+
`sidebar_unscoped` fake state.
|
|
74
|
+
|
|
75
|
+
**Two hypotheses were refuted first, and are committed so they are not
|
|
76
|
+
re-derived:** a `crop_free` sub-mode trigger (the trigger reflects the *aspect*,
|
|
77
|
+
not the sub-mode) and a composer hydration race (a wait was written, A/B-neutered,
|
|
78
|
+
cold loads passed 3/3 **both ways** — `_probe_selector_cascade` already waits 4 s
|
|
79
|
+
per selector, so the wait was reverted rather than shipped).
|
|
80
|
+
|
|
81
|
+
## 4–5. #451/#288 — `--duration` is model-conditional
|
|
82
|
+
|
|
83
|
+
Flow's settings popover renders a duration row **only** for `omni_flash`; the
|
|
84
|
+
Veo 3.1 models render none. `api/video.py` had claimed they "cap at 8s", which
|
|
85
|
+
presumed a control that is never drawn — so `_select_video_duration` hunted a
|
|
86
|
+
missing element and died with `UiSelectorDriftError` (exit 23) after ~30 s.
|
|
87
|
+
|
|
88
|
+
That explains every symptom on those issues: it looked like drift, it reproduced
|
|
89
|
+
identically on playwright 1.59 **and** 1.61 (correctly exonerating the version
|
|
90
|
+
bound), and the locale hypothesis was correctly refuted. It was never either.
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
$ gflow video t2v "…" --model veo-lite --duration 8
|
|
94
|
+
Error: --duration is not supported by --model veo-lite — Flow renders no duration
|
|
95
|
+
control for it (verified live; refs #451/#288). Only omni-flash exposes a
|
|
96
|
+
duration (4/6/8/10s). …
|
|
97
|
+
$ echo $?
|
|
98
|
+
2
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Exit **2 before any browser work**, on all three commands × three Veo models
|
|
102
|
+
(10 CLI tests). Negative control: `--model omni-flash --duration 6` **passes**
|
|
103
|
+
the guard and proceeds — no over-reject.
|
|
104
|
+
|
|
105
|
+
## 6. `--reference-entity` surface corrected
|
|
106
|
+
|
|
107
|
+
The flag was registered on `t2v`/`i2v`/`r2v`, but `_validate_i2v_symmetry`
|
|
108
|
+
rejects reference entities — so the i2v form raised for every caller who believed
|
|
109
|
+
the help text. Now `t2v` ✅ · `i2v` ❌ · `r2v` ✅, verified by `--help`. The docs
|
|
110
|
+
had the mirror-image error (three files plus the `t2v` help text denied a flag
|
|
111
|
+
the CLI registered); all corrected.
|
|
112
|
+
|
|
113
|
+
## 7. Model capability matrix
|
|
114
|
+
|
|
115
|
+
Verified on **two accounts and two locales** — identical both times:
|
|
116
|
+
|
|
117
|
+
| Model | Duration tabs | Credits | Ingredients |
|
|
118
|
+
|---|---|---|---|
|
|
119
|
+
| `omni_flash` | `4s` `6s` `8s` `10s` | 15 @10s / 12 @8s / 7 @4s | accepted |
|
|
120
|
+
| `veo_3_1_lite` | none | 10 | accepted |
|
|
121
|
+
| `veo_3_1_fast` | none | 20 | accepted |
|
|
122
|
+
| `veo_3_1_quality` | none | 100 | **rejected** |
|
|
123
|
+
|
|
124
|
+
Credits match exactly across accounts; `omni_flash` differs only by selected
|
|
125
|
+
duration, which independently confirms **duration-scaled pricing**.
|
|
126
|
+
|
|
127
|
+
## Not verified this cycle (recorded, not omitted)
|
|
128
|
+
|
|
129
|
+
- **`veo_3_1_lite_lower_priority`** missed its picker selector on both accounts,
|
|
130
|
+
but the capture that would settle it was taken after the menu had closed —
|
|
131
|
+
**inconclusive**, so the selector was deliberately left untouched rather than
|
|
132
|
+
changed on a guess.
|
|
133
|
+
- **`chain.py` per-link `duration`** aborts mid-run *after* earlier links are
|
|
134
|
+
billed, and `_resolve_chain_model` forces a Veo model, so chain durations are
|
|
135
|
+
invalid by construction. Needs manifest-level pre-validation before the run
|
|
136
|
+
starts — its own change, deferred with the finding recorded on #537.
|
|
137
|
+
- Credit-spending e2e tiers (`e2e_image`, `e2e_video`) were **not** run: nothing
|
|
138
|
+
in this release touches a generation wire path, and every fix is verifiable at
|
|
139
|
+
$0.
|
|
140
|
+
|
|
141
|
+
## Post-tag evidence
|
|
142
|
+
|
|
143
|
+
To be appended after the tag push (release workflow result and PyPI publish).
|