Skip to content

Commit 697596e

Browse files
helenkwokclaude
andcommitted
feat(14-08): sync rewrapped xcframeworks v0.10.2+rewrap.1 + verify hardening
Consumer-side smoke landing for 14-08 / D-26: - Synced LiteRTLM-Swift-fork@v0.10.2+rewrap.1 via scripts/sync-litertlm-swift.sh; both xcframework zips fetched from the fork's GitHub Release, SHA-256 verified against rewrap-manifest.json, installed under ios/Frameworks/. - Bumped package.json version to 0.2.0-litertlm.0.10.2.r1 (D-35). - CHANGELOG.md sync entry added. - ios/Frameworks/rewrap-manifest.json updated to the live Release's manifest (LiteRTLM sha 10565a59…, GemmaModelConstraintProvider sha 4d4cd8c8…). Verify-script hardening: - Layer B grep allowlist anchors fixed (`^\./` to match `grep -rn` output) + entries added for legit references in podspec/verify/README comments. - Layer A consumer pod install now propagates ASDF_COCOAPODS_VERSION into the tmpdir so the asdf shim resolves outside the repo tree. - .tool-versions added (nodejs 24.14.0, cocoapods 1.16.2) per D-18. The xcframework binaries themselves are gitignored via ios/Frameworks/ .gitignore (intentional, per D-26: fetched at sync time, never committed); those entries show as modified-but-not-staged in git status by design and are not part of this commit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent b3ce4ca commit 697596e

7 files changed

Lines changed: 46 additions & 28 deletions

File tree

.tool-versions

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
nodejs 24.14.0
2+
cocoapods 1.16.2

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@
2525
## 0.1.0
2626

2727
- feat: initial expo-litert-lm — Expo Modules bindings for LiteRT-LM.
28+
2026-05-16 — synced rewrapped LiteRTLM-Swift v0.10.2+rewrap.1 (2 xcframeworks, first sha256: 10565a593a70...)
Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
{
22
"schema_version": 1,
3-
"upstream_version": "v0.7.3",
3+
"upstream_version": "v0.10.2",
44
"rewrap_iteration": 1,
5-
"tag": "v0.7.3+rewrap.1",
6-
"fork_sha": "pending",
7-
"rewrap_script_sha": "pending",
8-
"built_at": "2026-05-16T00:00:00Z",
5+
"tag": "v0.10.2+rewrap.1",
6+
"fork_sha": "864db6e5417a439635f2f45d45e33ba2a42ff712",
7+
"rewrap_script_sha": "a2710c9db6e949338ad107ea035724c796355b65e0cfdcae7b32f90edbe06102",
8+
"built_at": "2026-05-16T01:31:43Z",
99
"xcframeworks": [
1010
{
1111
"name": "LiteRTLM-rewrapped.xcframework",
1212
"swift_target_name": "LiteRTLMBinary",
13-
"zip_filename": "LiteRTLM-rewrapped-v0.7.3+rewrap.1.xcframework.zip",
14-
"zip_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
15-
"release_asset_url": "https://github.com/helenkwok/LiteRTLM-Swift/releases/download/v0.7.3+rewrap.1/LiteRTLM-rewrapped-v0.7.3+rewrap.1.xcframework.zip",
16-
"install_names": [
17-
"@rpath/CLiteRTLM.framework/CLiteRTLM",
18-
"@rpath/LiteRTLM.framework/LiteRTLM"
19-
]
13+
"zip_filename": "LiteRTLM-rewrapped-v0.10.2+rewrap.1.xcframework.zip",
14+
"zip_sha256": "10565a593a70cd5f4e4cae7b56be59998ab358655831c2ff1b687578640cdf60",
15+
"release_asset_url": "https://github.com/helenkwok/LiteRTLM-Swift/releases/download/v0.10.2+rewrap.1/LiteRTLM-rewrapped-v0.10.2+rewrap.1.xcframework.zip",
16+
"install_names": []
2017
},
2118
{
2219
"name": "GemmaModelConstraintProvider.xcframework",
2320
"swift_target_name": "GemmaModelConstraintProviderBinary",
24-
"zip_filename": "GemmaModelConstraintProvider-v0.7.3+rewrap.1.xcframework.zip",
25-
"zip_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
26-
"release_asset_url": "https://github.com/helenkwok/LiteRTLM-Swift/releases/download/v0.7.3+rewrap.1/GemmaModelConstraintProvider-v0.7.3+rewrap.1.xcframework.zip",
27-
"install_names": [
28-
"@rpath/GemmaModelConstraintProvider.framework/GemmaModelConstraintProvider"
29-
]
21+
"zip_filename": "GemmaModelConstraintProvider-v0.10.2+rewrap.1.xcframework.zip",
22+
"zip_sha256": "4d4cd8c8cfa8ca0603d818f2c1478155d7d62193f07d0045f3182cee61a879d8",
23+
"release_asset_url": "https://github.com/helenkwok/LiteRTLM-Swift/releases/download/v0.10.2+rewrap.1/GemmaModelConstraintProvider-v0.10.2+rewrap.1.xcframework.zip",
24+
"install_names": []
3025
}
3126
]
3227
}

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "expo-litert-lm",
3-
"version": "0.2.0-dev.1",
3+
"version": "0.2.0-litertlm.0.10.2.r1",
44
"description": "Expo Modules bindings for on-device LLM inference. Android: Google's litert-lm-android (LiteRT-LM Engine + MediaPipe Tasks GenAI). iOS: vendored LiteRTLM-Swift wrapping the LiteRT-LM C API; MediaPipe Tasks GenAI available as opt-in MediaPipeFallback subspec. Supports .litertlm and .task model formats.",
55
"main": "lib/index.js",
66
"types": "lib/index.d.ts",

