Closed
[RFC] 登记 Runtime API 通用功能标签 #73
Hou_jialinAdd on 9 days agoClosed at 8 days ago
9 days ago Modify description of issue
9 days ago Associated pull request
9 days ago Modify description of issue
9 days ago Modify description of issue
8 days ago Assign Hou_jialin as responsible person
8 days ago changed custom state from 进行中 to 已完成
8 days ago Close issue
8 days ago Added label: resolved
关联 PR:!184。
Runtime API 卡原有标签无法区分资源生命周期、查询、错误处理等功能。拟通过 Registry 扩展 7 个领域中立标签,供后续 515 张 API 卡使用。
登记
topic.implementation下的resource_lifecycle、resource_query、error_handling、cross_process、callback、kernel_launch、api_layer.cpp_api,并补充既有topic.checkpointing的状态快照含义。沿用现有 Lint 和 Query,保持精确匹配、AND 组合和原有标签行为。登记 PR !184 与知识卡 PR !185 并行检视,按登记在前、知识卡在后的顺序合入,以满足目标分支受信 Registry 的检查要求。回退时先移除卡片对新标签的引用,再回退登记;不增加联网或写入权限。
A/B 结果
A 为
219cc7c5fb23826ed742ee7c7bed8be6cbbef79e,B 为候选提交959cc3b62e1c0161614e0f654e7f172de4acf0d2;A/B 只切换 Registry,其他校验代码相同。固定 draft API、A2 平台和相同元数据,在 Runtime、Ascend C 两个领域各执行 15 个样例,共 30 个;每例执行一次,无模型、随机性或索引缓存。验收要求合法新值全部接受、非法值全部拒绝、旧值保持兼容。全部符合预期。2 项参数化单测分别覆盖跨领域准入与拒绝、精确检索及多条件过滤,已通过。结果只代表标签准入和过滤行为。
复现与逐例结果
环境:Ubuntu 22.04、Python 3.10.12,依赖为仓库 requirements.txt。检出关联 PR 分支后,在仓库根目录执行以下命令;脚本只在临时目录构造 A 的 Registry,不修改 checkout。
python3 - <<'PY' from pathlib import Path from tempfile import TemporaryDirectory import shutil import subprocess from governance.contracts.knowledge import Contract from evals.test_governance import EXECUTION_TOPIC_TAGS, SYNTHETIC_API_METADATA BASE = "219cc7c5fb23826ed742ee7c7bed8be6cbbef79e" root = Path.cwd() cases = [("new", tag) for tag in EXECUTION_TOPIC_TAGS] cases += [("unknown", tag + ".unknown") for tag in EXECUTION_TOPIC_TAGS] cases += [("existing", "topic.implementation.api_layer.c_api")] with TemporaryDirectory() as temporary: baseline = Path(temporary) shutil.copytree(root / "governance", baseline / "governance") registry = "governance/schemas/registries.yaml" (baseline / registry).write_bytes(subprocess.check_output(["git", "show", f"{BASE}:{registry}"])) contracts = [Contract(baseline), Contract(root)] print("domain,kind,tag,A,B") for domain in ("runtime", "ops/ascendc"): for kind, tag in cases: metadata = dict(SYNTHETIC_API_METADATA, status="draft", sources=[], tags=["task.lookup", tag]) issues = [contract.validate_card(Path(f"knowledge/{domain}/apis/synthetic_api.md"), metadata, "# Synthetic API\n") for contract in contracts] accepted = [not values for values in issues] assert accepted == [kind == "existing", kind != "unknown"], (domain, kind, tag, issues) if kind == "unknown": assert all("tag.unknown" in {issue.code for issue in values} for values in issues) print(",".join([domain, kind, tag, *["accept" if value else "reject" for value in accepted]])) PY