Repository navigation
Fix cold Provider startup, diagnostics and course dependency activation - #39
Merged
Merged
Conversation
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.
Cold course startup can spend more than 120 seconds preparing a toolchain before the Provider executable exists. Give initial describe an absolute 900-second deadline, show preparation before session discovery, and retain independent stdout/stderr diagnostics. Subsequent Provider calls keep their existing idle limit.
Propagate startup, enumeration and check transport failures to structured error events and a nonzero CLI exit. Kill contained child process trees on timeout/cancellation, reject partial successes followed by child failure, and install downloaded course workspace dependencies before reporting installation success.
Validation: local build, portable startup/failure injection and session tests; CI covers Linux static distribution, macOS ARM64 and Windows 2022/2025. CI also produces candidate binaries with source SHA and SHA256 for d2mcpp integration before release. Documentation describes the configuration and event contract.
Self-review completed:
Validation evidence: all six native CI jobs passed in https://github.com/d2learn/d2x/actions/runs/39441449900 (Linux static, macOS 14/15 ARM64, Windows 2022/2025, real Linux course smoke). Portable startup tests include installation/dependency failure and descendant cleanup; existing protocol e2e and 28 session assertions pass. Local Ubuntu 20.04 ordinary-user container reached a cold session in 99.2s, passed save/advance/resume and all 52 reference answers using the explicit static candidate. Full cross-repository candidate matrix is being checked before stable release.
The complete d2mcpp candidate matrix is now green: https://github.com/mcpp-community/d2mcpp/actions/runs/39443060283 (10 first-use jobs, separate README/cold, Linux without a compiler, macOS ARM64, Windows 2022/2025 including no MSVC). Artifact checkout SHA 3f56f74 and binary SHA256 were asserted in every job. Candidate testing explicitly overrides the installed stable binary; post-release course CI will verify the actual xlings-installed release too.