mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-11 15:08:28 +01:00
The artifact was written for an earlier draft of the change and did not match what shipped. It claimed _glyph_art.py went 253 -> 208 when HEAD was 220 and the committed file is 238, omitted apps.py entirely, and carried the line "Non-goal: any change to the glyph artwork itself" — false, since the whole point of the commit was adding the note-ascender glyph and the lyricanki AppIcon entry. Corrected the line counts, added apps.py to scope, replaced the false non-goal with the real one (the twelve pre-existing glyphs and style.py are untouched), and recorded the linux=False check: ~/lyricanki has android/ and no linux/, so there is no desktop hicolor set to install. Evidence that misdescribes its own diff is worse than none — it is what a future reader bisects against. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
55 lines
4.2 KiB
JSON
55 lines
4.2 KiB
JSON
{
|
|
"intent": "Add the lyricanki launcher icon to the shared family — a new note-ascender glyph plus its registry entry — and keep python_pkg/app_icons/_glyph_art.py under the 250-line cap while doing it, by moving two glyph constants into a companion module. The cap compliance is the last blocker to wiring the cap into pre-commit, which is why the two land together.",
|
|
"scope": [
|
|
"python_pkg/app_icons/_glyph_art.py: 220 -> 238 lines (adds _NOTE_ASCENDER's artwork, loses _TRACK_BARS and _NOTE_ASCENDER to the companion module)",
|
|
"New: python_pkg/app_icons/_glyph_art_more.py (50)",
|
|
"python_pkg/app_icons/glyphs.py: imports _NOTE_ASCENDER and _TRACK_BARS from the new module, and registers the note-ascender Glyph",
|
|
"python_pkg/app_icons/apps.py: new lyricanki AppIcon entry (accent #B8862E, glyph note-ascender, linux=False)",
|
|
"Non-goal: any change to the artwork of the twelve pre-existing glyphs, or to the shared family constants in style.py"
|
|
],
|
|
"changes": [
|
|
"Added the note-ascender glyph and the lyricanki AppIcon entry, so lyricanki stops shipping the stock Flutter 'beach' icon. linux=False because ~/lyricanki has an android/ target and no linux/ directory — verified on disk, not assumed — so there is no desktop hicolor set to install.",
|
|
"Moved the two most recent glyph constants (_TRACK_BARS, _NOTE_ASCENDER) with their comments into a companion module. The division carries no meaning beyond the cap, and the module docstring says so, because a reader would otherwise look for a taxonomy that is not there.",
|
|
"glyphs.py imports from both modules. Nothing else changed: the Glyph dataclass, the registry and the lookup all stay put, so no caller or test needs to know which file a glyph lives in — the same contract the original _glyph_art split established."
|
|
],
|
|
"verification": [
|
|
{
|
|
"command": "python3 -c 'from python_pkg.app_icons.glyphs import GLYPHS ...'",
|
|
"result": "pass",
|
|
"evidence": "13 glyphs load; both moved names ('note-ascender', 'track-bars') are present in the registry."
|
|
},
|
|
{
|
|
"command": "build_svg(GLYPHS[name], '#7C9CF5', with_background=True) for the moved glyphs",
|
|
"result": "pass",
|
|
"evidence": "Ran the real renderer, not just the import: note-ascender produces 641 bytes and track-bars 444, both with the accent colour substituted. A control glyph (anvil, untouched) renders alongside them at 496 bytes."
|
|
},
|
|
{
|
|
"command": "python3 -m pytest python_pkg/app_icons -q",
|
|
"result": "pass",
|
|
"evidence": "44 passed. The coverage gate reports below 100% only because a single-package run does not exercise the rest of the repo."
|
|
},
|
|
{
|
|
"command": "bash meta/scripts/check_file_length.sh --all",
|
|
"result": "pass",
|
|
"evidence": "'all checked files are within 250 lines'. Both modules are under: 238 and 50."
|
|
},
|
|
{
|
|
"command": "ls -d ~/lyricanki/linux",
|
|
"result": "pass",
|
|
"evidence": "No linux/ directory (android/ is present), confirming linux=False is correct rather than an oversight. The six generated icon assets exist in ~/lyricanki/assets/icon/ and that repo's tree is clean, so the app side was committed separately as the contract's out_of_scope says."
|
|
},
|
|
{
|
|
"command": "pre-commit run --files <the four python files>",
|
|
"result": "pass",
|
|
"evidence": "ruff, ruff format, mypy, pylint, bandit, pytest-with-coverage and codespell all pass. No suppression added."
|
|
}
|
|
],
|
|
"risks": [
|
|
"A mid-edit slip removed the _NOTE_ASCENDER argument from its Glyph(...) call site as well as from the import list, which surfaced immediately as a TypeError on import. Repaired and re-verified by rendering; recorded because the import-only check would not have caught it — the registry has to be built for that failure to appear.",
|
|
"Two modules now hold glyph data, so someone adding a glyph must pick one. The docstring directs them to the cap rather than to a false distinction."
|
|
],
|
|
"rollback": [
|
|
"git revert the commit; lyricanki loses its family icon and returns to the stock Flutter icon, and the _glyph_art split is undone. Because the same commit wires the file-length gate, a revert must also drop that hook or the tree it restores will not satisfy it."
|
|
]
|
|
}
|