Skip to content

Cold-eyes review 2026Q3, S6: seven front-door findings (portal cards, 404s, a failing portal example) #31

Description

@bdbarnett

Quarterly cold-eyes review, 2026-09-03 (#25, standards S1/S4/S6). Read-only inspection by a repo-inspector agent from a fresh clone in a scratch directory; every claim below carries the command or URL that produced it. Filed by Arthur. Nothing here was changed by the review itself.

S6 — the org front door walked as a stranger: portal, GitHub org page, and the three Tier-2 landing pages (palettes, pdwidgets, pygraphics), every link curled. The generated pages come from data/repos_db.json and assets/chrome/site-chrome.js; per the org README, fix the data and regenerate, not the output.

Findings (7)

[MEDIUM] Portal pygraphics page's only code example fails with ImportError on the pure-Python package it tells you to install

https://pydevices.github.io/pygraphics/ 'API Code Example' line 1: from pygraphics import Area, FrameBuffer, RGB565, framebuf_backend with the comment '# Verify active backend (native C usermod or pure-Python fallback)'. Ran it verbatim against lib/pygraphics from the v-main tarball (PYTHONPATH=.../pygraphics/lib, cwd=/tmp): ImportError: cannot import name 'framebuf_backend' from 'pygraphics'. lib/pygraphics/init.py exports implementation() only; its PEP-562 __getattr__ lazy table (lines 74-82) has no framebuf_backend; the name exists only in the C module (src/gfx_bindings_mp.c:2012, src/gfx_module_cpy.c:1270). So the example fails in exactly the 'pure-Python fallback' case it claims to detect, i.e. after the MIP install the sibling pages recommend. The rest of the example is correct: with implementation() substituted it prints pygraphics_python and Area(34, 34, 60, 60), matching the page's comment. README's own quick start uses pygraphics.implementation() and works.

Suggested fix: Change the portal example (dotgithub repos_db.json / generated page) to print(pygraphics.implementation()), or add a framebuf_backend() that returns a Python-side value to lib/pygraphics/init.py so the documented call exists on both builds.

[MEDIUM] pdwidgets and pygraphics READMEs say 'TestPyPI only ... deliberate' but real PyPI carries released versions

README.md (main) pdwidgets 'Support and platforms': 'Publication to TestPyPI only (rather than PyPI) is deliberate.' pygraphics 'Support and platforms': 'Native wheels are published to TestPyPI only (pydevices-pygraphics); this is also deliberate, not a placeholder'. Yet: curl https://pypi.org/pypi/pydevices-pdwidgets/json -> 200, version 0.0.22, 2 files; https://pypi.org/pypi/pydevices-pygraphics/json -> 200, version 0.0.37, 16 files (full wheel set); https://pypi.org/pypi/pydevices-palettes/json -> 200, version 0.0.12. Each is exactly one version behind TestPyPI (0.0.23 / 0.0.38 / 0.0.13, matching the latest GitHub release tags of 2026-08-29) and carries the full README as its description, so a stranger sees a real project, not a park. Plain pip install pydevices-pygraphics (no -i) therefore succeeds and installs 0.0.37, contradicting the README text.

Suggested fix: Rewrite the two 'TestPyPI only' sentences to describe the actual state (PyPI mirrors lag one release, or PyPI is the parked/mirror channel), and decide whether the PyPI copies should be brought up to the current tags so the two indexes stop disagreeing.

[MEDIUM] Portal cards for pygraphics and palettes advertise features the repos do not contain (anti-aliased fonts; HSL; gradient generators)

Card text (identical on https://pydevices.github.io/ front page, the per-repo page , and the org profile README Tier 2, all generated from dotgithub data/repos_db.json). pygraphics: 'Pure-Python 2D graphics library with drawing primitives, anti-aliased font rendering, paletted surface blitting, and area-dirtying pipelines.' -> grep -rniE 'anti.?alias' pygraphics/ over lib/, src/, docs/, README of the main tarball returns nothing; the font engine is 8x8/8x14/8x16 bitmap fonts (README 'Multi-Font Engine'). The card also says 'Pure-Python' while the README's first line is 'Native and pure-Python pygraphics' and the TestPyPI product is a native C extension. palettes: 'Color management library with RGB565 / RGB888 conversion, HSL / HSV color spaces, palette swatches, and smooth gradient generators.' -> public API is __all__ = ['WIN16','get_palette','Palette','MappedPalette']; grep -rniE '\bhsl\b' palettes/ hits only docs/index.md:177 ('Color Math & Formats — ... HSL/HSV math'), and docs/color-math.md itself has only '## 3. HSV to RGB Interpolation'; no gradient function/class exists ([n for n in dir(palettes) if 'grad' in n.lower()] -> []). The sidebar nav (site-chrome.js:161) repeats 'Color quantization, HSL & RGB565 format conversion' (no quantize API either). Verified as delivered and NOT findings: pdwidgets card items (button.py, slider.py, progress_bar.py, label.py, add_event_cb); pygraphics palette blit (blit(..., palette=)) and Area returns; palettes RGB565/RGB888 (color_depth 16/24), HSV wheel, and every code line on the palettes portal page (palette.RED, RED_S900, default-palette RED/BLUE/GREEN/CYAN) runs.

Suggested fix: Edit the three descriptions in dotgithub data/repos_db.json (the org README says edit the DB, not the generated text) and regenerate: drop 'anti-aliased', say 'native C + pure-Python' for pygraphics, replace 'HSL / HSV color spaces ... gradient generators' with what ships (HSV colour wheel, RGB cube, Material swatches, Win16 names, RGB565/RGB888 output); fix site-chrome.js:161 and docs/index.md:177 in palettes to match.

[LOW] Sidebar nav describes android-template as a Kivy template; its README says 'no Kivy'

assets/chrome/site-chrome.js line 229 (rendered in the 'ECOSYSTEM' sidebar on every portal page): desc 'Kivy / python-for-android packaging template'. android-template README.md line 10: 'PyDevices applications run under CPython in a python-for-android APK using the SDL2 bootstrap (no Kivy).' The front-page card ('python-for-android build recipes and Buildozer project template') is correct; only the sidebar string is wrong.

Suggested fix: Change site-chrome.js:229 to 'python-for-android / Buildozer APK template' (generate it from repos_db.json if the sidebar is hand-maintained).

[LOW] GitHub org page: android-runner's website field 404s and contradicts the org README

api.github.com/orgs/PyDevices/repos -> android-runner homepage='https://pydevices.github.io/android-runner/'; curl -sSL -o /dev/null -w '%{http_code}' https://pydevices.github.io/android-runner/ -> 404. The org profile README (rendered on https://github.com/PyDevices) says under 'Deliberately absent from this map': 'android-runner ... the runner publishes no site.' Related inconsistencies in the same repo-metadata pass: micropython-vst3 has homepage=None although https://pydevices.github.io/micropython-vst3/ exists (200); cmods homepage='https://pydevices.github.io/' although https://pydevices.github.io/cmods/ exists (200).

Suggested fix: Clear android-runner's homepage field (or point it at https://pydevices.github.io/pydevices/), set micropython-vst3's to its portal page, and set cmods' to https://pydevices.github.io/cmods/.

[LOW] site-chrome.js documents an embed snippet whose two script URLs are 404

https://pydevices.github.io/assets/chrome/site-chrome.js lines 8-9 (header usage comment): '<script src="https://pydevices.github.io/assets/js/site-chrome.js"></script>' and '<script src="https://pydevices.github.io/assets/js/theme-toggle.js"></script>'. curl -> 404 https://pydevices.github.io/assets/js/site-chrome.js and 404 https://pydevices.github.io/assets/js/theme-toggle.js; the real path is /assets/chrome/site-chrome.js (200) with the theme toggle built in. No live page loads the 404 paths: /, /mip/, /pydevices/, /palettes/, /pdwidgets/, /pygraphics/, /pydevices-examples/ all load /assets/chrome/site-chrome.js, and the Gallery/PyScript pages load a local copy ../pyscript/site-chrome.js + theme-toggle.js (both 200). Only bites a repo that copies the documented snippet.

Suggested fix: Fix the comment to /assets/chrome/site-chrome.js and drop the theme-toggle line.

[LOW] Portal pygraphics page has no install line while its two sibling pages do

https://pydevices.github.io/palettes/ has 'Installation & API Usage' (mip.install line identical to README); https://pydevices.github.io/pdwidgets/ has 'Installation & Minimal Button Loop' (4-line mip block identical to README, including the 'does not pull its dependencies' comment). https://pydevices.github.io/pygraphics/ has only 'API Code Example' -- no pip or mip line -- although the README's Install section gives both (pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pydevices-pygraphics and mip.install("pygraphics", index="https://PyDevices.github.io/mip")). Front-page cards show no install lines (consistent, not a finding). Names and one-line descriptions on cards match the org README and per-page meta exactly; they differ from the GitHub 'About' descriptions only in wording except for the items in the pygraphics/palettes finding above.

Suggested fix: Add the README's two install lines to the pygraphics portal page (repos_db.json entry) so the three Tier-2 pages match.

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