• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / TaipanMiner / 28223101054
90%

Build:
DEFAULT BRANCH: main
Ran 26 Jun 2026 07:11AM UTC
Jobs 3
Files 107
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 Jun 2026 07:11AM UTC coverage: 90.225%. Remained the same
28223101054

push

github

web-flow
feat: ELF archival + fleet decode (TA-445 Phase 1) (#578)

* feat: add ELF archive store (TA-445 Phase 1)

- fleetlib/elfstore.py: archive, list, find (prefix match), prune
  - archive key = sha256(elf_bytes).hexdigest() — matches esp_app_desc_t.app_elf_sha256
  - panic app_sha256 is the first CONFIG_APP_RETRIEVE_LEN_ELF_SHA chars (default 9)
    of the full key; find() resolves via prefix match
  - prune-on-write: after every archive() call with configurable keep + max_age
  - protected_shas for fleet-aware GC (never delete in-use ELFs)
  - _archived_at override param for deterministic test control
- tests/test_elfstore.py: 19 tests covering all paths (archive, find, prune)
- .gitignore: add .elf-archive/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: auto-archive ELF on ota push (TA-445 Phase 1)

- fleetlib/ota.py push(): look for sibling firmware.elf alongside firmware.bin
  (.pio/build/<env>/firmware.elf) and archive it before the HTTP push
- non-fatal: a missing .elf logs a warning but does not block the push
- _resolve_sibling_elf(): checks explicit elf_path, then <bin_stem>.elf
- _archive_elf_for_push(): calls elfstore.archive(), swallows exceptions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add fleetlib.decode + fleet decode command (TA-445 Phase 1)

- fleetlib/decode.py:
  - chip_arch(): map chip_model -> xtensa|riscv
  - find_addr2line(): auto-discover from ~/.platformio/packages/toolchain-*/bin/,
    FLEET_ADDR2LINE env var, or system PATH; toolchain_path override
  - addr2line_decode(): shell to addr2line -e <elf> -f -C; parse function@file:line
  - cause_name(): xtensa EXCCAUSE + riscv mcause name tables (28=LoadProhibited etc.)
  - decode_panic(): full flow (GET /api/diag/panic -> archive lookup -> addr2line)
  - DecodeResult with frames labeled exc_pc / bt[N]
- fleet.py cmd_decode: host arg, --elf override, --toolchain-path, auto-arch from
  /api/info chip_model; graceful no-panic and no-ELF... (continued)

2886 of 3627 branches covered (79.57%)

Branch coverage included in aggregate %.

5384 of 5539 relevant lines covered (97.2%)

149122.39 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
98.75
0.0% webui/miner/src/lib/settingsState.svelte.ts
Jobs
ID Job ID Ran Files Coverage
1 native - 28223101054.1 26 Jun 2026 07:11AM UTC 27
91.42
GitHub Action Run
2 e2e - 28223101054.2 26 Jun 2026 07:14AM UTC 56
57.25
GitHub Action Run
3 webui - 28223101054.3 26 Jun 2026 07:13AM UTC 80
91.31
GitHub Action Run
Source Files on build 28223101054
  • Tree
  • List 107
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #28223101054
  • 5cc9cf8c on github
  • Prev Build on main (#28221612552)
  • Next Build on main (#28241005660)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc