Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 129 additions & 0 deletions evals/reports/persona-pe18-20261020.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# PE-18:手写 persona 删除许可与全自动程度无效处理(2026-10-20)

本轮两份公开集均有效,独立双判不利合并为 v1 20/20、v2 29/29 次实际变化有依据,七类违规均为 0,达到本轮公开门槛。默认仍全部人工确认,公开回归不等于隐藏验收通过。

## 范围与实现

基线为开始时 fetch 后的 origin/main `9ae5d0e9836b77b3d4330baacaa4264d1c7bfbea`,包含 #61。独立 worktree 为 `/Users/cassia/Local/Code/iris-core-persona-handwritten`,分支 `feat/persona-handwritten-revision`。源码指纹为 `99a9814875b6af8a9fdc41aed191bf2d86c99e8f56800f3e59a5b5cb52bf8e99`;全量测试、构建和正式运行使用同一冻结源码。本轮只改 persona.py、persona_evaluation.py、对应测试和新增 persona 提示词;没有迁移、宿主接口、默认设置、前端或其他会话文件变更。

收尾时 main 新增 `93d1be9`(#129),仅加入入口画像公开集及 notes。通过 `git merge --ff-only origin/main` 同步,无冲突,原样保留 main 文件;同步前后 src、tests、pyproject、依赖锁、本轮 persona 语料及提示词均未改变。全量测试与对照使用的源码和输入保持一致。同步后另做一次构建核对,原构建与新构建均保存在仓库外。

本轮在获准情况下只提议**删除**手写原句,不生成手写替代文案,也不从其他记忆拼成“改写”。没有删除许可时,生成器漏掉原句或改变其来源,代码仍按原字节及原管理员出处保留;伪造手写归属仍被确定性校验拒绝。

生成后、普通初检前,对每条手写原文独立做语义核对:

- `explicit_correction`:只提供手写之后形成的当前有效自我记忆。模型核对是否明确更正同一事实/认识,以及人物、范围、否定和原始来源;不同侧面、一次例外、较弱或含糊证据不能授权删除。输出须绑定所给记忆与当前正文中的逐字更正依据。
- `reply_instruction`:模型核对手写句本身是否规定角色如何回复,并逐字定位原句中的指令片段。普通偏好、自我描述、引述或否定命令不据此删除。
- `keep`:不满足两种情况或判断不清时保留。结构错误在该句/材料页内重问一次,仍无效则保守保留并记诊断。正常句级检查不能另外授予删除手写的许可。

语义是否构成明确更正/回复指令由模型判断;代码验证时间、当前有效性、引用与原文绑定,不能把这些格式边界当作语义证明。手写时间沿精确原文在版本基准链及回滚来源中追溯;无关的后续编辑不把旧手写变成新手写。记忆时间取创建或最近实际正文修订,确认、重要度等不改正文的操作不推进该时间。要求 `written_at < recorded_at <= as_of`,无法确定时间就不授予更正许可。

每次请求完整材料有 32768 字节上界,按完整记忆分页,不截去约束信息;每次只核对一条手写句。手写核对、重问及后续普通初检共享原 900 秒截止时间,复用 360 秒单次请求上限、一次超时重试和 90 秒无新数据停滞中止,不新增阶段额度。缺材料不默认为有更正。

## 发布、修订与诊断

| 模式 | 获准的手写删除且检查/程度完整 | 程度结构重问后仍无效 |
| --- | --- | --- |
| all_manual | 大变化,pending,管理员确认 | 原规则:大变化,pending |
| small_medium_auto | 大变化,pending,管理员确认 | 原规则:大变化,pending |
| all_auto | 大变化,自动 current,可回滚 | rejected,保留当前版本,无新增 pending;下次照常尝试 |

默认发布方式仍为 `all_manual`。全自动拒绝保留原检查与 `degree_override=invalid_degree_structure_keep_current` 诊断,当前版本及其快照不因被拒尝试改变;其他模式保留原 `invalid_degree_structure_requires_confirmation` 行为。

`checks.handwritten_changes` 保存触发的 A 编号、完整原句、原手写时间、触发类型、删除动作、依据 ID/修订/逐字短引及理由;`checks.handwritten_review` 保存各页判定、结构重问与保守保留计数。没有生成新的手写标记。删除专用依据即使不在剩余正文中,也进入发布事务和管理员确认时的修订/生命周期/可见性/来源指纹复核;外部判分材料一并导出这些记忆的当前状态、修订及来源。所有新增模型调用在事务外,写回仍先核对当前 persona 版本。

沿用既有回滚:恢复已发布旧正文及出处到新版本,保留版本历史、rollback_of 和操作记录,不覆盖旧修订。三种发布模式的确认/自动生效/回滚及删除专用依据冲突均有假模型测试。

## 提示词与冻结文件

| 新文件 | 改动 | SHA-256 |
| --- | --- | --- |
| persona_generate_v21.md | 先原文携带手写句,删除许可另行核对 | `d6058b110fddf89cbe9afdf3deca12f662a789baddfbdd3ab2643fb92f877942` |
| persona_check_v34.md | 普通检查不额外授予手写删除许可 | `9746ad72fb3cbab85a6e933e72ac366525e4f99fa89ba2e50f421274b3fdd83f` |
| persona_handwritten_v1.md | 独立判断两种许可,绑定原文及后写更正记忆 | `8d4aa8f37efd82e4d35a48e26d7720b0064db42354a5564b50e57302437dd65b` |

旧提示词、程度提示词 v1、冻结 persona_scoring_v1 和 persona_v1/persona_v2 语料均未修改。新生成/检查版本只同步本次手写处理合同;其他自动句事实、日期、范围、完成状态与监管规则沿用。

## 先红后绿与验证

初轮新规则回归为 **23 失败/2 对照通过**。首次完整 persona 回归为 1836 通过/11 失败,其中旧夹具的普通手写省略预期、调用数及提示词版本需按新规则适配,另有既有 0.1 秒实时时钟流式关闭测试失败;该流式测试未改,针对性复核及两个全量均通过。旧的人工确认、回滚及截断继续执行用例改用明确的回复指令,保留原意图的覆盖,没有放宽冻结评分或语料。

净增 **44** 个假模型/确定性案例:两种删除许可各有正反例,三模式、确认、回滚、原文字节保护、旧/同刻记忆、无关编辑和非正文修订时间、坏 JSON/字段/引用的重问成功与持续失败、共享阶段预算、删除专用依据的 CAS 与外部导出,以及全自动程度无效后下一次正常发布。针对性回归 237 passed;最新新增规则独立回归 44 passed。

| 验证 | 结果 |
| --- | --- |
| Python 3.13.13:uv run pytest | 5451 passed,8 warnings;1370.85 秒 |
| Python 3.12.12:uv run --locked --isolated --python 3.12 pytest | 5451 passed,8 warnings;1391.07 秒 |
| uv build | wheel/sdist 成功;打包源码与提示词逐字节一致,无密钥文件 |
| 学习请求对照 main | 116 案例/272 批完整请求,零差异 |
| 七份召回返回对照 main | 228 查询 × 5 路径=1140 份完整返回,零差异;模型输入一致,无降级 |

两个 Python 版本顺序执行,分别清理自己的 .pytest-tmp,.venv 保持 3.13。离线对照使用假 embedding/判断并禁用网络,不读模型配置。正式模型运行期间没有修改源码、提示词、迁移或重建环境。

## 正式公开运行与独立双判

门槛为 run_valid、实际变化全部有依据、七类违规 0;must_reflect、must_not 和程度合理率仅作参考。每份语料最多一次全新正式运行,无效或质量未过就停止,不靠修改代码或挑选运行重跑。被评测模型为 GLM high;连接预检仅保存成功、高档位与限流结论,不保存原始配置或原始命令输出。

| 公开集/轮次 | run_valid | 有依据实际变化 | 支持句 | 七类违规 | 门槛 |
| --- | --- | --- | --- | --- | --- |
| v1:PE-12 | true | 20/20(100%) | 51/51 | 0 | 通过(已更正口径) |
| v1:PE-18 | true | 20/20(100.00%) | 58/58 | 0 | 通过 |
| v2:PE-13b | true | 31/31(100%) | 127/127 | 0 | 通过 |
| v2:PE-18 | true | 29/29(100.00%) | 131/131 | 0 | 通过 |

| 公开集/轮次 | 判分模型(均 max) | 应体现(参考) | 禁止项(参考) | 程度合理(参考) |
| --- | --- | --- | --- | --- |
| v1:PE-12 | gpt-6-astra | 8/23 | 3 次 | 10/24 |
| v1:PE-18 | gpt-6.1-sol | 10/24 | 2/40 | 12/23 |
| v2:PE-13b | gpt-6.1-sol | 20/48 | 2/120 | 17/31 |
| v2:PE-18 | gpt-6.1-sol | 19/46 | 2/117 | 19/30 |

PE-12 的 v1 判分模型与本轮不同;候选数量和实际文本也随一次正式生成而变,不能把数值差异单独归因于本次代码或提示词。历史对照见 [PE-12 报告](persona-pe12-20261018.md)、[PE-13b 报告](persona-pe13b-20261018.md)。

每份有效材料各交两个全新、未参与实现的 gpt-6.1-sol max 子代理,均 fork_turns=none。只共享该份完整材料与冻结评分,未提供实现、历史分数或另一轮结果;两轮互不可见。代理自行做语义判定,脚本仅处理 JSON 与格式校验,生产 persona-score 合并原票:支持/覆盖/程度取 AND、禁止参考项取 OR、违规取并集。

| 公开集 | 代理 A/B | A 有依据变化 | B 有依据变化 | 不利合并 | 原始分歧 |
| --- | --- | --- | --- | --- | --- |
| v1 | persona_pe18_v1_judge_a/b | 20/20 | 20/20 | 20/20 | 0 |
| v2 | persona_pe18_v2_judge_a/b | 29/29 | 29/29 | 29/29 | 0 |

两个 v1 代理各判 23 例;两个 v2 代理各判 30 例。各自隔离声明、全量原票与单轮黑盒格式校验均保留在仓库外。实现者只核验格式、指纹和汇总数字,没有补票或改票。

本次两份公开集的手写专项审查分别执行 9、12 次,均判保留,没有实际触发新增的手写删除许可;程度结构也没有保守降级。因此公开结果验证的是回归,不能据此声称新增许可的真实模型正例或全自动程度兜底已经在公开运行中得到覆盖。对应正反例、三模式、回滚及兜底由假模型测试覆盖,后续隐藏验收由规划者安排。

## 运行诊断与作废

| 诊断 | persona_v1 | persona_v2 |
| --- | --- | --- |
| 时间线/检查点 | 5/5;30/30 | 5/5;35/35 |
| 运行器 elapsed(秒) | 2925.553 | 4754.589 |
| 含 CLI 启停 wall(秒) | 2926.698 | 4755.985 |
| 生成/检查/复查调用 | 23/88/23(134) | 30/192/40(262) |
| 手写审查/结构重问/保守保留/删除 | 9/0/0/0 | 12/0/0/0 |
| 结构失败及重问结果 | JSON 根对象 1;重问修正 1 | 批对齐 1;重问修正 1 |
| 结构兜底:句/批/程度 | 0/0/0 | 0/0/0 |
| 输出截断/截断拆批/最终仍截断 | 0/0/0 | 0/0/0 |
| 已恢复/未恢复超时 | 0/0 | 0/0 |
| 流式停滞中止/429/不完整检查 | 0/0/0 | 0/0/0 |
| 检查拒绝率 | 3/23(13.04%) | 0/30(0.00%) |
| 一般删句率 | 44/102(43.14%) | 69/200(34.50%) |
| 初检(含手写审查) P50/P95/最长(秒) | 12.716/90.555/173.191 | 10.275/45.487/123.826 |
| 复查 P50/P95/最长(秒) | 9.439/34.838/54.912 | 13.103/48.744/75.540 |
| 初检+复查合计 P50/P95/最长(秒) | 12.108/70.059/173.191 | 10.645/47.736/123.826 |

一般删句为既有自动句检查/修复过程中的删句,不能与本次手写删除许可计数混同。PE-12 v1 的检查拒绝率/删句率为 4/24(16.67%)/59/110(53.64%);PE-13b v2 为 0/31(0%)/71/198(35.86%)。

本轮作废运行 **0**。v1、v2 各一次新目录完整运行,resumed_cases 均为 0;没有复用旧票、续跑旧材料、选择性重跑或质量失败后的代码迭代。

- v1 完整材料:`persona_v1-formal/judging-materials-20261019T192831-c48b5ff6/`;materials SHA-256 `812dfcef75b1c074e678a3eac6a0d03622b48982701723c53290abcc22d0516f`。
- v2 完整材料:`persona_v2-formal/judging-materials-20261019T205620-3393e4ae/`;materials SHA-256 `0f27aee58a5a3ed8ce13997d90d0b8c3689ddf0db61d5a3c31372ec3463c536e`。

## 需规划者同步的文档

本轮按指令没有修改设计文档、DECISIONS.md、AGENTS.md、README 或 ARCHITECTURE.md。建议规划者同步:

- README persona 部分(当前约 363、365、389、393 行):手写句两种删除许可、其他情况逐字保护、三模式处理、全自动程度结构无效时不发布及重试语义;提示词版本改为生成 v21、检查 v34、手写核对 v1。
- ARCHITECTURE.md persona 部分(当前约 241、245、251 行):独立手写核对、后续记忆/原文绑定与删除专用依据 CAS,以及它与普通初检共享原预算的流程;修正“手写原文不改”的无条件描述。
- 设计/决策中把“本次手写规则已实现、默认仍 all_manual”与隐藏集后续验收安排分开记录,不把公开结果称作隐藏验收通过。

完整材料、运行、判分、日志、脚本、构建包与冻结哈希在 `/Users/cassia/Local/Code/iris-eval-artifacts/persona-pe18-20261020/`。仓库只提交本汇总。提交前检查 test-models.toml 保持忽略且未跟踪、完整暂存 diff 与密钥特征;只普通推送功能分支并开 PR,不合并。
35 changes: 35 additions & 0 deletions evals/reports/persona-pe19-20261020.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# PE-19:同文手写条目的出处追踪

2026-10-20,PR #130,分支 `feat/persona-handwritten-revision`。本轮从干净的 `d852e8ec16ecbe54398fa19a2b491c799c8007af` 开始;已 fetch 并 merge `origin/main`,结果为 already up to date,无冲突。main/离线对照基线为 `93d1be9ccfdceecec1b35598fb9796644146d817`。本轮只修审查 B1,未运行真实模型。

修复复用版本中已经保存的 `base_version_id`、`rollback_of`、`material.handwritten_changes`,无需迁移或新增接口字段。每个历史手写条目由“版本 ID+该版本 A 引用”定位。自动版本先校验删除记录的父项引用、完整原句、delete 动作、引用唯一性和保留数量,再把当前保留项映射到确切的父项;沿此映射找到管理员引入该项的版本时间。管理员新增同文项仍取得新增版本的写入时间,确认候选不重置该时间。回滚沿 `rollback_of` 追踪真正恢复的版本。

`_assemble_handwritten` 改为逐个消费实际保留的原条目,每项只消费一次,并保持同文项的父项相对顺序。因此删去较早的 A1 后,剩余项继续对应较晚引入的父项,不会因当前位置变成第一个同文句而取得较早日期。

无法唯一确定对应时,`written_at=None`,不向该句提供更正记忆作为删除许可。包括旧自动版本缺少删除记录且存在同文歧义、没有标识的同文条目数量减少、错误引用或原句、重复引用、保留数量不符,以及历史缺失或循环。未知状态会沿后续生成和回滚继续保留;唯一旧条目的明确对应仍可回溯,不会统一失去有效许可。句子自身为回复指令的独立许可规则保持现状。

新增 `tests/test_persona_handwritten_provenance.py` 共 21 个确定性/假模型用例,测试文件在红绿阶段完全相同:

- 6 例:三种发布模式 × 直接发布/确认后生成或经回滚再生成。10-01 与 10-03 分次加入同文句,10-02 的更正只允许首次删除较早项;剩余项始终保持 10-03 的写入时间,下一次不获删除许可。
- 14 例:七类不明对应 × 直接/回滚,包括旧版本缺记录、缺删除映射、错误引用、错误原句、重复引用、数量不符、管理员无标识地减少同文项;断言未知时间、无更正证据、保留原句以及后续版本仍未知。
- 1 例:唯一旧条目保留已知写入时间,并可由有效的后写更正记忆正常授权删除。

先在旧实现得到 **20 failed / 1 passed**(2.56 秒);修复后,新用例与 PE-18 手写回归合计 **65 passed**(7.82 秒);全部 persona 回归 **1886 passed**(216.05 秒)。

| 最终验证 | 结果 |
| --- | --- |
| `uv run pytest`,Python 3.13.13 | 5472 passed,8 warnings,1279.22 秒 |
| `uv run --locked --isolated --python 3.12 pytest`,Python 3.12.12 | 5472 passed,8 warnings,1295.93 秒 |
| `uv build --out-dir <外部材料>/build` | 成功,wheel 与 sdist 均与已验证源码匹配,未含密钥配置文件 |
| 全部公开学习请求对照 | 116 案例/272 批,完整请求零差异 |
| 七份公开召回返回对照 | 228 查询 × 5 路径=1140 份完整返回,零差异 |

两个 Python 版本依次运行。每次全量完成后均删除本 worktree 的 `.pytest-tmp`,`.venv` 仍为 Python 3.13.13。两份构建产物为 `iris_core-0.0.2-py3-none-any.whl`、`iris_core-0.0.2.tar.gz`。

对照在新建的独立 main 基线 worktree 与候选源码上进行,使用确定性假向量/假判定并禁用 socket 连接,只固定生成时间、标识和假判定耗时;没有归一化请求内容、返回内容、语料时间或近期性计算。学习请求 SHA-256 两侧均为 `147c831b46c19fa6f83c4055ff8a61c5f4838165453976a73687c5f2f485c08c`。召回覆盖 recall_v1、recall_v2、recall_conversation_v1、recall_short_terms_v1、recall_conversation_v2、recall_conversation_v3、recall_no_answer_v1;五条路径为 jieba_fts、trigram_fts、jieba_hybrid、trigram_hybrid、default_judged。216 份判定输入和 471 份 embedding 输入也完全相同,降级数均为 0。完整返回 SHA-256 两侧均为 `735282dc08ea5c656d89e7d47e7c7ed55ee5c08eeac3e49f85f5985a8787a696`。这些是离线守则对照,不是新的质量评测。

本轮仅修改 `src/iris/persona.py`、新增上述测试和本报告。提示词、冻结语料与评分、迁移、质量规则、发布模式及默认全部人工确认、宿主接口均沿用现状;没有新增模型调用,写回修订核对和事务边界未变。PE-18 在 `d852e8e` 上的公开 v1(20/20)、v2(29/29)结果保留为历史结果;本轮新代码未做真实评测,后续 dev 参考诊断由规划者安排。本轮没有新增正式运行或作废运行。

完整材料保存在 `/Users/cassia/Local/Code/iris-eval-artifacts/persona-pe19-20261020/`:红绿与全量日志、五项验证执行记录、逐批学习请求、七集完整召回返回、构建产物及汇总。未复制虚拟环境或 node_modules。离线基线 worktree `/Users/cassia/Local/Code/iris-core-persona-handwritten-pe19-baseline` 留给规划者清理。

已验证源码集合 SHA-256:`6e4548cff006c046ca5f74488623c9eacbc1defb973de6169bb9598567cec1b8`;`src/iris/persona.py` SHA-256:`87980bb36ee6a3bcb528c527c065b53cb718ec4a0f9d1367c442df242ed366b9`;新增测试 SHA-256:`3a89936c0e543f17a7e0b4fb8893845e839ae92d8bdb6e4c6d7c30bcc777b455`。`implementation.json` 和 `validation-summary.json` 记录了完整指纹与各阶段结果,验证全过程源码和测试未变。
Loading