写卡(QA harness缺陷收口批·卡片成立+复核凭据换代): 需求卡片落档 reports/需求卡片-QA缺陷收口批-2026-11-06.md(A2终局结算框:194/:331双点has_meta容错/B1停手钮真输入探针定型段+自动试玩停手行为/B2视图方法口全清41处转真输入+死接缝11方法清理; 规格S1-S5·任务卡T1-T7·对照表R1-R9·估时中值4.875工作日); 能力清单增3行(终局零报错/停手真输入/停点链真输入——真实入口格可核形态); 待办条目推进已写卡(卡片路径入实况); 复核=只读子代理1轮11发现全处置(补写8含journey:449/:457映射错控件与A2漏:331同型第二处两实质/自判3)零待裁; 复核凭据换代=复核记录节即凭据不另设报告文件(六处同批: 闸C6删申报在盘两查/doc-conventions已写卡证据项/process-conventions段三段四/req-card四处/iter-plan五查④——后两件主区直改不入git); 闸件兜底=capability_audit GBK控制台打印红项即崩加utf-8重配置。读数: 流水线闸PASS(27条目·卡片口径2张全过)+--docs【验收通过】无新增红+能力审计红0(能力行106)

This commit is contained in:
DKChan committed 2026-11-07 00:09:11 +08:00
1 parent 7aa0126b22
commit b0b0cd0c81
7 files changed
+253 -16

No files matched your search

+6
View File
@@ -333,6 +333,12 @@ def check_coverage(cov_tables, names):
def main():
# GBK 控制台兜底(红项明细含 ✗ 等非 GBK 字符,编码崩=红项被吞不可见)
for stream in (sys.stdout, sys.stderr):
try:
stream.reconfigure(encoding="utf-8", errors="replace")
except AttributeError:
pass
ap = argparse.ArgumentParser()
ap.add_argument("--strict", action="store_true")
args = ap.parse_args()
+1 -11
View File
@@ -72,7 +72,6 @@ REVIEW_RULE_DATE = (2026, 11, 6)
REVIEW_HEADING_RE = re.compile(r"^#{2,4}\s*\d*\.?\s*复核记录")
REVIEW_TARGET_WORDS = ("自判", "补写", "待裁", "退回上游")
REVIEW_HEADER_WORDS = ("轮次", "去向")
REVIEW_REPORT_RE = re.compile(r"reports/复核-[^\s()(),,、|]+\.md")
# 待办条目正文限长双判据(2026-11-04 立,doc-conventions §12.1:行数抓清单蔓延、字数抓单行堆砌)
ENTRY_MAX_LINES = 12
ENTRY_MAX_CHARS = 700
@@ -652,7 +651,7 @@ def check_review(lines, start, path, issues, root):
"""C6 复核记录的单节校验(req-card 必备结构第 17 节,生效 2026-11-06)。
只查结构与可核性:节内每条记录行都要带四类去向之一(自判/补写/待裁/退回上游),
表格行的处置结果格(末格)非空;节内须申报 reports/复核-*.md 路径且该文件在盘上存在。
表格行的处置结果格(末格)非空;复核凭据=本节自身,不另设报告文件(2026-11-06 用户裁)。
分流分得对不对属语义判断,本闸不判。返回节末行下标(不含)。
"""
end = len(lines)
@@ -685,15 +684,6 @@ def check_review(lines, start, path, issues, root):
if records == 0:
issues.append((str(path), start + 1, "复核记录空节",
"「复核记录」节内没有一条发现记录——卡片必经对抗复核并逐轮登记"))
sec = "\n".join(lines[start:end])
reports = REVIEW_REPORT_RE.findall(sec)
if not reports:
issues.append((str(path), start + 1, "复核报告未申报",
"「复核记录」节末须申报复核报告落盘路径 reports/复核-<批名>-<日期>.md"))
for rel in reports:
if not (root / rel).is_file():
issues.append((str(path), start + 1, "复核报告不可核",
"申报的复核报告不在盘上:%s" % rel))
return end