SCRIP-METRIC-004: validate derived source units before repinning public gallery
维护者通常 1 天内回复
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
调研方向
Read scriptorium/full_work_gallery.py, the current metric schema, and the pinned Beketova source JSON on fresh master; check whether #278 has already implemented and validated this behavior before starting. Add repin-aware negative tests showing that swapped unit values fail even when source bytes and their Git blob hash change, while preserving the ten-row declaration and Grin diagnostic rows. Run the full canonical tests and installed gallery CI; done means those pass and the stated chart, source identity, M2, and translation boundaries remain intact.
由索引模型根据 Issue 内容生成。
描述
Latent contract mismatch in pinned full-work gallery
In the merged scriptorium/full_work_gallery.py (source blob e3d94d8c8290f8954325a28206aeb416a770a13a) the renderer declares display units for ten supported metrics but does not independently verify the unit field in a newly approved Beketova derived JSON. The two current pinned Git blobs are correct: local audit of source units was 10/10. The issue is a future-repin integrity regression: changing source data plus its reviewed hash could leave unit: ratio displayed as %.
Existing staged handoff, not yet published
/mnt/data/Scriptorium-Gallery-Unit-Contract-20261021.zip (local archive provided in chat) includes apply_unit_contract.py and 3 repin-aware negative tests. It was prepared for the old #276 head 61a32b6...; now #276 is merged. Its original GitHub update_file was denied, and the handoff's 3/3 smoke tests do not substitute for canonical CI. Do not replay the denied mutation unchanged or switch endpoints to circumvent it.
Acceptance
- Revalidate against fresh master, existing source JSON and current metric schema; preserve the same ten-row declaration (no second registry).
- Match Beketova
unitto the canonical declared source unit (percentmaps to display%,wordsto displaytypesfor unique forms,occurrences/1000_wordsto the display rate). Grin's diagnostic rows do not have this field and must not be assigned invented source units. - Negative tests with deliberately repinned source JSON detect swapped percentage/rate/count units even when the new Git blob hash matches changed bytes.
- Keep full-work chart/chart units, pinned source identity, M2 0/5 and translation boundaries. Full canonical tests and installed gallery CI must pass before merge.
- Scope only a later independently selected unit; no duplicate issue if #278 has already implemented and validated this behavior.
- 主要语言
- Python
- 星标
- 4
- 派生
- 0
- 平均合并
- 1 天 8 小时
- 30 天内合并 PR
- 36
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
drevendev/Scriptorium 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 25/100
drevendev/Scriptorium#285 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
drevendev/Scriptorium#284 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
drevendev/Scriptorium#283 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
drevendev/Scriptorium#282 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
drevendev/Scriptorium#281 ·
维护者通常 1 天内回复
查看 drevendev/Scriptorium 的全部 Issue
相似的 Issue
-
type-bug
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
push_gh-pages fails on master branch on forks可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭good first issue infrastructure
难度 2/5 1-3 小时 新手友好度 76/100
kuznia-rdzeni/coreblocks#1135 ·
-
good first issue server
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
documentation priority: high
难度 2/5 1-3 小时 新手友好度 78/100
a-lex-s/mealie-telegram-bot#54 ·
维护者通常 1 天内回复