Drop the Python sidecar from the payload - #13
Merged
Merged
Conversation
…payload The mouth has been the native qwen3-tts-worker since the native-tts PRs, but the embed still carried sidecar/say.py, pyproject.toml and uv.lock, Complete() still demanded them, and the cask still depended on uv. - delete sidecar/, pyproject.toml, uv.lock from the checkout and internal/ship/fs - Complete() needs voices/veronica/ref.wav + character.toml, nothing else - remove Sync, LookUV, ImportMLX, VenvReady, Venv, HFHome, Env, Sidecar (no callers) - ship_test: checkout sentinel is character.toml so TestEmbedMatchesCheckout keeps running; TestEmbedIsExactlyPayload pins the embed to the three files - just dist stamp copies only the payload; cask drops the uv formula - just vhs demo bakes the tape line with qwen3-tts-cli from ~/.cans/native/bin - wording: no more MLX / sidecar in comments, errors, tape scripts
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.
Why
The mouth has been the native
qwen3-tts-worker(C++/GGML/Metal) since the native-tts PRs. Nothing calls the Python path any more, but the shipped payload still carried it:sidecar/say.py,pyproject.tomlanduv.lockwere embedded into the binary and extracted to~/.cans/shipped,ship.Complete()refused a payload without them, and the Homebrew cask still declareduvas a dependency.This removes all of it. Campaign workitem
WI-8b1c5d.What changed
sidecar/say.py,pyproject.toml,uv.lockfrom the checkout and frominternal/ship/fs/(−2,000 lines, mostly the lock file).ship.Complete()now requires exactlyvoices/veronica/ref.wav+character.toml.internal/ship:Sync,LookUV,ImportMLX,VenvReady,Venv,HFHome,Env,Sidecar(sync.gois gone). No callers outside tests.checkoutRoot()usedsidecar/say.pyas its checkout sentinel; without the fixTestEmbedMatchesCheckoutwould have started skipping instead of running. Sentinel is nowgo.mod+character.toml.TestEmbedIsExactlyPayloadwalks the embed FS and fails if it holds anything beyond the three payload files — the sidecar can't quietly come back.TestCompleteNeedsEveryPiecepins theComplete()contract.TestPrepareSkipsSyncWhenSayBinSet→TestPrepareSkipsEnsureWhenSayBinSet, asserting whatPrepareactually skips now.just dist stampcopies only the payload. Cask dropsformula: uv.goreleaser checkpasses.just vhs demobaked the tape line withuv run … say.py. It now usesqwen3-tts-cli, the one-shot tool that ships next to the worker in~/.cans/native/bin(-m models -t text -r ref.wav -o out.wav), and feeds the CLI'sTotal: N msinto the tape'sttfafield.demo-sayno longer shells out topython3for a fractional sleep.Verification
go build ./... && go vet ./... && gofmt -l .clean;just test unitgreen, 8 packages.go test -run 'TestEmbed|TestComplete' -v ./internal/ship— all four run and pass (none skip).grep -rn 'uv run|mlx|say\.py|pyproject'over the tree: empty.CANS_HOMEwith the binary copied outside the checkout:cans doctorall ok,shipped/holds only.stamp,character.toml,voices/veronica/{ref.wav,meta.json}— zero.py/pyproject/uv.lock.cans say "Put the cans on."speaks through the native worker (exit 0).just dist snapshotbuilds; archive isLICENSE, README.md, cans;stringson the binary finds nomlx_audio,sidecar/say.py,pyproject.toml, orUV_PROJECT_ENVIRONMENT.just vhs demoruns end to end withoutuv: 1.58 s line at 24 kHz mono, gif + mp4 regenerated and the booth frame shows the line with its ttfa.Not in this PR
docs/booth.gif/docs/booth.mp4were regenerated as part of verification but reverted — the committed media is unchanged. Re-cutting the README demo with the native mouth is a separate call.~/.cans/venvand~/.cans/hffrom the Python era; nothing cleans those up yet (just uninstall --allwipes the whole home).-o, stdin,--stream, the mouth lock — that's the next slice (WI-a2e393), now unblocked.