Stokowski tooling: fix Claude→Qwen routing, add lc issue comment - #197
Merged
Conversation
…odel mise.toml pointed ANTHROPIC_BASE_URL at a local lemonade proxy and remapped every Claude model alias (Opus/Sonnet/Haiku/subagent) to user.Qwen3.6-35B-A3B-ThinkingCoder, so every "claude" runner turn was silently served by that local model instead of real Claude. Comment out the override and switch the active workflow.yaml symlink to workflow.opus.yaml so the claude runner uses real Anthropic models.
…e bodies Add a new `lc issue comment ISSUE_ID [-m TEXT] [--body-file PATH]` subcommand. --body-file (- for stdin) lets a caller supply a large multi-line comment body without building it as a single shell argument - closing the exact bug class that produced two malformed EXT-17 comments (a literal backslash-n instead of a real newline, and an unexpanded variable inside a quoted heredoc), both from an agent that had no safe `mix lc` way to post a multi-line comment and hand-rolled curl/GraphQL instead. Also fixes a latent crash: Display.puts_text/2 had no text-mode clause for a bare Comment, so showing one raised FunctionClauseError straight into a real System.halt/1. Update the per-stage agent prompts (global.md, investigate.md, implement.md, merge.md) to post one Linear comment per milestone via this command instead of maintaining a single "workpad" comment - an earlier design in documents/phase-13-plan.adoc that upserted a comment by marker match, dropped after live testing showed commentUpdate needs a scope this project's Linear key doesn't reliably carry, and matching a comment by string prefix is inherently indeterminate.
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
mise.tomlwas silently routing every "claude" Stokowski runner turn through a local Qwen3.6-35B model (via a lemonade proxy onANTHROPIC_BASE_URL), not real Claude. Disabled the override and pointed the activeworkflow.yamlatworkflow.opus.yaml.lc issue comment ISSUE_ID [-m TEXT] [--body-file PATH]subcommand.--body-file(-for stdin) lets a caller supply a large multi-line comment body without building it as a single shell argument.workflow.codex.yaml/workflow.claude.yaml), and the Phase 12/13 plan-index entries inAGENTS.md.Why
EXT-17's
code-reviewrun 4 posted two malformed Linear comments (a literal\ninstead of a real newline, and an unexpanded$VARinside a quoted heredoc). Root cause: the review agent had no safemix lcway to post a multi-line comment, so it hand-rolled acurl/GraphQL call instead — exactly the failure mode "always usemix lc" (AGENTS.md) exists to prevent.--body-filecloses that gap directly.Along the way, also fixed a latent crash:
Display.puts_text/2had no text-mode clause for a bareComment, so showing one raisedFunctionClauseErrorinto a realSystem.halt/1.An earlier design (documents/phase-13-plan.adoc) had this command find-and-update a single persistent "workpad" comment by marker match. That's gone: live testing showed
commentUpdateneeds a scope this project's Linear key doesn't reliably carry, and matching a comment by string prefix is inherently indeterminate anyway. The per-stage prompts (global.md,investigate.md,implement.md,merge.md) now just say to post one comment per milestone instead.Test plan
mix format --check-formatted,mix credo --strict,mix test(352 tests) all cleanEXT-17): plain create and--body-file(file and stdin) both confirmed, including byte-for-byte survival of a literal\nand a$VAR-looking string through--output json+repr()