Skip to content

meta: burndown of remaining fastled-wasm work #262

Description

@zackees

Context

One list for burning down all remaining open work in this repo. Each item has a checked status and an order. Items with an existing issue link to it. Items without one are described inline with enough detail to act on, and don't get separate child issues.

Status was verified against main at 4ebcabd on 2026-09-17. Several open issues turned out to be already implemented and only need confirming and closing.

Burndown

Work top to bottom. Tick an item when its PR merges or when its issue closes with evidence.

Tier 0: close what is already done (verify, then close)

Tier 1: user-visible bugs

Tier 2: CI coverage and CI cost

  • Intel macOS Rust tests in a Linux-hosted guest (untracked; left over from Run macOS viewer rendering in a docker-mac-x64 guest on a Linux runner #251 scope item 3a)
    • Why it's still possible: ci(macos-x64): measure WebKit in a docker-mac-x64 guest; keep the hosted render lane #261 proved a docker-mac-x64 guest cannot render (no GPU, no WebGL), but the x86_64-apple-darwin nextest archive does not need a GPU.
    • Prior art: zackees/kernal-api macos-x64-tests.yml plus ci/macos-x64/{build-archive.sh,stage-guest-share.sh,recovery-guest.sh,verify-guest-results.py}, which runs the archive in a Recovery guest with a Mach-O cargo-nextest staged through the share directory.
    • Guest constraints measured in ci(macos-x64): measure WebKit in a docker-mac-x64 guest; keep the hosted render lane #261:
      • /var/root is read-only (set HOME under /tmp);
      • no python3;
      • /tmp is a 4.9 GB tmpfs;
      • an empty 68 GB disk is attached for anything larger;
      • network works.
    • Cadence: nightly plus workflow_dispatch. Boot plus probe alone took 391-579 s.
    • Acceptance:
      • the archive runs in the guest and the job fails on a test failure (the guest itself never exits non-zero, so verify collected results);
      • RED -> GREEN by temporarily breaking one test.
  • setup-soldr soldr-cook fails on every Linux build job (untracked)
    • Symptom: the Linux unit-test run on main (35193809098) shows failed to run custom build command for glib-sys v0.18.1 / gobject-sys v0.18.0, then cook: failed with exit 101 ... continuing without cooked deps. _terminal-test.yml shows the same.
    • Cause: setup-soldr cooks dependencies inside its own step, before the later "Install system dependencies (Linux)" step installs libgtk-3-dev / libwebkit2gtk-4.1-dev, so pkg-config finds no GLib. The prebuilt-dependency cache is never produced, and every run compiles those dependencies cold.
    • Fix: install the apt packages before zackees/setup-soldr in _unit-test.yml, _terminal-test.yml and the other _*.yml files that cook on Linux.
    • Acceptance:
      • the cook step logs success on Linux;
      • a second run shows a warm-cache hit;
      • record the before/after wall time of the Linux unit-test job.
  • Python files under ci/ are unlinted (untracked)
    • Symptom: bash lint runs ruff, black, isort and pyright over src tests only. ruff check ci reports 13 errors on main: 6 SIM102, 4 ISC004, 1 PIE810, 1 EXE001, 1 RUF100 (in ci/hooks/tool_guard.py and ci/lint_python/keyboard_interrupt_checker.py).
    • Why it matters: ci/ now holds real test code (safari_smoke.py, safari_terminal_smoke.py) that CI executes.
    • Fix: fix the 13 findings, then add ci to the ruff/black/isort/pyright invocations in lint.
    • Acceptance: bash lint covers ci/ and passes; reverting one fix makes lint fail.

Tier 3: developer experience

  • bash lint cannot complete on hosts without rustup (untracked)
    • Symptom: the dylint stage requires cargo-dylint 6.0.3 and a rustup binary (to pin nightly-2026-03-26), and exits before the Python stages run. On a NixOS host, no Python lint runs locally.
    • Fix: run the Python stages independently of the dylint stage, or skip dylint with a loud warning locally (never in CI) when its prerequisites are missing.
    • Acceptance:
      • on a host without cargo-dylint, bash lint still runs every other stage and exits non-zero with an explicit "dylint not run" message;
      • in CI, a missing dylint still fails.

Tier 4: features and project direction

Acceptance criteria

  1. Every checkbox above is ticked. Each existing issue is closed with a linked PR or verification evidence. Each untracked item has a merged PR meeting its own acceptance line.
  2. Every bug or behavior change lands with RED -> GREEN evidence: a focused failing test or run first, then the fix. Tier 0 closures cite the verifying run instead.
  3. bash test passes, and every CI workflow is green on the final merge.
  4. No item is closed by weakening a check: no skipped browser checks, no lowered readiness gates, no JSPI flags (Safari remains a required target).

Decisions

Open questions

Related issues

#245, #246, #247, #250, #254, #56. Closed context: #251/#261 (guest findings), #259/#260 (terminal CI).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions