gflow-cli 0.69.0__tar.gz → 0.71.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gflow_cli-0.71.0/.claude/commands/gflow/spike.md +10 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/dependabot.yml +0 -26
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/pages.yml +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/release.yml +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.gitignore +18 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/AGENTS.md +119 -8
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/CHANGELOG.md +420 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/CONTRIBUTING.md +38 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/KNOWN_ISSUES.md +19 -4
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/PKG-INFO +2 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/AGENT_GUIDE.md +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/CHARACTER.md +41 -15
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/CHARACTER_RECON.md +7 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/CONFIGURATION.md +2 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/GITHUB.md +4 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/INDEX.md +2 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.69.0.md +61 -26
- gflow_cli-0.71.0/docs/LIVE_VERIFICATION_v0.70.0.md +143 -0
- gflow_cli-0.71.0/docs/LIVE_VERIFICATION_v0.71.0.md +120 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/MCP.md +14 -2
- {gflow_cli-0.69.0/website → gflow_cli-0.71.0}/docs/MOVIE.md +60 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/PROJECT_STATUS.md +80 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/USAGE.md +32 -5
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +8 -1
- gflow_cli-0.71.0/docs/superpowers/memory/ligature-carrier-differs-by-host.md +45 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +42 -1
- gflow_cli-0.71.0/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +246 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +464 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +305 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +98 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +145 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +102 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +120 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +113 -0
- gflow_cli-0.71.0/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +106 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/pyproject.toml +3 -3
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_release_artifacts.py +64 -0
- gflow_cli-0.71.0/scripts/dev/acceptance/__init__.py +47 -0
- gflow_cli-0.71.0/scripts/dev/acceptance/bench.py +140 -0
- gflow_cli-0.71.0/scripts/dev/acceptance/domain.py +109 -0
- gflow_cli-0.71.0/scripts/dev/acceptance/judge.py +381 -0
- gflow_cli-0.71.0/scripts/dev/acceptance/settings.py +83 -0
- gflow_cli-0.71.0/scripts/dev/capture_i2v_frame_slots_dom.py +203 -0
- gflow_cli-0.71.0/scripts/dev/capture_i2v_intercept_submit.py +267 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_i2v_model_select_repro.py +38 -33
- gflow_cli-0.71.0/scripts/dev/capture_i2v_post_bind_state.py +293 -0
- gflow_cli-0.71.0/scripts/dev/capture_image_add_media_dom.py +192 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_locale_invariants.py +6 -1
- gflow_cli-0.71.0/scripts/dev/capture_migrated_attach_rpcs.py +235 -0
- gflow_cli-0.71.0/scripts/dev/capture_migrated_mention_gestures.py +168 -0
- gflow_cli-0.71.0/scripts/dev/capture_migrated_r2v_production_submit.py +293 -0
- gflow_cli-0.71.0/scripts/dev/capture_migrated_r2v_submit_payload.py +311 -0
- gflow_cli-0.71.0/scripts/dev/capture_migrated_r2v_surface.py +251 -0
- gflow_cli-0.71.0/scripts/dev/capture_migrated_upload_flow.py +293 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/README.md +126 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/capture-agent-ui.ps1 +165 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/capture-media-scrape.ps1 +215 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/extract_har_summary.py +169 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/launch-flow-chrome.ps1 +104 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/probe-agent-mode.ps1 +103 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/probe_agent_mode.py +120 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/run-cdp-smoke.ps1 +147 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/start-background-capture.ps1 +218 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/start-har-capture.ps1 +153 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/stop-background-capture.ps1 +116 -0
- gflow_cli-0.71.0/scripts/dev/har-spike/stop-har-capture.ps1 +181 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/incident_bundle_quality.py +10 -1
- gflow_cli-0.71.0/scripts/dev/spike_cdp_har_without_node.py +235 -0
- gflow_cli-0.71.0/scripts/dev/spike_character_editor_ready_gate.py +204 -0
- gflow_cli-0.71.0/scripts/dev/spike_character_prompt_format.py +270 -0
- gflow_cli-0.71.0/scripts/dev/spike_entity_submit_rpcs.py +263 -0
- gflow_cli-0.71.0/scripts/dev/spike_format_prompt_effect.py +208 -0
- gflow_cli-0.71.0/scripts/dev/spike_host_lane.py +156 -0
- gflow_cli-0.71.0/scripts/dev/spike_ligature_carrier_sweep.py +315 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_body_reference_chip.py +148 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_character_body_controls.py +150 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_character_editor_anchor.py +183 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_character_ogiz0b_schema.py +158 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_character_submit_wire.py +167 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_character_surface.py +193 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_composer_mode_axis.py +208 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_entity_submit.py +243 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_image_capability.py +246 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_picker_option_kind.py +132 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_recaptcha_mint.py +145 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_submit_anchor.py +149 -0
- gflow_cli-0.71.0/scripts/dev/spike_migrated_vs_labs_provenance.py +195 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +123 -118
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_patchright.py +5 -1
- gflow_cli-0.71.0/scripts/dev/spike_project_media_status.py +120 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_video_tab_dom.py +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/gflow-cli/SKILL.md +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/issue-assessment/SKILL.md +24 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/pr-council-review/SKILL.md +2 -2
- gflow_cli-0.71.0/skills/spike/SKILL.md +141 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/video-production/SKILL.md +171 -3
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/video-production/consistency.md +13 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/_cli_helpers.py +11 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/client.py +274 -17
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/migrated_composer.py +449 -19
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/ui_automation.py +524 -124
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/real_chrome.py +17 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_character.py +7 -3
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_image.py +2 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_video.py +3 -3
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/recorder.py +15 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/diagnostics.py +7 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/errors.py +44 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/tools.py +193 -6
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/services/character_create.py +55 -0
- gflow_cli-0.71.0/tests/api/test_character_readback_fallback.py +254 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_image.py +40 -0
- gflow_cli-0.71.0/tests/api/test_client_migrated_mint.py +303 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_ui_mode.py +56 -0
- gflow_cli-0.71.0/tests/api/transports/test_character_model_picker.py +221 -0
- gflow_cli-0.71.0/tests/api/transports/test_ligature_carrier.py +202 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_composer.py +276 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_dispatch.py +34 -1
- gflow_cli-0.71.0/tests/api/transports/test_migrated_r2v.py +391 -0
- gflow_cli-0.71.0/tests/api/transports/test_new_project_cta_migrated.py +72 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation.py +29 -13
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_character_editor.py +335 -135
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/auth/strategies/test_strategies.py +73 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_video.py +35 -0
- gflow_cli-0.71.0/tests/cli/test_run_with_handlers_context_leak.py +74 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_find_incomplete_character.py +26 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/conftest.py +44 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +26 -6
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_character_create_e2e.py +342 -25
- gflow_cli-0.71.0/tests/e2e/test_character_mcp_parity_e2e.py +121 -0
- gflow_cli-0.71.0/tests/e2e/test_credits_mcp_e2e.py +104 -0
- gflow_cli-0.71.0/tests/e2e/test_e2e_env_isolation.py +44 -0
- gflow_cli-0.71.0/tests/e2e/test_insufficient_credits_e2e.py +90 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_migrated_host_e2e.py +110 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_sidebar_recovery_e2e.py +3 -0
- gflow_cli-0.71.0/tests/mcp/test_character_tools.py +158 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_cli_parity.py +125 -5
- gflow_cli-0.71.0/tests/mcp/test_reference_entity_round_trip.py +120 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_tools_helpers.py +16 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_tools_wired.py +33 -3
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_check_release_artifacts.py +76 -0
- gflow_cli-0.71.0/tests/scripts/test_extract_har_summary.py +166 -0
- gflow_cli-0.71.0/tests/scripts/test_frame_acceptance.py +321 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_incident_bundle_quality.py +57 -1
- gflow_cli-0.71.0/tests/scripts/test_spike_page_pool.py +81 -0
- gflow_cli-0.71.0/tests/scripts/test_spike_profile_lease.py +72 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_character_create_saga.py +93 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_documentation_gate.py +17 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/uv.lock +31 -31
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/CHARACTER.md +41 -15
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/CONFIGURATION.md +2 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/KNOWN_ISSUES.md +19 -4
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/MCP.md +14 -2
- {gflow_cli-0.69.0 → gflow_cli-0.71.0/website}/docs/MOVIE.md +60 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/USAGE.md +32 -5
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/installation.md +1 -1
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/requirements.txt +3 -3
- gflow_cli-0.69.0/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -163
- gflow_cli-0.69.0/eval/pr_triage_eval.py +0 -42
- gflow_cli-0.69.0/eval/pr_triage_fixtures.json +0 -194
- gflow_cli-0.69.0/scripts/autopilot/Dockerfile.triage +0 -54
- gflow_cli-0.69.0/scripts/autopilot/entrypoint.sh +0 -10
- gflow_cli-0.69.0/scripts/autopilot/package-lock.json +0 -152
- gflow_cli-0.69.0/scripts/autopilot/package.json +0 -8
- gflow_cli-0.69.0/scripts/autopilot/pr_triage_autopilot.py +0 -827
- gflow_cli-0.69.0/scripts/autopilot/pr_triage_gate.py +0 -192
- gflow_cli-0.69.0/scripts/autopilot/run_sandboxed_review.sh +0 -172
- gflow_cli-0.69.0/scripts/dev/capture_i2v_frame_slots_dom.py +0 -198
- gflow_cli-0.69.0/scripts/dev/capture_i2v_intercept_submit.py +0 -262
- gflow_cli-0.69.0/scripts/dev/capture_i2v_post_bind_state.py +0 -288
- gflow_cli-0.69.0/scripts/dev/capture_image_add_media_dom.py +0 -184
- gflow_cli-0.69.0/scripts/dev/spike_character_prompt_format.py +0 -121
- gflow_cli-0.69.0/tests/api/test_client_migrated_mint.py +0 -62
- gflow_cli-0.69.0/tests/autopilot/test_pr_triage_autopilot.py +0 -1065
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.env.template +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.gitattributes +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/.secrets.baseline +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/CLAUDE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/LICENSE +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/RELEASE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/ROADMAP.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/conftest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docker-compose.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/index.html +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/llms.txt +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/README.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/sonar-project.properties +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/credits.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_credits.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/services/credits.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_credits.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_credits_http.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/conftest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_credits_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/credits.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_credits.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_config.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_media.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/index.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.69.0 → gflow_cli-0.71.0}/website/requirements.in +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Gather evidence from the live Flow surface (DOM, network, HAR) before claiming a feature is broken, missing, or impossible.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# `/gflow:spike` — measure the blackbox
|
|
6
|
+
|
|
7
|
+
**Read `skills/spike/SKILL.md` and follow the protocol**, passing `$ARGUMENTS` as the
|
|
8
|
+
question to answer.
|
|
9
|
+
|
|
10
|
+
> Do **not** call `Skill(skill="spike")` — read the file directly.
|
|
@@ -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/
|
|
@@ -107,3 +116,12 @@ website/site/
|
|
|
107
116
|
|
|
108
117
|
# Local git hooks dir (core.hooksPath target) — machine-local tooling, never shipped
|
|
109
118
|
.githooks/
|
|
119
|
+
|
|
120
|
+
# HAR/DOM spike harness (scripts/dev/har-spike/) — the vendored scripts ARE
|
|
121
|
+
# tracked; everything they generate is not. Captures carry auth cookies, Bearer
|
|
122
|
+
# tokens and prompts, and the npm/agent-browser caches are 34 MB of noise.
|
|
123
|
+
# (No .gitkeep negation here: git never descends into an ignored directory, so a
|
|
124
|
+
# negation for a file inside one is inert. The capture scripts create the dir.)
|
|
125
|
+
scripts/dev/har-spike/artifacts/
|
|
126
|
+
scripts/dev/har-spike/.agent-browser/
|
|
127
|
+
scripts/dev/har-spike/.npm-cache/
|
|
@@ -14,6 +14,7 @@ that did not run.
|
|
|
14
14
|
|
|
15
15
|
| If you are about to… | Load first | Non-negotiable because |
|
|
16
16
|
|---|---|---|
|
|
17
|
+
| Claim a Flow surface is broken, missing, or impossible | `/gflow:spike <question>` | A selector that misses is evidence about the SELECTOR; "labs-only, ever" came from one 20 s timeout and cost a day |
|
|
17
18
|
| Touch a GitHub issue | `/gflow:issue-assessment <N>` | Read-only triage precedes any fix; classification changes what "fixing" means |
|
|
18
19
|
| Propose a transport, auth, selector, or schema change | `/gflow:predict <proposal>` | Five adversarial personas return GO / CAUTION / STOP before code exists |
|
|
19
20
|
| Start a feature | `/gflow:scenario` → `/gflow:plan` | Edge cases before tasks; tasks before code |
|
|
@@ -61,7 +62,8 @@ If you can help unblock a pure HTTP transport (especially for video generation,
|
|
|
61
62
|
## Dev environment tips
|
|
62
63
|
|
|
63
64
|
- `uv sync` then `uv run playwright install chromium`. No global Python install needed.
|
|
64
|
-
- 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.
|
|
65
67
|
- Output goes to `./tmp/` for scripts/tests or `$GFLOW_CLI_OUTPUT_DIR` for CLI outputs (defaults to `./out/`).
|
|
66
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).
|
|
67
69
|
- Use `/gflow:status` to see the current task before starting work; `/gflow:known-issues` before touching auth or reCAPTCHA code paths.
|
|
@@ -96,7 +98,7 @@ the five other mirror axes), which no command here can check and no CI gate can
|
|
|
96
98
|
- TDD is non-negotiable. Coverage floor: 80% overall.
|
|
97
99
|
- Documentation is a first-class deliverable. Every behavior, workflow, config, or operator-facing change must update the relevant docs or state why no docs changed in the PR/checklist. `scripts/ci/check_doc_links.py` is a merge gate.
|
|
98
100
|
- **A PR is not done until its SonarCloud gate is green (zero new issues).** The nine gates above are local/pre-commit; SonarCloud is server-side and runs in CI (`sonar.qualitygate.wait=true` → a red gate turns the `SonarCloud analysis` check red). Before calling a PR merge-ready, verify it with `/gflow:sonar <N>` (it is skipped on fork PRs — maintainer-checked there).
|
|
99
|
-
- **E2E is the decisive layer, and it is required for every behavior change that touches a Flow surface.** Run the `tests/e2e/` test that covers the change, or write one — offline-green proves only that *our* code does what we think, never that Flow still behaves as captured. `/gflow:live-verify` does **not** satisfy this: it drives CLI commands by hand into a gitignored note and never runs `pytest -m e2e`. The two are complementary — an e2e test is a re-runnable regression, a live-verify ledger is a narrative record.
|
|
101
|
+
- **E2E is the decisive layer, and it is required for every behavior change that touches a Flow surface.** Run the `tests/e2e/` test that covers the change, or write one — offline-green proves only that *our* code does what we think, never that Flow still behaves as captured. `/gflow:live-verify` does **not** satisfy this: it drives CLI commands by hand into a gitignored note and never runs `pytest -m e2e`. The two are complementary — an e2e test is a re-runnable regression, a live-verify ledger is a narrative record. A change touching no Flow surface at all (docs, help text, exit-code plumbing) is out of scope — say so explicitly rather than leaving it blank. Anything else follows the **Iron Law** above: run it, or name the external blocker that stops you. "A maintainer will run it" is a handoff, not a verification, and is only available once the blocker is named.
|
|
100
102
|
- E2E tests require `GFLOW_CLI_E2E_PROFILE` and `-m e2e` (excluded from the default `addopts`, so they never run by accident). Cost sub-markers: `e2e_auth` (zero credits, browser only), `e2e_image` (zero credits, daily cap), `e2e_scene`, `e2e_data`, `e2e_batch`, `e2e_character` (opt in with `GFLOW_CLI_E2E_RUN_CHARACTER=1`), `e2e_video` (spends Veo credits — opt in with `GFLOW_CLI_E2E_RUN_VIDEO=1`). Redact account identifiers and any token or cookie value before pasting output into a PR.
|
|
101
103
|
- Live tests (`@pytest.mark.live`) opt in via `GFLOW_LIVE=1`.
|
|
102
104
|
|
|
@@ -104,15 +106,16 @@ the five other mirror axes), which no command here can check and no CI gate can
|
|
|
104
106
|
|
|
105
107
|
- Type hints everywhere; `pyright` strict on `src/gflow_cli`.
|
|
106
108
|
- Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
|
|
107
|
-
- 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.
|
|
108
110
|
- 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
|
|
109
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.
|
|
110
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`.
|
|
111
113
|
|
|
112
|
-
**That
|
|
113
|
-
|
|
114
|
-
restriction the CLI no longer has
|
|
115
|
-
|
|
114
|
+
**That gate now covers leaves *and their options*** (`test_every_cli_leaf_has_an_mcp_decision`,
|
|
115
|
+
`test_every_cli_option_reaches_its_mcp_tool`). It still cannot see a queued-payload key that
|
|
116
|
+
goes unread, a tool docstring asserting a restriction the CLI no longer has, or a twin that
|
|
117
|
+
was never *run*. So MCP stays a responsibility of **every phase**, not a post-hoc checklist
|
|
118
|
+
item. Each skill owns its slice:
|
|
116
119
|
|
|
117
120
|
| Phase | Skill | Its MCP duty |
|
|
118
121
|
|---|---|---|
|
|
@@ -142,10 +145,86 @@ the five other mirror axes), which no command here can check and no CI gate can
|
|
|
142
145
|
|
|
143
146
|
These rules exist because docs alone don't bind under momentum: a "check open PRs first" rule was already written and still got skipped, and a PR was merged without seeing an entangled open one. Follow them on every task.
|
|
144
147
|
|
|
148
|
+
### The Iron Law — done means verified by a run
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
IF YOU TOUCHED A COMMAND, A FEATURE, OR A FLOW SURFACE,
|
|
152
|
+
YOU RUN ITS E2E TEST. NO RUN = NOT DONE.
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Not "tests pass". Not "the gates are green". Not "it's a thin wrapper over code that
|
|
156
|
+
is already covered". **A run, against the real thing, that you watched.** Offline green
|
|
157
|
+
proves our code does what we think it does; it cannot prove Flow still behaves as
|
|
158
|
+
captured, and it cannot prove the surface an agent or a user actually calls is wired to
|
|
159
|
+
the code under test. Everything not exercised is unknown, and unknown ships as a bug.
|
|
160
|
+
|
|
161
|
+
If no e2e test covers the change, **write one** — that is part of the change, not
|
|
162
|
+
follow-up work.
|
|
163
|
+
|
|
164
|
+
**The only permitted exception is a named external blocker** you cannot remove: an
|
|
165
|
+
exhausted API quota, hardware you do not have, an account you do not control, a cohort
|
|
166
|
+
Google has not put you in. Write the blocker down. Then these are **not** blockers, and
|
|
167
|
+
naming one is a rule violation, not a caveat:
|
|
168
|
+
|
|
169
|
+
- "I didn't get to it" · "it's covered by unit tests" · "it's a thin adapter"
|
|
170
|
+
- "the CLI path is verified and it shares the service"
|
|
171
|
+
- "recorded, not omitted"
|
|
172
|
+
|
|
173
|
+
That last one is the dangerous one, because it is a **good** convention being misused.
|
|
174
|
+
Recording an unverified item beats silently dropping it — but it is a record of a
|
|
175
|
+
blocker, never a substitute for a run. **Listing something as unverified that you could
|
|
176
|
+
have verified is the same failure as omitting it, plus a false paper trail.**
|
|
177
|
+
|
|
178
|
+
> **This law is written from the failure it prevents.** v0.69.0 shipped with two items
|
|
179
|
+
> under "Not verified": the MCP twin of the credits path, and 5 of 19 skill-benchmark
|
|
180
|
+
> tasks. Asked why we were going blind, both were verified **within the hour**. The MCP
|
|
181
|
+
> twin was a $0 read-only test — 3 assertions, 58 seconds, and it is now
|
|
182
|
+
> `tests/e2e/test_credits_mcp_e2e.py`. The 5 tasks ran on a model whose quota was still
|
|
183
|
+
> open, against a control run to separate model weakness from skill weakness, and
|
|
184
|
+
> exposed **four real defects** that the words "recorded, not omitted" had made invisible.
|
|
185
|
+
> Neither was ever blocked. Both were labelled instead of run.
|
|
186
|
+
|
|
187
|
+
### The second law — MCP parity is not a chore, it is the contract
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
EVERY USER-FACING CLI CAPABILITY HAS AN MCP TWIN,
|
|
191
|
+
OR A RECORDED REASON IT DOES NOT.
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
The CLI and the MCP server are two doors onto one product. A capability behind only one
|
|
195
|
+
of them is not "mostly shipped" — for whoever is standing at the other door it does not
|
|
196
|
+
exist, and nothing tells them so. Agents cannot read a `--help` they were never given;
|
|
197
|
+
they discover a missing option by getting the wrong result.
|
|
198
|
+
|
|
199
|
+
Parity is **not** satisfied by a command existing. It has to hold at every level the two
|
|
200
|
+
surfaces can drift apart: the leaf, **its options**, the queued-payload keys the worker
|
|
201
|
+
reads back, and the tool docstring's claims about what the CLI does. The canonical list
|
|
202
|
+
is the **six mirror axes**, written out once in
|
|
203
|
+
[`skills/check/SKILL.md`](skills/check/SKILL.md) step 1b and cited from everywhere else —
|
|
204
|
+
never copied, because a duplicated checklist drifts, which is the failure it exists to
|
|
205
|
+
catch.
|
|
206
|
+
|
|
207
|
+
**A twin is a separate surface, so the Iron Law applies to it separately.** Verifying the
|
|
208
|
+
CLI path does not verify the MCP path. They share a service, and the service was never
|
|
209
|
+
the risk — the adapter is. Run both.
|
|
210
|
+
|
|
211
|
+
Where a capability is deliberately CLI-only — an interactive login, a destructive local
|
|
212
|
+
operation, a long-running billed job with no way to take consent — that is a legitimate
|
|
213
|
+
answer. **Record it with its reason** in `tests/mcp/test_cli_parity.py`, and revisit the
|
|
214
|
+
reason when whatever justified it changes.
|
|
215
|
+
|
|
216
|
+
> **Written from a live gap.** `--reference-entity` exists on four leaf commands and no
|
|
217
|
+
> MCP tool exposes the concept at all, while the whole `gflow character` group sits
|
|
218
|
+
> exempt as "not yet ported". The product's entire **identity axis** — create a
|
|
219
|
+
> character, attach a character — is therefore unreachable over MCP, and the parity gate
|
|
220
|
+
> reported full compliance throughout, because it only ever checked that leaves were
|
|
221
|
+
> *mapped*. Found by an option-level sweep, filed as #689, and the gate now checks
|
|
222
|
+
> options too.
|
|
223
|
+
|
|
145
224
|
- **Check what's already in flight before coding a fix, opening a PR, or merging.** Run `gh pr list` and `git ls-remote` first — another open PR may already touch the same issue or files. Reconcile against it; don't re-derive "the only thing left" from a stale handoff. (A `PreToolUse` hook also surfaces same-issue open PRs at `gh pr create`/`merge` time, but treat that as a backstop, not a substitute for looking.)
|
|
146
225
|
- **Truth is the CLI and running the code — not IDE/LSP "reminder" diagnostics.** Editor / `pyright`-in-worktree warnings go stale for an entire session and throw false positives (especially across multiple worktrees). Confirm with `ruff` / `pyright` / `pytest` from the terminal — or trust the worktree's own venv — never an IDE squiggle.
|
|
147
226
|
- **Verify third-party runtime behavior empirically before wiring it in.** Don't assume how an external library, API, or browser actually behaves — exercise it once and observe, then build on the observed contract.
|
|
148
|
-
- **
|
|
227
|
+
- **A claim you have not run is not a finding — it is a guess with formatting.** Confidence labels are not evidence: do not grade an unrun claim as "likely", "probably correct" or "low risk" and move on. Where a genuine external blocker stops the run (see the Iron Law), keep the issue open, reference it with `Refs #N` (not `Closes #N`), ship diagnostics rather than a blind fix, and hand it to whoever can reproduce it — naming what would settle it.
|
|
149
228
|
- **This project reverse-engineers a blackbox.** gflow-cli doesn't own Google Flow — it drives real Flow through inspected HAR/DOM/browser-log behavior. Offline checks (types, lint, unit/BDD tests) verify *our* code does what we think it does; they cannot verify Flow still behaves the way we captured it. Every feature that touches a generation path is **live-verified**, not just offline-tested, before it's called done — see `/gflow:live-verify`.
|
|
150
229
|
|
|
151
230
|
## Standard Workflow Sequence
|
|
@@ -154,6 +233,7 @@ All AI agents and harnesses working on `gflow-cli` follow this standard 10-phase
|
|
|
154
233
|
|
|
155
234
|
| Phase | Skill / Command | Purpose | Output Artifact |
|
|
156
235
|
|---|---|---|---|
|
|
236
|
+
| 0. Spike | `/gflow:spike <question>` | Evidence from the live surface (DOM / network / HAR) whenever a claim of absence is in play | `scripts/dev/spike_*.py` + `docs/superpowers/spikes/<date>-<slug>.md` |
|
|
157
237
|
| 1. Triage | `/gflow:issue-assessment <N>` | Read-only issue analysis & root cause hypothesis | `issue_assessment_<N>.md` |
|
|
158
238
|
| 2. Pre-Implementation | `/gflow:predict <proposal>` | Adversarial audit (D14 YAGNI, security, risks) | GO / CAUTION / STOP verdict |
|
|
159
239
|
| 3. BDD Scaffolding | `/gflow:scenario <feature>` | Edge-case explorer & BDD Gherkin spec | `Scenario:` blocks & test scaffold |
|
|
@@ -189,6 +269,7 @@ The `skills/` directory ships installable agent skill docs in plain Markdown wit
|
|
|
189
269
|
| Skill | Path | When to load |
|
|
190
270
|
|---|---|---|
|
|
191
271
|
| `gflow-cli` | [`skills/gflow-cli/SKILL.md`](skills/gflow-cli/SKILL.md) | User wants to run any `gflow` command — auth, T2V, I2V, T2I, I2I, batch |
|
|
272
|
+
| `spike` | [`skills/spike/SKILL.md`](skills/spike/SKILL.md) | Before asserting any absence on a live Flow surface — the first layer of investigation |
|
|
192
273
|
| `predict` | [`skills/predict/SKILL.md`](skills/predict/SKILL.md) | Pre-implementation adversarial analysis before any high-stakes change |
|
|
193
274
|
| `scenario` | [`skills/scenario/SKILL.md`](skills/scenario/SKILL.md) | Edge-case explorer after a predict GO/CAUTION |
|
|
194
275
|
| `plan` | [`skills/plan/SKILL.md`](skills/plan/SKILL.md) | Create a structured task-by-task implementation plan for a feature |
|
|
@@ -231,6 +312,35 @@ extension does not currently load plugins, so IDE-only users should include the
|
|
|
231
312
|
|
|
232
313
|
The SkillOpt harness at `scripts/dev/skillopt/` measures how accurately each skill guides an agent. It drives any OpenAI-compatible endpoint — OpenAI, a gateway (OpenRouter, LiteLLM, freellmapi), a local model, or Google's compat endpoint — through the project's own `GFLOW_CLI_LLM_*` settings, the same ones the prompt tools use; there is no separate provider configuration. See [`scripts/dev/skillopt/README.md`](scripts/dev/skillopt/README.md).
|
|
233
314
|
|
|
315
|
+
## Spiking a blackbox surface — the two modes
|
|
316
|
+
|
|
317
|
+
This project reverse-engineers Google Flow, so "go and look at the real thing" is a
|
|
318
|
+
first-class development activity, not a last resort. Two harnesses exist. **Use one of
|
|
319
|
+
them before writing a capture script from scratch.**
|
|
320
|
+
|
|
321
|
+
| Mode | Where | Driver | Who clicks | Use when |
|
|
322
|
+
|---|---|---|---|---|
|
|
323
|
+
| **In-process** | `scripts/dev/spike_*.py` | Playwright, via gflow's own transport | the script | you can already drive the surface, or you want to see exactly what gflow sees |
|
|
324
|
+
| **HAR + DOM** | [`scripts/dev/har-spike/`](scripts/dev/har-spike/README.md) | CDP-attached **real Chrome** through a pinned `agent-browser` | **a human, by hand** | the driver cannot reach the surface yet, or a capture is ambiguous and you need ground truth |
|
|
325
|
+
|
|
326
|
+
Start in-process; escalate to the HAR harness when the driver cannot get far enough to
|
|
327
|
+
observe anything. A hand-driven HAR is the tiebreaker. **The protocol is
|
|
328
|
+
[`skills/spike/SKILL.md`](skills/spike/SKILL.md) — load it before asserting any absence.**
|
|
329
|
+
|
|
330
|
+
Both write to **gitignored** output — `scripts/dev/_spike_out/` and
|
|
331
|
+
`scripts/dev/har-spike/artifacts/`. Captures carry Bearer tokens, cookies and prompts:
|
|
332
|
+
`*.har` is gitignored repo-wide, and a capture must never be committed or pasted into an
|
|
333
|
+
issue unredacted. Use `scripts/dev/har-spike/extract_har_summary.py` for the redacted
|
|
334
|
+
summary that IS shareable. Findings belong in `docs/superpowers/spikes/`; the evidence
|
|
335
|
+
that produced them stays local.
|
|
336
|
+
|
|
337
|
+
> **The harness is vendored in for discoverability, and that is the whole point.** It
|
|
338
|
+
> lived in a sibling directory outside git until 2026-09-06. Being outside the repo, no
|
|
339
|
+
> agent could find it, nothing pinned its `agent-browser` version, and its one test ran
|
|
340
|
+
> nowhere. A session that day wrote three capture scripts from scratch and only learned
|
|
341
|
+
> the harness existed because the user said so — after concluding, wrongly, that a
|
|
342
|
+
> working Flow feature was impossible. Keep it in-tree, keep its data disposable.
|
|
343
|
+
|
|
234
344
|
## Where to look next
|
|
235
345
|
|
|
236
346
|
- **Architecture & target shape** → [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)
|
|
@@ -240,6 +350,7 @@ The SkillOpt harness at `scripts/dev/skillopt/` measures how accurately each ski
|
|
|
240
350
|
- **Known issues** (read before touching auth / reCAPTCHA) → [KNOWN_ISSUES.md](KNOWN_ISSUES.md)
|
|
241
351
|
- **Current task** → `/gflow:status` · **Create a feature plan** → `/gflow:plan <feature>` · **Full roadmap** → [PLAN.md](PLAN.md)
|
|
242
352
|
- **Release protocol** → [RELEASE.md](RELEASE.md)
|
|
353
|
+
- **Spiking a live Flow surface** (HAR + DOM capture) → [scripts/dev/har-spike/README.md](scripts/dev/har-spike/README.md)
|
|
243
354
|
|
|
244
355
|
## Claude Code-specific notes
|
|
245
356
|
|