feat(contracts): validate fenced judging jobs and bounded results
This commit is contained in:
+22
-1
@@ -9,6 +9,27 @@
|
||||
|
||||
`make contracts` 从 Python 模型生成 Schema/OpenAPI,并生成前端 API 类型。
|
||||
`make check` 检查快照未过期及两种语言对样例的接受/拒绝一致。
|
||||
执行请求/报告、评测状态机、租约与结果提交契约在 JS-01/DR-01 中逐项补充。
|
||||
执行器私有规格与 FD 协议属于 Sandbox;平台不接收 argv、宿主路径或执行镜像路径。
|
||||
|
||||
普通题提交协议现有 `judge-manifest`、`judge-lease`、`judge-stage`、`judge-result`
|
||||
和本地可信 `judge-admission` v1 模型。清单绑定源码、不可变题目版本、按序工件摘要、
|
||||
C17/C++20、固定 GNU 工具链版本及编译/运行预算;租约绑定 evaluation/attempt/Worker
|
||||
与 fencing 版本。Root 权限、执行和 DB 状态转换接口仍由各自服务实现,解析清单或租约
|
||||
不授予执行权。
|
||||
|
||||
Python/Rust `decode_wire` 在解析前限制 256 KiB UTF-8 JSON,拒绝重复字段与非法数据,
|
||||
传输边界错误不回显输入。令牌及编译诊断的默认调试输出隐藏内容。`serde_json` 的运行期
|
||||
直接依赖用于此有界解码,不引入 IO、网络或数据库。
|
||||
|
||||
Schema 描述结构;模型另外核对规范 UUID、严格整数(拒绝 `1.0`/布尔值)、工件总大小、
|
||||
重复测试点、预算相容、诊断 UTF-8 字节数、编译状态/产物、清理失败和实际结果汇总。
|
||||
JSON Schema 的 integer 按数值判断,允许 `1.0`;不能替代协议解码。共享样例中的
|
||||
`invalid-semantic-*` 结构合法但被两种语言模型拒绝,其他非法样例同时验证结构拒绝。
|
||||
样例全为合成元数据;其中令牌、摘要不是已签发凭证或实际隐藏测试数据。
|
||||
|
||||
Coordinator 必须在事务锁内核对当前租约及状态规则,并将结果和授权清单比较:
|
||||
完整用例次序、数量和清单摘要不能只靠报告自身校验。已提交报告的幂等确认与过期租约
|
||||
拒绝分别处理,旧 attempt 无权改写结果。`cancelling` 在实际停止确认前不得转为
|
||||
`cancelled`;清理失败必须保留独立故障,缺失计量始终为 null。
|
||||
|
||||
生成器 `export.py` 是开发工具,允许读取 API 组合层;运行期的契约模型禁止依赖业务模块。
|
||||
|
||||
Reference in New Issue
Block a user