scripts/grep-allowlist.txt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,23 @@
33
# These patterns exempt known-legitimate references to raw LiteRTLM.xcframework
44
# from the grep gate that would otherwise reject them.
55
#
6-
# Format: each pattern is matched against grep -nE output (path:linenum:content).
7-
# A hit that matches ANY pattern here is considered allowed and excluded from failures.
6+
# Format: each pattern is matched against grep -rnE output, which prepends
7+
# `./` to every path. Anchor with `^\./` to match the path component.
88

9-
# sync script reads the manifest which references the canonical xcframework name
10-
^scripts/sync-litertlm-swift\.sh:
9+
# Sync script narrates the canonical xcframework name in comments
10+
^\./scripts/sync-litertlm-swift\.sh:
11+
12+
# The verify script itself prints messages mentioning the raw filename
13+
^\./scripts/verify-consumption\.sh:
1114

1215
# The allowlist file itself documents what we're guarding against
13-
^scripts/grep-allowlist\.txt:
16+
^\./scripts/grep-allowlist\.txt:
1417

1518
# CHANGELOG references historical filenames as context
16-
^CHANGELOG\.md:
19+
^\./CHANGELOG\.md:
20+
21+
# Podspec comments narrate the rewrap policy (does not vendor raw path)
22+
^\./ExpoLitertLm\.podspec:
23+
24+
# README narrates the consumer model
25+
^\./README\.md:

scripts/verify-consumption.sh

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,20 @@ PODFILE_EOF
266266
}
267267
PBXPROJ_EOF
268268

269+
# Propagate the project's pinned CocoaPods version into the tmpdir so asdf's
270+
# shim resolves correctly. The tmpdir lives outside the repo, so asdf can't
271+
# find a parent `.tool-versions` and would otherwise error with
272+
# "No version is set for command pod". ASDF_COCOAPODS_VERSION wins over
273+
# `.tool-versions` lookup so we don't have to materialize a file.
274+
COCOAPODS_VER="$(awk '/^cocoapods /{print $2; exit}' "$REPO_ROOT/.tool-versions" 2>/dev/null || true)"
275+
269276
cd "$CONSUMER_DIR/ios"
270277
set +e
271-
pod install 2>&1
278+
if [ -n "$COCOAPODS_VER" ]; then
279+
ASDF_COCOAPODS_VERSION="$COCOAPODS_VER" pod install 2>&1
280+
else
281+
pod install 2>&1
282+
fi
272283
POD_EXIT=$?
273284
set -e
274285
cd "$REPO_ROOT"

0 commit comments

Comments
 (0)