Toolchain verified: watchapp/ scaffolded, builds and runs on emery + gabbro #75
No reviewers
Labels
No labels
area:companion
area:docs
area:shared
area:tooling
area:watchapp
blocker
kind:chore
kind:feature
kind:spike
kind:test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
robert/PedalPebble!75
Loading…
Reference in a new issue
No description provided.
Delete branch "tooling/pebble-sdk-emulators"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #2.
What this does
Scaffolds
watchapp/and takes D54 from recalled (a planning-stage review claim) to verified by actually running the whole pipeline on this machine, 2026-09-03.Verified (ran on this machine — commands and output in docs/DEV.md)
pebble --version→Pebble Tool v5.0.40 (active SDK: v4.33.1). Matches D54 exactly.~/.local/share/pebble-sdk/(with a/var/tmp/pebble-sdksymlink to it), not the~/.pebble-sdk/of 2016-era docs — confirms D54's callout.pebble-tool's own venv pins Python 3.13.15 (~/.local/share/uv/tools/pebble-tool/pyvenv.cfg) regardless of the system interpreter (3.14.7 here) — the pin is auv-managed build-time venv, not a system requirement. Clarifies D54's "Python 3.13 pin is mandatory" note: mandatory for pebble-tool's venv, not for the system python3 the issue's own AC ("completes on Python 3.10+") refers to.arm-none-eabi-gcc 14.2.1and QEMU — confirmed via the linker path in build output. No system ARM toolchain or qemu-system-arm needed.pebble new-project watchappscaffolded cleanly;targetPlatformstrimmed to["basalt", "emery", "gabbro"]per the issue's 2026-08-31 update.pebble build: clean 3-platform build, 2.171s wall clock (timeafterpebble clean) — consistent with D54's "2.5 seconds" (normal run-to-run variance). Singlebuild/watchapp.pbwconfirmed viaunzip -lto containbasalt/,emery/andgabbro/sub-bundles.pebble install --emulator emeryand--emulator gabbro: bothApp install succeeded.pebble emu-button click select, and re-screenshotted — the scaffold'sTextLayerupdates from "Press a button" to "Select" on bothemery(200×228 rectangular) andgabbro(260×260 round). This is a real running app, not a stale installed binary.gabbro130242 B free,emery130242 B free,basalt64706 B free — recorded in docs/DEV.md as a baseline for NFR-B1 tracking as the app grows.A note, not a doc reopen (D48)
The SDK's own linker emits
ld: warning: ... has a LOAD segment with RWX permissionson every platform, on the unmodified scaffold — before a line of app C was written. This comes from the vendored linker script, not from project code, and-Wall -Wextra -Werror(PROCESS.md §2's warning-free gate) doesn't touch it since that's a compiler flag set, not a linker one. Not a contradiction of any decision, just flagging it now for whoever wires up that CI gate so a pre-existing, benign SDK warning isn't mistaken later for a regression this PR introduced. Recorded in docs/DEV.md.Files
watchapp/— scaffold (package.json,wscript,src/c/watchapp.c), SDK template unmodified excepttargetPlatformsdocs/DEV.md— new; install/build/run steps, all tagged verifiedREADME.md— Status section and docs table updated; it previously said the repo was documentation-only, which stopped being trueNot in scope here
No app logic — that's #8 (watchapp skeleton, field store) per PROCESS.md §8's execution order. This issue was specifically the toolchain + emulator round-trip.