docs(art目录边界): art/ 判据定为载体性质——审计报告与调研归 research/,提示词库改名 art-prompts,规约补正文单点维护

art/ 三份审计产物处置:cursor 会话存档与 canvas 转 HTML 两份迁 design/research/(各自头部写明接收方),
2026-10-06 美术资产链路审计报告 HTML 从未入版本库、移入 gitignored archive/ 后从 art/ 清除;
06 与 08 两处裁决录链接、两张需求卡片的四路指针随迁移改指 research/。
comfyui-prompts.md 改名 art-prompts.md(名字指本地 ComfyUI 与实际渠道不符),五处现行指针与链接标签跟随,
版本历史留痕行按文档纪律不改写。
doc-conventions 第 5 节加「正文单点维护」一行(一条规则句只写在 owner 文档,执行侧必须带字面值时豁免但须注明冲突以 owner 为准),
第 11 节「六目录」改「各子目录」;据此把生图操作单里复述封印黑与旗朱色值及沿革的那条注记改成指向 character-design §5.4 的指针。
repo_structure_audit.py 加第六查 design/art/ 内容白名单(只许 .md 与 references/),文首查数与通过行随改;
AGENTS.md Project Layout 的 art/ 与 research/ 两行按新判据改写。
06 新增待裁决一条:candidates 目录在熵增闸退役名单与 asset-path-map 现行目录表里得到相反答案,两份操作单又指它。
变异验证:art/ 放 .html 与放子目录两况均 FAIL,清场后 PASS。
This commit is contained in:
DKChan committed 2026-10-20 05:15:02 +08:00
1 parent a2d446d9e0
commit 2b5f1d1a54
14 files changed
+58 -23

No files matched your search

+26 -5
View File
@@ -5,11 +5,13 @@
收口第四闸(与 doc_link_audit / doc_term_audit / gdd_lint 同列):
把目录三层裁定变成机器检查——任何会话乱放文件,收口时此处直接 FAIL。
四查:
六查:
1. 顶层目录白名单(新增顶层目录 = FAIL,须同批改 AGENTS.md + 本脚本白名单)
2. 根目录文件白名单(根上只许运行文件与规则文件)
3. 图像白名单(图只许在 artwork/ game/assets/ design/art/references/ design/dev/architecture/)
4. 退役路径守卫(production/ docs/ tests/ qa-data/ candidates/mockups 旧路径再现 = FAIL)
3. 图像白名单(图只许在 artwork/ game/assets/ design/art/references/ design/dev/architecture/ game/tests/golden/)
4. 退役路径守卫(production/ docs/ tests/ qa-data/ design/registry/ design/qa/ 旧路径再现 = FAIL)
5. design/ 一级子目录白名单(防临时新目录)
6. design/art/ 内容白名单(只许 .md 与 references/;审计报告属中间文档归 design/research/)
用法: python tools/repo_structure_audit.py # 全查,FAIL 时 exit 1
python tools/repo_structure_audit.py --json # 机器读输出
@@ -37,8 +39,12 @@ IMAGE_PREFIXES = ("artwork/", "game/assets/", "design/art/references/", "design/
RETIRED = ["production", "docs", "tests", "qa-data", "design/registry",
"design/art/candidates", "production/mockups",
"design/ux", "game/tools", "design/qa"]
# design/ 一级子目录白名单(防 ad-hoc 新目录)
# 5) design/ 一级子目录白名单(防 ad-hoc 新目录)
DESIGN_SUBDIRS = {"art", "dev", "gdd", "research"}
# 6) design/art/ 内容白名单——美术只放 .md 文档与 references/ 参考图;
# 审计报告属中间文档,按 doc-conventions §11 落 design/research/,禁驻 art/
ART_EXTS = {".md"}
ART_SUBDIRS = {"references"}
def scan():
@@ -80,6 +86,21 @@ def scan():
if extra_d:
fails.append("design/ 子目录越界: %s(合法: %s;新分类先过用户拍板再改两处白名单)" % (sorted(extra_d), sorted(DESIGN_SUBDIRS)))
# 6) design/art/ 内容白名单
art_dir = ROOT / "design" / "art"
art_bad = []
if art_dir.is_dir():
for p in sorted(art_dir.iterdir()):
rel = p.relative_to(ROOT).as_posix()
if p.is_dir():
if p.name not in ART_SUBDIRS:
art_bad.append(rel + "/")
elif p.suffix.lower() not in ART_EXTS:
art_bad.append(rel)
if art_bad:
fails.append("design/art/ 越界内容 %d 项(只许 .md 与 %s): %s" %
(len(art_bad), "、".join(ART_SUBDIRS) + "/", art_bad[:8]))
notes.append("顶层目录 %d 合法 · 根文件 %d 合法 · design/ 子目录 %s · 图像白名单命中 %s" %
(len(top_dirs & TOP_DIRS), len(top_files & ROOT_FILES),
sorted(design_subs), "、".join(IMAGE_PREFIXES)))
@@ -96,7 +117,7 @@ def main():
print(" ! " + f)
print("\n处理: 文件归位到合法区;确需新类别 = 同批修订 AGENTS.md Project Layout + 本脚本白名单,commit 留痕。")
sys.exit(1)
print("\n结构审计 PASS(四查全过:顶层目录/根文件/图像白名单/退役路径)")
print("\n结构审计 PASS(六查全过:顶层目录/根文件/图像白名单/退役路径/design 子目录/art 内容)")
sys.exit(0)