clockworklabs / clockworklabs/SpacetimeDB

Add test: `RawModuleDefV10` auto-generated bindings must be up-to-date in all languages

Open
#5,100 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
25.2k
Forks
1.1k
Avg merge
2d 7h
Merged PRs (30d)
46

Description

#4990 made the definition of RawModuleDefV10 invalid, so that generating it to TypeScript or C++ would result in code that didn't compile. We merged that PR without knowing, as we didn't actually re-run codegen during the PR; we planned to do so in a follow-up. This became a problem in #4636 and friends, when we attempted to make a separate change to RawModuleDefV10 in all of our supported languages. We reverted (well, as of writing, will revert) the broken change in #5098.

We should have a test which runs in CI which checks that the RawModuleDefV10 changes are up to date in all languages. Because we already check that the module libraries compile in all languages, this will mean that PRs like #4990 cannot merge. IIRC, we already have such a test for the WebSocket schema.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Find the existing WebSocket schema up-to-date test and the CI job that checks module libraries compile in each language. Trace how RawModuleDefV10 is generated for TypeScript and C++, then add coverage that detects stale generated bindings across all supported languages. Done means the check runs in CI and fails when RawModuleDefV10 changes are not regenerated.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, rust, typescript
Domain
build-system, ci-cd, testing
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
62/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.