gflow-cli 0.41.0__tar.gz → 0.42.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/llm-council.md +3 -3
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/AGENTS.md +3 -3
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CHANGELOG.md +58 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CLAUDE.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/KNOWN_ISSUES.md +23 -17
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/PKG-INFO +2 -2
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/PLAN.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/README.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AGENT_GUIDE.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/INDEX.md +5 -5
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +63 -8
- gflow_cli-0.42.0/docs/LIVE_VERIFICATION_v0.41.0.md +57 -0
- gflow_cli-0.42.0/docs/LIVE_VERIFICATION_v0.42.0.md +30 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/MCP.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/PROJECT_STATUS.md +3 -3
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/llms.txt +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/pyproject.toml +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_materiality.py +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_repo_hygiene.py +0 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/README.md +2 -2
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/llm-council/SKILL.md +8 -11
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/plan/SKILL.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/pr-council-review/SKILL.md +2 -2
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/status/SKILL.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/client.py +76 -4
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/errors.py +21 -9
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/observability.py +6 -5
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/worker/queue.py +0 -25
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tasks/lessons.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_video.py +10 -0
- gflow_cli-0.42.0/tests/e2e/test_cancellation_e2e.py +152 -0
- gflow_cli-0.42.0/tests/e2e/test_crash_recovery_e2e.py +189 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_documentation_gate.py +5 -4
- gflow_cli-0.42.0/tests/test_errors_classification.py +157 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_daemon.py +0 -9
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/uv.lock +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/AUTHENTICATION.md +14 -14
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/CHARACTER.md +5 -5
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/DATA_LAYER.md +2 -2
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/KNOWN_ISSUES.md +11 -11
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/MCP.md +1 -1
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/SECURITY.md +4 -4
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/USAGE.md +2 -2
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/index.md +2 -2
- gflow_cli-0.42.0/website/docs/onboarding-mockup.html +738 -0
- gflow_cli-0.42.0/website/docs/onboarding.md +182 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/mkdocs.yml +1 -1
- gflow_cli-0.41.0/GEMINI.md +0 -37
- gflow_cli-0.41.0/tests/test_errors_403.py +0 -19
- gflow_cli-0.41.0/website/docs/quickstart.md +0 -63
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/README.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.env.template +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.gitattributes +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.gitignore +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/.secrets.baseline +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/LICENSE +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/RELEASE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/ROADMAP.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docker-compose.yml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/CONFIGURATION.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/USAGE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/eval/pr_triage_eval.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/eval/pr_triage_fixtures.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/README.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/index.html +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/README.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/Dockerfile.triage +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/entrypoint.sh +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/pr_triage_gate.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/monitor_pr_38.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/gflow-cli/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/sonar-project.properties +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/mcp/tools.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_config.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_media.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/CONFIGURATION.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.41.0 → gflow_cli-0.42.0}/website/docs/stylesheets/extra.css +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Run pr-council-review (PR or branch mode) plus an external-tools corroboration layer (codex,
|
|
2
|
+
description: Run pr-council-review (PR or branch mode) plus an external-tools corroboration layer (codex, plus Antigravity via the agy harness) for high-stakes reviews where a same-model-family blind spot is a real risk. Tiers: small (internal only, default) / medium (+codex) / high (+codex+antigravity). Wrapper around skills/llm-council/SKILL.md.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# `/gflow:llm-council [PR# | --base <ref>] [--tier small|medium|high]
|
|
5
|
+
# `/gflow:llm-council [PR# | --base <ref>] [--tier small|medium|high]`
|
|
6
6
|
|
|
7
|
-
**Read `skills/llm-council/SKILL.md` and follow its protocol now**, treating `$ARGUMENTS` as: the PR number or `--base <ref>` (branch mode, same as `/gflow:pr-council-review` / `/gflow:branch-review`), plus `--tier <small|medium|high>` (default `small`)
|
|
7
|
+
**Read `skills/llm-council/SKILL.md` and follow its protocol now**, treating `$ARGUMENTS` as: the PR number or `--base <ref>` (branch mode, same as `/gflow:pr-council-review` / `/gflow:branch-review`), plus `--tier <small|medium|high>` (default `small`). The `high` tier adds Antigravity (`agy`) alongside `codex`.
|
|
8
8
|
|
|
9
9
|
> Do **not** call `Skill(skill="llm-council")` or `Skill(skill="pr-council-review")` — the repo's `skills/*/SKILL.md` files are plain Markdown, not registered as Skill-tool-invocable (only `.claude/commands/gflow/*` are). Invoking either errors with `Unknown skill: ...`. Read the files directly instead.
|
|
10
10
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Universal entry point for AI coding agents. Read this first; everything else routes from here.
|
|
4
4
|
|
|
5
|
-
Supported tools that auto-discover this file: Cursor, Codex, Aider, Jules, Devin, Windsurf, Zed, Warp, opencode, RooCode, Amp, Junie, Phoenix, GitHub Copilot, VS Code, Factory, Augment, Semgrep, Kilo Code, UiPath.
|
|
5
|
+
Supported tools that auto-discover this file: Cursor, Codex, Aider, Antigravity (`agy`), Jules, Devin, Windsurf, Zed, Warp, opencode, RooCode, Amp, Junie, Phoenix, GitHub Copilot, VS Code, Factory, Augment, Semgrep, Kilo Code, UiPath. Claude Code reads [CLAUDE.md](CLAUDE.md), which cross-references this file.
|
|
6
6
|
|
|
7
7
|
## Project at a glance
|
|
8
8
|
|
|
@@ -92,7 +92,7 @@ The `skills/` directory ships installable agent skill docs in plain Markdown wit
|
|
|
92
92
|
| `plan` | [`skills/plan/SKILL.md`](skills/plan/SKILL.md) | Create a structured task-by-task implementation plan for a feature |
|
|
93
93
|
| `status` | [`skills/status/SKILL.md`](skills/status/SKILL.md) | Show current plan state, progress, and next unchecked task |
|
|
94
94
|
| `pr-council-review` | [`skills/pr-council-review/SKILL.md`](skills/pr-council-review/SKILL.md) | Multi-dimensional PR council review |
|
|
95
|
-
| `llm-council` | [`skills/llm-council/SKILL.md`](skills/llm-council/SKILL.md) | Wraps `pr-council-review` with external CLI reviewers (`codex
|
|
95
|
+
| `llm-council` | [`skills/llm-council/SKILL.md`](skills/llm-council/SKILL.md) | Wraps `pr-council-review` with external CLI reviewers (`codex` + Antigravity `agy`) for high-stakes reviews |
|
|
96
96
|
| `issue-assessment` | [`skills/issue-assessment/SKILL.md`](skills/issue-assessment/SKILL.md) | Triage a GitHub issue (read-only) before any fix work |
|
|
97
97
|
| `issue-resolve` | [`skills/issue-resolve/SKILL.md`](skills/issue-resolve/SKILL.md) | Drive an assessed issue to a test-first fix + draft PR |
|
|
98
98
|
| `check` | [`skills/check/SKILL.md`](skills/check/SKILL.md) | Quality gates (lint/format/types/tests) before every commit |
|
|
@@ -108,7 +108,7 @@ and must be resolvable by ANY agent via this file. Vendor directories hold thin
|
|
|
108
108
|
only (`.claude/commands/gflow/*.md` are pointers into `skills/`); never put protocol
|
|
109
109
|
content in a vendor directory.
|
|
110
110
|
|
|
111
|
-
**Cursor / Aider / Codex /
|
|
111
|
+
**Cursor / Aider / Codex / Antigravity (`agy`):** paste or include the relevant `SKILL.md` in your system context. Note: in the `agy` TUI prompt, custom slash commands (e.g. `/gflow:pr-council-review`) are blocked by the TUI's command parser. Type them as plain text without the leading slash (e.g. `gflow:pr-council-review`, `gflow:branch-review`, or `gflow:check`) to trigger the corresponding agent skill workflow.
|
|
112
112
|
**Claude Code:** the `/gflow:` slash commands in `.claude/commands/gflow/` are auto-discovered when the project is open — no extra setup needed. To register a skill globally, copy the command file to `~/.claude/commands/`.
|
|
113
113
|
**Custom agents:** fetch `skills/gflow-cli/SKILL.md` into your knowledge base before answering gflow questions.
|
|
114
114
|
|
|
@@ -7,6 +7,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.42.0] — 2026-07-21
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Content-safety `400` responses from Flow are now classified as
|
|
15
|
+
`ContentPolicyError` (exit code 5) instead of the misleading `WireFormatError`,
|
|
16
|
+
so callers can branch on a policy rejection deterministically. (#359)
|
|
17
|
+
- Corrected a false `flow_operation_id` invariant. Live verification found
|
|
18
|
+
`veo-lite` can produce a `remote_started` checkpoint with `operation_id` unset,
|
|
19
|
+
contradicting the prior claim that only `omni-flash` omits the operation name.
|
|
20
|
+
`flow_operation_id` is best-effort/optional; `media_id` is the canonical handle
|
|
21
|
+
used by polling, download, and every CLI lookup. No behaviour change; a
|
|
22
|
+
regression test now locks the operation-name parser against the real veo
|
|
23
|
+
capture fixture. (#361)
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **Replaced Gemini CLI with Antigravity (`agy`) as the supported Google coding
|
|
28
|
+
agent** across skills and docs (Google retired Gemini CLI in favor of the
|
|
29
|
+
Antigravity harness). Antigravity auto-discovers `AGENTS.md` natively, so the
|
|
30
|
+
dedicated `GEMINI.md` hub is **removed** and Antigravity is listed among the
|
|
31
|
+
auto-discovering tools in `AGENTS.md`. (#360)
|
|
32
|
+
- **`llm-council` skill:** the `high` tier's second external reviewer is now
|
|
33
|
+
Antigravity (`agy`) instead of Gemini CLI; `agy` is promoted from an opt-in
|
|
34
|
+
tool to the pinned `high`-tier slot and the `--include-agy` flag is dropped.
|
|
35
|
+
When `agy` is unavailable or fails non-interactively, the skill suggests
|
|
36
|
+
installing Antigravity or substituting another external CLI coding agent rather
|
|
37
|
+
than failing. (#360)
|
|
38
|
+
- Forward-looking agent references updated for consistency across `AGENTS.md`,
|
|
39
|
+
`CLAUDE.md`, `README.md`, `llms.txt`, `docs/INDEX.md`, `docs/AGENT_GUIDE.md`,
|
|
40
|
+
`skills/*`, and CI helper strings. Historical release notes and past
|
|
41
|
+
verification records are left unchanged. (#360)
|
|
42
|
+
|
|
43
|
+
### Removed
|
|
44
|
+
|
|
45
|
+
- Removed the dead `fail_processing_tasks` daemon-recovery method, superseded by
|
|
46
|
+
the checkpoint-classifying `recover_processing` (internal cleanup; no
|
|
47
|
+
user-facing behaviour change). (#361)
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
|
|
51
|
+
- Added an onboarding page and quickstart flow to the published docs site, and
|
|
52
|
+
anonymized personal account data across it. Security vulnerabilities now report
|
|
53
|
+
through GitHub's private vulnerability reporting rather than a personal email. (#362)
|
|
54
|
+
- Corrected the same-profile concurrency framing (MCP page and docs) to the
|
|
55
|
+
cross-process `ProfileLease` fail-fast contract (`ProfileLockedError`, exit 11),
|
|
56
|
+
and recorded that the POSIX `fcntl.flock` lease was verified green on the
|
|
57
|
+
Windows/macOS/Linux CI matrix. (#361)
|
|
58
|
+
|
|
59
|
+
### Tests
|
|
60
|
+
|
|
61
|
+
- Added live-gated end-to-end tests for crash-recovery (a crashed post-submit task
|
|
62
|
+
recovers as `indeterminate` and is never resubmitted) and cancellation-safe
|
|
63
|
+
teardown (the profile lease releases on mid-launch cancel). Both were confirmed
|
|
64
|
+
against real Flow on 2026-07-21. (#361)
|
|
65
|
+
|
|
10
66
|
## [0.41.0] — 2026-07-20
|
|
11
67
|
|
|
12
68
|
### Added
|
|
@@ -2169,7 +2225,8 @@ shell-script template that branches on these codes.
|
|
|
2169
2225
|
|
|
2170
2226
|
First skeleton. Not functional end-to-end yet.
|
|
2171
2227
|
|
|
2172
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
2228
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.42.0...HEAD
|
|
2229
|
+
[0.42.0]: https://github.com/ffroliva/gflow-cli/compare/v0.41.0...v0.42.0
|
|
2173
2230
|
[0.41.0]: https://github.com/ffroliva/gflow-cli/compare/v0.40.0...v0.41.0
|
|
2174
2231
|
[0.40.0]: https://github.com/ffroliva/gflow-cli/compare/v0.39.0...v0.40.0
|
|
2175
2232
|
[0.39.0]: https://github.com/ffroliva/gflow-cli/compare/v0.38.1...v0.39.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CLAUDE.md
|
|
2
2
|
|
|
3
|
-
> Project memory hub for **Claude Code**. The universal coding-agent rules for any tool (Cursor, Codex, Aider,
|
|
3
|
+
> Project memory hub for **Claude Code**. The universal coding-agent rules for any tool (Cursor, Codex, Aider, Antigravity, etc.) live in [AGENTS.md](AGENTS.md) — this file carries Claude-Code-specific session protocol only.
|
|
4
4
|
|
|
5
5
|
## What this project is
|
|
6
6
|
|
|
@@ -585,31 +585,37 @@ one of the 14 supported locales or in English.
|
|
|
585
585
|
|
|
586
586
|
---
|
|
587
587
|
|
|
588
|
-
###
|
|
588
|
+
### t2v response can omit operation name — `flow_operation_id` persists NULL
|
|
589
589
|
|
|
590
590
|
- **Status:** Open · **Severity:** Low · **Affects:** v0.9.0+ (data layer)
|
|
591
591
|
|
|
592
592
|
The data layer's `on_started` callback captures
|
|
593
593
|
`operations[0].operation.name` from each `batchAsyncGenerateVideoText`
|
|
594
|
-
response and persists it as `operations.flow_operation_id`.
|
|
595
|
-
`omni-flash`
|
|
596
|
-
omni-flash rows end up with
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
594
|
+
response and persists it as `operations.flow_operation_id`. This field
|
|
595
|
+
is **best-effort, not guaranteed for any model**: `omni-flash`'s response
|
|
596
|
+
shape does not carry it, so omni-flash rows end up with
|
|
597
|
+
`flow_operation_id` NULL. **Update 2026-07-21 (live):** the same NULL
|
|
598
|
+
was observed on a live `veo-lite` t2v run (`remote_started` checkpoint
|
|
599
|
+
with `operation_id=None`), on an agentic-UI-cohort account — so `veo-*`
|
|
600
|
+
is not a reliable guarantee either; the original claim that veo-* rows
|
|
601
|
+
always carry the operation name was false. The rest of the row (prompt,
|
|
602
|
+
model, aspect, started/completed timestamps, batch ID, output paths) is
|
|
603
|
+
recorded normally regardless.
|
|
604
|
+
|
|
605
|
+
**Impact:** cosmetic/provenance-only — `media_id` is the canonical
|
|
606
|
+
handle (poll, download, and every CLI lookup use it, not
|
|
607
|
+
`flow_operation_id`). `gflow data media <id>` and provenance lookup by
|
|
608
|
+
Flow media ID still work. Nothing in the current CLI queries by
|
|
609
|
+
`flow_operation_id`; a future feature that did would miss rows on any
|
|
610
|
+
model whose response omits the operation name.
|
|
605
611
|
|
|
606
612
|
**Workaround:** none needed if you don't query by `flow_operation_id`.
|
|
607
613
|
|
|
608
|
-
**Roadmap:** capture
|
|
609
|
-
|
|
610
|
-
either map it into `flow_operation_id` or document
|
|
611
|
-
legitimately
|
|
612
|
-
|
|
614
|
+
**Roadmap:** capture response samples across models (including veo-lite)
|
|
615
|
+
where the operation name is absent, identify the equivalent provenance
|
|
616
|
+
handle (if any), and either map it into `flow_operation_id` or document
|
|
617
|
+
that these cases legitimately have no such identifier. Track via a
|
|
618
|
+
follow-up issue once samples are captured.
|
|
613
619
|
|
|
614
620
|
---
|
|
615
621
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.42.0
|
|
4
4
|
Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
|
|
@@ -161,7 +161,7 @@ gflow-cli ships four agent entry points. Pick the one your tool reads first.
|
|
|
161
161
|
|
|
162
162
|
| File | Audience | Tools |
|
|
163
163
|
|---|---|---|
|
|
164
|
-
| [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider ·
|
|
164
|
+
| [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider · Antigravity · Jules · Devin · Windsurf · Zed · Warp · opencode · Copilot |
|
|
165
165
|
| [**CLAUDE.md**](CLAUDE.md) | Claude Code's auto-loaded memory | Claude Code |
|
|
166
166
|
| [**llms.txt**](llms.txt) | LLM-readable summary (llmstxt.org format) | Paste into ChatGPT, Claude, or Gemini to onboard the model |
|
|
167
167
|
| [`skills/gflow-cli/SKILL.md`](skills/gflow-cli/SKILL.md) | Claude Code Skill | Symlink into `~/.claude/skills/` |
|
|
@@ -369,7 +369,7 @@ The video-generation feature has its own sub-phase plan (spike → Phase A → P
|
|
|
369
369
|
- [ ] **Integrated Filmmaking Studio, Flow Worker & MCP SSE Service.** (Backlog) The MCP→FlowWorker wiring shipped in v0.23.0 (PR #228). Remaining: a local FastAPI/React filmmaking studio dashboard + HTTP/SSE MCP. Planned in [gflow-studio-scaffold/PLAN.md](file:///C:/development/github/gflow-cli/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md) and [rest-api-layer/PLAN.md](file:///C:/development/github/gflow-cli/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md).
|
|
370
370
|
- [x] **Issue #92: Google account identity persistence shipped 2026-05-28 (PR #110).** After every `gflow auth login`, both auth strategies write the verified email to `$GFLOW_CLI_HOME/profile_<name>/.gflow_account`. `ProfileMeta.google_account` surfaces it; `gflow auth list` and `gflow auth list --json` display it. First-login auto-rename: when no `--profile` flag was given and the only profile is named `default`, it is renamed to the email local-part. `profile_store.rename_profile()` primitive added. Zero-credit smoke test (`tests/smoke/test_profile_account_smoke.py`) ships with backfill path for pre-existing profiles. LLM council (9-dim) run; all must-fix items applied before merge. See `KNOWN_ISSUES.md` § Resolved for full detail.
|
|
371
371
|
- [x] **`/gflow:pr-council-review` slash command shipped 2026-05-26 (PR #97).** Multi-dimensional LLM council for open PRs (4 baseline + 8 adaptive dimensions, mandatory memory-slug binding, draft-PR guard, YELLOW escape valve, live-verify gate). Validated on PR #93; self-audited by 3-agent meta-council surfacing 13 must-fix items applied before merge. See memory `[[llm-council-code-review-pr93]]`.
|
|
372
|
-
- **Phase A (Backlog — Portability):** extract command body into `skills/pr-council-review/SKILL.md` so
|
|
372
|
+
- **Phase A (Backlog — Portability):** extract command body into `skills/pr-council-review/SKILL.md` so Antigravity / Codex / Cursor / Aider can consume it. Keep `.claude/commands/gflow/pr-council-review.md` as a thin wrapper. Memory: `[[pr-council-review-portability-backlog]]`.
|
|
373
373
|
- **Phase B (Backlog — Token optimization):** add `scripts/dev/pr_council_prefetch.py` (single gh-call producing structured JSON for agents) and `scripts/dev/memory_filter.py` (relevant slug bodies only). Targets ~30-50% per-agent context cost reduction.
|
|
374
374
|
- **Phase C (Backlog — Reusable meta-council):** codify the 3-dim audit (completeness / robustness / prompt-clarity) we used on this command as `/gflow:meta-council-audit <path>` for re-use on future skills/commands.
|
|
375
375
|
- Sequencing: **A → C → B**.
|
|
@@ -90,7 +90,7 @@ gflow-cli ships four agent entry points. Pick the one your tool reads first.
|
|
|
90
90
|
|
|
91
91
|
| File | Audience | Tools |
|
|
92
92
|
|---|---|---|
|
|
93
|
-
| [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider ·
|
|
93
|
+
| [**AGENTS.md**](AGENTS.md) | Universal coding-agent spec | Cursor · Codex · Aider · Antigravity · Jules · Devin · Windsurf · Zed · Warp · opencode · Copilot |
|
|
94
94
|
| [**CLAUDE.md**](CLAUDE.md) | Claude Code's auto-loaded memory | Claude Code |
|
|
95
95
|
| [**llms.txt**](llms.txt) | LLM-readable summary (llmstxt.org format) | Paste into ChatGPT, Claude, or Gemini to onboard the model |
|
|
96
96
|
| [`skills/gflow-cli/SKILL.md`](skills/gflow-cli/SKILL.md) | Claude Code Skill | Symlink into `~/.claude/skills/` |
|
|
@@ -124,7 +124,7 @@ is reserved in `check_materiality.py` (which already classifies every change).
|
|
|
124
124
|
### Satisfying a gate without Claude Code
|
|
125
125
|
|
|
126
126
|
Every gate enforces a **deliverable**, not a Claude-specific command. Non-Claude agents
|
|
127
|
-
(Cursor / Codex /
|
|
127
|
+
(Cursor / Codex / Antigravity / Aider) and humans read the relevant `skills/<name>/SKILL.md`
|
|
128
128
|
directly and produce the same artifact — e.g. read `skills/predict/SKILL.md` and write the
|
|
129
129
|
5-persona verdict into the PR, instead of running `/gflow:predict`.
|
|
130
130
|
|
|
@@ -6,7 +6,7 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
|
|
|
6
6
|
|---|---|---|
|
|
7
7
|
| [README](../README.md) | Project overview, install, quick start | First time landing on the repo |
|
|
8
8
|
| [docs/DEMOS.md](DEMOS.md) | Gallery of `gflow` in action (terminal + split-screen Flow recordings) | You want to see what gflow looks like running |
|
|
9
|
-
| [AGENTS.md](../AGENTS.md) | Universal coding-agent spec — Cursor / Codex / Aider /
|
|
9
|
+
| [AGENTS.md](../AGENTS.md) | Universal coding-agent spec — Cursor / Codex / Aider / Antigravity / Jules / etc. | Any AI coding agent enters the repo |
|
|
10
10
|
| [llms.txt](../llms.txt) | LLM-readable summary (llmstxt.org format) | A user pastes context about gflow into ChatGPT / Claude / Gemini |
|
|
11
11
|
| [docs/PROJECT_STATUS.md](PROJECT_STATUS.md) | Full milestone history + lifecycle policy | Auditing where the project is in its lifecycle |
|
|
12
12
|
| [docs/AGENT_GUIDE.md](AGENT_GUIDE.md) | Mandates and routing rules for AI agents (companion to AGENTS.md) | A coding agent needs the longer non-negotiable rules |
|
|
@@ -46,7 +46,7 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
|
|
|
46
46
|
| **[docs/AGENT_UI_RECON.md](AGENT_UI_RECON.md)** | Agentic Flow UI cohort: classic-vs-agentic DOM signature, server-side + volatile (flapping) A/B gating (no client-readable flag), why `_exit_agent_mode` fails, runtime-DOM-detection recommendation | Touching `_exit_agent_mode` / composer mode-switch, diagnosing exit 23 selector drift, or understanding Flow's agentic-UI A/B (#183/#174) |
|
|
47
47
|
| **[docs/ASSET_TAGGING_RECON.md](ASSET_TAGGING_RECON.md)** | `@`-mention asset tagging research & integration design: what Flow's `@CharacterName`/`@me`/`@ingredient` tags are, how they map onto the already-verified `referenceEntities`/`referenceImages` wire, the H1-vs-H2 serialization hypothesis, the CLI-side mention-resolver proposal, and the pre-implementation capture spike plan | Working on inline `@` mentions in prompts, `video --character` reuse, or planning the mention-capture spike |
|
|
48
48
|
| **[tasks/lessons.md](../tasks/lessons.md)** | Running notebook of patterns + reviewer findings, dated and traced to commits | Starting a new phase; debugging "why did the council flag this?" |
|
|
49
|
-
| **[skills/README.md](../skills/README.md)** | Installable agent skill docs (gflow-cli, predict, pr-council-review, scenario) — cross-tool portable Markdown consumed by Claude Code, Cursor, Codex,
|
|
49
|
+
| **[skills/README.md](../skills/README.md)** | Installable agent skill docs (gflow-cli, predict, pr-council-review, scenario) — cross-tool portable Markdown consumed by Claude Code, Cursor, Codex, Antigravity, Aider, etc. | Any agent wanting to use gflow-cli correctly |
|
|
50
50
|
| **[scripts/dev/skillopt/README.md](../scripts/dev/skillopt/README.md)** | SkillOpt mock harness — rollout→score loop for measuring and improving skill doc accuracy across multiple LLM providers | Measuring a skill edit's impact; comparing Claude vs GPT-4o vs Gemini on gflow tasks |
|
|
51
51
|
| **[scripts/diag/README.md](../scripts/diag/README.md)** | Diagnostic investigation scripts — run against a live authenticated profile to capture wire samples, measure Chrome memory, or mint reCAPTCHA tokens | Running a one-off investigation against a live Flow session; establishing baseline measurements for issue #155 |
|
|
52
52
|
| [docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md](superpowers/specs/2026-07-04-pr-triage-autopilot-design.md) | PR-triage autopilot design spec: Stage 0/1 gate, Docker sandboxing, Telegram and audit ledger | Reviewing or auditing the automated PR-triage setup |
|
|
@@ -74,7 +74,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
74
74
|
| `/gflow:scenario <feature>` | 12-dimension edge-case explorer → severity-ranked scenario table + BDD skeleton | After predict GO/CAUTION; before `/gflow:plan` |
|
|
75
75
|
| `/gflow:pr-council-review [PR#]` | Multi-dimensional council review of an open PR (5 baseline + adaptive dimensions) | Before merging any non-trivial PR; mandatory for auth/transport/data changes |
|
|
76
76
|
| `/gflow:branch-review` | Same council review run against the current local feature branch (no PR needed) | Pre-PR self-audit; after predict/scenario on a high-stakes branch |
|
|
77
|
-
| `/gflow:llm-council [PR#\|--base <ref>] [--tier small\|medium\|high]` | Wraps `pr-council-review` with external CLI reviewers (`codex
|
|
77
|
+
| `/gflow:llm-council [PR#\|--base <ref>] [--tier small\|medium\|high]` | Wraps `pr-council-review` with external CLI reviewers (`codex` + Antigravity `agy`) for cross-model corroboration | High-stakes reviews where a same-model-family blind spot is a real risk |
|
|
78
78
|
| `/gflow:doc-review` | Systematic council-driven audit of documentation completeness and drift | Before cutting a release; after major documentation changes |
|
|
79
79
|
|
|
80
80
|
**Governance:** commands are executable docs — they decay like any doc. When a phase advances or a file path changes, update the relevant command in the same commit. `/gflow:release` includes a staleness review step.
|
|
@@ -114,7 +114,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
114
114
|
**"Where can I look up a media ID I generated yesterday?"** → [DATA_LAYER § Querying the data layer](DATA_LAYER.md#querying-the-data-layer)
|
|
115
115
|
**"How do I stop gflow from storing my prompts?"** → [DATA_LAYER § Privacy and redaction](DATA_LAYER.md#privacy-and-redaction)
|
|
116
116
|
**"What does exit code 16 mean and how do I recover?"** → [DATA_LAYER § Persistence-failure handling](DATA_LAYER.md#persistence-failure-handling)
|
|
117
|
-
**"How do I use this project's skills in Cursor / Codex /
|
|
117
|
+
**"How do I use this project's skills in Cursor / Codex / Antigravity / Aider?"** → [skills/README.md](../skills/README.md#use-with-other-agents)
|
|
118
118
|
**"How do I benchmark a skill doc against real tasks?"** → [scripts/dev/skillopt/README.md](../scripts/dev/skillopt/README.md)
|
|
119
119
|
**"How do I compare Claude vs GPT-4o vs Gemini on gflow tasks?"** → `python scripts/dev/skillopt/harness.py --provider openai --model gpt-4o` (see [skillopt README](../scripts/dev/skillopt/README.md))
|
|
120
120
|
**"What does Chrome actually use in RAM during a generation?"** → run `uv run python scripts/diag/memory_profile.py --profile NAME` (see [scripts/diag/README.md](../scripts/diag/README.md))
|
|
@@ -132,7 +132,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
132
132
|
**"A gflow command hangs / fails — where do I start?"** → [DEBUGGING § Quick reference](DEBUGGING.md#quick-reference)
|
|
133
133
|
**"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
|
|
134
134
|
**"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
|
|
135
|
-
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
|
|
135
|
+
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
|
|
136
136
|
**"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
|
|
137
137
|
**"What was live-verified for the data layer (PR #58)?"** → [LIVE_VERIFICATION_data_layer](LIVE_VERIFICATION_data_layer.md) — 1 Imagen + 1 Veo credit on denon82, 6-layer ledger (file + magic + Pillow + DB rows + CLI round-trip + structlog)
|
|
138
138
|
**"What was live-verified for the video-download feature (#29)?"** → [LIVE_VERIFICATION_video_download](LIVE_VERIFICATION_video_download.md)
|
{gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md
RENAMED
|
@@ -15,6 +15,56 @@
|
|
|
15
15
|
> and why, per the design spec's evidence rule
|
|
16
16
|
> (`docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md`
|
|
17
17
|
> § Evidence deliverable).
|
|
18
|
+
>
|
|
19
|
+
> **Update — see the "2026-07-21 live follow-up" section immediately below:** a
|
|
20
|
+
> second live session closed the crash-recovery `remote_started` chain and the
|
|
21
|
+
> D4 mid-launch cancellation path, added two durable live-gated e2e tests, and
|
|
22
|
+
> corrected a false `flow_operation_id` invariant surfaced live. The lists in
|
|
23
|
+
> this document describe the original v0.40.0 run; the follow-up section is the
|
|
24
|
+
> authoritative update.
|
|
25
|
+
|
|
26
|
+
## 2026-07-21 live follow-up (0.42.0 cycle)
|
|
27
|
+
|
|
28
|
+
A second live session (profile `ffroliva`, 2026-07-21) closed several items left
|
|
29
|
+
open by the original run and added durable live-gated e2e tests. `ffroliva` was
|
|
30
|
+
on Flow's agentic UI cohort that day (classic mode unreachable, issue #174 A/B).
|
|
31
|
+
|
|
32
|
+
**Crash-recovery `remote_started` chain — CONFIRMED (1 credit).** A real
|
|
33
|
+
`veo-lite` t2v driven through the worker path with the C1 checkpoint observer
|
|
34
|
+
completed, and the observer persisted a real `remote_started` checkpoint
|
|
35
|
+
carrying the media handle to the DB — live-confirming the
|
|
36
|
+
observer→checkpoint→DB chain for a *paid* generation. The recovery step
|
|
37
|
+
(`remote_started` → `indeterminate`, never resubmit) is deterministic, proven by
|
|
38
|
+
unit tests plus the credit-free phase-2 of the new e2e test. Durable artifact:
|
|
39
|
+
`tests/e2e/test_crash_recovery_e2e.py` (live-gated, ~1 credit). Auto-reconciliation
|
|
40
|
+
of a crashed paid job remains a deliberate **unimplemented** seam (the safe stub:
|
|
41
|
+
`indeterminate` + manual reconcile).
|
|
42
|
+
|
|
43
|
+
**Finding — `flow_operation_id` NULL on veo-lite → false invariant corrected.**
|
|
44
|
+
That run also surfaced `operation_id=None` in the `remote_started` checkpoint for
|
|
45
|
+
`veo-lite`, contradicting the prior claim that only omni-flash omits it.
|
|
46
|
+
Root-caused: the operation-name parser is correct; `flow_operation_id` is
|
|
47
|
+
best-effort/optional and `media_id` is the canonical handle (poll + download +
|
|
48
|
+
every CLI lookup use it). The false invariant was corrected in `KNOWN_ISSUES.md`
|
|
49
|
+
and the `client.py` docstring, and a regression test now locks the parser against
|
|
50
|
+
the real veo fixture. No production behavior change — generation completed and
|
|
51
|
+
downloaded correctly on the `None`.
|
|
52
|
+
|
|
53
|
+
**D4 cancellation (mid-launch) — CONFIRMED (credit-free).** A real Chrome context
|
|
54
|
+
was launched and the operation cancelled during `__aenter__` (before any submit
|
|
55
|
+
gesture); the ProfileLease released (proven by successful re-acquisition) and no
|
|
56
|
+
gflow-owned Chrome process remained. Durable artifact:
|
|
57
|
+
`tests/e2e/test_cancellation_e2e.py` (live-gated, 0 credits). The other three D4
|
|
58
|
+
cancellation sub-paths (mid-context-close with a wedged page, Ctrl-C during
|
|
59
|
+
passive-capture reap, daemon SIGINT in-flight) remain deterministically
|
|
60
|
+
unit-proven (`tests/api/test_concurrency.py`) and are not separately
|
|
61
|
+
live-triggered — they are timing-fragile to reproduce live, and the mid-launch
|
|
62
|
+
path exercises the same `run_teardown_step` release contract.
|
|
63
|
+
|
|
64
|
+
**Still open (honest).** The full daemon/MCP lifecycle over HTTP (`gflow serve`)
|
|
65
|
+
was not live-exercised (the worker path was exercised directly in the e2e test);
|
|
66
|
+
auto-reconciliation remains unimplemented by design; the three fragile
|
|
67
|
+
cancellation sub-paths remain unit-proven only.
|
|
18
68
|
|
|
19
69
|
## Commit and environment
|
|
20
70
|
|
|
@@ -265,12 +315,13 @@ step in the live sequence above ran to completion. What was deliberately
|
|
|
265
315
|
run observed the handle capture but did not drive a crash-and-reconcile
|
|
266
316
|
scenario live. Keep the underlying issue open; this is remaining work, not
|
|
267
317
|
a regression.
|
|
268
|
-
- **Remote macOS/Linux legs of the D2 `profile-lease-matrix` CI job
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
318
|
+
- **Remote macOS/Linux legs of the D2 `profile-lease-matrix` CI job**: this
|
|
319
|
+
gap is now CLOSED. PR #357 was pushed and its CI ran the
|
|
320
|
+
`profile-lease-matrix` job GREEN on all three OSes — `windows-latest`,
|
|
321
|
+
`macos-latest`, `ubuntu-latest` — exercising the POSIX `fcntl.flock` lease
|
|
322
|
+
branch on macOS/Linux for the first time (PR #357, `profile-lease-matrix`
|
|
323
|
+
job, merged 2026-07-20). This closes the CI-execution gap only; it is
|
|
324
|
+
CI-level evidence, not a live run against real Flow.
|
|
274
325
|
- **omni-flash NULL-operation-id path** was not exercised — `veo-lite` was
|
|
275
326
|
used deliberately for the T2V generation instead.
|
|
276
327
|
- **D4's four live cancellation paths** (mid-launch cancel, mid-context.close
|
|
@@ -364,8 +415,12 @@ blocked paths" above for detail, not just offline-covered):
|
|
|
364
415
|
- **Daemon/MCP live lifecycle and live queue-claim**: not exercised this
|
|
365
416
|
pass — the live sequence used the direct `gflow image`/`gflow video`
|
|
366
417
|
client path, not `gflow serve`/MCP.
|
|
367
|
-
- **D2 remote CI legs (POSIX `fcntl` lease branch)**:
|
|
368
|
-
|
|
418
|
+
- **D2 remote CI legs (POSIX `fcntl` lease branch)**: CLOSED — PR #357 was
|
|
419
|
+
pushed and its CI ran the `profile-lease-matrix` job GREEN on all three
|
|
420
|
+
OSes (`windows-latest`, `macos-latest`, `ubuntu-latest`), exercising the
|
|
421
|
+
POSIX `fcntl.flock` lease branch on macOS/Linux (PR #357,
|
|
422
|
+
`profile-lease-matrix` job, merged 2026-07-20). CI-level evidence only —
|
|
423
|
+
not a live-Flow run.
|
|
369
424
|
- **D4's four live cancellation paths**: unit-proven only, not driven live.
|
|
370
425
|
- **omni-flash NULL-operation-id path**: not exercised (veo-lite used
|
|
371
426
|
deliberately instead).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Live verification — v0.41.0 (2026-07-20)
|
|
2
|
+
|
|
3
|
+
Release scope: **production-readiness hardening** ([#357]) — queue safety
|
|
4
|
+
(versioned payloads, atomic claims, checkpointed execution phases),
|
|
5
|
+
cross-process profile lease (`ProfileLockedError` exit 11),
|
|
6
|
+
cancellation-safe browser teardown, driver honesty (typed
|
|
7
|
+
`SupportsSendPrompt` injection, frozen `TransportSetup`), mention-index
|
|
8
|
+
fail-closed (`MentionIndexUnavailableError` exit 29), external-CDP lifecycle
|
|
9
|
+
removal, and nonfunctional `gflow video batch` removal.
|
|
10
|
+
|
|
11
|
+
## Live matrix (ffroliva profile, 2026-07-20)
|
|
12
|
+
|
|
13
|
+
Exercised against live Flow on `develop@a0c7a3f` (post-merge of #357):
|
|
14
|
+
|
|
15
|
+
1. **Stale-session fail-fast**: authenticated session expired →
|
|
16
|
+
`AuthExpiredError` (exit 3) raised immediately, **no credits spent**.
|
|
17
|
+
Re-auth succeeded.
|
|
18
|
+
2. **Free image generation**: `batchGenerateImages` returned HTTP 200, valid
|
|
19
|
+
768×1376 JPEG produced. Provenance recorded, zero leftover gflow-owned
|
|
20
|
+
Chrome processes, healthy cookie DB.
|
|
21
|
+
3. **Paid veo-lite T2V**: `batchAsyncGenerateVideoText` returned HTTP 200,
|
|
22
|
+
`MEDIA_GENERATION_STATUS_SUCCESSFUL`, valid `ftyp` MP4 output. Clean
|
|
23
|
+
lease acquire/release/reacquire cycle observed.
|
|
24
|
+
|
|
25
|
+
## 5-layer evidence ledger
|
|
26
|
+
|
|
27
|
+
| Layer | Evidence |
|
|
28
|
+
|---|---|
|
|
29
|
+
| Stale-session | `AuthExpiredError` exit 3, no spend, re-auth succeeds |
|
|
30
|
+
| Free image gen | `batchGenerateImages` 200, valid JPEG, provenance row |
|
|
31
|
+
| Paid T2V | `batchAsyncGenerateVideoText` 200, `SUCCESSFUL`, valid MP4 |
|
|
32
|
+
| Profile lease | Clean acquire/release/reacquire across runs, no `ProfileLockedError` |
|
|
33
|
+
| Browser lifecycle | Zero leftover gflow-owned Chrome processes after each run |
|
|
34
|
+
|
|
35
|
+
## Not verified live this cycle
|
|
36
|
+
|
|
37
|
+
- Daemon/MCP live queue-claim and credit-free `remote_started`
|
|
38
|
+
re-entry reconciliation are offline-proven only.
|
|
39
|
+
- The four D4 live cancellation paths are unit-proven.
|
|
40
|
+
- omni-flash NULL-operation-id path not exercised (used veo-lite
|
|
41
|
+
deliberately).
|
|
42
|
+
- The POSIX `fcntl.flock` lease branch has not executed anywhere yet — only
|
|
43
|
+
the Windows leg ran locally. A `profile-lease-matrix` CI job covers
|
|
44
|
+
Windows/macOS/Linux.
|
|
45
|
+
|
|
46
|
+
## Pre-tag gates
|
|
47
|
+
|
|
48
|
+
- Offline: repo hygiene, doc-links, `ruff check`, `ruff format --check`,
|
|
49
|
+
`pyright src` (0 errors) all clean.
|
|
50
|
+
- Test suite: **2513 passed, 4 skipped**, 72 deselected.
|
|
51
|
+
|
|
52
|
+
## Post-tag evidence
|
|
53
|
+
|
|
54
|
+
- Tag: `v0.41.0`, signed (SSH), pushed to origin.
|
|
55
|
+
- Release PR: [#358](https://github.com/ffroliva/gflow-cli/pull/358).
|
|
56
|
+
|
|
57
|
+
[#357]: https://github.com/ffroliva/gflow-cli/pull/357
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Live verification — v0.42.0
|
|
2
|
+
|
|
3
|
+
Per the release protocol's live-verification gate, this records the live-verification
|
|
4
|
+
status of v0.42.0's user-facing changes.
|
|
5
|
+
|
|
6
|
+
## Content-safety 400 → ContentPolicyError (#359)
|
|
7
|
+
|
|
8
|
+
**Status: not live-triggered — unit-covered.** Live-triggering this would require
|
|
9
|
+
deliberately submitting a content-policy-violating prompt to Flow, which is
|
|
10
|
+
inadvisable. The classification is covered by unit tests (`tests/test_errors_403.py`,
|
|
11
|
+
`tests/test_errors_classification.py`), which assert that a content-safety `400`
|
|
12
|
+
maps to `ContentPolicyError` (exit code 5) rather than `WireFormatError`.
|
|
13
|
+
|
|
14
|
+
## Production-readiness live-gaps (#361)
|
|
15
|
+
|
|
16
|
+
**Status: live-confirmed 2026-07-21** (profile `ffroliva`, 1 Veo credit). A real
|
|
17
|
+
`veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint
|
|
18
|
+
(observer→checkpoint→DB chain confirmed), and crash-recovery classifies such a task
|
|
19
|
+
`indeterminate` without resubmitting. Mid-launch cancellation released the ProfileLease
|
|
20
|
+
and left no browser process behind (credit-free). Full evidence:
|
|
21
|
+
[`docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md`](LIVE_VERIFICATION_v0.40.0-production-readiness.md)
|
|
22
|
+
§ "2026-07-21 live follow-up". Durable live-gated tests:
|
|
23
|
+
`tests/e2e/test_crash_recovery_e2e.py`, `tests/e2e/test_cancellation_e2e.py`.
|
|
24
|
+
|
|
25
|
+
## Documentation (#360, #362)
|
|
26
|
+
|
|
27
|
+
**Status: n/a — no runtime feature.** Docs-only changes (Antigravity agent references;
|
|
28
|
+
onboarding page; data anonymization; security contact → GitHub private vulnerability
|
|
29
|
+
reporting). Verified by the documentation gates (`check_doc_links.py`,
|
|
30
|
+
`test_documentation_gate.py`).
|
|
@@ -78,7 +78,7 @@ We analyzed whether a terminal-driven CLI guided by a text skill (e.g., `skills/
|
|
|
78
78
|
| :--- | :--- | :--- |
|
|
79
79
|
| **Output Fragility** | Ephemeral `stdout`/`stderr` log outputs are fragile to format adjustments, progress bars, and ANSI colors. | Strictly structured JSON payloads containing explicit metadata and absolute output file URIs. |
|
|
80
80
|
| **Process Lifecycle**| High process startup overhead (Python import latency) on every individual execution. | Warm daemon process. Retains active caching of database metadata. |
|
|
81
|
-
| **Concurrency** |
|
|
81
|
+
| **Concurrency** | A second concurrent process against the same profile is rejected immediately by the cross-process `ProfileLease` with `ProfileLockedError` (exit code 11) — a clean fail-fast, never a crash, never a wait. Different profiles run fully in parallel. | Same `ProfileLease` enforcement applies to the daemon's requests — a same-profile call made while another is in flight (from the CLI or the MCP daemon) is rejected immediately with `ProfileLockedError` rather than queued or crashed; different profiles still run fully in parallel. |
|
|
82
82
|
| **Error Handling** | Agent must scan logs for strings or parse exit codes to check status. | Strongly-typed JSON-RPC errors with mapped codes and clear remediation. |
|
|
83
83
|
| **Transport Safety** | Volatile console printing. | Stdout is strictly isolated for JSON-RPC; all logs and warnings route to stderr. |
|
|
84
84
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Current release
|
|
6
6
|
|
|
7
|
-
**v0.41.0 — alpha.** **Production-readiness hardening** ([#357]): queue safety (versioned payloads, atomic claims, checkpointed execution phases), cross-process profile lease (`ProfileLockedError` exit 11), cancellation-safe browser teardown, driver honesty (typed `SupportsSendPrompt` injection, frozen `TransportSetup`), mention-index fail-closed (`MentionIndexUnavailableError` exit 29), and external-CDP lifecycle removal. Removed nonfunctional `gflow video
|
|
7
|
+
**v0.41.0 — alpha.** **Production-readiness hardening** ([#357]): queue safety (versioned payloads, atomic claims, checkpointed execution phases), cross-process profile lease (`ProfileLockedError` exit 11), cancellation-safe browser teardown, driver honesty (typed `SupportsSendPrompt` injection, frozen `TransportSetup`), mention-index fail-closed (`MentionIndexUnavailableError` exit 29), and external-CDP lifecycle removal. Removed nonfunctional manifest-driven video batch command (never worked end-to-end; loop `gflow video t2v`/`i2v` from the shell instead). Also: `/gflow:live-verify` skill for per-feature live-verification enforcement. 2513 tests pass; live-verified against real Flow (stale-session fail-fast, free image gen, paid veo-lite T2V). See [LIVE_VERIFICATION_v0.40.0-production-readiness.md](LIVE_VERIFICATION_v0.40.0-production-readiness.md).
|
|
8
8
|
|
|
9
9
|
**Develop (unreleased, post-v0.41.0):** *(empty — develop is the staging branch for the next release).*
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
<details><summary>v0.39.0 — failed-generation persistence + gflow data list errors</summary>
|
|
18
18
|
|
|
19
|
-
**v0.39.0 — alpha.** **Failed generations are now persisted to the local catalog (#341).** Every paid-generation path (`video t2v/i2v/r2v`, `video chain`, `image t2i/i2i`, multi-prompt t2i, `gflow run`, `
|
|
19
|
+
**v0.39.0 — alpha.** **Failed generations are now persisted to the local catalog (#341).** Every paid-generation path (`video t2v/i2v/r2v`, `video chain`, `image t2i/i2i`, multi-prompt t2i, `gflow run`, `movie run`, and the async worker) now records a terminal `status="failed"` operation row — with a stable `error_type` derived from the exception's RFC 9457 `problem_type` and a redacted `error_detail` — before the error propagates, so WAF-403 block onset, duration, and recovery windows are measurable instead of reconstructed from memory. The new `gflow data list errors` subcommand browses failed operations newest-first, and videos whose poll returns `succeeded=false` are now recorded as `failed` (previously mis-recorded as `succeeded`). Bounded retention + export deferred to #345. Verification: [LIVE_VERIFICATION_v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (a real `image t2i` HTTP-400 wire failure produced the first `failed` row in the production catalog, $0).
|
|
20
20
|
|
|
21
21
|
</details>
|
|
22
22
|
|
|
@@ -250,7 +250,7 @@ reporter-verified e2e on macOS).
|
|
|
250
250
|
| Agentic-pin recovery: opt-in reload after a real Agent-toggle click (#338) | ✅ done (v0.38.1) |
|
|
251
251
|
| Failed generations persisted to the local catalog + `gflow data list errors` (#341) | ✅ done (v0.39.0) |
|
|
252
252
|
| Prompt `@`-mention resolution for asset tagging (#344) | ✅ done (v0.40.0) |
|
|
253
|
-
| Manifest-driven video batch runner on `ui_automation` | ❌ removed — never worked end-to-end, shipped as a nonfunctional stub; see
|
|
253
|
+
| Manifest-driven video batch runner on `ui_automation` | ❌ removed — never worked end-to-end, shipped as a nonfunctional stub; see v0.41.0 changelog. For multi-clip video, loop `gflow video t2v`/`i2v` from the shell; `gflow image batch` remains supported for images. |
|
|
254
254
|
| Persistence layer (stay-mounted batch sessions across project boundaries) | ⏳ Phase B |
|
|
255
255
|
| Provider abstraction for official Veo 3.1 API | ⏳ planned |
|
|
256
256
|
| Signed-tag CI verification automation (no manual signing in CI yet) | ⏳ planned |
|
{gflow_cli-0.41.0 → gflow_cli-0.42.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md
RENAMED
|
@@ -76,7 +76,7 @@ gflow-cli work done, especially anything touching a generation path — Part 2")
|
|
|
76
76
|
proactive-invocation mechanism fires it at both points, the same way `brainstorming` already
|
|
77
77
|
auto-triggers on "let's build X." This mechanism is specific to agents that honor the
|
|
78
78
|
`using-superpowers` convention (this project's primary Claude Code workflow) — it is not a
|
|
79
|
-
substitute for discoverability by other agents this repo explicitly supports (Cursor/Codex/
|
|
79
|
+
substitute for discoverability by other agents this repo explicitly supports (Cursor/Codex/Antigravity
|
|
80
80
|
CLI/Aider), which is why the `AGENTS.md` skills-reference table row (3.5) is required, not optional
|
|
81
81
|
reinforcement.
|
|
82
82
|
|
|
@@ -24,7 +24,7 @@ This file is forward-staged for a future docs site at https://ffroliva.github.io
|
|
|
24
24
|
|
|
25
25
|
## For AI coding agents
|
|
26
26
|
|
|
27
|
-
- [AGENTS.md](https://github.com/ffroliva/gflow-cli/blob/main/AGENTS.md): Universal coding-agent spec (Cursor, Codex, Aider,
|
|
27
|
+
- [AGENTS.md](https://github.com/ffroliva/gflow-cli/blob/main/AGENTS.md): Universal coding-agent spec (Cursor, Codex, Aider, Antigravity, Claude Code, etc.).
|
|
28
28
|
- [CLAUDE.md](https://github.com/ffroliva/gflow-cli/blob/main/CLAUDE.md): Claude Code's auto-loaded memory hub.
|
|
29
29
|
- [docs/AGENT_GUIDE.md](https://github.com/ffroliva/gflow-cli/blob/main/docs/AGENT_GUIDE.md): Mandates and routing rules for agents.
|
|
30
30
|
|
|
@@ -95,7 +95,7 @@ def build_report(material: list[str], routine: list[str], signals: dict[str, boo
|
|
|
95
95
|
"### Recommended gates",
|
|
96
96
|
"- Run **`/gflow:predict`** (Claude Code), **or**",
|
|
97
97
|
"- Read **`skills/predict/SKILL.md`** and produce the 5-persona "
|
|
98
|
-
"verdict yourself (Cursor / Codex /
|
|
98
|
+
"verdict yourself (Cursor / Codex / Antigravity / Aider), **or**",
|
|
99
99
|
"- A human reviewer documents the risk assessment in the PR.",
|
|
100
100
|
"",
|
|
101
101
|
"Then a council pass: `/gflow:pr-council-review` or read "
|