aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* test(tools): add test-log judge, docs and policy checks with testscirakg11 days12-0/+890
| | | | | | | | | | | | | | | - ciq_test_report.py: decides pass/fail from Run No Evil output instead of monkeydo's unreliable exit code; writes JUnit XML. - check_docs.py: offline check of relative links and GitHub anchors. - lint_project.py: project rules (headers, no logging outside Diag, no secret-like literals, no network APIs or permissions). - check_budgets.py with budgets.json: perf and memory gates. - make_icon.py: reproducible launcher icon. - 31 pytest tests, including Hypothesis fuzzing of the log parser and integration checks against the real docs and sources; ruff and mypy (strict) clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* build: add Docker-only Makefile, SDK setup and product manifestcirakg11 days9-0/+558
| | | | | | | | | | | | | | | | | | - Makefile: every target runs in a container as your UID/GID, with no capabilities, a read-only root filesystem, only the project folder mounted and no network except for image builds and `make sdk`. Serial even under `make -j`. `make nuke` removes containers, images, the dedicated buildx builder and .cache/ after confirmation. - sdk-setup.sh: agreement acceptance pinned to the hash you read, password login (never stored), SDK 9.2.0 and device download, and the login token deleted afterwards. - gen-key.sh: RSA-4096 developer key into .cache/keys, never overwritten, with backup instructions. - manifest.xml: watch-app, minApiLevel 5.0.0, no permissions, and the 72 watches with API 5.0+ and at least 512 KB for apps. - .gitignore, lint configs and CHANGELOG. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* build(docker): add pinned dev and docs imagescirakg11 days7-0/+4375
| | | | | | | | | | | | | | | | | garmin-otp/dev: Ubuntu 22.04 (pinned by digest; the simulator needs WebKitGTK 4.0), apt packages from a dated snapshot.ubuntu.com mirror, OpenJDK 17, Xvfb/openbox/noVNC for the headless simulator, the connect-iq-sdk-manager CLI v0.8.4 checked against its release SHA-256, and Python tools installed from a hash-locked requirements file. garmin-otp/docs: Node 22 (pinned by digest), Debian snapshot packages, markdownlint-cli2 and mermaid-cli from package-lock.json, and the headless Chrome build pinned by Puppeteer. Locks only use releases published before 2026-10-01. The Garmin SDK, device files and the developer key are never baked into an image. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: record final decisions, test watch and SDK login detailscirakg11 days2-47/+58
| | | | | | | | | | | - README: Forerunner 70 is the test watch, the phone is Android, Docker access is settled; how `make sdk` logs in and why the browser login can't be used; the new `make products` and `make lock` targets. - FEASIBILITY: final decisions D1-D5. - Space out table separator rows and turn bold-only lines into headings so markdownlint passes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Inital commit.cirakg11 days3-0/+1480