gflow-cli 0.70.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.70.0 → gflow_cli-0.71.1}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/dependabot.yml +0 -26
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/pages.yml +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/release.yml +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.gitignore +9 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/AGENTS.md +4 -3
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CHANGELOG.md +355 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/KNOWN_ISSUES.md +70 -8
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/PKG-INFO +3 -3
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/README.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AGENT_GUIDE.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/ARCHITECTURE.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/CHARACTER.md +41 -15
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/CHARACTER_RECON.md +7 -2
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/GITHUB.md +4 -2
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/INDEX.md +2 -2
- gflow_cli-0.71.1/docs/LIVE_VERIFICATION_v0.71.0.md +129 -0
- gflow_cli-0.71.1/docs/LIVE_VERIFICATION_v0.71.1.md +147 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/MOVIE.md +60 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/PROJECT_STATUS.md +102 -2
- {gflow_cli-0.70.0/website → gflow_cli-0.71.1}/docs/PROMPT_EXPANSION.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/USAGE.md +10 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +8 -1
- gflow_cli-0.71.1/docs/superpowers/memory/ligature-carrier-differs-by-host.md +45 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +145 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +102 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +120 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +113 -0
- gflow_cli-0.71.1/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +106 -0
- 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.70.0 → gflow_cli-0.71.1}/llms.txt +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/pyproject.toml +3 -3
- gflow_cli-0.71.1/scripts/dev/acceptance/__init__.py +47 -0
- gflow_cli-0.71.1/scripts/dev/acceptance/bench.py +140 -0
- gflow_cli-0.71.1/scripts/dev/acceptance/domain.py +109 -0
- gflow_cli-0.71.1/scripts/dev/acceptance/judge.py +381 -0
- gflow_cli-0.71.1/scripts/dev/acceptance/settings.py +83 -0
- gflow_cli-0.71.1/scripts/dev/capture_i2v_frame_slots_dom.py +203 -0
- gflow_cli-0.71.1/scripts/dev/capture_i2v_intercept_submit.py +267 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_i2v_model_select_repro.py +38 -33
- gflow_cli-0.71.1/scripts/dev/capture_i2v_post_bind_state.py +293 -0
- gflow_cli-0.71.1/scripts/dev/capture_image_add_media_dom.py +192 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_locale_invariants.py +6 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_submit_payload.py +27 -9
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_cdp_har_without_node.py +6 -1
- gflow_cli-0.71.1/scripts/dev/spike_character_editor_ready_gate.py +204 -0
- gflow_cli-0.71.1/scripts/dev/spike_character_prompt_format.py +270 -0
- gflow_cli-0.71.1/scripts/dev/spike_entity_submit_rpcs.py +263 -0
- gflow_cli-0.71.1/scripts/dev/spike_format_prompt_effect.py +208 -0
- gflow_cli-0.71.1/scripts/dev/spike_host_lane.py +156 -0
- gflow_cli-0.71.1/scripts/dev/spike_ligature_carrier_sweep.py +315 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_composer_arms.py +319 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_composer_mode_axis.py +208 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_entity_submit.py +243 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_image_capability.py +58 -4
- gflow_cli-0.71.1/scripts/dev/spike_migrated_picker_option_kind.py +132 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_queue_read.py +164 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_submit_anchor.py +149 -0
- gflow_cli-0.71.1/scripts/dev/spike_migrated_upload_wire.py +284 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +123 -118
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_patchright.py +5 -1
- gflow_cli-0.71.1/scripts/dev/spike_project_media_status.py +120 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/pr-council-review/SKILL.md +2 -2
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/spike/SKILL.md +27 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/SKILL.md +149 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/_cli_helpers.py +11 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/client.py +36 -9
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/migrated_composer.py +416 -25
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/ui_automation.py +251 -49
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_character.py +7 -3
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/diagnostics.py +7 -2
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/errors.py +44 -0
- gflow_cli-0.71.1/tests/api/transports/test_ligature_carrier.py +202 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_composer.py +517 -9
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_dispatch.py +28 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_r2v.py +91 -0
- gflow_cli-0.71.1/tests/api/transports/test_new_project_cta_migrated.py +72 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation.py +29 -13
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_character_editor.py +283 -15
- gflow_cli-0.71.1/tests/cli/test_run_with_handlers_context_leak.py +74 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/conftest.py +7 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_agentic_count_enforcement_e2e.py +26 -6
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_character_create_e2e.py +260 -25
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_character_mcp_parity_e2e.py +17 -1
- gflow_cli-0.71.1/tests/e2e/test_e2e_env_isolation.py +44 -0
- gflow_cli-0.71.1/tests/e2e/test_insufficient_credits_e2e.py +90 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_migrated_host_e2e.py +71 -1
- gflow_cli-0.71.1/tests/scripts/test_frame_acceptance.py +321 -0
- gflow_cli-0.71.1/tests/scripts/test_spike_page_pool.py +81 -0
- gflow_cli-0.71.1/tests/scripts/test_spike_profile_lease.py +72 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_documentation_gate.py +17 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/uv.lock +31 -31
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/ARCHITECTURE.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/CHARACTER.md +41 -15
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/KNOWN_ISSUES.md +70 -8
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/MOVIE.md +60 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1/website}/docs/PROMPT_EXPANSION.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/USAGE.md +10 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/installation.md +1 -1
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/requirements.txt +3 -3
- gflow_cli-0.70.0/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -163
- gflow_cli-0.70.0/eval/pr_triage_eval.py +0 -42
- gflow_cli-0.70.0/eval/pr_triage_fixtures.json +0 -194
- gflow_cli-0.70.0/scripts/autopilot/Dockerfile.triage +0 -54
- gflow_cli-0.70.0/scripts/autopilot/entrypoint.sh +0 -10
- gflow_cli-0.70.0/scripts/autopilot/package-lock.json +0 -152
- gflow_cli-0.70.0/scripts/autopilot/package.json +0 -8
- gflow_cli-0.70.0/scripts/autopilot/pr_triage_autopilot.py +0 -859
- gflow_cli-0.70.0/scripts/autopilot/pr_triage_gate.py +0 -192
- gflow_cli-0.70.0/scripts/autopilot/run_sandboxed_review.sh +0 -188
- gflow_cli-0.70.0/scripts/dev/capture_i2v_frame_slots_dom.py +0 -198
- gflow_cli-0.70.0/scripts/dev/capture_i2v_intercept_submit.py +0 -262
- gflow_cli-0.70.0/scripts/dev/capture_i2v_post_bind_state.py +0 -288
- gflow_cli-0.70.0/scripts/dev/capture_image_add_media_dom.py +0 -184
- gflow_cli-0.70.0/scripts/dev/spike_character_prompt_format.py +0 -121
- gflow_cli-0.70.0/tests/autopilot/test_pr_triage_autopilot.py +0 -1149
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/spike.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.env.template +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.gitattributes +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.gitleaks.toml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/.secrets.baseline +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CLAUDE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CONFIGURATION.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/DISCLAIMER.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/LICENSE +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/RELEASE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/ROADMAP.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/conftest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docker-compose.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/CONFIGURATION.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DEMOS.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/MCP.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/SECURITY.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/TOOLS.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/sample_config.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/index.html +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_migrated_upload_flow.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/extract_har_summary.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_character_surface.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/README.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/gflow-cli/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/sonar-project.properties +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/credits.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/batchexecute.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_credits.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/mcp/tools.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/credits.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tasks/lessons.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_character_readback_fallback.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_migrated_mint.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_credits.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_credits_http.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_image.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_character_model_picker.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/conftest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_models.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_store.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_credits_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_credits_mcp_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/auth.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/conftest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/credits.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/image.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/constants.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_character_tools.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_reference_entity_round_trip.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_extract_har_summary.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_credits.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_auth.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_chain.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_config.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_errors.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_json_output.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_media.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_observability.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_paths.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_smoke.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/test_update_check.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/CONFIGURATION.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/MCP.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/agents.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/index.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/mkdocs.yml +0 -0
- {gflow_cli-0.70.0 → gflow_cli-0.71.1}/website/requirements.in +0 -0
|
@@ -111,32 +111,6 @@ updates:
|
|
|
111
111
|
applies-to: version-updates
|
|
112
112
|
patterns: ["*"]
|
|
113
113
|
|
|
114
|
-
# npm — the PR-triage sandbox's pinned Claude Code CLI
|
|
115
|
-
# (scripts/autopilot/package-lock.json, installed via `npm ci` in
|
|
116
|
-
# Dockerfile.triage).
|
|
117
|
-
- package-ecosystem: "npm"
|
|
118
|
-
directory: "/scripts/autopilot"
|
|
119
|
-
schedule:
|
|
120
|
-
interval: "weekly"
|
|
121
|
-
day: "monday"
|
|
122
|
-
time: "08:00"
|
|
123
|
-
timezone: "Europe/Lisbon"
|
|
124
|
-
open-pull-requests-limit: 2
|
|
125
|
-
labels:
|
|
126
|
-
- "dependencies"
|
|
127
|
-
|
|
128
|
-
# Docker — the digest-pinned node:20-slim base of Dockerfile.triage.
|
|
129
|
-
- package-ecosystem: "docker"
|
|
130
|
-
directory: "/scripts/autopilot"
|
|
131
|
-
schedule:
|
|
132
|
-
interval: "weekly"
|
|
133
|
-
day: "monday"
|
|
134
|
-
time: "08:00"
|
|
135
|
-
timezone: "Europe/Lisbon"
|
|
136
|
-
open-pull-requests-limit: 2
|
|
137
|
-
labels:
|
|
138
|
-
- "dependencies"
|
|
139
|
-
|
|
140
114
|
# uv — the hash-pinned MkDocs set for the Pages build
|
|
141
115
|
# (website/requirements.txt, compiled from website/requirements.in).
|
|
142
116
|
# "uv", NOT "pip", for the same reason as the root entry: the pip ecosystem
|
|
@@ -73,7 +73,7 @@ jobs:
|
|
|
73
73
|
# Configure once at https://pypi.org/manage/account/publishing/
|
|
74
74
|
|
|
75
75
|
- name: Create GitHub Release
|
|
76
|
-
uses: softprops/action-gh-release@
|
|
76
|
+
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3
|
|
77
77
|
with:
|
|
78
78
|
generate_release_notes: true
|
|
79
79
|
files: dist/*
|
|
@@ -45,6 +45,15 @@ secrets.json
|
|
|
45
45
|
.env.local
|
|
46
46
|
.env.*.local
|
|
47
47
|
|
|
48
|
+
# Runtime state written into this repo by tools run FROM this directory.
|
|
49
|
+
# social-publisher's queue defaults to a RELATIVE path (its cli.py: SP_QUEUE_DB,
|
|
50
|
+
# default "state/queue.sqlite"), so invoking it — or its MCP server — with this repo
|
|
51
|
+
# as CWD silently creates state/queue.sqlite here. On 2026-09-07 that produced a
|
|
52
|
+
# second, EMPTY queue that a dry-run then read and reported as "nothing pending",
|
|
53
|
+
# while the real queue sat in social-publisher/state/. Untracked and unignored, it
|
|
54
|
+
# was also one `git add -A` from being committed.
|
|
55
|
+
state/
|
|
56
|
+
|
|
48
57
|
# Generated outputs
|
|
49
58
|
out/
|
|
50
59
|
tmp/
|
|
@@ -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).
|
|
@@ -62,7 +62,8 @@ If you can help unblock a pure HTTP transport (especially for video generation,
|
|
|
62
62
|
## Dev environment tips
|
|
63
63
|
|
|
64
64
|
- `uv sync` then `uv run playwright install chromium`. No global Python install needed.
|
|
65
|
-
- Copy `.env.template` to
|
|
65
|
+
- Copy `.env.template` to **`.env`** — either in the directory you run `gflow` from (project-local) or at `$GFLOW_CLI_HOME/.env` (machine-wide); on conflict the CWD one wins. It documents every env var. Both are gitignored; never commit either.
|
|
66
|
+
**Not `.env.local` — nothing loads that file.** `config.py::_env_files()` returns exactly `(<home>/.env, .env)`, so `GFLOW_CLI_*` settings put in `.env.local` are silently ignored and `get_settings()` reports the default as though you had set nothing. Keeping a `.env.local` for credentials **you** read by hand (e.g. `SONAR_TOKEN`) is fine — it is only wrong as a home for gflow's own settings.
|
|
66
67
|
- Output goes to `./tmp/` for scripts/tests or `$GFLOW_CLI_OUTPUT_DIR` for CLI outputs (defaults to `./out/`).
|
|
67
68
|
- One-time auth: `gflow auth login --browser chrome` (recommended — a real-Chrome profile is what generation runs need; the default `--browser auto` can also pick the internal strategy, and generation later fails fast on profiles created with a non-chrome strategy).
|
|
68
69
|
- Use `/gflow:status` to see the current task before starting work; `/gflow:known-issues` before touching auth or reCAPTCHA code paths.
|
|
@@ -105,7 +106,7 @@ the five other mirror axes), which no command here can check and no CI gate can
|
|
|
105
106
|
|
|
106
107
|
- Type hints everywhere; `pyright` strict on `src/gflow_cli`.
|
|
107
108
|
- Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
|
|
108
|
-
- Errors as RFC 9457 Problem Details with stable per-class exit codes (3–
|
|
109
|
+
- Errors as RFC 9457 Problem Details with stable per-class exit codes (3–37, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
|
|
109
110
|
- 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
|
|
110
111
|
- **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
|
|
111
112
|
- **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
|
|
@@ -7,6 +7,358 @@ 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
|
+
|
|
107
|
+
## [0.71.0] — 2026-09-07
|
|
108
|
+
|
|
109
|
+
### Fixed
|
|
110
|
+
|
|
111
|
+
- **`--format-prompt` could submit an EMPTY prompt and log it as success.** The
|
|
112
|
+
observed-rewrite gate compared `abs(len(current) - len(typed)) >= 16`, and `abs` accepts
|
|
113
|
+
change in either direction. Flow **clears** the composer before repopulating it, so a poll
|
|
114
|
+
landing in that window read `""`, `abs(0 - 19) = 19` passed the gate, and `_send_prompt`
|
|
115
|
+
called `_click_submit` on the very next line — submitting nothing, on a path that spends
|
|
116
|
+
image quota, while `ui_automation.prompt_formatted` logged `prompt_len_after=0`
|
|
117
|
+
(`prompt_hash=e3b0c442`, the SHA-256 of the empty string).
|
|
118
|
+
|
|
119
|
+
Silent, billed, and self-certifying: a user hitting it would see a charge, an empty
|
|
120
|
+
result, and a log line saying it worked. It is also the exact defect the same release
|
|
121
|
+
fixes — a success signal that fires on the **absence** of the thing it measures — rebuilt
|
|
122
|
+
inside its own fix.
|
|
123
|
+
|
|
124
|
+
The gate now requires **growth** (`len(current) >= len(typed) + MIN_DELTA`) rather than an
|
|
125
|
+
absolute delta, plus a settle check: two reads one poll-interval apart must agree, because
|
|
126
|
+
the single discrete swap measured live was sampled at 250 ms and a partial write between
|
|
127
|
+
samples was never ruled out. Found by an adversarial review of the fix, not by the fix's
|
|
128
|
+
own tests. ([#745](https://github.com/ffroliva/gflow-cli/issues/745))
|
|
129
|
+
|
|
130
|
+
- **The entity guard recorded a cause that was wrong, and it is retracted.** The
|
|
131
|
+
`reference_entities` refusal in `_unported_form` said the submit *"never produces a
|
|
132
|
+
YhhmEf/eb1hJf/MZZa6b reply"*, cause unknown, undiagnosable without fixing
|
|
133
|
+
[#722](https://github.com/ffroliva/gflow-cli/issues/722). Reading the wire live shows
|
|
134
|
+
otherwise: `MZZa6b` **does** reply, with a null payload and an error slot, and the generation
|
|
135
|
+
is **accepted and queued** — Flow derives an `abra_r2v_8s` model key and renders it. What
|
|
136
|
+
fails is the observer: a null payload never names a media id, so `submit_and_observe`'s
|
|
137
|
+
`submitted` future never resolves and `SUBMIT_REPLY_BUDGET_S` (60 s) expires. That budget's
|
|
138
|
+
own comment records its calibration — *"the submit reply arrived 4.0–4.6 s after the click"* —
|
|
139
|
+
against an idle queue, while Flow allows **five concurrent generations** and throttles
|
|
140
|
+
per-minute throughput after heavy daily use. The run exits 9 `TransportTimeoutError` while the
|
|
141
|
+
video is still rendering. The guard **stays** (a timeout reported on a generation that is
|
|
142
|
+
actually running is worse for the user than an explicit refusal) but its reason is now
|
|
143
|
+
accurate and the fix is named beside it: on a null submit payload, fall through to the
|
|
144
|
+
`jwpduf`/`as29s` status poll. Two earlier comments on that guard, including one added in this
|
|
145
|
+
release, asserted the wrong cause.
|
|
146
|
+
([#723](https://github.com/ffroliva/gflow-cli/issues/723),
|
|
147
|
+
[#742](https://github.com/ffroliva/gflow-cli/pull/742))
|
|
148
|
+
- **`docs/CHARACTER.md` and `docs/CHARACTER_RECON.md` disagreed on the voice wire case, and one
|
|
149
|
+
was wrong.** CHARACTER.md called the Capitalized UI name canonical while flagging the question
|
|
150
|
+
UNVERIFIED; CHARACTER_RECON.md recorded `presetVoiceId: "gacrux"` and stated the preset id is
|
|
151
|
+
the lowercased name. A live run settles it: `sent='Charon' stored='Charon' identical=True`.
|
|
152
|
+
Both documents now also record that `personalityNotes` is **Agent-scoped** — Flow's own editor
|
|
153
|
+
says *"The Flow agent can use this information to help craft scenes with your character"* — so
|
|
154
|
+
it is not a control on the audio engine and should not be expected to steer a `t2v`/`r2v`
|
|
155
|
+
performance. ([#736](https://github.com/ffroliva/gflow-cli/pull/736))
|
|
156
|
+
- **The "+ New project" CTA is found by structure again, not by English.** Its Tier-1 anchors
|
|
157
|
+
all targeted the `add_2` ligature. The migrated `flow.google.com` gallery renders **`add`**
|
|
158
|
+
under a `<mat-icon>` and renders `add_2` nowhere on that surface, so every structural entry
|
|
159
|
+
missed and the CTA was reached only by `button:has-text('New project')` — the localised-text
|
|
160
|
+
anti-pattern Tier 1 exists to avoid, and one that fails outright on a non-English migrated
|
|
161
|
+
profile. Tier 1 now leads with a class-only `add` anchor covering both carriers; measured on
|
|
162
|
+
the live gallery (control: 47 ligature nodes) it matches 1 where every previous entry
|
|
163
|
+
matched 0.
|
|
164
|
+
|
|
165
|
+
Also removed: `button:text-matches('^\+\s+\S+$', 'i')`. It is not a valid Playwright
|
|
166
|
+
selector and **raised on every evaluation** — observed twice against the live gallery — with
|
|
167
|
+
`except Exception: continue` swallowing it, so it had never matched anything on any host
|
|
168
|
+
while costing a round trip per attempt.
|
|
169
|
+
|
|
170
|
+
**This reverts the guard added moments earlier in the same release.** That guard raised
|
|
171
|
+
`FlowHostMigratedError` claiming the migrated host "renders no '+ New project' control gflow
|
|
172
|
+
can drive". It was an unproven negative, generalised from a sweep of two other surfaces to a
|
|
173
|
+
third that was never probed, and a live run disproved it in one click by creating a project
|
|
174
|
+
there. On a non-EN migrated profile it would have told the user that host has no such
|
|
175
|
+
control — false, and a dead end — when the real fix was to anchor on `add`.
|
|
176
|
+
([#730](https://github.com/ffroliva/gflow-cli/issues/730))
|
|
177
|
+
|
|
178
|
+
- **~~A migrated-host gallery no longer reports a missing control as selector drift.~~ REVERTED WITHIN THIS RELEASE — kept for the record, see the bullet above.** The guard described below shipped and was removed again before the tag, because a live run created a project on that very surface in one click. The net change in v0.71.0 is the one above: the CTA is anchored structurally on `add` instead of by English text. Nothing in the paragraph that follows is behaviour you will find in this release.
|
|
179
|
+
`NEW_PROJECT_SELECTORS` anchors on the `add_2` ligature. The migrated `flow.google.com`
|
|
180
|
+
frontend renders **`add`** and renders `add_2` **nowhere** — composer `add=1/add_2=0`,
|
|
181
|
+
editor `add=2/add_2=0`, measured with per-surface controls. That is a ligature *name*
|
|
182
|
+
drift, not the carrier split, so a `mat-icon` twin would not have helped. Reaching the
|
|
183
|
+
sweep there produced `Could not find 'New project' CTA on Flow gallery`, whose remediation
|
|
184
|
+
is "check for a newer release, then file a frontend bug" — unfixable by the reader, and
|
|
185
|
+
pointing at the wrong culprit, exactly as a credit shortfall once reported as frontend
|
|
186
|
+
drift. It now raises `FlowHostMigratedError` naming the host and the way forward
|
|
187
|
+
(`--project`, which every migrated path already requires). On labs a missing CTA is still
|
|
188
|
+
reported as drift, because there it genuinely is.
|
|
189
|
+
|
|
190
|
+
No production path reaches this today — `migrated_can_serve` refuses without a
|
|
191
|
+
`project_id`, `ensure_editor` navigates straight to the project URL, and `character create`
|
|
192
|
+
requires `--project`. The `add_2` drift is therefore harmless **because of those guards**,
|
|
193
|
+
which is precisely what a future port relaxes; the measured fact now sits beside the
|
|
194
|
+
constant so the next person to un-guard a path meets it.
|
|
195
|
+
([#730](https://github.com/ffroliva/gflow-cli/issues/730),
|
|
196
|
+
[spike](docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md))
|
|
197
|
+
|
|
198
|
+
- **Flow's own diagnostics were blind on the migrated host, and two selectors were broken behind
|
|
199
|
+
it.** `gflow`'s incident-bundle DOM dump queried `i.google-symbols, span.google-symbols`, and
|
|
200
|
+
`diagnostics.py`'s `STRUCTURAL_DOM_JS` queried `i.google-symbols` — so on `flow.google.com`,
|
|
201
|
+
where every Material Symbols ligature rides a `<mat-icon>`, **both reported zero ligatures**.
|
|
202
|
+
The instrument used to diagnose selector drift was blind to the host the drift lives on. That
|
|
203
|
+
is why [#727](https://github.com/ffroliva/gflow-cli/issues/727) and
|
|
204
|
+
[#731](https://github.com/ffroliva/gflow-cli/issues/731) stayed invisible, and why an incident
|
|
205
|
+
bundle from a migrated user named no ligatures at all. Both queries are now class-only.
|
|
206
|
+
|
|
207
|
+
Two selectors were broken behind that blindness. `SUBMIT_BUTTON_SELECTORS` was **working by
|
|
208
|
+
luck**: its two tag-qualified entries matched nothing on the migrated host and the submit only
|
|
209
|
+
landed because a third `has-text` entry matches the `<mat-icon>`'s *text* — observed live as
|
|
210
|
+
`prompt_submitted via="button:has-text('arrow_forward')"`, after paying two misses per submit.
|
|
211
|
+
`IMAGE_MODEL_PICKER_TRIGGER` had neither twin nor fallback, so its miss was total and silent:
|
|
212
|
+
the picker is best-effort, so generation simply proceeded on whatever model tier the editor
|
|
213
|
+
opened at. Both now anchor on the `google-symbols` **class**, which sits on the labs `<i>` and
|
|
214
|
+
the migrated `<mat-icon>` alike — verified against a real CSS engine, offline, in
|
|
215
|
+
`tests/api/transports/test_ligature_carrier.py`.
|
|
216
|
+
|
|
217
|
+
`SUBMIT_BUTTON_SELECTORS` also moves from `:text` to **`:text-is`**. `:text` is a substring
|
|
218
|
+
match and accepts `arrow_forward_ios`, a real Material Symbol; the `<i>` qualifier had been
|
|
219
|
+
containing that, and dropping it for the class-only carrier made the over-match reachable on
|
|
220
|
+
the submit path. The two-carrier fixture caught it as `matched 3 of 2` before it ran live.
|
|
221
|
+
([#730](https://github.com/ffroliva/gflow-cli/issues/730),
|
|
222
|
+
[spike](docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md))
|
|
223
|
+
|
|
224
|
+
- **`character create --format-prompt` works again — both halves of it.** The flag had two
|
|
225
|
+
independent faults, and fixing only the first would have left it just as useless. On the
|
|
226
|
+
migrated `flow.google.com` host
|
|
227
|
+
all three entries of `PROMPT_FORMAT_SELECTORS` missed, so the flag degraded to a no-op:
|
|
228
|
+
`ui_automation.format_button_not_found`, exit **0**, prompt submitted as
|
|
229
|
+
typed, and the image quota spent on a run whose requested prompt-engineering step never
|
|
230
|
+
happened. The button was never absent. Measured on 2026-09-07 with
|
|
231
|
+
`scripts/dev/spike_character_prompt_format.py` (`$0` — navigation, one free `createEntity`,
|
|
232
|
+
DOM reads and typing; two control anchors, so a flat zero could not be mistaken for
|
|
233
|
+
absence): it renders as
|
|
234
|
+
`<flow-format-prompt-button>`, and the Angular frontend carries the unchanged
|
|
235
|
+
`personal_recommendations` ligature in **`<mat-icon>`** rather than `<i>` — the same carrier
|
|
236
|
+
split fixed for `add_2` / `arrow_drop_down` / `accessibility_new` in #703, which this constant
|
|
237
|
+
was not swept with. The EN `span:text-is('Format')` fallback missed too and is **deleted**
|
|
238
|
+
rather than translated: the button's own `aria-label` reads `"Formatar"` on a pt account, and
|
|
239
|
+
display labels are banned as anchors. The cascade now leads with the custom element and covers
|
|
240
|
+
both carriers. ([#727](https://github.com/ffroliva/gflow-cli/issues/727),
|
|
241
|
+
[spike](docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md))
|
|
242
|
+
|
|
243
|
+
- **`video t2v --reference-entity` no longer bills a clip that ignores the entity.** On the
|
|
244
|
+
migrated `flow.google.com` host the "character references are not ported" refusal lived inside
|
|
245
|
+
the r2v branch of the routing gate, so a t2v request returned from that gate before its
|
|
246
|
+
`reference_entities` were ever inspected — and nothing downstream attaches one there
|
|
247
|
+
(`attach_start_frame` is i2v-only, `attach_references` and the chip verification are r2v-only).
|
|
248
|
+
The run was submitted and **billed**, returning a plausible clip with an unbound face. That is
|
|
249
|
+
strictly worse than the exit 36 it was meant to give: a refusal is free and honest. The
|
|
250
|
+
sibling gate `migrated_can_serve` did refuse, but it only feeds `prefer_migrated`, and an
|
|
251
|
+
account Flow has already moved is routed by its URL without consulting it — so the refusal was
|
|
252
|
+
unreachable for exactly the accounts that needed it. The check is now mode-independent and
|
|
253
|
+
ahead of every early return. ([#716](https://github.com/ffroliva/gflow-cli/issues/716))
|
|
254
|
+
- **A credit shortfall is no longer diagnosed as a moved frontend.** On the migrated
|
|
255
|
+
`flow.google.com` host, an account whose balance is short **for the model it asked for**
|
|
256
|
+
produced `UiSelectorDriftError` (exit 23) — *"A Flow editor UI element could not be
|
|
257
|
+
located — Google may have updated their frontend. Check for a newer gflow-cli release,
|
|
258
|
+
then file a bug"*. Flow does not **disable** the submit control, it **replaces** it:
|
|
259
|
+
`arrow_forward` disappears and a `prompt-warning-button` carrying
|
|
260
|
+
`aria-label='Insufficient credits warning'` takes its place, so the anchor's absence
|
|
261
|
+
tracks the credit state, not the frontend. Measured by A/B on 2026-09-07 —
|
|
262
|
+
`scripts/dev/spike_migrated_submit_anchor.py`, same probe and same code ~60 s apart,
|
|
263
|
+
two accounts rendering the mirror image of each other. The wallet was **not** empty:
|
|
264
|
+
it held **50** credits and the run asked for `--model veo-quality`, which costs **100**.
|
|
265
|
+
That distinction is the actionable half — "you have no credits" is a dead end for
|
|
266
|
+
someone holding 50, while "short for this model" has a remedy: pick a cheaper tier
|
|
267
|
+
(`veo-lite` is 10). Every path that gives up on the submit control now checks for the
|
|
268
|
+
warning before naming a culprit, and reports the new `InsufficientCreditsError`
|
|
269
|
+
(**exit 37**) instead. Genuine drift — a missing anchor with no warning beside it —
|
|
270
|
+
still reports 23. Beyond the wrong message, the old behaviour manufactured
|
|
271
|
+
frontend-drift bug reports that no code change could ever fix.
|
|
272
|
+
|
|
273
|
+
### Changed
|
|
274
|
+
|
|
275
|
+
- **`--format-prompt` now waits for the rewrite, and `ui_automation.prompt_formatted` means it
|
|
276
|
+
happened.** This is the second half of the #727 fix and the half that made the flag useful.
|
|
277
|
+
Flow rewrites **server-side** — a `batchexecute` round trip reaching the composer at ~5.4s
|
|
278
|
+
(measured, `denon82`) — while the old code waited `_jitter_ms(500)`, logged
|
|
279
|
+
`prompt_formatted` and returned; `_send_prompt` submits on the very next line. So the flag
|
|
280
|
+
shipped the prompt the user typed and discarded the rewrite on **every** run, with a success
|
|
281
|
+
event in the log and exit 0.
|
|
282
|
+
|
|
283
|
+
**The defect was never the duration. It was reporting a success we had not observed** — the
|
|
284
|
+
absence of a completion inside a window we chose, recorded as a completion. Same class as a
|
|
285
|
+
20s selector timeout read as "the feature is absent" and a bundle captured after teardown
|
|
286
|
+
read as "the DOM was gone". This one was the worst of the three because it failed toward
|
|
287
|
+
**success**: a premature green looks exactly like the feature working, so nobody investigates
|
|
288
|
+
a pass.
|
|
289
|
+
|
|
290
|
+
`format_character_prompt` now polls the bound composer until its text actually changes, and
|
|
291
|
+
returns `True` only then. The gate is the DOM, not the wire — the `batchexecute` response
|
|
292
|
+
arrives **4.2s before** the text settles, so awaiting it would reproduce the same early
|
|
293
|
+
submit. Comparing against the string gflow inserted is locale-invariant by construction, and
|
|
294
|
+
a **length delta** rather than `!=` keeps Slate's whitespace normalisation from re-reporting
|
|
295
|
+
the same false success. Telemetry carries lengths and a stable hash, never the prompt text:
|
|
296
|
+
Flow *elaborates* a terse description into a detailed physical one, so the rewrite is more
|
|
297
|
+
PII-dense than the input.
|
|
298
|
+
|
|
299
|
+
New events: `format_button_clicked` (the old semantics), `format_not_observed` (clicked, no
|
|
300
|
+
rewrite inside the budget — it does not claim Flow failed, since an unchanged box also covers
|
|
301
|
+
Flow declining or judging the prompt already formatted).
|
|
302
|
+
|
|
303
|
+
**Two user-visible consequences.** A create with `--format-prompt` takes a few seconds longer
|
|
304
|
+
for the rewrite itself, and — because the reshaped prompt is longer and more detailed — the
|
|
305
|
+
generation is materially slower: **406s vs a 210s control** on the same account and prompt,
|
|
306
|
+
live-verified 2026-09-07.
|
|
307
|
+
([#727](https://github.com/ffroliva/gflow-cli/issues/727),
|
|
308
|
+
[spike](docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md))
|
|
309
|
+
|
|
310
|
+
- **Retracted a false "measured" claim about the migrated composer.** A code comment asserted, as
|
|
311
|
+
"measured, not assumed", that the migrated project composer "has no image-generation mode".
|
|
312
|
+
Falsified live on 2026-09-07: its settings overlay opens to six radiogroups / sixteen radios and
|
|
313
|
+
the first is `[imageImage, videocamVideo]`, present and hit-testable, with the VIDEO option
|
|
314
|
+
carrying `aria-checked`. This reproduced an enumeration already committed on 2026-09-04,
|
|
315
|
+
exactly, on a different account. That does **not** establish that `image` works there — nothing
|
|
316
|
+
was clicked on the mode axis and nothing was submitted — only that the claim it cannot is
|
|
317
|
+
unfounded. Stating it more strongly would repeat the defect being retracted. The guard stays
|
|
318
|
+
until the port lands, but it no longer tells anyone the host cannot do this. ([#692](https://github.com/ffroliva/gflow-cli/issues/692),
|
|
319
|
+
[spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md))
|
|
320
|
+
- **A spike that cannot reach its surface now fails instead of concluding.**
|
|
321
|
+
`spike_migrated_image_capability.py` opened the settings overlay best-effort and swallowed the
|
|
322
|
+
exception, so it printed "the migrated composer looks VIDEO-ONLY" even when it had never opened
|
|
323
|
+
the panel — and that sentence became the retracted claim above. It now raises
|
|
324
|
+
`SpikeUnreachedError` and exits 3 with "This is a failed measurement, NOT evidence of absence".
|
|
325
|
+
Two features have now been declared absent by a probe that failed silently; the first was
|
|
326
|
+
`character create`, killed by a single 20 s selector timeout.
|
|
327
|
+
|
|
328
|
+
### Added
|
|
329
|
+
|
|
330
|
+
- **`gflow character create --voice` is now verified end to end.**
|
|
331
|
+
`tests/e2e/test_character_create_e2e.py::test_character_create_attaches_voice_and_personality`
|
|
332
|
+
drives a live create then reads the character back from Flow. Until it existed, a repo-wide
|
|
333
|
+
grep for `--voice` across `tests/e2e/` matched **nothing**: every voice test was a unit test
|
|
334
|
+
of the hardcoded `VOICES` constant, and the one that looked live parsed a fixture. A voice
|
|
335
|
+
that silently failed to attach was invisible to the whole suite while the command exited 0.
|
|
336
|
+
Personality is asserted hard, unlike the sibling UTF-8 test which guards it as
|
|
337
|
+
`if shown_personality:` and passes vacuously when the field is absent.
|
|
338
|
+
([#736](https://github.com/ffroliva/gflow-cli/pull/736))
|
|
339
|
+
- `scripts/dev/spike_entity_submit_rpcs.py` — attaches a character, submits, and logs **every**
|
|
340
|
+
`batchexecute` rpcid rather than only the three in `SUBMIT_RPCS`, plus the submit request's
|
|
341
|
+
model key. `scripts/dev/spike_project_media_status.py` — reads a project's generation state
|
|
342
|
+
read-only, `$0`, submitting nothing.
|
|
343
|
+
([#741](https://github.com/ffroliva/gflow-cli/issues/741))
|
|
344
|
+
- **`video-production` skill § 4b-bis — the whole recipe for a cast with VOICES.** A character
|
|
345
|
+
entity is the only thing that carries a voice; a plate carries face and wardrobe as pixels and
|
|
346
|
+
the engine invents a new voice per clip. Measured across three plate-bound takes of one
|
|
347
|
+
character: **88 / 103 / 118 Hz**, three different actors, against a **4.3 Hz** engine noise
|
|
348
|
+
floor on an identical prompt repeated three times. The skill said to prefer rung 1 and never
|
|
349
|
+
said what skipping it costs, so a production could reach a finished cut before anyone noticed
|
|
350
|
+
the cast had no voices.
|
|
351
|
+
- `scripts/dev/spike_host_lane.py` — names a profile's lane (labs / migrated / **signed out**) in
|
|
352
|
+
one $0 run. It reports `SIGNED_OUT` as a distinct verdict and refuses to name a lane there,
|
|
353
|
+
because a signed-out profile is otherwise indistinguishable from a migrated one: with no
|
|
354
|
+
session, `labs.google/fx/…` renders its marketing shell and `flow.google.com/project/<id>`
|
|
355
|
+
redirects to `/about`. Read either in isolation and you conclude "this account was moved" from
|
|
356
|
+
a dead cookie.
|
|
357
|
+
- `scripts/dev/spike_migrated_composer_mode_axis.py` — hard-error probe that opens the migrated
|
|
358
|
+
composer's settings overlay and enumerates its radiogroups.
|
|
359
|
+
- `scripts/dev/spike_format_prompt_effect.py` — measures whether clicking Format actually
|
|
360
|
+
rewrites the prompt, and when. `$0`, never submits.
|
|
361
|
+
|
|
10
362
|
## [0.70.0] — 2026-09-06
|
|
11
363
|
|
|
12
364
|
### Fixed
|
|
@@ -4228,7 +4580,9 @@ shell-script template that branches on these codes.
|
|
|
4228
4580
|
|
|
4229
4581
|
First skeleton. Not functional end-to-end yet.
|
|
4230
4582
|
|
|
4231
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
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
|
|
4585
|
+
[0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
|
|
4232
4586
|
[0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
|
|
4233
4587
|
[0.69.0]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...v0.69.0
|
|
4234
4588
|
[0.68.0]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...v0.68.0
|
|
@@ -16,10 +16,12 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
|
|
|
16
16
|
|
|
17
17
|
### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v, i2v from a local start frame, and r2v from local reference files (rest of the matrix pending)
|
|
18
18
|
|
|
19
|
-
- **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video, local-file image-to-video and local-file reference-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, references by `@Name` or `--reference-entity`, `image`,
|
|
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
|
-
-
|
|
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
|
+
- **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 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.
|
|
23
25
|
|
|
24
26
|
Google is moving Flow off Labs onto its own origin. On a migrated page load,
|
|
25
27
|
`https://labs.google/fx/tools/flow/project/<id>` redirects to
|
|
@@ -389,7 +391,7 @@ Evidence: [LIVE_VERIFICATION_v0.23.0](docs/LIVE_VERIFICATION_v0.23.0.md).
|
|
|
389
391
|
|
|
390
392
|
### Expanded chat sidebar left the composer unrecoverable (exit 23)
|
|
391
393
|
|
|
392
|
-
- **Status:** **Resolved** in
|
|
394
|
+
- **Status:** **Resolved** in v0.60.0 — fixed and A/B-verified live;
|
|
393
395
|
tracked in [#493](https://github.com/ffroliva/gflow-cli/issues/493)
|
|
394
396
|
- **Severity:** High · **Affected:** `gflow image` / `gflow video` generation on
|
|
395
397
|
accounts whose chat sidebar lacks the `edit_square` affordance, any locale
|
|
@@ -685,18 +687,52 @@ This is because Chromium holds an exclusive lock on its SQLite cookie database w
|
|
|
685
687
|
---
|
|
686
688
|
|
|
687
689
|
|
|
688
|
-
### Flow's
|
|
690
|
+
### Flow's one-time upload-terms dialog blocks the FIRST upload on an account
|
|
689
691
|
|
|
690
|
-
- **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)
|
|
691
693
|
|
|
692
|
-
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:
|
|
693
695
|
|
|
694
|
-
|
|
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.
|
|
695
708
|
|
|
696
|
-
**
|
|
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.
|
|
697
714
|
|
|
698
715
|
---
|
|
699
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
|
+
|
|
700
736
|
### Flow's release-notes ("What's new") changelog popup blocks first-run UI automation
|
|
701
737
|
|
|
702
738
|
- **Status:** Mitigated · **Severity:** Medium · **Tracked:** [#26](https://github.com/ffroliva/gflow-cli/issues/26)
|
|
@@ -1167,6 +1203,32 @@ a `WireFormatError` about video bytes — neither naming the cause). `auto` now
|
|
|
1167
1203
|
instead of a mid-run failure, and `GFLOW_CLI_PREFER_CLASSIC=1` is no longer the
|
|
1168
1204
|
workaround anyone needs to discover.
|
|
1169
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
|
+
|
|
1170
1232
|
### Auth verification depends on Google's NextAuth session endpoint
|
|
1171
1233
|
|
|
1172
1234
|
- **Status:** Mitigated · **Severity:** Low (degrades fail-closed) · **Affects:** issue #15 fix onward · **Tracked:** issue #15
|