Skip to content

SMOODEV-2382: Mobile SDK consumption enablers (ADR-074)#120

Merged
brentrager merged 1 commit into
mainfrom
SMOODEV-2382-consumption
Jul 8, 2026
Merged

SMOODEV-2382: Mobile SDK consumption enablers (ADR-074)#120
brentrager merged 1 commit into
mainfrom
SMOODEV-2382-consumption

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

What

WS4 prerequisites so the mobile apps can actually depend on the SDKs:

  • Root Package.swift — SPM only resolves at repo root; aliases swift/Sources+Tests. Verified: swift test from root runs all 7 tests. CI swift_checks now validates the root manifest (what consumers resolve).
  • jitpack.yml + maven-publish — Android consumes com.github.SmooAI:config:<sha> via JitPack. Verified locally: gradle publishToMavenLocal produces jar+pom+module. Maven Central under ai.smoo filed as the durable follow-up.
  • ADR-073 → ADR-074 sweep in spec/KDoc/comments (073 was concurrently claimed by SmooAI/smooai's Karpenter bootstrap-island ADR).

Epic: SMOODEV-2377.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MPVyaZaAGgvFRUq34z4qJ8

SPM can only resolve a manifest at the repo root, so the Swift SDK gets
a root Package.swift aliasing swift/Sources (consumers pin a revision —
the cargo-git-dep house pattern; CI now validates the root manifest).
Android consumes via JitPack: jitpack.yml + maven-publish publication
(com.github.SmooAI:config:<sha>), with Maven Central under ai.smoo as
the durable follow-up. Sweeps ADR-073 → ADR-074 references (073 was
concurrently claimed by the Karpenter bootstrap-island workstream).

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

changeset-bot Bot commented Jul 8, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 6dd8c24

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.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

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 7f28077 into main Jul 8, 2026
2 of 3 checks passed
@brentrager brentrager deleted the SMOODEV-2382-consumption branch July 8, 2026 19:32
brentrager added a commit that referenced this pull request Jul 8, 2026
… typed errors (#123)

* SMOODEV-2389: Untrack root .build/ — committed SPM module cache breaks other machines

The root SPM manifest change (SMOODEV-2382, #120) committed 2302 files of
.build/ module cache because .gitignore only covered swift/.build/. pcm
files bake absolute module-cache paths, so any other checkout fails
'swift test' at the root manifest with 'precompiled file ... was compiled
with module cache path ...' fatalError. Untrack and ignore.

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

* SMOODEV-2389: Mobile SDK parity — Swift sync publicValue, step clamp, typed errors, Closeable

The parity audit against docs/Mobile-Runtime-Mode-Spec.md and the TS/Rust
SDKs found four gaps:

- Swift SmooConfig was an actor, so publicValue(forKey:) required await —
  violating spec row 2 (boot config resolves synchronously, offline). Now a
  lock-guarded final class, the structural twin of Kotlin's
  @Volatile/@synchronized. Async evaluate paths are unchanged for callers.
- evaluateLimit in both SDKs clamped to [min,max] but skipped step snapping,
  so a step-defined limit resolved differently on mobile than TS clampLimit /
  Rust clamp_limit (ADR-066). step now snaps to the nearest multiple BEFORE
  the clamp, same order as the references.
- Evaluate failures collapsed to a bare status int. Both SDKs now throw the
  typed hierarchy (flag/limit × notFound/context/evaluation) carrying the
  key, mirroring TS FeatureFlagEvaluationError et al.
- Kotlin's Ktor HttpClient leaked; SmooConfig is now Closeable.

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

---------

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