Repository navigation
docs: sweep "empty wallet" out of the credit-shortfall wording - #726
Merged
Merged
Conversation
The correction was applied to the places I remembered, not the places that had it. `errors.py`'s remediation, the class docstring, the test docstrings and the skip message were fixed when ci-probe turned out to hold 50 credits rather than zero -- but eleven other occurrences shipped in #725 still said "empty wallet", "drained account", "out of Veo credits". One of them was user-facing and gave the same dead-end advice the remediation had just stopped giving: `docs/USAGE.md`'s exit-code table, row 37, "The account has no Flow credits left for this model". Someone holding 50 credits reads that and concludes gflow is broken. Row 37 now names the shortfall with the arithmetic (50 held, veo-quality asked, 100 needed) and points at the remedy -- pick a cheaper `--model`, veo-lite costs 10. Row 23's cross-reference, four comments in `migrated_composer.py`, one in `errors.py`, and four test docstrings follow. Website mirror regenerated. Also cites the finding doc. The council's D6 dimension noted that "measured 2026-09-07" rested on narrative alone, with no citable artifact, against this repo's own rule that findings live in `docs/superpowers/spikes/`. That doc now exists on develop, so `migrated_composer.py` and `errors.py` both point at it -- including the part that matters most, that it names four things as NOT measured, among them that the positive match on `prompt-warning-button` was seen exactly once. A comment citing a finding that documents its own limits is worth more than one asserting a measurement. No behaviour change: comments, docstrings and documentation only. CHANGELOG.md is deliberately untouched -- its bullet was corrected on the #717 rebase, and editing it here would only manufacture a conflict. The lesson is the sweep, not the wording. A disproved claim survives wherever nobody thought to look, so the fix for "we measured 50, not 0" is `grep`, not recall. Caught by the session working #717, who read the merged bullet rather than taking the correction on trust.
ffroliva
force-pushed
the
docs/credit-shortfall-not-empty-wallet
branch
from
September 7, 2026 13:22
39ec1d0 to
8a44925
Compare
3 tasks done
tranzmatt
pushed a commit
to tranzmatt/gflow-cli-unofficial
that referenced
this pull request
Sep 9, 2026
…no New project CTA "Fix the add_2 name drift" turned out to have no selector to fix. Tracing reachability before editing corrected two claims I had already made publicly on ffroliva#730 and to the user: - _CHARACTER_SLOT_ADD_SELECTOR is NOT broken on migrated. _click_character_slot_add tries _CHARACTER_BODY_MODE_SELECTOR first, which already covers the migrated flow-slot-chip-button; the add_2 path is the LEGACY fallback. - ADD_MEDIA_BUTTON is unreachable there: ui_automation_video returns FlowHostMigratedError before any of its ligature selectors run. - NEW_PROJECT_SELECTORS is reached only without --project, and migrated_can_serve refuses without one. So all three are labs-only in practice and the name drift has no live production impact today. That is the third time today my count was too high, each time the same mistake: generalising from a grep without checking reachability. THE REAL DEFECT, which my own spike hit: RuntimeError: Could not find 'New project' CTA on Flow gallery. URL: https://flow.google.com/?hl=en On the migrated host that blames the SELECTOR for a control the host does not render, and its remediation - "check for a newer gflow-cli release, then file a frontend bug" - is unfixable by the reader and points at the wrong culprit. Same misdiagnosis shape as a credit shortfall reported as frontend drift (ffroliva#726). Now raises FlowHostMigratedError naming the host AND the way forward (--project, which every migrated path already requires). On labs a missing CTA still reports as drift, because there it genuinely is - pinned by a test so the migrated branch cannot swallow the failure mode it was carved out of. A third test pins that the cascade still anchors on add_2, so if anyone re-anchors it on `add` the branch is revisited rather than silently kept. The safety here is GUARDS, not selectors, and guards are what a port relaxes. The measured fact now sits beside the constant: `add`, never `add_2`, with the surface counts and why a mat-icon twin would not help. Watched red first: RuntimeError: Could not find 'New project' CTA on Flow gallery. URL: https://flow.google.com/?hl=en then 3 passed. Verified: 4046 passed, 92% coverage, pyright 0 errors, ruff clean, doc links, hygiene 1031 files, website mirror. Refs ffroliva#730
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When
ci-probeturned out to hold 50 credits rather than zero, the correction went into the places I remembered —errors.py's remediation, the class docstring, the test docstrings, the skip message. Eleven other occurrences shipped in #725 still said "empty wallet", "drained account", "out of Veo credits".One of them was user-facing and gave the exact dead-end advice the remediation had just stopped giving —
docs/USAGE.md, exit-code table, row 37:Someone holding 50 credits reads that and concludes gflow is broken.
What changed
--model veo-qualityasked, 100 needed) and points at the remedy: pick a cheaper tier,veo-litecosts 10.migrated_composer.py, one inerrors.py, four test docstrings.No behaviour change — comments, docstrings and documentation only.
CHANGELOG.mdis deliberately untouched: its bullet is being corrected on the #717 rebase, and editing it here would manufacture a second conflict for no gain.Test plan
CHANGELOG.mdruff check/ruff formatclean ·pyright src0 errorstests/api/transports/test_migrated_composer.py+tests/cli— 650 passedNote
The lesson is the sweep, not the wording. A disproved claim survives wherever nobody thought to look, so the fix for "we measured 50, not 0" is
grep, not recall. Caught by the session working #717, who read the merged bullet rather than taking my correction on trust.