Skip to content

fix: pin @sourceacademy/conductor to ^0.8.0 across all plugin packages - #82

Merged
Shrey5132 merged 1 commit into
source-academy:mainfrom
Shrey5132:fix/pin-conductor-dependency-range
Jul 29, 2026
Merged

fix: pin @sourceacademy/conductor to ^0.8.0 across all plugin packages#82
Shrey5132 merged 1 commit into
source-academy:mainfrom
Shrey5132:fix/pin-conductor-dependency-range

Conversation

@Shrey5132

Copy link
Copy Markdown
Contributor

Summary

Every runner/web plugin package (13 package.json files) declared its @sourceacademy/conductor dependency using the loose range ">=0.3.0", in both peerDependencies and devDependencies. Yarn's resolver satisfies the loosest requested range with the oldest already-resolved version it can find, so this silently deduped conductor to 0.3.0 across the entire workspace — five minor releases behind the actual 0.8.x protocol, despite the root package.json (and runner-module-loader's own peer dependency) already correctly targeting ^0.8.0.

Why this matters

A plugin bundle built under this stale resolution is protocol-incompatible with any host/runner built against current conductor — e.g. frontend consuming it via a portal link in local dev, or a production evaluator bundle built against a recent conductor release. The failure mode is not a build error (everything type-checks and bundles fine against 0.3.0's shape) — it surfaces at runtime as an opaque host↔runner RPC error once the two sides actually try to talk to each other, which is a much harder failure to trace back to a dependency version.

Discovered while debugging a local dev.sh-based dev environment for data-visualizer: the freshly-built plugin bundle was silently linking against conductor 0.3.0 while the host and runner it needed to talk to were on 0.8.2, producing a TypeError: o[r] is not a function deep in the MessagePort RPC layer with no indication of a version mismatch.

Fix

Tightens all 13 occurrences (in src/web/* and src/runner/*, both peerDependencies and devDependencies where present) to ^0.8.0, matching the convention already used by the root package.json. yarn.lock now resolves @sourceacademy/conductor to a single 0.8.1 entry workspace-wide (the newest version satisfying ^0.8.0 currently in the lockfile's fetch cache) instead of splitting between 0.3.0 and 0.8.x.

Note: yarn.lock still carries one unrelated @sourceacademy/conductor@npm:^0.3.0 entry — that belongs to runner-remoteExecution/runner-test's pinned py-slang fork dependency (github:proto-aiken-13/py-slang#branch-ev3-engine), which declares its own conductor dependency independently. That's outside this repo's control and isolated by Yarn's PnP resolution from the packages fixed here, so it's left untouched.

Verification

  • yarn install — conductor resolves to 0.8.1 everywhere referenced by this repo's own packages (confirmed via yarn.lock).
  • yarn build — clean build across all packages.
  • yarn test139/139 passing (4 unrelated failures come from a stale, pre-existing worktree under .claude/worktrees/ that vitest happens to glob into; unrelated to this change, reproduced independently of it).
  • Confirmed one pre-existing TS build warning in web/stepper/src/SubstVisualizer.tsx (an unrelated StepperNode type mismatch) is present identically on unmodified main — not introduced by this change.

Every runner/web plugin package declared its conductor dependency as the
loose range ">=0.3.0" (peerDependencies and devDependencies alike). Yarn's
resolver satisfies the loosest range with the oldest compatible version
already in the graph, so this silently deduped to conductor 0.3.0 across
the whole workspace - five minor releases behind the actual 0.8.x protocol,
despite the root package.json and CI both targeting ^0.8.0.

A locally-built plugin bundle under this stale resolution is protocol-
incompatible with any host/runner built against current conductor (e.g.
frontend via portal-link, or production evaluator bundles), surfacing as
opaque runtime RPC errors rather than a build-time failure.

Tightens all 13 occurrences to ^0.8.0, matching the convention already used
by the root package.json and runner-module-loader's own peerDependency.
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@changeset-bot

changeset-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0fa362e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

💥 An error occurred when fetching the changed packages and changesets in this PR
Some errors occurred when validating the changesets config:
The package or glob expression "@sourceacademy/web-stepper" is specified in the `ignore` option but it is not found in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch
The package or glob expression "@sourceacademy/web-data-visualizer" is specified in the `ignore` option but it is not found in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch

@Shrey5132

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 18d7bcce-54b9-4dc2-bac1-cdaef4da97a3

📥 Commits

Reviewing files that changed from the base of the PR and between b884153 and 0fa362e.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (13)
  • src/runner/autocomplete/package.json
  • src/runner/cse-machine/package.json
  • src/runner/data-visualizer/package.json
  • src/runner/module-loader/package.json
  • src/runner/remoteExecution/package.json
  • src/runner/stepper/package.json
  • src/runner/test/package.json
  • src/web/autocomplete/package.json
  • src/web/cse-machine/package.json
  • src/web/data-visualizer/package.json
  • src/web/module-loader/package.json
  • src/web/stepper/package.json
  • src/web/test/package.json

Walkthrough

The pull request updates @sourceacademy/conductor requirements from >=0.3.0 to ^0.8.0 across runner and web package manifests, adding development dependencies where needed.

Changes

Conductor dependency alignment

Layer / File(s) Summary
Manifest version updates
src/runner/*/package.json, src/web/*/package.json
Conductor peer, regular, and development dependency declarations now use ^0.8.0; several runner packages also add it to devDependencies.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Suggested reviewers: martin-henz, aaravmalani

Poem

A rabbit checks each package line,
“Conductor hops to eight-oh-nine!”
Peer and dev paths neatly meet,
With tidy ranges, crisp and sweet.
Hop, hop—manifests align!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: updating conductor to ^0.8.0 across plugin packages.
Description check ✅ Passed The description directly matches the dependency version update and explains the motivation and verification.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Shrey5132
Shrey5132 merged commit cbebf79 into source-academy:main Jul 29, 2026
2 checks passed
@Shrey5132
Shrey5132 deleted the fix/pin-conductor-dependency-range branch July 29, 2026 11:21
Shrey5132 pushed a commit to Shrey5132/plugins that referenced this pull request Jul 29, 2026
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