Repository navigation
v0.82.0
下载与校验说明
- 推荐下载
agateon-v0.82.0.tar.gz(本体):解压即得版本目录内容(agate/与登记根文件)。 - GitHub 自动生成的 "Source code" 压缩包是整仓(整个仓库的快照),不是安装包,请勿用于安装。
agateon-v0.82.0-offline-<平台>.tar.gz为离线安装包(含依赖 wheel),面向 Python 3.11。SHA256SUMS仅用于发现下载损坏,不认证发布者:它与资产同处一个 Release,发布者账号被攻破时无法防护;
需要更强保证请从 git tag 自行构建(agate-release.py build)后逐成员比对,或经第二渠道核对哈希。
新增
- 效率度量进 summary(RM-AG0074 ① / RM-AG0095 ① 的 summary 面):
①agate-dispatch-cost.py::measure_duration优先从账本state_transition事件算阶段耗时——
账本随 git 版本化 + 哈希链防改写,远优于手写的.state.yaml::history(本仓实测:账本 22/43 个任务有事件、18/43 可算;history 口径在本仓 0/43——43 个任务无一有history键);账本不足时仍回退 history,两者都不可用
如实报不可算(不编造)。②agate-summary.py新增效率度量节:本仓实测可算 18/43,
按时长列出「任务 / 耗时(h) / 派发份数 / 上下文(KiB)」——如TAG0050 56.3h / 75 份 / 1346 KiB、
TAG0042 48.0h / 50 份。⚠️ token / 步数不可得(harness 不报)⇒ 明确标注、不猜。
(RM-AG0074 的 ② M3 指标提取方、③ judge 预算实测仍待做。)
变更
- TAG0051 任务与发布解耦(任务止于 READY;Release 独立流程 + 发布门):把不可逆的对外发布动作
(tag → GitHub Release)从任务 P8 结构性移出——① 任务终态 = READY(交付物 +CHANGELOG [Unreleased]
含 task_id +bump_type意图 + 交付收尾 + CI 全绿含 push 口径;不落 tag / 不 bump version 文件);
② Release = 独立流程:release.yml新增workflow_dispatch人工授权入口,并在创建 tag/Release 前过一道
机械发布门(目标提交 CI success + tag↔提交一致 +check-protocol-consistency.pyCHECK 7/13 0 ERROR +
roadmap RMdone;由agate-release.py新增gate子命令承载,release.yml调用它做 fail-closed backstop)。
③ 配套:delivery.method收紧为三值枚举(新增契约级快照rules/task-data/level-2.yaml,extends: 1,
method ∈ {release-notes, tag-release, none},只对非 legacy 且等级 ≥ 2 任务生效);state-machine.md
显式发布授权转移(复用既有 PAUSED/NEED_CONFIRM 语义、不引第二套阻塞);AGENTS.md/git-integration.md
统一 tag 时点(先合 release PR → main CI 绿 → 后打 tag → Release);新增 R6 差分 wrapper
docs/design-notes/r6-differential-prepare.sh。面向新任务的准入行为变化(非「无破坏性变更」,详见
agate/UPGRADING.md);legacy 任务退出码与 ERROR 集合不变(R6 双向差分未匹配 0 条)。
修复
- 默认分支解析单源收敛(DEBT0065):
check-mvwu.py::_default_branch_base原本自建
symbolic-ref origin/HEAD候选表(全仓第三份实现、口径还不同)⇒ 改为复用
agate_common.default_branch()取分支名,再转候选 ref(refs/remotes/origin/<name>优先
→refs/heads/<name>回退 →main/master兜底),纯本地仓库仍可用;守护用例锁源码面。 gate_p0的声明校验按任务所属项目根(DEBT0066):原先agate-config.py validate按进程
cwd 找agate.config.yaml⇒ 从项目外调用会校验错的项目(hook 里 cwd=仓库恰好掩盖)。
现按task_dir推项目根(git toplevel → 含agate-workspace的最近祖先 → cwd 兜底)再传cwd=;
回归用例覆盖跨项目场景(任务在 A、调用方 cwd 在 B ⇒ 按 A 判定)。gate_p0声明校验的测试脆弱性 + 本仓补agate.config.yaml(v0.81.0 发版期):本仓加入
自己的项目声明后,CI 里两条 BDD-8(断言「项目无声明 ⇒ gate_p0 出 WARNING」)转红——因为它们
依赖「pytest 进程 cwd(= 仓库根)没有声明」。用例改为自带项目根(显式cwd),语义回到
「该项目没有声明」。⚠️ 连带登记 DEBT0066:gate_p0的声明校验本身按进程 cwd 找
agate.config.yaml(hook 场景 cwd=仓库恰好掩盖),从项目外调用会校验错的项目(低影响,提示级)。- 写侧白名单与 schema 合法字段分叉(DEBT0067):
agate-md-field-set.py的可写 key 白名单
原仅 =GENERIC_HEADER_KEYS ∪ phases.yaml task_fields,而check-frontmatter.py::SCHEMAS认的
合法字段(ceremony/override/coupling_checklist/implicit_coupling等)写不进去 ⇒ 卡片要求
声明的字段只能手写,与派发纪律「不要手写 frontmatter」冲突;dispatch_plan更被「追加/嵌套字段」
直接拒写。修复:白名单增第三来源 = 该 basename 的 schema 合法字段(SCHEMAS.migrated_keys
单源派生),并让dispatch_plan/delivery结构化写入(写值经 YAML 解析后落盘);同时解耦
「可写面」与「本阶段该填/缺失面」(task_fields恢复原值,可选字段不再被报成"剩余缺失")、
展示面区分「可 set」与「仅登记/需 append」。 - P2 卡
batches[].output与 checker 深度上限矛盾(DEBT0068):P2 卡把dispatch_plan.batches[].output
列为合法可选键并承诺 checker 不受影响,但agate-frontmatter-check.py::MAX_DEPTH=3因该键
(嵌套深度 4)判 ERROR ⇒ 照卡示例写即 commit 失败。修复:深度校验对dispatch_plan单键豁免
(其结构校验走agate-md-field-get dispatch_plan+json.loads),P2 卡补说明;其余字段的
深度/类型/必填校验一律不变(负例锁定coupling_checklist深 4 仍 ERROR)。 release.preset无值消费方(DEBT0069):agate.config.yaml的release.preset此前
无任何值消费方(既有引用仅默认值字典 /init模板 / 迁移期提示文案,均不读其值)。现由发布门
agate-release.py gate消费:已知发布流(运行时单源于rules/schema/project-config.schema.json
的release.preset.enum,不手抄副本)按既有检查集执行并回显所用 preset;未知 ⇒ 门非 0;
未声明 ⇒ 回落默认、不阻断。声明本身未删(schema 仍视其为合法键)。无面向既有合法项目的
破坏性变更(未知值本就 schema 非法:agate-config.py validate早已 rc=1)。agate-md-field-set.py append路径缺「系统/证据字段」守卫(DEBT0072):append此前对「由脚本/
角色产出」字段无守卫——实测append pass/append fail可写入(OK: pass 追加一项 …),与set侧
及--list展示「由脚本产出、不可 set」的声明矛盾,且可污染 P6 判据的输入面。修复:append
(及同族upsert/remove)在列表写入唯一入口复用set的同一判据(_key_capability == "script"
——契约writer: system∪ 证据字段表,单源、ADR-014)→ 对这类字段一律拒绝;契约外字段维持既有
拒绝文案不变。面穷尽:逐 basename 核对SCHEMAS四个条目 + 契约 files 节——P6pass/fail/
regression_pass,P7blocker_count/deviation_count/deviation_critical_count/design_gap_count/
design_gap_reviewed_count/code_map_new_files_count/code_map_reviewed_count(含评审点名的
blocker_count)。合法 append 目标不受影响(scope_resolved/need_confirm/results仍可追加);
回归用例test_debt0072_append_guard.py覆盖上述面。
offline 包内 wheel(文件名与 sha256)
linux-x86_64
pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whlsha256b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d
windows-x86_64
pyyaml-6.0.3-cp311-cp311-win_amd64.whlsha2569f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf