Skip to content

fix: make CI toolchain tests fatal and add post-release smoke tests (issue #62)#63

Merged
konard merged 3 commits intomainfrom
issue-62-3002f19b72a9
Mar 3, 2026
Merged

fix: make CI toolchain tests fatal and add post-release smoke tests (issue #62)#63
konard merged 3 commits intomainfrom
issue-62-3002f19b72a9

Conversation

@konard
Copy link
Member

@konard konard commented Mar 2, 2026

Summary

Fixes the CI/CD quality gap reported in issue #62 where toolchain failures (cargo, python, go, etc.) did not actually fail the build, and adds post-release smoke tests to validate published images.

Root cause analysis (see docs/case-studies/issue-62/CASE-STUDY.md):

  1. Cyrillic 'с' vs ASCII 'c': The сargo command in the issue used Unicode U+0441 Cyrillic 'с' instead of ASCII 'c' — a keyboard layout typo. This confirms the shell invocation by the --isolated docker runner uses /bin/sh, bypassing .bashrc.

  2. NVM is a shell function: nvm is not a binary — it's a bash shell function. It can only be invoked after sourcing $NVM_DIR/nvm.sh. This is expected behavior; node itself (a binary) is accessible via PATH after the entrypoint runs.

  3. CI tests were non-fatal: All test commands used || echo "test failed" patterns, meaning a broken image would still be released with CI showing "passed".

Changes

  • Make tests fatal: Added set -e to all test steps; removed all || echo "..." non-fatal fallbacks
  • Comprehensive toolchain tests: Added tests for every installed runtime including previously untested tools:
    • cargo, rustup (Rust)
    • python3, pip3 (Python via pyenv)
    • ruby, gem (Ruby via rbenv)
    • kotlin (JVM via SDKMAN)
    • swift, dotnet, Rscript (R)
  • Post-release smoke tests: Added smoke test step in docker-build-push job that validates the actually-published image (not just locally built), covering all toolchains
  • Case study: Added docs/case-studies/issue-62/ with full root cause analysis, timeline, and CI log from the 1.3.13 release

Test plan

  • Verify PR CI (docker-build-test) now fails if any toolchain is missing
  • Verify the full toolchain list matches what's installed in the image
  • Verify the smoke test runs after image push in main/dispatch builds
  • Review case study for accuracy

🤖 Generated with Claude Code

Fixes #62

Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: #62
@konard konard self-assigned this Mar 2, 2026
…issue #62)

Previously, all toolchain test commands in `docker-build-test` used
`|| echo "test failed"` patterns, making every failure non-fatal. An image
where cargo, python, go, or any tool was missing would still pass CI and
be released.

- Add `set -e` to all test steps so any failed command fails the CI job
- Remove all non-fatal `|| echo "..."` fallback patterns from test commands
- Add comprehensive toolchain tests covering all installed runtimes:
  cargo, rustup (Rust), pip3, python3 (Python via pyenv), gem, ruby
  (Ruby via rbenv), kotlin (JVM via SDKMAN), swift, dotnet, Rscript (R)
- Add post-release smoke tests in `docker-build-push` job that validate
  the actually-published image after every main/dispatch release
- Add case study docs in `docs/case-studies/issue-62/` with root cause
  analysis (Cyrillic 'с' vs ASCII 'c', NVM shell function behavior,
  non-fatal CI test patterns)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] Looks like our konard/sandbox:1.3.13 image does not contain rust toolchain or it is not properly initialized fix: make CI toolchain tests fatal and add post-release smoke tests (issue #62) Mar 2, 2026
@konard konard marked this pull request as ready for review March 2, 2026 22:36
@konard
Copy link
Member Author

konard commented Mar 2, 2026

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $3.447394
  • Calculated by Anthropic: $2.998523 USD
  • Difference: $-0.448872 (-13.02%)
    📎 Log file uploaded as Gist (2982KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard
Copy link
Member Author

konard commented Mar 2, 2026

✅ Ready to merge

This pull request is now ready to be merged:

  • All CI checks have passed
  • No merge conflicts
  • No pending changes

Monitored by hive-mind with --auto-restart-until-mergeable flag

@konard konard merged commit caad83a into main Mar 3, 2026
19 checks passed
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.

Looks like our konard/sandbox:1.3.13 image does not contain rust toolchain or it is not properly initialized

1 participant