Skip to content

Retire the shared-drift gate — the copy it policed is being deleted - #10

Merged
brentrager merged 1 commit into
mainfrom
chore/drop-shared-drift-gate
Aug 26, 2026
Merged

Retire the shared-drift gate — the copy it policed is being deleted#10
brentrager merged 1 commit into
mainfrom
chore/drop-shared-drift-gate

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Step 1 of 2 resolving the ui / client-shared duplication (pearl th-596512). This one lands first on purpose.

Why the gate is going away

It exists because SmooAI/client-shared kept a byte-identical copy of shared/, and the two had already silently diverged — client-shared served the pre-f230808 monogram (no inner 'S', no dot) and had lost the entire .input CSS family, with nothing red.

The fix chosen was to delete the duplicate rather than police it forever. An org-wide code search found nothing imports client_shared::ui — the only hits are inside client-shared itself. Its one real consumer, the th CLI, builds features = ["auth"], and all 39 of its imports are smooai_client_shared::auth. The design half was pure residue from a migration that was started and abandoned.

Why this PR is first

The gate curls client-shared/shared/ from the GitHub contents API and diffs blob SHAs. Deleting that directory while the gate still runs would red this repo's CI for no reason. Removing the gate first means there is no red window in either repo.

What changes

  • Drop the shared-drift job.
  • Update the workflow header and the README's "Relationship to client-shared" section, both of which describe an arrangement that is ending.

No consumer impact. smooblue and observability-studio keep depending on this crate exactly as they do today, and this repo becomes the single source of the design system.

Verified locally

cargo test          6 passed  (tokens_match_css, css_colors_are_all_tokens, …)
check-module-tree   ✓ every .rs file under rust/src is in the module tree

Follow-up PR in client-shared deletes rust/src/ui/ and shared/.

🤖 Generated with Claude Code

https://claude.ai/code/session_0152bbE1veqfG1SVJdyLCBxC

The gate existed because SmooAI/client-shared kept a byte-identical copy of
shared/, and the two had silently diverged (client-shared served the
pre-f230808 monogram, no inner 'S', no dot, and had lost the .input CSS
family).

An org-wide search found nothing imports client_shared::ui. Its only real
consumer, the th CLI, builds features=["auth"] and all 39 of its imports
are smooai_client_shared::auth — the design half was pure residue from an
abandoned migration. So the duplicate is being deleted at the source rather
than policed forever, and this gate goes with it.

This lands FIRST, deliberately: the gate curls client-shared/shared/ from
the contents API, so removing that directory while the gate still runs
would red this repo's CI for no reason.

Consumers are unaffected — smooblue and observability-studio keep depending
on this crate exactly as they do today.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0152bbE1veqfG1SVJdyLCBxC
@changeset-bot

changeset-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: db291bf

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

@brentrager
brentrager merged commit dc7cd29 into main Aug 26, 2026
2 checks passed
brentrager added a commit to SmooAI/client-shared that referenced this pull request Aug 26, 2026
This crate carried a byte-identical copy of SmooAI/ui's design system and
described itself as that crate's successor. The migration was never
finished, and an org-wide search found NOTHING importing
`smooai_client_shared::ui` — the real design-system consumers (smooblue,
observability-studio) depend on SmooAI/ui directly, and this crate's one
consumer, the `th` CLI, builds `features = ["auth"]` and never touched it.

Two copies of the same files is a drift surface, and it had already
drifted: this crate spent weeks serving a monogram missing its inner 'S'
and a styles.css that had lost the whole `.input` family, with nothing red.
Deleting the copy removes the failure mode instead of detecting it.

Removed: rust/src/ui/, shared/, rust/build.rs (it existed only to generate
the tokens module), the serde_json build-dependency, the ../shared/**
include entries, and the `ui` feature. `auth` is now the only feature and
stays opt-in — it is what the one consumer asks for, and its tree (tokio,
reqwest, axum) is heavy enough to be explicit about.

Docs rewritten: lib.rs and README described a design-system crate. They now
describe an auth library and point at SmooAI/ui for the design system.

SmooAI/ui#10 removes the now-pointless shared-drift gate and lands first, so
neither repo has a red window.

Verified: cargo fmt --check, clippy (default + all-features, --all-targets
-D warnings), cargo test --all-features (28 passed), check-module-tree.


Claude-Session: https://claude.ai/code/session_0152bbE1veqfG1SVJdyLCBxC

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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