Reconcile the wiki metadata field with the domain layer #32
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
skills/issue/references/format.md:67описывает полеwiki:как domain-owned иставит его в таблицу полей между
dependsиorigin. Вissue.pyтакого полянет:
DOMAIN_KEYS(issue.py:116) его не содержит,LIST_KEYS— тоже. Формат— единственный источник правды, и он расходится с парсером.
Spec
skills/issue/references/format.md
Steps to reproduce
grep -rn 'wiki' skills/issue/scripts/— ни одного совпадения.wiki: [Simple Chains/Ideas/Chain core](пример изformat.md:45) и прогнать любой скрипт, который перечитывает и сохраняетфайл, например
issue_ac.py <id> --check 1.Expected
Либо
wiki:действительно domain-поле:issue.pyзнает его, оно попадает вDOMAIN_KEYSиLIST_KEYS, рендерится на своём месте (послеdepends, передorigin), аissue_new.pyумеет его выставлять. Либоformat.mdперестаётназывать его domain-полем и описывает как то, чем оно является.
Actual
Поле проваливается в
extra(issue.py:293) и рендерится в блоке чужихключей — отсортированным вместе с
branch,gitea,synced,url, то естьпосле sync-полей. Это прямо противоречит соседней строке того же документа:
«Domain fields render first, in the order above» (
format.md:73).Второй эффект: без записи в
LIST_KEYSсписок без скобок (wiki: A, B)разбирается как одна строка, а не как список — работает только инлайновая форма
[A, B], и то потому, чтоparse_meta(issue.py:210) обрабатывает скобки длялюбого ключа.
Третий:
issue_new.pyне умеет проставить поле, у которого нет флага, аissue_check.pyне проверяет ни его наличие, ни форму.Environment
Ветка
main, коммит2ac3015. Замечено при чтенииformat.mdво время работынад
#20.Acceptance criteria
format.mdиissue.pyсогласованы: либо поле реализовано в домене, либоописание в таблице полей приведено к реальности
wiki:есть вDOMAIN_KEYSиLIST_KEYS, а issue сэтим полем после round-trip через
Issue.from_text/to_textрендеритего среди domain-полей
tests/