Skip to content

types-drift check passes when a controller model has never been vendored #232

Description

@ClaydeCode

types-drift.yml re-runs get-types and then decides with:

if ! git diff --exit-code shard_core/data_model/backend; then

git diff reports changes to tracked files only. A model file that exists in the controller but has never been vendored here arrives as an untracked file, git diff says nothing about it, and the job passes.

So the check catches a changed model and misses a new one — and a new model is the case where shard_core is missing a type entirely.

Evidence

Two controller model files have never been vendored:

  • email_verification_model.py, added to the controller on 2026-08-30 (2e25ec4)
  • pricing_model.py, added on 2026-09-02 (8a863c4)

PR #229 merged here on 2026-09-08, after both, and its drift-check was green. Running just get-types against controller origin/main today produces both as untracked files.

They are being vendored as part of the Cloud enum sync, so the immediate drift is closed. The blind spot is not.

Fix

Have the job fail on any difference including untracked files. Either:

git add -A shard_core/data_model/backend
if ! git diff --cached --exit-code shard_core/data_model/backend; then

or check git status --porcelain shard_core/data_model/backend is empty, which covers modified, added and deleted in one go and gives a clearer error listing.

Worth deciding at the same time whether a deleted controller model should fail the check too. get-types does rm -rf on the target directory before copying, so a model removed upstream disappears here as a tracked deletion — which git diff does catch. That half works today.

The same shape exists in the controller

FreeshardBase/freeshard-controller's .github/workflows/checkson-drift.yml guards checkson/data_model/backend with the identical git diff --exit-code line and has the identical blind spot. Fixing only one leaves the other. Filed here because this is where it was found; the controller side needs its own issue or a note on this one.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions