gflow-cli 0.71.0__tar.gz → 0.71.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/AGENTS.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/CHANGELOG.md +99 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/KNOWN_ISSUES.md +68 -8
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/PKG-INFO +2 -2
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/README.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/ARCHITECTURE.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/INDEX.md +2 -2
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.71.0.md +11 -2
- gflow_cli-0.71.1/docs/LIVE_VERIFICATION_v0.71.1.md +147 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/PROJECT_STATUS.md +65 -3
- {gflow_cli-0.71.0/website → gflow_cli-0.71.1}/docs/PROMPT_EXPANSION.md +1 -1
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +89 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +89 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +185 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/llms.txt +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/pyproject.toml +1 -1
- gflow_cli-0.71.1/scripts/dev/spike_migrated_composer_arms.py +319 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_queue_read.py +164 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_upload_wire.py +284 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/migrated_composer.py +241 -14
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_composer.py +388 -8
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_migrated_host_e2e.py +71 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/uv.lock +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/ARCHITECTURE.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/KNOWN_ISSUES.md +68 -8
- {gflow_cli-0.71.0 → gflow_cli-0.71.1/website}/docs/PROMPT_EXPANSION.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/spike.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.env.template +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.gitattributes +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/dependabot.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.gitignore +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.gitleaks.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/.secrets.baseline +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/CLAUDE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/CONFIGURATION.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/DISCLAIMER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/LICENSE +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/RELEASE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/ROADMAP.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docker-compose.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/CONFIGURATION.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/DEMOS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/GITHUB.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/MCP.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/MOVIE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/SECURITY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/TOOLS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/USAGE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/sample_config.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/index.html +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/acceptance/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/acceptance/bench.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/acceptance/domain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/acceptance/judge.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/acceptance/settings.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_upload_flow.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/extract_har_summary.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_cdp_har_without_node.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_format_prompt_effect.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_host_lane.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_surface.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_entity_submit.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_image_capability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_project_media_status.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/diag/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/gflow-cli/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/spike/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/sonar-project.properties +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/batchexecute.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/ui_automation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/services/credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tasks/lessons.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_character_readback_fallback.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_migrated_mint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_credits_http.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_character_model_picker.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_ligature_carrier.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_dispatch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_r2v.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_credits_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_credits_mcp_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_e2e_env_isolation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/auth.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/credits.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/image.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/integration/constants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_character_tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_reference_entity_round_trip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_extract_har_summary.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_frame_acceptance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_spike_page_pool.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_spike_profile_lease.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_auth.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_config.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_json_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_media.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_observability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_paths.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_smoke.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/test_update_check.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/CONFIGURATION.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/MCP.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/USAGE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/agents.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/index.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/installation.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/mkdocs.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/requirements.in +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.71.1}/website/requirements.txt +0 -0
|
@@ -42,7 +42,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
|
|
|
42
42
|
|
|
43
43
|
## Project at a glance
|
|
44
44
|
|
|
45
|
-
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video,
|
|
45
|
+
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, and reference-to-video from local `--ref` files, today; `GFLOW_CLI_FLOW_HOST`).
|
|
46
46
|
- Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
|
|
47
47
|
- Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
|
|
48
48
|
- Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
|
|
@@ -7,6 +7,103 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.71.1] — 2026-09-08
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **A blocked first upload no longer reads as a broken file or a broken network.** On the
|
|
15
|
+
migrated `flow.google.com` host, `video i2v --initial-frame` and `video r2v --ref` failed
|
|
16
|
+
on an account's **first** upload with `MediaUploadRejectedError` (exit 27) — *"no maseQ
|
|
17
|
+
reply within 60s of choosing the file — the upload never reached Flow or was dropped"* —
|
|
18
|
+
and advised re-encoding the image to strip metadata. Neither the file nor the network was
|
|
19
|
+
involved: Flow shows a one-time **"Rights to use this image"** confirmation *after* the
|
|
20
|
+
chooser hands the file over, and sends nothing until a human accepts it, so the driver
|
|
21
|
+
spent its whole budget waiting for a request the page had already declined to make.
|
|
22
|
+
Measured across 8 runs on 3 profiles — the two accounts that had uploaded before never saw
|
|
23
|
+
the dialog and uploaded fine, the account that never had failed 3/3, and accepting it once
|
|
24
|
+
made that account upload on the next run and every run after
|
|
25
|
+
([spike](docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md)).
|
|
26
|
+
|
|
27
|
+
The driver now counts dialogs across the upload and, when one appeared *during* it, names
|
|
28
|
+
the one-time confirmation and tells the user to accept it once in a browser. **It is
|
|
29
|
+
counted rather than matched on purpose:** the dialog's two buttons are
|
|
30
|
+
`button.flow-button-medium` with no ligature and no data attribute, separable only by DOM
|
|
31
|
+
order, and its copy is translated — there is no anchor there that satisfies this project's
|
|
32
|
+
locale rule, whereas "a dialog appeared between the file being chosen and the wait
|
|
33
|
+
expiring" is upload-related by construction and cannot rot when Angular renames a class.
|
|
34
|
+
|
|
35
|
+
**gflow does not accept the dialog for you**, and there is no flag to make it: the dialog
|
|
36
|
+
affirms that *you* hold the rights to what you upload, it is one-off per account, and the
|
|
37
|
+
path already requires an interactive `gflow auth login` — so a setting that could never
|
|
38
|
+
safely default to on would be a flag nobody sets.
|
|
39
|
+
|
|
40
|
+
The driver also now watches the upload **request**, not just the response, so the timeout
|
|
41
|
+
splits into two distinct messages: `no upload request ever left the page` and `the request
|
|
42
|
+
left the page and Flow did not answer in time`. That distinction is load-bearing — the
|
|
43
|
+
second argues for a retry and the first argues against one — and it exposes a **second,
|
|
44
|
+
unfixed** failure on this path, an intermittent no-reply on already-consented accounts
|
|
45
|
+
(~1 run in 4) that keeps [#719](https://github.com/ffroliva/gflow-cli/issues/719) open and
|
|
46
|
+
now has its own [KNOWN_ISSUES.md](KNOWN_ISSUES.md) entry.
|
|
47
|
+
([#719](https://github.com/ffroliva/gflow-cli/issues/719))
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
|
|
51
|
+
- **Three documents said things that were not true, and are corrected rather than quietly
|
|
52
|
+
patched.** [KNOWN_ISSUES.md](KNOWN_ISSUES.md) said Flow's first-upload terms dialog affected
|
|
53
|
+
"the legacy in-tree Compiled Growth worker, **NOT `gflow-cli` itself** … workaround: none
|
|
54
|
+
needed" — true of the old REST path, false since the migrated driver began using the
|
|
55
|
+
editor's own upload, so it was the entry a user hitting #719 would find and be *reassured*
|
|
56
|
+
by. [LIVE_VERIFICATION_v0.71.0](docs/LIVE_VERIFICATION_v0.71.0.md) labelled the `ci-probe`
|
|
57
|
+
profile **labs** when it is migrated, contradicting v0.70.0 one day earlier; in a repo where
|
|
58
|
+
"Flow's UI shows X" is not a fact until the host is named, that silently re-scoped every
|
|
59
|
+
conclusion keyed to it — and it helped a credit-based theory for #719 survive four runs.
|
|
60
|
+
Six "unreleased line" phrases, which go stale the moment a release ships and had accumulated
|
|
61
|
+
across four of them, are now dated from the CHANGELOG.
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
|
|
65
|
+
- **Two `$0` read-only dev instruments** for the migrated host.
|
|
66
|
+
[`scripts/dev/spike_migrated_queue_read.py`](scripts/dev/spike_migrated_queue_read.py) reads
|
|
67
|
+
a project's generation queue by listening to the page's own traffic — establishing that the
|
|
68
|
+
listing arrives on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, which is what a
|
|
69
|
+
future `gflow video status` ([#741](https://github.com/ffroliva/gflow-cli/issues/741)) should
|
|
70
|
+
read. [`scripts/dev/spike_migrated_upload_wire.py`](scripts/dev/spike_migrated_upload_wire.py)
|
|
71
|
+
drives the real `_upload_via_toolbar` with a listener on every request, which is how the
|
|
72
|
+
consent dialog above was found. Neither is wired into the CLI.
|
|
73
|
+
|
|
74
|
+
- **Flow's agent mode no longer bricks the account for every later run.** On the migrated
|
|
75
|
+
`flow.google.com` host the composer carries an **agent-mode chip**
|
|
76
|
+
(`button.agent-mode-chip[aria-pressed]`). Pressed, Flow swaps `flow-prompt-box` for
|
|
77
|
+
`flow-creative-agent-prompt-box`: the `.settings-trigger-button` this driver waits on stays
|
|
78
|
+
in the DOM but gains a bare `hidden` (`display: none`, 0×0, not hit-testable), so
|
|
79
|
+
`wait_for(state="visible")` could never pass and every run died at 30 s as
|
|
80
|
+
`UiSelectorDriftError` (exit 23) — telling the user to file a frontend-drift bug about a
|
|
81
|
+
frontend that was working fine. Flow **remembers the chip per account**, so one click in a
|
|
82
|
+
browser broke every subsequent `gflow video t2v`, with nothing on the CLI to say why or how
|
|
83
|
+
to undo it. `ensure_editor` now leaves agent mode before the readiness gate, and if the
|
|
84
|
+
classic composer still does not come back it says *that* instead of blaming drift. Measured
|
|
85
|
+
2026-09-08 on two accounts, $0 —
|
|
86
|
+
[`scripts/dev/spike_migrated_composer_arms.py`](scripts/dev/spike_migrated_composer_arms.py),
|
|
87
|
+
finding in
|
|
88
|
+
[`docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md`](docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md).
|
|
89
|
+
The reporter's suggested anchor (`aria-label="Configuración"`) is not used: it is a translated
|
|
90
|
+
label, and the chip's own component class plus `aria-pressed` carry the same identity in every
|
|
91
|
+
locale. ([#749](https://github.com/ffroliva/gflow-cli/issues/749))
|
|
92
|
+
|
|
93
|
+
**Follow-up ([#752](https://github.com/ffroliva/gflow-cli/issues/752)):** the fix worked and
|
|
94
|
+
its diagnostics did not. Three states were collapsed into one message — the chip was clicked,
|
|
95
|
+
the chip was found but the click was blocked, the chip was clicked and the mode is still on —
|
|
96
|
+
and all three read as *"the chip was clicked to leave it … the mode may be pinned"*. A modal
|
|
97
|
+
eating the click sent the user to toggle a chip; genuine selector drift **after** the mode was
|
|
98
|
+
successfully left was reported as a pinned mode, so the drift bug never got filed. The chip's
|
|
99
|
+
`aria-pressed` is now read back before that claim is made, a blocked click raises at once
|
|
100
|
+
instead of waiting out the 20 s recovery window (worst case 55 s → 35 s), the click's own
|
|
101
|
+
exception is chained rather than truncated into a log line, and `_open_pane` — the same gate
|
|
102
|
+
one step later — guards on **visibility** rather than `count()`, so a mode flip mid-run maps
|
|
103
|
+
to exit 23 naming agent mode instead of escaping as a bare Playwright timeout. Searchable
|
|
104
|
+
entry added to [KNOWN_ISSUES.md](KNOWN_ISSUES.md), which the shipped message gave a user no
|
|
105
|
+
way to find.
|
|
106
|
+
|
|
10
107
|
## [0.71.0] — 2026-09-07
|
|
11
108
|
|
|
12
109
|
### Fixed
|
|
@@ -4483,7 +4580,8 @@ shell-script template that branches on these codes.
|
|
|
4483
4580
|
|
|
4484
4581
|
First skeleton. Not functional end-to-end yet.
|
|
4485
4582
|
|
|
4486
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.71.
|
|
4583
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...HEAD
|
|
4584
|
+
[0.71.1]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...v0.71.1
|
|
4487
4585
|
[0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
|
|
4488
4586
|
[0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
|
|
4489
4587
|
[0.69.0]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...v0.69.0
|
|
@@ -19,9 +19,9 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
|
|
|
19
19
|
- **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video, local-file image-to-video and local-file reference-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, references by `@Name` or `--reference-entity`, `image`, scenes, extend, instructions and tools are not ported yet and still exit 36. **`character` is NOT in that list any more** — `character create` was verified working on the migrated host in v0.70.0 and `character list` was re-verified there on 2026-09-07. This line claimed otherwise for a day, which is the dangerous direction for a stale doc to be stale in: a migrated user reading it concludes a working feature is impossible. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker's tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` have never had a probe run against them at all, so read them as *unported by gflow*, never as *impossible on the host*
|
|
20
20
|
- **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
|
|
21
21
|
- **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
|
|
22
|
-
- **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in
|
|
22
|
+
- **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
|
|
23
23
|
- **The migrated composer DOES have an image mode** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): a code comment claimed, as "measured, not assumed", that it has none. Falsified 2026-09-07 — its settings overlay carries a `mode` radiogroup of `[imageImage, videocamVideo]`, present and hit-testable. Nothing was clicked on that axis and nothing was submitted, so this does **not** establish that `image` works on a moved account; it establishes only that the claim it cannot is unfounded. Read the remaining exit 36 as *gflow does not drive this yet*, never as *the host cannot do it*; see [the spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md).
|
|
24
|
-
- **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in
|
|
24
|
+
- **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in v0.69.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
|
|
25
25
|
|
|
26
26
|
Google is moving Flow off Labs onto its own origin. On a migrated page load,
|
|
27
27
|
`https://labs.google/fx/tools/flow/project/<id>` redirects to
|
|
@@ -391,7 +391,7 @@ Evidence: [LIVE_VERIFICATION_v0.23.0](docs/LIVE_VERIFICATION_v0.23.0.md).
|
|
|
391
391
|
|
|
392
392
|
### Expanded chat sidebar left the composer unrecoverable (exit 23)
|
|
393
393
|
|
|
394
|
-
- **Status:** **Resolved** in
|
|
394
|
+
- **Status:** **Resolved** in v0.60.0 — fixed and A/B-verified live;
|
|
395
395
|
tracked in [#493](https://github.com/ffroliva/gflow-cli/issues/493)
|
|
396
396
|
- **Severity:** High · **Affected:** `gflow image` / `gflow video` generation on
|
|
397
397
|
accounts whose chat sidebar lacks the `edit_square` affordance, any locale
|
|
@@ -687,18 +687,52 @@ This is because Chromium holds an exclusive lock on its SQLite cookie database w
|
|
|
687
687
|
---
|
|
688
688
|
|
|
689
689
|
|
|
690
|
-
### Flow's
|
|
690
|
+
### Flow's one-time upload-terms dialog blocks the FIRST upload on an account
|
|
691
691
|
|
|
692
|
-
- **Status:**
|
|
692
|
+
- **Status:** Mitigated · **Severity:** High until accepted (every `i2v --initial-frame` and `r2v --ref` on that account fails) · **Affects:** the migrated `flow.google.com` host, all versions through 0.71.0 · **Tracked:** [#719](https://github.com/ffroliva/gflow-cli/issues/719)
|
|
693
693
|
|
|
694
|
-
Flow shows a one-time "
|
|
694
|
+
Flow shows a one-time **"Rights to use this image"** confirmation the first time an account uploads a file. It renders **after** the file chooser has handed the file over, and Flow sends **nothing** until it is accepted — so the driver waited out its full 60 s budget for an upload request the page had already decided not to make, then reported:
|
|
695
695
|
|
|
696
|
-
|
|
696
|
+
```
|
|
697
|
+
MediaUploadRejectedError (exit 27): migrated host: no maseQ reply within 60s of choosing
|
|
698
|
+
the file — the upload never reached Flow or was dropped
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
…and advised re-encoding the image to strip metadata. Neither the file nor the network was ever involved. Measured 2026-09-08 on three profiles, eight runs: the two accounts that had uploaded before never saw the dialog and uploaded fine; the account that never had failed 3/3. See [the spike](docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md).
|
|
702
|
+
|
|
703
|
+
> **This entry previously said the opposite.** It read *"Affects: the legacy in-tree Compiled Growth worker, NOT `gflow-cli` itself"*, because *"gflow-cli's API-driven path bypasses this dialog entirely (the REST endpoint already implies acceptance)"*, with *"Workaround in gflow-cli: none needed."* That was true of the REST path and became false when the migrated driver started using the editor's **own** upload — so the entry a user hitting #719 would find was reassuring them about the exact thing that was breaking their run.
|
|
704
|
+
|
|
705
|
+
**Mitigation** (v0.71.1): when the upload budget expires, the driver checks whether a dialog opened *during* the upload window and, if so, says so and points the user at the one-time acceptance instead of blaming the file.
|
|
706
|
+
|
|
707
|
+
**Workaround / how to clear it — once per account, ever:** open the project on `flow.google.com`, upload any image by hand, and accept the dialog. Uploads on that account then stop hitting *this* failure.
|
|
697
708
|
|
|
698
|
-
**
|
|
709
|
+
> **Accepting does not make every upload succeed — there is a second, unrelated failure on this path.** See the next entry. If you have already accepted the dialog and an upload still times out, you are not looking at this issue and repeating the workaround will not help.
|
|
710
|
+
|
|
711
|
+
**gflow does not accept it for you, by design.** The dialog affirms that *you* hold the rights to the content you upload; that is not a claim a tool may make on an account owner's behalf. It is also a 30-second step, once, on a path that already requires an interactive browser login (`gflow auth login`) — so automating it would buy nothing and assert something on your behalf. There is deliberately no config flag: a setting that can never safely default to on, on a once-per-account event, is a flag nobody sets.
|
|
712
|
+
|
|
713
|
+
**Legacy worker:** Compiled Growth's `flow_video.py` clicks "Concordo" / "Agree" in its own consent-dismiss block. That is a different product decision, recorded here so the two are not confused.
|
|
699
714
|
|
|
700
715
|
---
|
|
701
716
|
|
|
717
|
+
### An upload request leaves the page and Flow never answers (intermittent, migrated host)
|
|
718
|
+
|
|
719
|
+
- **Status:** Open · **Severity:** Medium (intermittent; costs a re-run, spends nothing) · **Affects:** the migrated `flow.google.com` host, `video i2v --initial-frame` and `video r2v --ref` · **Tracked:** [#719](https://github.com/ffroliva/gflow-cli/issues/719)
|
|
720
|
+
|
|
721
|
+
Distinct from the one-time upload-terms dialog above, and **not** fixed by accepting it. On an account that has already consented, roughly **1 upload in 4** sends the `maseQ` request — measured at 8 675 B for a 4 321-byte PNG, so the image is genuinely on the wire — and no reply ever arrives. Since v0.71.1 that reports:
|
|
722
|
+
|
|
723
|
+
```
|
|
724
|
+
MediaUploadRejectedError (exit 27): migrated host: no maseQ reply within 60s of choosing
|
|
725
|
+
the file — the request left the page and Flow did not answer in time
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
The contrasting message, **`no upload request ever left the page`**, means something client-side stopped it before the network — the consent dialog above being the known cause.
|
|
729
|
+
|
|
730
|
+
**Workaround:** re-run. The same file usually succeeds on the next attempt, and nothing is spent when it fails — Flow refuses before any submit.
|
|
731
|
+
|
|
732
|
+
**Not the file.** Three different images were ruled out in [#719](https://github.com/ffroliva/gflow-cli/issues/719), including a 4.3 KB synthetic flat colour with no metadata, and the same file uploads successfully on other attempts. Re-encoding does not help; the remediation text that used to suggest it was wrong.
|
|
733
|
+
|
|
734
|
+
**What is known.** A healthy upload window issues **4** POSTs; a failing one issued **24** — the full project-load rpcid inventory, firing ~2.6 s after the request went out, which is just before the ~2.8 s successful uploads take to answer. That has the shape of the page re-initialising underneath the in-flight upload, but no navigation event was captured, so the cause is unconfirmed. Measured 2026-09-08, 1 failure in 4 runs on one funded account — enough for "intermittent", not enough for a rate.
|
|
735
|
+
|
|
702
736
|
### Flow's release-notes ("What's new") changelog popup blocks first-run UI automation
|
|
703
737
|
|
|
704
738
|
- **Status:** Mitigated · **Severity:** Medium · **Tracked:** [#26](https://github.com/ffroliva/gflow-cli/issues/26)
|
|
@@ -1169,6 +1203,32 @@ a `WireFormatError` about video bytes — neither naming the cause). `auto` now
|
|
|
1169
1203
|
instead of a mid-run failure, and `GFLOW_CLI_PREFER_CLASSIC=1` is no longer the
|
|
1170
1204
|
workaround anyone needs to discover.
|
|
1171
1205
|
|
|
1206
|
+
### Flow's agent-mode chip hides the settings trigger on `flow.google.com` (exit 23)
|
|
1207
|
+
|
|
1208
|
+
- **Status:** Mitigated · **Severity:** High while it lasts (every video run on the account fails) · **Affects:** the migrated `flow.google.com` host, all versions through 0.71.0 · **Tracked:** [#749](https://github.com/ffroliva/gflow-cli/issues/749), follow-up [#752](https://github.com/ffroliva/gflow-cli/issues/752)
|
|
1209
|
+
|
|
1210
|
+
The migrated composer has an **Agent** chip. Pressed, Flow swaps the prompt box and
|
|
1211
|
+
leaves `.settings-trigger-button` — the element this driver waits on — in the DOM under
|
|
1212
|
+
a bare `hidden` (`display: none`, 0×0). Flow **remembers the chip per account**, so a
|
|
1213
|
+
single click in a browser made every later `gflow video` run on that account die at 30 s
|
|
1214
|
+
as `UiSelectorDriftError` (exit 23), telling the user to file a frontend-drift bug about
|
|
1215
|
+
a frontend that was working correctly.
|
|
1216
|
+
|
|
1217
|
+
**Mitigation** (v0.71.1): the readiness gate leaves agent mode by
|
|
1218
|
+
itself, so an account parked there recovers with no user action. If it cannot, the error
|
|
1219
|
+
now names which of three things happened rather than blaming drift:
|
|
1220
|
+
|
|
1221
|
+
| The message says | What it means | What to do |
|
|
1222
|
+
|---|---|---|
|
|
1223
|
+
| `the account is in Flow's agent mode … the chip could not be clicked` | something is covering the chip (a modal) | dismiss it in a browser; re-run |
|
|
1224
|
+
| `the chip was clicked, and it is STILL pressed` | the mode is pinned on this account | turn the **Agent** chip off in a browser; re-run |
|
|
1225
|
+
| `agent mode was left, but the settings trigger … still did not become visible` | the mode is off — this is real selector drift | file a bug; it is not this issue |
|
|
1226
|
+
| `the chip could not be read back, so whether the mode is still on is unknown` | the page went dark mid-recovery | check the **Agent** chip in a browser *before* filing this as drift |
|
|
1227
|
+
| `the settings trigger … is not visible — the account is in Flow's agent mode` | the mode flipped **mid-run**, after the editor was already ready | turn the **Agent** chip off in a browser; re-run |
|
|
1228
|
+
|
|
1229
|
+
**On 0.71.0 and earlier there is no recovery.** Open the project on
|
|
1230
|
+
`flow.google.com`, click the **Agent** chip off, and the account works again.
|
|
1231
|
+
|
|
1172
1232
|
### Auth verification depends on Google's NextAuth session endpoint
|
|
1173
1233
|
|
|
1174
1234
|
- **Status:** Mitigated · **Severity:** Low (degrades fail-closed) · **Affects:** issue #15 fix onward · **Tracked:** issue #15
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.71.
|
|
3
|
+
Version: 0.71.1
|
|
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
|
|
@@ -198,7 +198,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
198
198
|
|
|
199
199
|
**Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
|
|
200
200
|
|
|
201
|
-
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video,
|
|
201
|
+
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
202
202
|
|
|
203
203
|
**What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
|
|
204
204
|
|
|
@@ -127,7 +127,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
127
127
|
|
|
128
128
|
**Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
|
|
129
129
|
|
|
130
|
-
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video,
|
|
130
|
+
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
131
131
|
|
|
132
132
|
**What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
|
|
133
133
|
|
|
@@ -436,7 +436,7 @@ We attempted three pure-HTTP transport strategies before settling on `ui_automat
|
|
|
436
436
|
|
|
437
437
|
All three now live as standalone modules under `src/gflow_cli/api/transports/experimental/` (`evaluate_fetch.py` / `bearer.py` / `sapisidhash.py`), preserved for reference and future iteration. None survives Google's anti-bot stack for mutation/generation endpoints, so the production path is `ui_automation`.
|
|
438
438
|
|
|
439
|
-
**The migrated `flow.google.com` host (#639, v0.67.0).** Google is moving accounts off `labs.google` onto `flow.google.com`, a rewritten frontend with a different widget toolkit and a `batchexecute` wire instead of `aisandbox-pa` REST. `src/gflow_cli/api/transports/migrated_composer.py` drives that editor for text-to-video
|
|
439
|
+
**The migrated `flow.google.com` host (#639, v0.67.0).** Google is moving accounts off `labs.google` onto `flow.google.com`, a rewritten frontend with a different widget toolkit and a `batchexecute` wire instead of `aisandbox-pa` REST. `src/gflow_cli/api/transports/migrated_composer.py` drives that editor for text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files (v0.70.0) — still through the same real-Chrome Playwright session — by operating the composer UI and then *observing* the app's own `batchexecute` replies (`YhhmEf`/`eb1hJf` submit, `jwpduf` status, `as29s` result) before downloading the clip. A start frame goes in through the editor's own Upload entry (the app's `maseQ` reply names the media id — `migrated.frame_uploaded`), is bound in the Frames picker by file name (`migrated.frame_bound`), and the submit *request* is inspected for that id and an i2v model key before the run is trusted (`WireFormatError` otherwise); a modal over a fresh editor is closed first (`migrated.dialog_dismissed`). `GFLOW_CLI_FLOW_HOST` routes between the two (`auto` = migrated host for every request it can serve, `--project` required there); the rest of the command matrix keeps `ui_automation` on unmoved accounts and exits 36 on moved ones. Recon: `docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`.
|
|
440
440
|
|
|
441
441
|
**Standalone-only transports.** `bearer` and `sapisidhash` discard any caller-supplied Playwright page and launch their own browser under a fresh `ProfileLease`, so they are **standalone-only** — they cannot run inside a `FlowApiClient` that already holds the profile lease (the second acquire would self-lock with `ProfileLockedError`). Selecting either via `GFLOW_CLI_TRANSPORT` (or the Python API) while the client owns the profile now fails fast with a clear `ConfigurationError` naming the transport, rather than the opaque lock error. `evaluate_fetch` is exempt: it reuses the client's shared page and takes no second lease. The standalone-only set lives in `STANDALONE_ONLY_TRANSPORTS` (`api/transports/__init__.py`); to drive `bearer`/`sapisidhash`, run them outside an owning client.
|
|
442
442
|
|
|
@@ -149,7 +149,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
149
149
|
**"How do I upgrade gflow-cli?"** → [USAGE § `gflow update`](USAGE.md#gflow-update) (`gflow update` runs the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs are refused with exit 11)
|
|
150
150
|
**"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)
|
|
151
151
|
**"Which Flow UI arm does a run require, and why did it exit 2 or 28?"** → [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode) (`auto` ≡ `classic` for **both** images and video — video since v0.57.0/#299, images since #595; unreachable classic aborts pre-submit with exit 28, $0; explicit `agentic` on video exits 2)
|
|
152
|
-
**"Which Flow frontend does a run drive — labs.google or the migrated flow.google.com — and why did it exit 36 or 11?"** → [CONFIGURATION § GFLOW_CLI_FLOW_HOST](CONFIGURATION.md#gflow_cli_flow_host) (`auto` = flow.google.com for every request it can serve — `t2v`, `i2v` from a local `--initial-frame`, and `r2v` from local `--ref` files, with `--project`, on moved and unmoved accounts; `flow.google.com` forces it; `labs.google` is the kill switch. On a moved account an end frame, a UUID/`@Name` frame, references by `@Name`/`--reference-entity` and everything except `t2v`/`i2v`/`r2v` exit 36, non-retryable, and a missing `--project` exits 11) · recon: [character surface + reCAPTCHA mint](superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md), [migrated-host wire protocol](superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md), [handoff mechanism](superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md), [frames attach (i2v)](superpowers/spikes/2026-09-05-migrated-frames-attach.md) · evidence: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (t2v), [LIVE_VERIFICATION_v0.69.0](LIVE_VERIFICATION_v0.69.0.md) (i2v from a local start frame, v0.69.0), [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (r2v on the migrated host; character create verified there in #703)
|
|
152
|
+
**"Which Flow frontend does a run drive — labs.google or the migrated flow.google.com — and why did it exit 36 or 11?"** → [CONFIGURATION § GFLOW_CLI_FLOW_HOST](CONFIGURATION.md#gflow_cli_flow_host) (`auto` = flow.google.com for every request it can serve — `t2v`, `i2v` from a local `--initial-frame`, and `r2v` from local `--ref` files, with `--project`, on moved and unmoved accounts; `flow.google.com` forces it; `labs.google` is the kill switch. On a moved account an end frame, a UUID/`@Name` frame, references by `@Name`/`--reference-entity` and everything except `t2v`/`i2v`/`r2v` exit 36, non-retryable, and a missing `--project` exits 11) · recon: [character surface + reCAPTCHA mint](superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md), [migrated-host wire protocol](superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md), [handoff mechanism](superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md), [agent mode hides the settings trigger](superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md), [frames attach (i2v)](superpowers/spikes/2026-09-05-migrated-frames-attach.md) · evidence: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (t2v), [LIVE_VERIFICATION_v0.69.0](LIVE_VERIFICATION_v0.69.0.md) (i2v from a local start frame, v0.69.0), [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (r2v on the migrated host; character create verified there in #703)
|
|
153
153
|
**"Will this get my Google account flagged or banned? What protects me?"** → [ACCOUNT_SAFETY.md](ACCOUNT_SAFETY.md) — the operational answer in one place: rate limit vs WAF block vs ban (they are different), what the tool does to stay unremarkable (headed real Chrome, ±25% interaction jitter, 0.5–1.5 s submission pacing, one project per run, isolated profiles, refuse-don't-retry), what it deliberately does **not** do (no proxies, no fingerprint spoofing, no headless unlock), the knobs, the [#241](https://github.com/ffroliva/gflow-cli/issues/241) field data on what actually triggers a 403, and what we cannot promise. Legal statement: [DISCLAIMER](../DISCLAIMER.md)
|
|
154
154
|
|
|
155
155
|
**"I got a 403 / `PUBLIC_ERROR_UNUSUAL_ACTIVITY` — what now?"** → [ACCOUNT_SAFETY § When Google does push back](ACCOUNT_SAFETY.md#when-google-does-push-back) (stop, cool down 30–60 min, use real Chrome meanwhile, switch profile, widen jitter); cadence evidence in [DEBUGGING § WAF cadence](DEBUGGING.md#waf-cadence); full entry in [KNOWN_ISSUES](../KNOWN_ISSUES.md)
|
|
@@ -158,7 +158,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
158
158
|
**"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)
|
|
159
159
|
**"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
|
|
160
160
|
**"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
|
|
161
|
-
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.71.0](LIVE_VERIFICATION_v0.71.0.md) (**`gflow character create --voice` verified end to end for the first time, 2026-09-07 on profile `ffroliva`.** Before this release a repo-wide grep for `--voice` across `tests/e2e/` matched **nothing** — every voice test was a unit test of the hardcoded `VOICES` constant and the one that looked live parsed a fixture, so a voice that silently failed to attach was invisible to the whole suite while the command exited 0. A live create + `character show` read-back settles a contradiction between two of our own documents: `sent='Charon' stored='Charon' identical=True`, so the Capitalized canonical form round-trips and `CHARACTER_RECON.md`'s "preset id is the lowercased name" does not describe today's wire. Both docs also now record that `personalityNotes` is **Agent-scoped** per Flow's own editor copy, not a control on the audio engine. **A claim that was in the code is overturned:** the `_unported_form` entity guard said the submit "never produces a reply" and that the backend refuses — in fact `MZZa6b` replies with a null payload and the generation is **accepted and queued** (Flow types it `abra_r2v_8s` and renders it); the failure is the *observer*, which waits out `SUBMIT_REPLY_BUDGET_S` (60 s, calibrated on 4.0–4.6 s replies against an idle queue) and exits 9 while the video is still rendering. The guard stays until the observer is fixed, because a timeout reported on a healthy generation is worse than an explicit refusal. Also verified: credit shortfall reports exit **37** with `_raise_if_out_of_credits` called from **both** give-up paths — and it is *short for the selected model*, not empty (the measured account held **50** and asked for `veo-quality`, which costs **100**); the "+ New project" CTA anchored structurally on `add` (Tier-1 matches **1** where every previous entry matched **0**, control 47 ligature nodes) after this same release first asserted the control did not exist and a $0 run disproved it in one click; and the incident-bundle DOM dump de-blinded — it queried `i.google-symbols` only, so **every bundle a migrated user sent carried an empty ligature list**, which is why #727 and #731 stayed invisible. One item recorded as NOT verified rather than omitted: whether a bound character's **voice reaches rendered audio** (#738) — attachment is proven, application is not, because no entity-bound generation has yet returned a file to measure. The blocker is no longer credits or account access but retrieval, and the measurement is pre-calibrated: plate-bound takes of one character gave **88 / 103 / 118 Hz** against a **4.3 Hz** engine noise floor, so an applied Algenib should sit near its sample's **163.3 Hz**.) · previous: [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (**reference-to-video on the migrated `flow.google.com` host, verified 2026-09-06 on profile `denon82`.** Three r2v runs bound their references every time; the decisive one is semantic rather than structural — two hand-drawn reference images went in and the clip came back carrying the same marker strokes, face and paper texture, which is what separates "Flow bound the reference" from "Flow accepted and ignored it". A four-beat, two-character piece was then produced end to end and joined with the concat filter: 19.000s, 1280x576, `clip_qa` **ok**, A/V **+0.000s**, both actors recognisable across every cut from one face plate plus the canon repeated verbatim. Also verified as exit-code corrections on the real CLI: `-o <existing directory>` now exits **2 in 0.8s** instead of exit 1 after ~2 min **and a billed, orphaned clip**; `character create` on a moved account exits **36 immediately** instead of a bare `RuntimeError` exit 1 after a 20s wait. Four items recorded as NOT verified rather than omitted: #692's original failure could not be reproduced [the reporter's own re-run was on a build without the fix, so it shows the failure is intermittent, not that the fix works]; Flow CHARACTER entities were never exercised because `character create` cannot run on any account available here; `image`/`scene`/`movie`/`extend` all exit 36 on the migrated host and no unmoved account exists here; and the sign-in-interstitial fidelity question from #699 has no bundle evidence either way.) · previous: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
|
|
161
|
+
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.71.1](LIVE_VERIFICATION_v0.71.1.md) (**two migrated-host error paths stopped blaming the wrong thing, 2026-09-08, $0 across three profiles.** The agent-mode recovery landed earlier in this same release (#749) and worked, but its first cut collapsed three outcomes into one message — chip clicked / chip found but click blocked / chip clicked and mode still on — so a modal eating the click sent users to toggle a chip that was never the problem, and genuine selector drift *after* the mode was left was filed under an account setting the driver had already changed. Verified by an e2e that drives the account INTO agent mode and carries its own neutered-selector control; run **twice**, because review fixes landed after the first run and it no longer covered the code. **The larger find:** an account's FIRST upload on this host is blocked by Flow's one-time *"Rights to use this image"* dialog, which renders *after* the file chooser hands the file over — so `_dismiss_dialog` never sees it and the driver spent 60 s waiting for a request the page had already declined to make, then advised re-encoding the image. Six runs on `ci-probe` close the chain: guard fires while the dialog is up → owner-authorised accept → uploads (`media_id 8914400f`) → fresh session uploads clean with `dialog: None`. The order was forced, because the dialog is one-off and accepting it destroys the failing state — so the guard was written and verified BEFORE anything was clicked, and its firing branch is now unrepeatable here. `maseQ` is confirmed **not** renamed (six uploads, three profiles), killing #719's top hypothesis. Also: Flow's queue listing is on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, and two `abra_r2v_8s` records sat at status 6 for ~20 h unseen by any CLI command (#741). Three documents are corrected rather than patched — a KNOWN_ISSUES entry that told #719's reader this dialog did not affect gflow-cli, and a v0.71.0 host label calling `ci-probe` *labs* when it is migrated, which helped a credit-based theory survive four runs. Recorded as NOT verified: #719's second failure shape — an upload request that leaves the page and is never answered, ~1 run in 4 — which is unfixed and keeps #719 open.) · previous: [LIVE_VERIFICATION_v0.71.0](LIVE_VERIFICATION_v0.71.0.md) (**`gflow character create --voice` verified end to end for the first time, 2026-09-07 on profile `ffroliva`.** Before this release a repo-wide grep for `--voice` across `tests/e2e/` matched **nothing** — every voice test was a unit test of the hardcoded `VOICES` constant and the one that looked live parsed a fixture, so a voice that silently failed to attach was invisible to the whole suite while the command exited 0. A live create + `character show` read-back settles a contradiction between two of our own documents: `sent='Charon' stored='Charon' identical=True`, so the Capitalized canonical form round-trips and `CHARACTER_RECON.md`'s "preset id is the lowercased name" does not describe today's wire. Both docs also now record that `personalityNotes` is **Agent-scoped** per Flow's own editor copy, not a control on the audio engine. **A claim that was in the code is overturned:** the `_unported_form` entity guard said the submit "never produces a reply" and that the backend refuses — in fact `MZZa6b` replies with a null payload and the generation is **accepted and queued** (Flow types it `abra_r2v_8s` and renders it); the failure is the *observer*, which waits out `SUBMIT_REPLY_BUDGET_S` (60 s, calibrated on 4.0–4.6 s replies against an idle queue) and exits 9 while the video is still rendering. The guard stays until the observer is fixed, because a timeout reported on a healthy generation is worse than an explicit refusal. Also verified: credit shortfall reports exit **37** with `_raise_if_out_of_credits` called from **both** give-up paths — and it is *short for the selected model*, not empty (the measured account held **50** and asked for `veo-quality`, which costs **100**); the "+ New project" CTA anchored structurally on `add` (Tier-1 matches **1** where every previous entry matched **0**, control 47 ligature nodes) after this same release first asserted the control did not exist and a $0 run disproved it in one click; and the incident-bundle DOM dump de-blinded — it queried `i.google-symbols` only, so **every bundle a migrated user sent carried an empty ligature list**, which is why #727 and #731 stayed invisible. One item recorded as NOT verified rather than omitted: whether a bound character's **voice reaches rendered audio** (#738) — attachment is proven, application is not, because no entity-bound generation has yet returned a file to measure. The blocker is no longer credits or account access but retrieval, and the measurement is pre-calibrated: plate-bound takes of one character gave **88 / 103 / 118 Hz** against a **4.3 Hz** engine noise floor, so an applied Algenib should sit near its sample's **163.3 Hz**.) · previous: [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) (**reference-to-video on the migrated `flow.google.com` host, verified 2026-09-06 on profile `denon82`.** Three r2v runs bound their references every time; the decisive one is semantic rather than structural — two hand-drawn reference images went in and the clip came back carrying the same marker strokes, face and paper texture, which is what separates "Flow bound the reference" from "Flow accepted and ignored it". A four-beat, two-character piece was then produced end to end and joined with the concat filter: 19.000s, 1280x576, `clip_qa` **ok**, A/V **+0.000s**, both actors recognisable across every cut from one face plate plus the canon repeated verbatim. Also verified as exit-code corrections on the real CLI: `-o <existing directory>` now exits **2 in 0.8s** instead of exit 1 after ~2 min **and a billed, orphaned clip**; `character create` on a moved account exits **36 immediately** instead of a bare `RuntimeError` exit 1 after a 20s wait. Four items recorded as NOT verified rather than omitted: #692's original failure could not be reproduced [the reporter's own re-run was on a build without the fix, so it shows the failure is intermittent, not that the fix works]; Flow CHARACTER entities were never exercised because `character create` cannot run on any account available here; `image`/`scene`/`movie`/`extend` all exit 36 on the migrated host and no unmoved account exists here; and the sign-in-interstitial fidelity question from #699 has no bundle evidence either way.) · previous: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
|
|
162
162
|
**"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).
|
|
163
163
|
**"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)).
|
|
164
164
|
**"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of what was then read as a flapping rollout** (superseded 2026-09-04: the handoff is a one-way per-account flag and exit 36 is non-retryable since). On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true` (then; `false` since 2026-09-04), `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.
|
|
@@ -5,8 +5,17 @@
|
|
|
5
5
|
> Flow for this release, and — just as importantly — what was **not**.
|
|
6
6
|
|
|
7
7
|
**Date:** 2026-09-07 · **Profiles:** `ffroliva` (migrated `flow.google.com`, 501→ credits),
|
|
8
|
-
`ci-probe` (
|
|
9
|
-
are migrated-host-specific.
|
|
8
|
+
`ci-probe` (**migrated `flow.google.com`**, freemium, **no credit**) · **Host lane matters
|
|
9
|
+
here**: several items below are migrated-host-specific.
|
|
10
|
+
|
|
11
|
+
> **Host label corrected 2026-09-08.** This line said `ci-probe` was on **labs**, which
|
|
12
|
+
> contradicted [LIVE_VERIFICATION_v0.70.0](LIVE_VERIFICATION_v0.70.0.md) one day earlier and
|
|
13
|
+
> was wrong. Measured: `labs.google/fx/tools/flow` on that profile redirects to
|
|
14
|
+
> `flow.google.com/` — the one-way migration redirect. In a repo where "Flow's UI shows X"
|
|
15
|
+
> is not a fact until the host is named, a mislabelled host in a verification ledger
|
|
16
|
+
> silently re-scopes every conclusion keyed to it — and this one helped make a credit
|
|
17
|
+
> theory look plausible for #719 when the real cause was a one-time consent dialog
|
|
18
|
+
> ([spike](superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md)).
|
|
10
19
|
|
|
11
20
|
---
|
|
12
21
|
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Live verification — v0.71.1
|
|
2
|
+
|
|
3
|
+
> What was exercised against **real** Flow for this release, and — just as importantly —
|
|
4
|
+
> what was **not**.
|
|
5
|
+
|
|
6
|
+
**Date:** 2026-09-08 · **Profiles:** `ffroliva` (migrated `flow.google.com`, funded),
|
|
7
|
+
`denon82` (migrated), `ci-probe` (migrated, non-paying, no credit) · **Cost: $0** — every run
|
|
8
|
+
below stops before a submit; no Veo credit is reachable from any of them.
|
|
9
|
+
|
|
10
|
+
> **Host note.** All three profiles are on the migrated host. `LIVE_VERIFICATION_v0.71.0`
|
|
11
|
+
> said `ci-probe` was on **labs**; that was wrong and is corrected in this release. Measured:
|
|
12
|
+
> `labs.google/fx/tools/flow` on that profile redirects to `flow.google.com/` — the one-way
|
|
13
|
+
> migration redirect.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. Agent-mode recovery names which of three things happened — VERIFIED ✅
|
|
18
|
+
|
|
19
|
+
`pytest -m e2e -k agent_mode tests/e2e/test_migrated_host_e2e.py`, profile `ffroliva`,
|
|
20
|
+
project `300f5260-…`. `e2e_auth`, $0. **Run twice** — once before the review fixes and again
|
|
21
|
+
after, because the first run no longer covered the changed code.
|
|
22
|
+
|
|
23
|
+
The test carries its own A/B control: it drives the account **into** agent mode through the
|
|
24
|
+
chip a user would click, then neuters `AGENT_MODE_CHIP` so the recovery cannot fire.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
15:20:56 migrated.navigate flow.google.com/project/300f5260-…
|
|
28
|
+
15:20:58 migrated.editor_ready <- healthy start
|
|
29
|
+
(test clicks the chip INTO agent mode; READY_ANCHOR goes hidden)
|
|
30
|
+
control arm -> UiSelectorDriftError "did not become visible"
|
|
31
|
+
15:21:53 migrated.agent_mode_exited issue_ref=#749 <- fix arm
|
|
32
|
+
15:21:53 migrated.editor_ready <- classic composer back
|
|
33
|
+
1 passed in 104.93s
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Five layers:
|
|
37
|
+
|
|
38
|
+
1. **Control discriminates.** The neutered arm raised `did not become visible` — the
|
|
39
|
+
*ordinary drift* branch — not an agent-mode message. Pinned with `match=` this release, so
|
|
40
|
+
it can no longer pass on any drift, including one raised by the recovery firing wrongly.
|
|
41
|
+
2. **Recovery fired.** `migrated.agent_mode_exited` present, once.
|
|
42
|
+
3. **State restored.** `READY_ANCHOR` visible again, asserted after the fix arm.
|
|
43
|
+
4. **No false positive on the happy path.** Neither `editor_ready` logged the new
|
|
44
|
+
`migrated.agent_mode_chip_pressed_while_ready` warning — the expected negative,
|
|
45
|
+
confirming the live account does hide the trigger in agent mode as measured.
|
|
46
|
+
5. **Account left clean.** The test now restores agent mode in a `finally`; the chip was
|
|
47
|
+
`aria-pressed='false'` afterwards, so no later run inherits the state.
|
|
48
|
+
|
|
49
|
+
## 2. The one-time upload-terms dialog — VERIFIED ✅, and unrepeatable hereafter
|
|
50
|
+
|
|
51
|
+
Probe: `scripts/dev/spike_migrated_upload_wire.py`, which drives the **real**
|
|
52
|
+
`_upload_via_toolbar` rather than a re-implementation, with a listener on every request.
|
|
53
|
+
Finding: [`no maseQ reply` is two different bugs](superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md).
|
|
54
|
+
|
|
55
|
+
**The order was forced.** The dialog is one-off per account, so accepting it destroys the
|
|
56
|
+
failing state permanently. The guard was written and verified against the live dialog
|
|
57
|
+
**before** anything was clicked; the account owner then authorised the click explicitly.
|
|
58
|
+
|
|
59
|
+
| # | Run on `ci-probe` | Result |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| 1–3 | pre-fix upload | `no maseQ reply within 60s` — the misleading message |
|
|
62
|
+
| 4 | upload **with the guard** | a dialog opened during the upload window was named instead of the file being blamed |
|
|
63
|
+
| 5 | the spike's `--accept-terms` (off by default) → click → retry, same session | **`media_id 8914400f-2c3c-41da-84a9-2e26a356d24e`** |
|
|
64
|
+
| 6 | plain upload, fresh session | **uploaded, `dialog: None`, 4 POSTs** |
|
|
65
|
+
|
|
66
|
+
Five layers:
|
|
67
|
+
|
|
68
|
+
1. **The dialog is the blocker.** Run 4 named it while it was still on screen, from a live
|
|
69
|
+
DOM read: *"Rights to use this image — Make sure you have the necessary rights to any
|
|
70
|
+
content or files that you upload…"*.
|
|
71
|
+
|
|
72
|
+
> **Wording note.** Run 4 predates the review pass and emitted *"…no maseQ request was
|
|
73
|
+
> ever sent — Flow is holding the upload behind its one-time upload-terms confirmation"*.
|
|
74
|
+
> The shipped build hedges that claim, because a dialog count is evidence for a guess and
|
|
75
|
+
> not a fact, and it now observes the request rather than inferring it:
|
|
76
|
+
> *"a dialog opened after the file was chosen and no maseQ request left the page — most
|
|
77
|
+
> likely Flow's one-time upload-terms confirmation (host=migrated)"*. The behaviour under
|
|
78
|
+
> test is identical; only the sentence changed.
|
|
79
|
+
2. **Accepting unlocks the upload.** Run 5 returned a real media id, immediately, in the same
|
|
80
|
+
session, on the account that had failed 3/3.
|
|
81
|
+
3. **It never returns.** Run 6, fresh browser session, `dialog: None` and a healthy 4-POST
|
|
82
|
+
window — versus the 2-POST window of a blocked run.
|
|
83
|
+
4. **The wire agrees.** `maseQ` POST observed leaving the page on every successful run and on
|
|
84
|
+
**none** of runs 1–4; `saw_expected_rpc` false throughout the blocked state.
|
|
85
|
+
5. **Cross-account control.** `ffroliva` and `denon82`, which had uploaded before, never saw
|
|
86
|
+
the dialog and uploaded the same 4 321-byte 1280×720 PNG successfully — so the variable is
|
|
87
|
+
consent, not the file, not credits, and not the rpcid.
|
|
88
|
+
|
|
89
|
+
> **Not repeatable from here.** All three available accounts have now accepted the dialog.
|
|
90
|
+
> Re-verifying the guard's *firing* branch needs a Google account that has never uploaded on
|
|
91
|
+
> `flow.google.com`. That is a named external blocker, not a skipped step; the guard's
|
|
92
|
+
> non-firing branch — where the regression risk actually lives — is covered offline by a
|
|
93
|
+
> control test and by the existing `e2e_video` i2v/r2v paths.
|
|
94
|
+
|
|
95
|
+
## 3. `maseQ` is not renamed — VERIFIED ✅
|
|
96
|
+
|
|
97
|
+
Six successful uploads across three profiles, each a `maseQ` POST → HTTP 200 → a media id the
|
|
98
|
+
driver bound (`8b3ff931`, `d1c80c09`, `423176b3`, `8914400f`, `8787e007`, …). The 2026-09-05
|
|
99
|
+
capture that established the rpcid still holds. This mattered because a renamed rpcid was
|
|
100
|
+
#719's top-ranked hypothesis and the only one a constant change would have fixed.
|
|
101
|
+
|
|
102
|
+
## 4. Flow's queue is readable at $0 — VERIFIED ✅ (instrument only)
|
|
103
|
+
|
|
104
|
+
`scripts/dev/spike_migrated_queue_read.py`, `ffroliva`, project `c5550ed7-…`, two runs ten
|
|
105
|
+
minutes apart with identical results, and a third ~20 h later.
|
|
106
|
+
|
|
107
|
+
- **69 records, all on `Zzl0ze`.** An idle project load shows 15 distinct rpcids and
|
|
108
|
+
`jwpduf`/`as29s` are among **none** — those are progress polls, seen only because the driver
|
|
109
|
+
only ever watches a page mid-generation.
|
|
110
|
+
- **Two record shapes.** Length 8 is a video generation with the model arm at `[7][0]`;
|
|
111
|
+
length 7 is an image with no status and no model. Read with one shape, all 34 images report
|
|
112
|
+
`status: null`, indistinguishable from a failed generation.
|
|
113
|
+
- **Two `abra_r2v_8s` records sat at status 6 (`submitted`)** with no media URL, and were
|
|
114
|
+
**still** `submitted` when re-read ~20 h later, while a later run on the same project
|
|
115
|
+
reached status 3.
|
|
116
|
+
|
|
117
|
+
Finding: [the migrated queue is readable on `Zzl0ze`](superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md).
|
|
118
|
+
|
|
119
|
+
This ships as an instrument only; no user-facing command reads the queue yet (#741).
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Recorded as NOT verified
|
|
124
|
+
|
|
125
|
+
- **#719's second failure shape.** On a funded, already-consented account, ~1 upload in 4
|
|
126
|
+
sends the `maseQ` request (8 675 B) and never receives a reply, with the entire project-load
|
|
127
|
+
rpcid inventory firing 2.6 s later (24 POSTs versus 4 on a healthy run). Unfixed, unexplained,
|
|
128
|
+
and #719 stays open for it. This release only makes it *distinguishable*: the driver now
|
|
129
|
+
watches the request, so this reports *"the request left the page and Flow did not answer in
|
|
130
|
+
time"* rather than sharing a message with the consent case.
|
|
131
|
+
- **Whether that 2.6 s burst is a page reload** ([#719](https://github.com/ffroliva/gflow-cli/issues/719)).
|
|
132
|
+
It has the shape of one — the full project-load rpcid set, at once — but no navigation event
|
|
133
|
+
was captured and nothing in `_upload_via_toolbar` navigates. **Blocker:** the shape occurs on
|
|
134
|
+
~1 run in 4, so catching it with navigation instrumentation attached needs repeated paid-path
|
|
135
|
+
runs on a consented account; the instrument to do it is in the repo
|
|
136
|
+
(`scripts/dev/spike_migrated_upload_wire.py`).
|
|
137
|
+
- **The labs.google behaviour of either fix** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).
|
|
138
|
+
Neither the agent-mode chip nor the upload-terms dialog was observed on labs.
|
|
139
|
+
**Blocker:** Google has migrated every account available here — `ffroliva`, `denon82` and
|
|
140
|
+
`ci-probe` all redirect from `labs.google/fx/tools/flow` to `flow.google.com/` — so there is
|
|
141
|
+
no labs cohort to test against. Both fixes are scoped to `migrated_composer` and cannot
|
|
142
|
+
affect the labs driver.
|
|
143
|
+
- **`gflow image` / scenes / extend / instructions on the migrated host**
|
|
144
|
+
([#639](https://github.com/ffroliva/gflow-cli/issues/639)). Untouched by this release and
|
|
145
|
+
still exit 36. **Blocker:** not implemented rather than unverifiable — PR #750 addresses the
|
|
146
|
+
image half and was excluded from this release because it is branched pre-#751 and conflicts
|
|
147
|
+
across six files.
|