Goal
Create public led-dynamo/leddy-esp32 and extract the merged native ESP32-S3/ESP-IDF implementation from leddy-arduino/src/ports/esp32-idf without changing the capability or renderer-hook contract.
Acceptance criteria
Publication readiness
leddy-arduino PR #3 provides deterministic standalone-tree extraction:
bash scripts/extract-controller-repo.sh esp32 /tmp/leddy-esp32
PR #4 adds reproducible leddy-esp32.tar.gz generation, SHA-256 sidecars, and controller-artifacts.json, with CI requiring byte-identical repeated packaging.
PR #5 is now merged and adds the network-ready publisher:
export GH_TOKEN='...'
bash scripts/publish-controller-repos.sh esp32
The publisher creates the missing public org repository through GitHub REST, publishes the extracted tree, initializes main and dev, keeps the PAT environment-only, and refuses to overwrite a repository that already contains branches. All five PR #5 CI jobs passed.
The replacement PAT was exercised against this path from the current runtime. It fails before authentication at DNS resolution (curl: (6) Could not resolve host: api.github.com), confirming the remaining blocker is outbound network reachability rather than token selection or code packaging.
Existing implementation
Goal
Create public
led-dynamo/leddy-esp32and extract the merged native ESP32-S3/ESP-IDF implementation fromleddy-arduino/src/ports/esp32-idfwithout changing the capability or renderer-hook contract.Acceptance criteria
led-dynamo/leddy-esp32repository exists with standard org governance filesesp32-s3-devkitc-1platform=esp32andusb_serial,wifi,bleleddy-monorepooptional submodule/fleet entries are updatedleddy-arduinoremoves the extracted native port after downstream references movePublication readiness
leddy-arduinoPR #3 provides deterministic standalone-tree extraction:PR #4 adds reproducible
leddy-esp32.tar.gzgeneration, SHA-256 sidecars, andcontroller-artifacts.json, with CI requiring byte-identical repeated packaging.PR #5 is now merged and adds the network-ready publisher:
The publisher creates the missing public org repository through GitHub REST, publishes the extracted tree, initializes
mainanddev, keeps the PAT environment-only, and refuses to overwrite a repository that already contains branches. All five PR #5 CI jobs passed.The replacement PAT was exercised against this path from the current runtime. It fails before authentication at DNS resolution (
curl: (6) Could not resolve host: api.github.com), confirming the remaining blocker is outbound network reachability rather than token selection or code packaging.Existing implementation