- openspec/config.yaml podle seedu z aiscr-management (stupeň
change-tracked, vestavěné schéma spec-driven, bez openspec/specs/)
- AGENTS.md: sekce OpenSpec (kdy zakládat změnu, postup, archivace
s --skip-specs), artefakty změny ve stejném PR jako implementace
- CI: job OpenSpec validuje artefakty (CLI připnuté na 1.14.0)
Připraveno s pomocí AI (Claude), ručně zkontrolováno.
* chore: odstranit resources.py a konfiguraci flake8 z balíčku
Scanner na plugins.qgis.org označil plugin jako „Validated
(configured)“ kvůli amcr_viewer/.flake8. Ten potlačoval jen stylové
nálezy (E302, E305, E501) ve vygenerovaném resources.py, který se
nikde neimportuje – ikony se načítají přímo z PNG. resources.py
repozitář pluginů nevyžaduje (validator.py v QGIS-Django, PyQGIS
cookbook: „optional“).
- Smazán amcr_viewer/resources.py a amcr_viewer/.flake8.
- CI: flake8 běží s --isolated (výchozí pravidla jako scanner);
kontrola ZIPu místo .flake8 hlídá povinný LICENSE.
- check_sources.py: žádné skryté soubory v balíčku, ani config
soubory scanneru.
- pyproject.toml, README.md, AGENTS.md: odstraněny odkazy na oba
soubory, popsán postup bez konfigurace.
Ověřeno: check_sources, flake8 7.3.0, ruff 0.16.5, bandit 1.9.4,
detect-secrets bez nálezů; pyqgis4-checker čistý; smoke test v QGIS
3.44.15 (Qt 5) i 4.2.3 (Qt 6); ZIP bez skrytých souborů.
Připraveno s pomocí AI (Claude).
* Verze 2.1.4
Povýšena verze v metadata.txt (+ changelog) a CITATION.cff po odstranění resources.py a konfigurace flake8.
Připraveno s pomocí AI (Claude).
Verze a datum releasu v CITATION.cff se povyšují ručně spolu
s metadata.txt a snadno se zapomenou (u v2.1.3 dorovnáno dodatečně
v 5841fc1).
- AGENTS.md: pravidlo povýšit CITATION.cff (version, date-released)
spolu s metadata.txt; doplněn popis jobu Balíček pluginu.
- Šablona PR: bod kontrolního seznamu zahrnuje CITATION.cff.
- CI (Balíček pluginu): krok ověří, že verze v CITATION.cff
odpovídá metadata.txt.
Připraveno s pomocí AI (Claude).
Nová kontrola v release_pr_checks.yml ověří na PR směřujícím do main,
že verze v metadata.txt šla nahoru, první položka changelogu patří
nové verzi, CITATION.cff má stejnou verzi a posunuté date-released,
a že název release větve (version/vX.Y.Z) odpovídá verzi v metadata.txt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013jT6Xv6FP2vWgBwLM57sc6
Workflow code_quality.yml pouští při každém PR a při pushi do main
kontroly, které se dosud dělaly ručně, ve čtyřech jobech:
- Lint a bezpečnost: check_sources.py, bandit, detect-secrets, flake8,
ruff. Bandit a detect-secrets jsou tytéž kontroly, které blokují
schválení na plugins.qgis.org.
- Kompatibilita s Qt6: pyqgis4-checker v dockeru. Skript končí kódem 0,
i když něco najde, výsledek je jen v logu; job proto ověřuje, že log
obsahuje pouze hlavičku.
- Smoke test: smoke_test.py v qgis/qgis:ltr (3.44, Qt5) i
qgis/qgis:stable (4.x, Qt6). Tagy se posouvají schválně, aby bylo
vidět, že plugin drží krok s aktuálním QGISem.
- Balíček pluginu: sestaví amcr_viewer.zip stejně jako release
workflow, ověří, že v něm je metadata.txt, __init__.py i .flake8
a nejsou v něm git soubory, a přiloží ho jako artefakt běhu.
Recenzent ho nainstaluje přes Install from ZIP bez ručního balení.
detect-secrets se pouští s --all-files. Bez toho prohledá jen soubory
sledované gitem a o nesledovaném souboru mlčí, což vypadá jako čistý
výsledek.
Verze nástrojů jsou napevno. Bez pinu by se výsledek měnil s každým
vydáním ruffu, které rozšíří výchozí sadu pravidel.
CodeQL a GitGuardian běží zvlášť, nastavené na úrovni organizace,
a schválně se tu neduplikují.
AGENTS.md popisuje, jak totéž pustit lokálně, a tři místa, kde kontroly
tiše lžou (výstupní kód pyqgis4-checkeru, detect-secrets bez
--all-files, umístění config souborů pro scanner).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhQyc1uQFcpkezLwM8if6T
Reakce na CodeQL upozornění 'Unpinned tag for a non-immutable Action'.
Tag (v4/v2) může vlastník akce kdykoli přepsat na jiný commit; připnutí
na hash chrání release pipeline před podvržením závislosti.
Zároveň povýšeno na nejnovější verze: actions/checkout v6.0.3
a softprops/action-gh-release v3.0.0 (jen přechod na Node 24 runtime,
bez změn API; hashe ověřeny přes git ls-remote).
- metadata.txt: icon ukazoval na neexistující download.png – plugin se
ve správci zásuvných modulů zobrazoval bez ikony; nastaveno na akce.png.
- Workflow: actions/checkout v2→v4 (v2 je deprecated, Node 12)
a softprops/action-gh-release v1→v2.
- README: poznámka, že knihovna requests nemusí být na Linuxu součástí
systémové instalace QGIS.