Day 3b complete: Android worker finishes the three-platform pipeline#8
Merged
Day 3b complete: Android worker finishes the three-platform pipeline#8
Conversation
- src/agents/workers/android.ts: copies $NATEMPLATE_ANDROID ->
./out/<slug>/android, runs rename.rb, git init. Uses
segment-based skip (Set-membership over each path segment) rather
than startsWith, because Android has nested build/ dirs in every
module (app/build, model/build, datastore-proto/build) that
startsWith("/build/") wouldn't catch.
- scripts/ruby/rename.rb:
- TEXT_EXTS += .kt .kts .xml .gradle .pro .toml .properties .cfg
- TEXT_BASENAMES += gradlew gradlew.bat gradle.properties
local.properties
- SKIP_DIR_SEGMENTS += build .gradle .idea .kotlin captures
Verified — all three workers running in parallel via dispatch's
Promise.all:
clinic-queue (adapt, 2-pair rename):
rails: 305 scanned, 134 changed, 2459 subs, 49 renames
ios: 252 scanned, 101 changed, 2227 subs, 44 renames
android: 271 scanned, 116 changed, 1854 subs, 49 renames
task-tracker (replace, 3-pair rename, ItemTag->Task):
rails: 305 scanned, 139 changed, 3110 subs, 65 renames
ios: 252 scanned, 120 changed, 2950 subs, 77 renames
android: 271 scanned, 131 changed, 2828 subs, 89 renames
Zero [Ss]hop / [Ss]hopkeeper / ItemTag leftovers across all platforms
in both specs (content + filename grep). Parallel wall time ~1s per
worker.
Build green-check (gradlew / xcodebuild / bin/dev) deferred to
Day 5 Layer 2.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes Day 3b. Three workers now run end-to-end in parallel against real substrates.
src/agents/workers/android.ts— real implementation. Copies\$NATEMPLATE_ANDROID→./out/<slug>/android, runsrename.rb,git init -q -b main.scripts/ruby/rename.rb:TEXT_EXTS+=.kt .kts .xml .gradle .pro .toml .properties .cfgTEXT_BASENAMES+=gradlew gradlew.bat gradle.properties local.propertiesSKIP_DIR_SEGMENTS+=build .gradle .idea .kotlin capturesTricky bit worth flagging
Android has nested
build/dirs in every module (app/build,model/build,datastore-proto/build). The Rails/iOS worker'sstartsWith("/build/")path-prefix skip would miss those and copy ~hundreds of MB of KSP/Hilt generated files into./out/. Switched Android's filter to segment-based skip —rel.split("/").some(seg => SKIP_SEGMENTS.has(seg)). Catchesbuildanywhere in the path.Verified end-to-end (both specs, both operation paths)
Real planner (
claude-opus-4-7, ~5s/$0.08) + all three real workers in parallel (~1s each viaPromise.all):Leftover audit =
grep -rlnfor[Ss]hop,[Ss]hopkeeper,ItemTagacross*.rb .swift .kt .xml .kts .pbxproj .gradle .pro— empty in all cases.Spot checks (clinic-queue/android):
model/src/main/kotlin/.../model/Clinic.kt— exists (wasShop.kt)data/clinic/ClinicApi.kt— dir AND file renamed in one passbuild/dirs (copy filter working)What remains
bin/dev/xcodebuild/./gradlew assembleDebugverification. Compile errors will surface real semantic issues (e.g.,acts_as_tenantwiring, Hilt module registration) that lexical renaming can't fix.Test plan
npm run ci— 5/5 under stub modefind out/clinic-queue/android -path '*/build/*' | wc -lreturns 0