Skip to content

tc.rb: distinguish 'tapioca could not run' from stale RBIs - #163

Merged
JPDuchesne merged 2 commits into
mainfrom
jpd/tc-env-misdiagnosis
Sep 13, 2026
Merged

tc.rb: distinguish 'tapioca could not run' from stale RBIs#163
JPDuchesne merged 2 commits into
mainfrom
jpd/tc-env-misdiagnosis

Conversation

@JPDuchesne

Copy link
Copy Markdown
Contributor

The RBI verify step discarded tapioca's stderr and reported every failure as "RBI files are out of date. Run: dev rbi". In a shell without the project environment (agent and CI shells get no cd-triggered shadowenv hook), the rbenv shim can't resolve tapioca at all (exit 127) — and the misleading message sends the reader off regenerating RBIs when the fix is shell activation. This burned real time again today.

Now a could-not-run failure reports the actual stderr and the two correct invocations:

RbiOutOfDateError: tapioca could not run (rbenv: tapioca: command not found). This is a shell-environment problem, not stale RBIs — run through `dev tc` or `shadowenv exec -- bin/tc.rb` so the project Ruby activates.

Verified live both ways: green under shadowenv exec, honest diagnosis from a bare shell. Root-cause fix per the capture-learning doctrine — the coping rule ("always shadowenv exec") already lives in the org ruby-toolchain skill; what was missing was the tool telling the truth.

Made with Cursor

The verify step discarded tapioca's stderr and reported every failure as
'RBI files are out of date — run dev rbi'. In a shell without the
project env (agent/CI shells get no cd-triggered shadowenv hook), the
rbenv shim can't resolve tapioca at all — and the misleading message
sends the reader chasing RBI regeneration instead of shell activation.
Now an exit-127/command-not-found failure names the real problem and the
two correct invocations (dev tc, shadowenv exec).

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

The first fix special-cased exit 127 / command-not-found, but bundler
missing-gem errors, ruby-pin mismatches, and tapioca crashes would still
misreport as stale RBIs. Invert the check: positively detect tapioca's
verdict on stderr ('RBI files are out-of-date'); every other failure
surfaces its real output, with the shadowenv activation hint kept for
the command-not-found shape.

Verified live: activated run green; removed-RBI run reports stale with
tapioca's reason; bare half-activated shell reports the rbenv shim
error with the activation hint.

Co-authored-by: Cursor <cursoragent@cursor.com>
@JPDuchesne
JPDuchesne merged commit ed8134d into main Sep 13, 2026
5 checks passed
@JPDuchesne
JPDuchesne deleted the jpd/tc-env-misdiagnosis branch September 13, 2026 02:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant