fix(graphify): default issue-flow build to update, not extract#52
Merged
Conversation
`graphify extract` requires an LLM API key (Gemini / Anthropic / OpenAI / Kimi) or `--backend ollama`. Defaulting to `extract` meant `issue-flow build` failed on every fresh machine with `error: no LLM API key found`. Cursor's own LLM is not exposed to subprocesses, so graphify cannot reuse it — there is no shim that makes `extract` work without an explicit backend. `graphify update` produces the same `graphify-out/` directory (graph.json, graph.html, GRAPH_REPORT.md) on a fresh repo, runs in seconds, and prints "no LLM needed" in its own output. Trade-off: the default graph lacks semantic relationships an LLM pass would surface; that is the right trade for a default that just works. Power users opt into the deeper build with `issue-flow build extract` after configuring a backend. Changes: - `_DEFAULT_BUILD_SUBCOMMAND` flipped from `extract` to `update` in `src/issue_flow/graphify.py` (with rationale in the comment block). - Docstrings on `cli.build` and `run_build` now lead with the no-LLM default and document the API-key requirement (and `--backend ollama` escape hatch) for `extract`. - README, build template, build skill, rules entry, cursor-issue-workflow doc, and issue-close template all rewritten to advertise `update` as the default. Each now states explicitly that Cursor's LLM is not available to subprocesses and points at the four supported env vars + Ollama as the upgrade paths. - Tests flipped to expect `update` as the injected default; the leading-flag test now uses `--force` (a real `update` flag) instead of the previous `--no-cluster` (an `extract` flag). - Design doc grows a new "Default subcommand is `update`, not `extract`" section explaining the LLM-key gate and what slipped through originally (mocked subprocess never exercised the API-key precondition). Co-authored-by: Cursor <cursoragent@cursor.com>
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.
graphify extractrequires an LLM API key (Gemini / Anthropic / OpenAI/ Kimi) or
--backend ollama. Defaulting toextractmeantissue-flow buildfailed on every fresh machine witherror: no LLM API key found. Cursor's own LLM is not exposed tosubprocesses, so graphify cannot reuse it — there is no shim that
makes
extractwork without an explicit backend.graphify updateproduces the samegraphify-out/directory(graph.json, graph.html, GRAPH_REPORT.md) on a fresh repo, runs in
seconds, and prints "no LLM needed" in its own output. Trade-off: the
default graph lacks semantic relationships an LLM pass would surface;
that is the right trade for a default that just works. Power users
opt into the deeper build with
issue-flow build extractafterconfiguring a backend.
Changes:
_DEFAULT_BUILD_SUBCOMMANDflipped fromextracttoupdateinsrc/issue_flow/graphify.py(with rationale in the comment block).cli.buildandrun_buildnow lead with the no-LLMdefault and document the API-key requirement (and
--backend ollamaescape hatch) forextract.cursor-issue-workflow doc, and issue-close template all rewritten
to advertise
updateas the default. Each now states explicitlythat Cursor's LLM is not available to subprocesses and points at
the four supported env vars + Ollama as the upgrade paths.
updateas the injected default; theleading-flag test now uses
--force(a realupdateflag) insteadof the previous
--no-cluster(anextractflag).update, notextract" section explaining the LLM-key gate and what slippedthrough originally (mocked subprocess never exercised the API-key
precondition).
Co-authored-by: Cursor cursoragent@cursor.com