Files
CyberGril/spike/hel857/README.md
T
2026-10-26 03:15:06 +08:00

74 KiB
Raw Blame History

HEL-857 · Mem0 隔离验证(已批准的一次性实验)

本目录是任务卡 HEL-857 的全部实验代码、夹具与结果。仅实验分支,不合 main、不合产品 PR、不部署、不触现网 8300–8350 与真实档案。 全部测试资料为固定中文合成语料(fixtures.py),无真实用户/伴侣数据。

HEL-858 返工修订(总管独立复核未通过后纠错):下文"结果总览"为 e31ae2d 原始记录,其中带 ⚠️ 的结论已被《HEL-858 返工修订记录》一节修订或撤回;run1/run2 原始证据、账本与 26 次额度原样保留。本轮返工新增真实模型请求 0 次(余 34 次冻结),全部验证为零网络离线复现(results/rework858_offline.json)。

  • 需求基准:v1.11(60 项),读取提交 bb9cbe915ecdc5d7dd3393ad45a6c4152e76900a(origin/hel-847-v111-governance),本分支 hel-857-mem0-spike 自该提交建立。
  • Mem0 固定源提交:2c81af3bbe27d9bccb09c772d583df9e9be72ee5(mem0ai 2.2.1,源码 tarball SHA256 9dcef9303ebcec116eec6739f01b8b35bd24459de6a569686b4d19b9412dda23,从源码构建安装,wheel SHA256 698284b6083ab8b7761454d65876a6d1bb983d278ad21a7bee38d760cb20e9db,不以 PyPI 同版本包代替)。
  • 关联要求编号:CG-008/009/011/013–016/021、AM-001、UX-004/006、GOV-001–006、DEL-001。本卡是 SDK 隔离验证,不代替任何完整产品要求验收。

运行顺序(与批准范围一致)

# 环境:本卡独立 venv(hel857-venv,Python 3.10.12)
# 依赖锁定见 results/lock-notes.md;包下载量 54.4MB(pip 日志核算)
export HEL857_DATA=<独立数据目录>
python -m spike.hel857.resource_check      # 模型资源下载前核对(远端清单+大小)
python -m spike.hel857.ledger_fake_test    # 门禁0 传输层持久扣账(零网络)
python -m spike.hel857.step0_backend_check # 门禁1 qdrant 嵌入式三查(零真实模型)
python -m spike.hel857.stub_gate           # 门禁2 隐私+首次分享+备份恢复(stub LLM)
python -m spike.hel857.ab_preflight        # 真实出站预检(1 次出站,计入 60 上限)
python -m spike.hel857.ab_scenarios        # A/B 真实合成场景(门禁全过后才允许)

结果总览(逐项通过/失败,不是只给一个总数)

门禁/场景 结果 证据
资源预核对 通过:两模型合计 95,418,166 字节 < 500,000,000 results/resource_manifest_pre.json
G0 扣账 T1 第61次发送前拦截 通过(假传输恰收 60 次尝试) results/gate0_ledger.json
G0 T2 失败也扣账 通过(3 次 fake 5xx 不回滚) 同上
G0 T3 账本跨进程保留 通过(子进程被拦、零出站) 同上
G0 T4 输入超限发送前拒绝 通过 同上
G0 T5 自动重试显式关闭 通过(max_retries=0,1调用=1出站=1扣账) 同上
G1 Q0a keyword_search 通过(机制可用);发现:中文无分词 results/gate1_backend.json
G1 Q0b 本地读写+过滤/语义检索 通过 同上
G1 Q0c 子进程真实重启挂载 通过 同上
G1 Q0d 清洁关闭复制→恢复 通过 同上
G1 Q0e collection 清单 通过(无遥测 collection) 同上
G1 模型资源实测 95,254,651 字节(按 inode 去重,含逐文件 SHA256) 同上
G2 P1 提取输入池零泄漏 通过 results/gate2_privacy.json
G2 P2 提取历史窗零泄漏 通过(A 的 history 原话确在 A 库,正对照成立) 同上
G2 P3 更新隔离(A 逐字节不变) 通过 同上
G2 P4 回读+600字预算零泄漏 通过 同上
G2 P5 完整备份→恢复→复跑 通过(内部未分享仍在,公开出口仍不漏) 同上
G2 F1 判定失败不迁 通过 同上
G2 F2 未确认不迁 通过 同上
G2 F3 取消不迁 通过 同上
G2 F4 成功按已讲内容迁入+锚点 通过(A 保留内部副本) 同上
G2 F5 重复回执不重复迁入 通过 同上
G2 F6 其他未分享仍隐藏 通过 同上
AB S1 原话留存 ⚠️ 通过(现状侧夹具被覆盖:baseline_raw_in_chat_message=false 而判据只查"行存在";返工后改严格判据并修夹具) results/ab_scenarios.json
AB S2 跨会话细节 ⚠️ 通过(现状侧细节回读为 false 系装载错误所致;返工后重判) 同上
AB S3 换说法召回(核心) ⚠️ 通过:Mem0 严格优于现状(现状侧数字基于损坏夹具;"严格优于"总验收结论撤回,待真实复跑) 同上
AB S4 改口更正 ⚠️ 通过(update 实际落在新条目上、问答用更新前列表;返工后改已知id编排) 同上
AB S5 事实/感受分离 通过(事实/感受查询各自召回) 同上
AB S6 承诺状态 ⚠️ 通过(resolved 置到了面试结果条目、模型答"不知道";返工后改已知id编排) 同上
AB S7 来源回读 ⚠️ 通过(未建立命中→原文链;返工后加锚点链与负例) 同上
AB S8 进程重启 通过(真实子进程重启) 同上
AB S9 完整备份恢复 通过(恢复后换说法召回仍命中) 同上

未运行/不适用:无未运行的既定检查。八字情绪、连续生活、主动联系的产品接线明确不在本卡(批准范围第5条),未运行。

真实调用账(持久账本,跨运行保留)

  • 实际出站 26 / 60(上限不是必须用满;剩余 34 不挪用、不清零)。全部 sent(HTTP 200),无失败、无 blocked。
  • 明细:预检 1 次;run1(含 1 次提取解析失败后的重试,重试已计数)14 次;run2 11 次。逐次时间/状态/耗时/输入规模/usage 见 results/ab_scenarios.json 的 _ledger_rows。
  • usage 合计:prompt 114,183 / completion 2,854 / total 117,037 tokens(单次 completion ≤367 ≤1024 上限;单次输入中文 ≤201 字符 ≤6000 上限)。价格未知,不承诺金额或免费。
  • 原HEL-835的6/8额度未动用、未重置。
  • 本地嵌入:⚠️ 密集 28 条 28 仅为 run2 进程内计数(未含 run1、门禁与子进程);返工后按卡级保守重建,见《HEL-858 返工修订记录》。词面处理另列:10 次(同为 run2 进程内计数)。
  • 门禁 0/1/2 与资源核对全部零真实模型、零网络出站(stub/假传输/本地推理)。

关键发现(如实记录,不因结果好而省略)

  1. 中文输入被提取为英文记忆。 mem0 默认英文提取提示词;换说法召回经多语中文嵌入(bge-small-zh)仍命中,模型使用检查(中文提问+英文记忆上下文)中文答出“蓝色”。产品接线需 custom_instructions 定制中文提示词或接受双语存储——本卡未改该配置。
  2. BM25 词面通道对中文实际不可用。 Qdrant/bm25 将中文整段(空格/标点切分)哈希为单 token;spaCy 缺席时 lemmatize_for_bm25 原样返回、无中文分词。叠加发现1(中文查询↔英文记忆),词面通道在中文场景不交叉,召回全靠密集语义。机制本身可用(英文 token 正常打分命中)。
  3. 同批 add 时提取会自动合并改口(run1 证据,账本保留);还原“稍后改口”(两批)后 infer 确为 ADD-only(与 v4 对 main.py 的调用链核对一致),更新编排归我方。
  4. SDK search/get_all 不回传自定义 metadata:分享锚点(life_event_id 等)写入 payload 但需直读向量库;产品接线需适配层读锚点。
  5. 实体路径依赖 spaCy(未装,上游设计为降级为空);实体嵌入计数为 0,不伪装已启用。

归责表(上游 vs 我方,实验实证后的修订)

职责 上游(mem0ai 2.2.1) 我方
提取管道/去重/ADD 史 ✔(实证:ADD-only、hash 去重、操作史完整) 提取语言/质量定制(中文提示词)与调用编排
冲突检测→UPDATE/DELETE 原语 update/delete + prev→new 史(实证) 全部:检测、选条、编排(S4/S6 已按此实现)
语义检索+中文向量 ✔(实证:换说法严格优于现状词面) embedder 配置
词面通道 机制存在(英文可用) 中文分词适配或接受不可用并如实声明
隐私前置隔离 scope/collection 承载(实证零泄漏) 双实例设计、内部→公开桥接、逐消息门(实证 F1–F6)
完整备份 本地目录+history 可清洁复制恢复(实证) 打包/清单/恢复校验(CG-009 工件数按实例实算)
原文存储与回读 history.db 存原始输入副本(实证) chat_message 主责不变;导出纳管 history.db
出站计费/限额 ✘ 全部(传输层持久扣账,实证第61次拦截)
八字/情绪/生活/主动联系 ✘ 全部(后续产品接线卡)

环境与锁定

  • Python 3.10.12 独立 venv;mem0ai 2.2.1(固定源提交构建);qdrant-client 1.20.0(嵌入式本地路径);fastembed 0.9.1;openai 3.37.0;httpx 0.28.1。完整版本清单见 results/lock-notes.md。
  • 模型资源(fastembed 缓存,逐文件 SHA256 见 results/gate1_backend.json):BAAI/bge-small-zh-v1.5(fastembed 实际来源为 Qdrant 官方 ONNX 镜像 Qdrant/bge-small-zh-v1.5,model_optimized.onnx 94,781,076 字节)+ Qdrant/bm25,合计 95,254,651 字节 ≤ 500MB 上限。
  • 网关 http://192.168.200.11:8731/v1、模型 halogen-qwen3.8-flash-next(现有配置,config/models.yaml 同源;未新增账号/付费接口)。

边界与未完成承接

  • 本卡结论仅覆盖:本地 SDK 检查、隐私零泄漏(合成数据)、恢复完整性、换说法召回优于现状。合成实验不冒充真实伴侣“记住昨日细节”已通过;检索命中、细节进入上下文、模型实际使用已分开判定(S2/S3)。
  • 未做(继续承接):正式采用或产品接入(待用户拍板);中文提取提示词定制与复测;八字情绪/连续生活/主动联系接线卡;真实语料验收(另行申请额度);M5/M6 产品接线(v2 §8)。
  • 失败处置规则未触发:无连续真实失败 3 次(含 run1 的 1 次解析重试后即成功)、无隐私负例失败、未达任何上限。

HEL-858 返工修订记录(本轮,零真实模型请求)

对应总管《HEL-857-独立复核与返工要求.md》五项必修;全部离线验证见 results/rework858_offline.json(python -m spike.hel857.rework_suite,stub LLM + 本地嵌入 + 假传输,零网络,退出码依赖逐项实际结果)。

逐项:旧判定 → 返工后状态

必修项 旧(e31ae2d) 返工后(离线复现) 真实复跑
1a 夹具装载(伴侣文本覆盖用户原话、整轮写 user) t1–t4 用户原话丢失,baseline_raw_in_chat_message=false 已修:(turn, role) 完整装载,fixture_integrity 逐字逐角色核对 15/15 通过;构造旧缺陷形态的损坏库被核对门判失败(负对照) 不适用(纯夹具)
1b S1 判据只查"行存在" false 仍 pass 已修:S1 要求夹具核对通过 + 现状原句逐字 + mem0 原文三方同时成立;现状侧已离线重验通过 mem0 侧待真实复跑
1c S2/S3 及无退化重判 现状侧回读细节 false(装载错误所致);"严格优于+无退化"成立 已重判:修复夹具后现状带门回读可恢复"受潮的味道"等价细节(S2 现状侧重验);S3 换说法现状词面 0 命中经修复夹具重验仍成立;"严格优于且其他无退化"总验收结论撤回,待真实 A/B 复跑后按新判据重下 待真实复跑(模型使用部分)
2 分享桥整段事件迁公开 ack+judged 后写入整个 life_event.content(含未讲出的秘密,独立复核已复现) 已修:attempt 绑定实际收到的回复文本 spoken_text;迁入严格限于该文本(F7 部分分享负例:公开写入逐字等于已讲半句,秘密标记在全量 payload 与检索中均为 0);缺失/为空 → 拒绝迁入并留 migration_refusal 审计(F8),不降级整段放行;成功/失败/取消/未确认/重复回执全覆盖;恢复后重跑同套 P1–P5 + F1–F8(14 项 restored 键全过,含恢复前 telling_log 跨恢复幂等) 不适用(stub 门禁本为零模型)
3 改口/承诺更新错对象 S4 update 落在新条目;S6 resolved 置到面试结果条目;问答用更新前列表 已修:add 返回捕获已知 id(内容特征复核防错位);S4 显式 update 旧条目置 superseded(metadata 回读 + 该 id 的 prev→new 史 + 新条目零 UPDATE 验证);S6 update 原承诺置 resolved(结果条目无 promise_status 验证);更新后重新检索装配再供问答;负对照复放 run2 毒例("含周三"选条法与"result/tell"选条法均选中错误对象) 编排已离线证明;模型问答待真实复跑
4 来源回读无链 history 有原句+检索有命中即过(换错来源也过) 已修:add 写入来源锚点(src_group/turn_ids/input_sha256 输入指纹);链 = 命中 id → history 推导史吻合 → payload 锚点(指纹校验)→ 输入清单恢复原文;负例:未知来源、无锚点、输入指纹不符(换错来源)、同轮未分享伴侣消息(told=0)全部拒绝;600 字装配仅纳入链验证条目、零私密标记 待真实复跑(锚点随真实 add 写入)
5 资源/成功统计口径 "全卡 28/500"(仅 run2 进程内);_flat 把正常 dict 当 ERROR;S2 等义表达按词面判 false;退出码只看 completed 已修:卡级持久嵌入账本(跨进程/子进程/batch 统一扣账,词面另列);历史用量按证据保守重建 ≤100(记录值/派生值/向量点数/枚举上界分列);normalize_add_result 修复 dict 返回;S2 细节按预先声明的等价集语义判定;各命令退出码依赖逐项实际验收结果 账本持续生效

卡级资源账(修订后)

  • 历史(HEL-857 全卡,保守重建,精确不可恢复处标上界与方法):run1 24(记录 23 + S8 子进程派生 1)+ run2 29(记录 28 + 派生 1)+ 门禁1 6(向量点数 4 + 检索 2)+ 门禁2 ≤41(向量点数 9 + update 1 + 查询路径枚举上界 31)= ≤100 ≤ 500;词面另列(记录 20 + 上界 20)。
  • 本轮返工(HEL-858):离线套件持久扣账 65 条(含门禁2全套与编排复放),卡级累计 165/500,余 335;真实出站 0,原账本 26 次与余 34 次冻结额度未动。
  • 旧口径"全卡 28/500"作废(28 仅为 run2 进程内计数)。

结论修订

  • 撤回"换说法召回 Mem0 严格优于现状;其他既有成功项未退化"这一总验收结论(基于损坏夹具与错误判据);修复判据后的固定复测方案见 results/rework858_offline.json 的 _retest_plan(固定语料、锚点、判据、预计 13 次真实请求 ≤ 余 34),未经总管核对与主卡批准不执行。
  • 保留的可靠事实:门禁 0/1/2 机制性结论(含本轮补强后的隐私/分享时序/恢复全套);run2 的 mem0 侧检索证据(其输入不受夹具缺陷影响)作为线索保留,不作为验收。
  • 上游 Mem0 未被证明泄漏:整段迁移问题出在我方实验适配桥,非上游 add 原语,也非现网。

归责表修订

职责 上游(mem0ai 2.2.1) 我方
冲突检测→UPDATE/DELETE 原语 update/delete + prev→new 史 全部:检测、已知id选条、编排、更新后重检索(S4/S6 返工后实现;e31ae2d 版选条错误已修正并加负对照)
隐私前置隔离 scope/collection 承载 双实例设计、内部→公开桥接(绑定实际已讲文本)、逐消息门(F1–F8/P1–P5 返工后全套含恢复复跑)
原文存储与回读 history.db 存输入副本(messages 表无 memory_id 关联,如实列明) 锚点链:add 写入 src_group/turn_ids/input_sha256,适配层直读 payload(search 不回传 metadata,SDK 适配责任)

HEL-859 补证修订记录(本轮,零真实模型请求)

总管对 892d0d2 独立复审(附件《HEL-858-独立复审.md》与 HEL-858-independent-review.json,复现脚本 audit858.py/additional858.py):离线套件可复现,但来源门与总验收判据仍可被独立负例绕过,暂不解冻真实复测。本轮只做剩余纠错,不重新设计、不扩大范围、不接线产品;固定 Mem0 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 与全部既有修复保留。

逐项:总管审计发现 → 本轮补正(修前可复现失败 / 修后被真实出口拒绝)

同一负例脚本 spike/hel857/audit859.py(零网络、假后端+真实 stub 双形态)在修复前(892d0d2,results/audit859_prefix.json)与修复后(192d959,results/audit859_postfix.json)各跑一遍:

总管审计发现 修前复现(prefix) 修后(postfix / 套件 R6)
1a 组指纹正确但 turn_ids 指向他组(p1)仍恢复他组原文(ab_scenarios.py:325) resolved=true 且恢复 p1 原句(假后端与真实 stub 均复现) 拒绝 turn_not_in_group:turn_ids 与 turn_roles 的 turn 必须全部属于该组输入清单
1b 最终装配只看组锚点可解析,任意命中文本放行;假后端无 history 接口也能过(ab_scenarios.py:361) 伪造文本入块 pass=true;history 全程未被咨询 拒绝:命中文本==payload.data、命中 id 的 history 推导史(ADD/UPDATE 的 new==data)互证;history 不可查/缺失/不吻合 → history_unverified,只声明批次级溯源能力边界,不放行
1c 锚点无行级角色,无法对命中本身判定分享权限 —(修复引入) 锚点新增 turn_roles 行级 (turn, role);行不在组清单/角色非法 → 拒绝;溯源分层如实标注:row_verbatim(逐字可证)/ row_anchor(锚点断言,字面不可事后验证)/ batch(仅批次来源,不称精确对应)
2 同轮未分享伴侣负例手工构造 resolved=false,未走真实 resolver+assembly;t1 told=0 伴侣原句仍入最终块(rework_suite.py:311) 夹具真实 t1 伴侣原句作命中、控制库 t1 told=0:resolved=true,原句写入 600 字块 pass=true 整条拒绝 companion_unshared:命中自身锚定未分享伴侣行即拒绝,不因同轮 user 可读连带放行;同轮 user 正例仍入块(正对照保留);负例经真实 resolver+最终装配双出口(套件 R3R4 与 R6 均复放)
3a S2 两侧都答"不知道"仍 pass=true(:559) AST 代入错误答案 pass=true 判失败:S2 三层分列(检索/细节进上下文/模型使用),总验收=两侧命中 AND 现状带门回读路径用上细节 AND mem0 用上细节;gist-only 保留为明确子测
3b S3 模型答"不知道"仍 pass=true(:581) AST 代入错误答案 pass=true 判失败:检索优越 AND mem0 问答答出关键答案词("蓝色"等价集)
3c S2 比较最终可回答能力时现状只给压缩 gist —(判据缺陷) 现状已获准的带门回读进入模型上下文(QA1),不把实验限制算产品缺点;gist 问答保留为子测(QA2)
3d S6 声称状态入块但 post_update_block 只有 memory 文本 块中无任何状态标注(prefix 实证) 状态入块:正确对象(原承诺条目)的 resolved 标注随装配块进问答(QA7);新增未结对照块(同一块仅状态标注不同,QA8)核验模型沿状态区分——未结块谎称"已经告诉我"判失败;不以字面提到"告诉"冒充状态正确
4 资源账未含总管审计的 65 条密集嵌入 审计账独立 230/500,作者账仍从 165 起算 统一账并账:沿用总管审计账本续账(作者 165 + 审计 65 = 230/500、余 270;词面 86 另列),不重置、不双扣;套件空账环境自动补种同口径;离线补证逐笔扣同一账
5 复测清单 13 次中 2 次问答用途未交代 旧方案 8 次问答 vs 代码 6 次 逐笔清单:5 批提取 + 8 次问答(QA1 现状回读上下文、QA2 现状 gist 子测、QA3 mem0、QA4/5 S3 双侧、QA6 S4 更新后、QA7/8 S6 已结/未结对照)——判据修正后代码实际 8 次与方案一致,无未交代差额;含本地嵌入预算、统一账路径、场景独立输出(results/retest_<场景>.json)、停止条件、原证据保护

本轮离线验证与资源

  • python -m spike.hel857.rework_suite → results/rework859_offline.json:22/22 全过(R1 夹具/重判、R2 门禁2 全套、R3R4 编排与链+真实出口负例、R6 来源门收口+判据负例、R5 资源账、G0 假传输),退出码 0,零网络(socket 硬拒绝 + HF 离线 + 本地缓存嵌入)。
  • 统一嵌入账(hel859-data/embed_ledger.sqlite3,续总管审计账):起步 230 → 本轮逐笔扣账(audit859 修前 7 + 修后 7 + 套件 66 + 修后复跑 7 等)→ 当前 317/500、余 183(词面 112 另列);真实出站 0,原 26/60 账本与余 34 次额度只读未动。
  • 原证据未覆盖:results/ab_scenarios_run1.json、ab_scenarios.json、rework858_offline.json 等历史结果与原工作区账本均未改动;新证据独立命名(audit859_prefix/postfix、rework859_offline)。
  • 真实复测仍冻结:任一隐私负例失败即继续冻结;_retest_plan(13 次逐笔)待总管核对解除停止门后,在主卡"同意测试"授权范围与 60 次额度内执行,不需重复索取相同范围授权;正式采用/迁移仍由用户另行决定。

HEL-860 纠错修订记录(本轮,零真实模型请求)

总管对 9f3e6a3 独立复核(附件《HEL-859-独立复核.md》、HEL-859-independent-review.json、证据脚本 review859.py):离线 22/22 可复现,但四条新增反例经真实函数/实际问答编排仍失败,继续冻结真实复测。本轮为已授权 Mem0 隔离实验的剩余纠错:原模型/运行时/认证与固定 Mem0 源码 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;只补正以下四项,一次交回。

逐项:总管复核发现 → 本轮补正(修前可复现失败 / 修后统一真实出口拒绝或判失败)

同一负例脚本 spike/hel857/audit860.py(零网络、零嵌入:判据纯函数 + 假后端 payload 注入 + 复制的总管 audit859 store 快照只读 + 真实 A.run 编排假提取/假搜索/假问答捕获全部出口)在修复前(9f3e6a3,results/audit860_prefix.json)与修复后(results/audit860_postfix.json)各跑一遍:

总管复核发现 修前复现(prefix) 修后(postfix / 套件)
1 来源门没守住真正问答出口:S2/S3/S4/S6 的 assemble_block 直接装配检索命中送 rr.ask,仅 S7 走门(ab_scenarios.py:746-760 同类路径) 毒条目 unknown-origin 进入 S2 模型实际发送上下文,s7_gated_assembly 调用 0(真实 A.run + 假外部操作复现) 无门 assemble_block 出口删除:S2/S3/S4/S6/S7 全部 Mem0 侧最终装配一律经 s7_gated_assembly 逐条链校验;假编排全流程捕获 8 个问答出口,mem0 侧 5 个全部出自带门装配(门调用 6 次),毒条目不出现在任何实际发送上下文
2 同组错误角色/矛盾轮次锚点仍放行:真实 t1 伴侣原句 + (t1,user) 锚点(t1 told=0)绕过分享门;turn_ids=[t2] 与 turn_roles=[(t1,user)] 互矛均 resolved=true 两条均 resolved=true,伴侣原句进最终块(真实 history + payload 错挂注入复现) 拒绝:anchor_turn_mismatch(turn_ids 与 turn_roles 轮次清单互证,单边缺行/互指不同轮不放行)与 role_text_conflict(命中文本逐字可识别为某已知原句而锚点不含该行=可证明的错挂,不以"提取不可事后验证"的能力边界放行);同轮真实用户正例保留(row_verbatim 入块);batch 批次边界如实分层不变
3 S6 以"告诉/答应"字面替代状态:已结侧答"现在还没有告诉我"、两侧"不知道"、未结侧同义宣称"结果已收到"均 pass=true 三组答案全部 pass=true(真实 s6_result 构造器代入复现) 判失败:两侧请求成功 AND 已结侧肯定陈述承诺对象且肯定为已告知 AND 未结侧肯定陈述承诺对象且肯定为尚未告知(预声明等价词集,离线先行证明);"不知道"/两侧同答不区分状态/已结侧答未结/未结侧同义宣称已收到均失败;未结对照块剔除"已通过/已收到通知"类矛盾条目后自洽(剔除记 status_conflict_excluded,套件 R3R4 实证结果条目只在已结块、不在未结块)
4 S2 记录上下文层但未纳入总判定:b_detail_reread=false、m_detail_ctx=false,答案碰上"纸页有受潮的味道"仍 pass=true pass=true(上下文无细节、答案碰词复现) 判失败:上下文层以该次实际发送内容判定,总验收=两侧命中 AND 两侧请求成功 AND 两条实际发送上下文均含细节 AND 最终答案均用上细节(答案碰词而上下文无细节=不能证明模型实际用了注入细节);三层分列、带门回读、gist 子测保留
附 audit859 假证据:构造器实读 status_annotation_in_block 而脚本传 status_in_block,S6_correct_answers_pass=false 冒充状态判断正确;退出码不反映正负例 audit859_postfix.json 存在 false 正例 修正:键名改 status_annotation_in_block(正例恢复 true);退出码改为 all_negatives_rejected AND all_positives_kept 才为 0;新增 AUDIT859_REUSE_STORE 复用 store 快照模式(复用仅 update+search 2 次本地嵌入);复跑 results/audit859_reuse860.json 全负例拒绝/正例保留、退出码 0

本轮验证与资源(统一账续账,不补种不回退不双扣)

  • python -m spike.hel857.audit860 --phase prefix → 修前四条反例全部复现(audit860_prefix.json,零嵌入);python -m spike.hel857.audit860 → 修后全部拒绝/判失败、正例保留(audit860_postfix.json,零嵌入)。
  • python -m spike.hel857.rework_suite → results/rework860_offline.json:26/26 全过(新增 S6 带门双块自洽、错挂角色/轮次互矛拒绝、S2 碰词/请求失败判失败、本卡嵌入预算≤70 门),退出码 0,零网络。
  • AUDIT859_REUSE_STORE=… python -m spike.hel857.audit859 results/audit859_reuse860.json → 修正后脚本复跑:全部负例拒绝、正例保留(含原 false 的 S6 正例),退出码 0。
  • 统一嵌入账(总管交接指定的唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3,同卡快照仅核验/恢复用):起步 390/500(作者317+总管复核66+audit859复现7,词面136另列)→ 本轮套件 66 + audit859 复用复跑 2 = 458/500、余 42;本卡新增嵌入 68 ≤ 上限 70,保留 42 ≥ 40 供 13 次复测计划;旧作者账停止并行记账。真实出站 0,原 26/60 账本与余 34 次额度只读未动;run1/run2、rework858/859 证据与原 26 行账本未改动,新证据独立命名。
  • 已知边界(复测前必须核验):真实提取(infer=True)条目若未随 add 携带来源锚点,将在带门装配处 fail-closed 拒绝——这是设计的失败关闭行为;13 次复测的 ADD1-ADD5 须验证锚点随提取写入(适配层责任),否则复测 S2/S3/S6 mem0 侧将如实判失败而非放行。

与前轮修复的关系

HEL-858/859 全部已确认修复保留(越组 turn 拒绝、hit 与 payload 文本不符拒绝、真实 t1 伴侣 told=0 且锚点正确时拒绝、同轮用户正例、带门回读进 S2 上下文、S6 状态入块);本轮只收口剩余四项与 audit859 假证据。真实复测仍冻结,_retest_plan 13 次逐笔清单不变;正式采用/迁移仍待白栖知决定。

HEL-861 纠错修订记录(本轮,零真实模型请求、零本地嵌入)

总管对 22472e4 独立复核(附件《HEL-860-独立复核.md》、HEL-860-independent-review.json、证据脚本 review860.py):audit860 零嵌入脚本退出 0、原反例全拒、正例保留,但**"分享门守住全部实际出口"和"S6 肯定验证正确对象与状态"仍有缺口**,真实复测继续冻结。本轮为既有用户"同意测试"授权内的隔离纠错:原模型/运行时/认证与固定 Mem0 源 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;真实新增 0、本地嵌入新增 0,不重跑需要 66 条嵌入的完整套件。

逐项:总管复核发现 → 本轮补正(修前可复现失败 / 修后同一真实出口拒绝或判失败)

同一负例脚本 spike/hel857/audit861.py(零网络、零嵌入:判据纯函数 + 假后端 payload 注入 + 合成 history(已知来源+匹配推导史)+ 真实 A.run 编排假提取/假搜索/假问答捕获全部出口)在修复前(22472e4,results/audit861_prefix.json)与修复后(results/audit861_postfix.json)各跑一遍:

总管复核发现 修前复现(prefix@22472e4) 修后(postfix)
1 分享检查在实际出口可被省略:真实 A.run 的 6 次装配门调用均 share_gate=None,正确锚定的 t1 伴侣原句(控制库 told=0)进入 Mem0 侧全部 5 个问答上下文(出口 3/5/6/7/8);CompanionShareGate(None) 默认 True;缺失库路径直接抛异常无法核验 6 次门调用全部未提供分享检查器;t1 伴侣原句进入出口 3/5/6/7/8;t4 未知状态伴侣原句进入出口 3/5/6/8;CompanionShareGate(None) 放行;无门时同命中 resolved=true 且入块(复现) 分享状态源贯穿实际编排:run() 自建明确合成状态记录(build_share_state_store:t1 told=0 负例、t2/t3 told=1 正例、t4 无记录=未知),S2/S3/S4/S6/S7 与恢复后出口(S8 重启/S9 备份恢复)全部传同一门(8 次门调用全 supplied);未分享/未知伴侣原句零进入任何发送上下文;缺门命中拒 share_gate_missing;CompanionShareGate fail-closed(无库/库缺失/无记录/told=0 均不放行);S8/S9 恢复后出口为实际核验(恢复 history 真实字节复制,t1/t4 以 companion_unshared 拒绝,非缺库空过)
2 S6 用"出现任一承诺词+状态词"代替肯定验证:答错对象(体检结果冒充面试结果,两侧同错仍过)、"不知道你是否已经告诉我面试结果"、"你没有答应过我,也不是已经告诉我"均 pass=true 三组错误答案全部 pass=true(真实 s6_result 构造器代入复现);正例同时仍通过 判失败:affirms_promise_claim 纯函数肯定验证——对象必须正确(面试结果,预声明对象集)AND 承诺动作词存在 AND 承诺未被否定(没有答应/没承诺 等)AND 无不确定表述(不知道/是否/可能 等);已结/未结状态侧同样排除不确定表述。不新增模型、不重写通用语义引擎、不只把三句加入禁词表(结构化判定:对象/动作否定/不确定三层,非整句黑名单);正确面试承诺已结/未结与"还没有收到"正例保留通过

不回归证明(同一 postfix 运行内逐项断言)

  • 原 S6 四组负例(已结侧答未结、两侧"不知道"、未结侧宣称"结果已收到"、未结侧同义"已经拿到了")与"状态未入块"负例全部仍判失败;audit860/rework 两种正例形态仍通过。
  • S2/S3 总判据不回归:碰词无细节、两侧"不知道"、请求失败仍判失败;S2 正例(含等价集"潮湿的气味")与 S3 正例(答"蓝色")仍通过。
  • 未结对照块自洽与状态入块(真实编排捕获):s6_unresolved_block_self_consistent=true、s6_status_annotation_in_block=true。
  • 正例保留:同轮真实用户原句进入 6 个发送上下文;明确 told=1 伴侣正例(t2"海雾。那以后床头第二层就是海边了。")凭可核验状态记录进入全部 5 个 Mem0 侧上下文;原锚点互证(role_text_conflict/anchor_turn_mismatch)与来源门负例(unknown-origin 毒条目)继续拒绝。
  • 嵌入判据验证为纯函数先行证明,不依赖真实请求调判据。

本轮验证与资源(零嵌入,权威账只读核对)

  • python -m spike.hel857.audit861 --phase prefix(在 22472e4 工作树上运行)→ 两条反例全部复现,退出码 0;python -m spike.hel857.audit861 → 同一真实出口全部拒绝/判失败、正例保留,退出码 0。两者零网络(socket 硬拒绝+HF 离线)、零本地嵌入、真实请求 0。
  • 唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3 运行前后快照完全一致:dense 141 + seed_dense 317 = 458/500、余 42,词面 48 + seed_keyword 112 = 160 另列,行数 181——本轮新增 0,不补种不回退不双扣,旧作者账不写。
  • run1/run2、rework858/859/860、audit859/860 全部既有证据文件 SHA256 运行前后逐一核对未改动;原 26/60 真实账与余 34 额度冻结未动(作者此前 26/26 为既有证据,本轮未重跑完整嵌入套件)。
  • 已知边界(沿 HEL-860,复测前必须核验):真实提取(infer=True)条目须随 add 携带来源锚点,且实际编排须提供明确分享状态源,否则带门装配 fail-closed 拒绝;13 次复测的 ADD1-ADD5 须验证锚点随提取写入(适配层责任),否则复测 S2/S3/S6 mem0 侧如实判失败而非放行。
  • 真实复测仍冻结:13 次逐笔方案保留,待总管核对隐私检查后解除停止门,在主卡"同意测试"授权与 60 次额度内执行;正式采用/迁移仍待白栖知决定。

HEL-862 纠错修订记录(本轮,零真实模型请求、零本地嵌入、补齐远端交付)

总管对 a5ef23f 独立复核(附件《HEL-861-独立复核.md》、HEL-861-independent-review.json、证据脚本 review861.py):分享检查已贯穿 8 次装配、未分享与未知内容不进入实际发送上下文(这部分不推翻),但 S6 肯定验证仍有四组误判成功;且 origin/hel-857-mem0-spike 仍停在 22472e4、远端找不到 agent/agent/cf39f1629b93,既有 HEL-861 提交未实际可拉取。本轮为既有用户"同意测试"授权内的零资源纠错:原模型/运行时/认证与固定 Mem0 源 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;真实新增 0、本地嵌入新增 0,不重跑需要 66 条嵌入的完整套件。

逐项:总管复核发现 → 本轮补正(修前可复现 pass=true / 修后同一真实 s6_result 判失败)

同一负例脚本 spike/hel857/audit862.py(零网络、零嵌入:四组反例为总管 review861.py 原文逐字、同一真实 s6_result 入口纯函数代入;既有判据不回归部分复用 audit861 两组纯函数节)在修复前(a5ef23f 工作树,results/audit862_prefix.json)与修复后(代码提交 60cd7fd,results/audit862_postfix.json)各跑一遍:

总管复核发现(四组错误回答修前全部 pass=true) 修前复现(prefix@a5ef23f) 修后(postfix@60cd7fd)
1 否定承诺仍过:已结答"你未曾答应周五晚告诉我面试结果,现在已经告诉我了。"("未曾答应"不在枚举否定词表内) pass=true(对象词+动作词整段各出现一次即凑数) 判失败(resolved_states_promise=false):小句结构化绑定——承诺动词"答应"之前的同小句前缀含否定语素"未"→承诺断言未被肯定。否定极性按结构判定(封闭否定语素类),不再枚举"未曾答应/从未答应/并未答应"式整句禁词
2 否定已结仍过:已结答"你答应周五晚告诉我面试结果,但并非已经告诉我。"("已经告诉我"作为子串仍命中) pass=true 判失败(resolved_affirms_closed=false):已结状态短语所在小句前缀含否定语素(并非)→状态未被肯定。"并非已经告诉我"不再按子串命中计为已肯定
3 对象与动作串错仍过:两侧答"你答应周五晚告诉我体检结果,……;面试结果是另一件事。"(承诺指向体检,面试仅另行提及) pass=true(对象词在整段别处出现即凑数) 判失败(两侧 resolved/unresolved_states_promise=false):单一小句内必须"承诺动词(前缀无否定)→告知动作→正确对象(面试结果)"依次绑定;对象词出现在别的小句("面试结果是另一件事")不凑数
4 未陈述承诺仍过:已结答"面试结果现在已经告诉我了。"("告诉"被计入承诺动作词) pass=true 判失败(resolved_states_promise=false):承诺动词(答应/承诺/许诺)与告知动作(告诉/告知)分开,仅陈述告知结果而无承诺断言不再以"告诉"关键词冒充承诺存在

正例保留(同一 postfix 运行逐项断言):正确面试承诺已结/未结(你答应周五晚告诉我面试结果,现在已经告诉我了。/还没有告诉我。)、未结同义"我还没有收到"、audit860/rework 两种形态(含"答应过"与无句号形态)全部继续通过。

不回归证明

  • python -m spike.hel857.audit861 results/audit861_reuse862.json(修复后代码全量复跑,零嵌入)→ 退出码 0:HEL-861 分享门修复不推翻——8 次装配门调用全 supplied、t1 未分享/t4 未知伴侣原句零进入发送上下文、CompanionShareGate fail-closed、S8 重启/S9 备份恢复后出口为实际核验;audit861 全部既有正负例与 S2/S3 总判据不回归。
  • audit862 自身亦断言:audit861 的 S6 既有负例(错误对象/未知/否定/已结侧答未结/两侧不知道/未结侧宣称已收到/同义已拿到/状态未入块)与正例、S2/S3 判据全部维持预期极性。
  • 退出码真实依赖正负例:audit862 对每个用例做翻转自检(flip 任一用例实际结果,用例总判必翻转,flip_dependence.every_flip_changes_verdict=true,正例与负例都参与退出码)。

交付可回查性补正

  • 修前状态:origin/hel-857-mem0-spike 停在 22472e4,远端无 agent/agent/cf39f1629b93(a5ef23f 仅存在于作者本地工作树)。
  • 本轮已将 22472e4 → ffd8cdf → efaa3c2 → a5ef23f → 60cd7fd(代码)→ 本提交(README/handoff/证据)全部推送 origin/hel-857-mem0-spike(fast-forward),并补推 agent/agent/cf39f1629b93(a5ef23f)与本轮运行分支;git ls-remote 逐一核对。不合并不部署。

本轮验证与资源(零嵌入,权威账只读核对)

  • python -m spike.hel857.audit862 --phase prefix(在 a5ef23f 工作树上运行)→ 四组反例全部复现且正例保留,退出码 0;python -m spike.hel857.audit862 → 四组全部判失败、正例保留、翻转自检通过,退出码 0。两者零网络(socket 硬拒绝+HF 离线)、零本地嵌入、真实请求 0。
  • 唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3 本轮全部脚本运行前后快照完全一致:dense 141 + seed_dense 317 = 458/500、余 42,词面 48 + seed_keyword 112 = 160 另列,行数 181——本轮新增 0,不补种不回退不双扣,旧作者账不写。
  • run1/run2、rework858/859/860、audit859/860/861 全部既有证据文件 SHA256 运行前后逐一核对未改动(本轮新证据独立命名 audit862_prefix/postfix、audit861_reuse862);原 26/60 真实账与余 34 额度冻结未动,13 次逐笔复测方案保留,未重跑完整嵌入套件。
  • 已知边界(诚实声明):S6 肯定验证限定为固定合成语料的受支持表达(小句内"承诺动词→告知动作→正确对象"与状态短语+否定极性结构),真实模型若以其他措辞回答将保守判失败(fail-closed),不外推、不冒充通用中文语义理解;历史真实 run2 的 S6 实答为"不知道。"(本就判失败的已记录缺口),无既有过关真实答案被本轮收紧作废。复测时该边界如实生效。
  • 真实复测仍冻结:待总管核对隐私检查后解除停止门,在主卡"同意测试"授权与 60 次额度内执行;正式采用/迁移仍待白栖知决定。

HEL-863 纠错修订记录(本轮,零真实模型请求、零本地嵌入)

总管对 6859696 独立复核(附件《HEL-862-独立复核.md》、HEL-862-independent-review.json、证据脚本 review862.py):原四组反例已修、分享检查未退步、远端交付补齐属实(这些成果保留),但 S6 仍会把否定告知动作、其他对象的已结状态、同小句内对象串错判成功。本轮为既有用户"同意测试"授权内的零资源纠错:原模型/运行时/认证与固定 Mem0 源 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;真实新增 0、本地嵌入新增 0,不重跑需要 66 条嵌入的完整套件。

逐项:总管复核发现 → 本轮补正(修前可复现 pass=true / 修后同一真实 s6_result 判失败)

同一负例脚本 spike/hel857/audit863.py(零网络、零嵌入:三组反例为总管复核原文逐字、同一真实 s6_result 入口纯函数代入;既有判据不回归部分复用 audit861 两组纯函数节与 audit862 四组用例)在修复前(6859696 工作树,results/audit863_prefix.json)与修复后(代码提交 fcda71e,results/audit863_postfix.json)各跑一遍:

总管复核发现(三组反例修前全部 pass=true,未结侧均为正确"还没有告诉我。") 修前复现(prefix@6859696) 修后(postfix@fcda71e)
1 否定告知动作仍过:已结答"你答应周五晚不告诉我面试结果,现在已经告诉我了。"(承诺的是"不告诉",不能算承诺告知;clause_affirms_promise 只检查承诺动词之前的否定,没有检查告知动作的极性) pass=true(承诺动词前缀无否定+对象词在告知动作后命中即凑数) 判失败(resolved_states_promise=false):承诺动词与告知动作的间隔内含否定语素"不"——"答应不告诉"是否定告知的另一种承诺,不是"承诺告知";告知动作极性同小句内核对,不再只查承诺动词前缀
2 状态属于其他对象仍过:已结答"你答应周五晚告诉我面试结果,体检结果现在已经告诉我了。"(已结陈述属于体检结果,不能证明面试承诺已结;affirms_promise_state 在任一小句找到状态短语就通过) pass=true(状态短语小句前缀无否定即凑数) 判失败(resolved_affirms_closed=false):状态短语所在小句提及正确对象之外的"…结果"对象(体检结果)→ 该状态断言绑定在别的对象上,不能证明面试承诺已结;裸回指"结果已收到"与"面试结果已经告诉我了"仍绑定正确对象可证明
3 同小句对象串错仍过:已结答"你答应周五晚告诉我体检结果而面试结果是另一件事,现在已经告诉我了。"(承诺对象是体检结果;小句内依次出现承诺、告知、面试结果即通过) pass=true(对象词在告知动作之后任意距离命中即凑数) 判失败(resolved_states_promise=false):对象必须紧随告知动作(中间至多一个封闭类接收者代词"我/你"等)——"告诉我体检结果而面试结果是另一件事"的承诺对象错挂为体检结果,面试结果在更远处出现不再凑数;该小句同时被外来对象结构类拒绝

补正口径:一次核对同一项声明的正确对象、两种动作极性(承诺动词与告知动作均须肯定)、目标状态绑定(状态小句不得提及其他"…结果"对象)与冲突陈述(对侧状态短语/不确定表述整篇排除不变);采用足够窄的完整受支持语法,不能解析的额外对象/谓语/否定保守失败;不加三句禁词、不加整句黑名单、不新增模型、不做通用语义引擎。

不回归证明(同一 postfix 运行内逐项断言 + audit861 全量复跑)

  • 正例保留:正确面试承诺已结/未结(你答应周五晚告诉我面试结果,现在已经告诉我了。/还没有告诉我。)、未结同义"我还没有收到"、audit860/rework 两种形态(含"答应过"与无句号)全部继续通过。
  • HEL-862 四组复核用例(否定承诺/否定已结/对象串错跨小句/未陈述承诺)与 audit861 全部既有正负例(错误对象/未知/否定/已结侧答未结/两侧不知道/未结侧宣称已收到/同义已拿到/状态未入块)、S2/S3 总判据全部维持预期极性。
  • python -m spike.hel857.audit861 spike/hel857/results/audit861_reuse863.json(修复后代码全量复跑,零嵌入)→ 退出码 0:分享门不退步——8 次装配门调用全 supplied、t1 未分享/t4 未知伴侣原句零进入发送上下文、CompanionShareGate fail-closed、S8 重启/S9 备份恢复后出口实际核验。
  • 退出码真实依赖正负例:audit863 对每个用例(三组新增 + 四组复核 + audit861 既有集)做翻转自检,flip 任一用例实际结果则用例总判必翻转(flip_dependence.every_flip_changes_verdict=true,正例与负例都参与退出码)。

本轮验证与资源(零嵌入,权威账只读核对)

  • python -m spike.hel857.audit863 --phase prefix(在 6859696 工作树上运行)→ 三组反例全部复现且其余用例维持预期,退出码 0;python -m spike.hel857.audit863 → 三组全部判失败、正例保留、翻转自检通过,退出码 0。两者零网络(socket 硬拒绝+HF 离线)、零本地嵌入、真实请求 0。
  • 唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3 本轮全部脚本运行前后快照完全一致:dense 141 + seed_dense 317 = 458/500、余 42,词面 48 + seed_keyword 112 = 160 另列,行数 181——本轮新增 0,不补种不回退不双扣,旧作者账不写。
  • run1/run2、rework858/859/860、audit859/860/861/862 全部既有证据文件 SHA256 运行前后逐一核对未改动(本轮新证据独立命名 audit863_prefix/postfix、audit861_reuse863);原 26/60 真实账与余 34 额度冻结未动,13 次逐笔复测方案保留,未重跑完整嵌入套件。
  • 已知边界(诚实声明,沿 HEL-862 并收紧):S6 肯定验证限定为固定合成语料的受支持表达(小句内"承诺动词→告知动作→(可选接收者)→面试结果紧随"与状态短语+否定极性+对象绑定结构),真实模型若以其他措辞回答(含对象后置、额外谓语、其他对象并提)将保守判失败(fail-closed),不外推、不冒充通用中文语义理解;历史真实 run2 的 S6 实答为"不知道。"(本就判失败),无既有过关真实答案被本轮收紧作废。复测时该边界如实生效。
  • 真实复测仍冻结:待总管核对隐私检查后解除停止门,在主卡"同意测试"授权与 60 次额度内执行;正式采用/迁移仍待白栖知决定。

HEL-864 纠错修订记录(本轮,零真实模型请求、零本地嵌入)

总管对 7aa9280 独立复核(附件《HEL-863-独立复核.md》、HEL-863-independent-review.json、证据脚本 review863.py):原三组已修、分享门与既有正例保留、远端及四项需求检查属实(这些成果保留),但"完整受支持语法"与"不能解析则失败"仍未兑现——实现仍是任一小句发现承诺词、另一小句发现状态词、再用"结果"字样排除部分异物,七组额外对象/冲突/疑问/条件/后缀否认回答(含未结侧镜像)经真实 s6_result 全部判成功。本轮为既有用户"同意测试"授权内的零资源纠错:原模型/运行时/认证与固定 Mem0 源 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;真实新增 0、本地嵌入新增 0,不重跑需要 66 条嵌入的完整套件。

逐项:总管复核发现 → 本轮补正(修前可复现 pass=true / 修后同一真实 s6_result 判失败)

同一负例脚本 spike/hel857/audit864.py(零网络、零嵌入:七组反例+未结侧镜像为总管复核原文逐字、同一真实 s6_result 入口纯函数代入;既有判据不回归部分复用 audit861 两组纯函数节、audit862 四组与 audit863 三组)在修复前(7aa9280 工作树,results/audit864_prefix.json)与修复后(代码提交 c65de00,results/audit864_postfix.json)各跑一遍:

总管复核发现(七组反例修前全部 pass=true,未结侧均为正确"还没有告诉我。") 修前复现(prefix@7aa9280) 修后(postfix@c65de00)
外来对象无"结果"后缀仍过:已结答"你答应周五晚告诉我面试结果,体检报告现在已经告诉我了。"(对象检查只认"…结果"形态,体检报告绕过) pass=true 判失败:状态小句主语槽只认正确对象/裸回指(面试结果/结果),"体检报告…"无法被受支持结构完整消费
状态后置对象仍过:已结答"……现在已经告诉我了体检情况。"(状态短语之后的对象被忽略) pass=true 判失败:已结状态小句 fullmatch 到状态为止,尾随对象即残料、无法完整消费
跨小句回指错绑仍过:已结答"……,体检结果,现在已经告诉我了。"(逗号切开后裸名词小句不阻止状态回指错绑) pass=true 判失败:全量解析要求每个小句被消费,裸名词小句"体检结果"不属于任何受支持结构 → 整篇保守失败
全段冲突仍过:已结答"……现在已经告诉我了,但面试结果仍待告知。"(冲突尾句被忽略) pass=true 判失败:"仍待告知"非受支持结构,冲突尾句无法被消费 → 整篇失败(不再依赖对侧短语子串恰好命中)
疑问语气仍过:已结答"……现在已经告诉我了吗?"(疑问被当肯定已结陈述) pass=true 判失败:语气门——全篇不得含问号(?/?)或句末疑问/祈使语气词(吗/呢/吧/嘛/呗)
条件句仍过:已结答"如果你答应周五晚告诉我面试结果,现在已经告诉我了。"(条件被当实际承诺) pass=true 判失败:承诺小句 fullmatch 不含条件前缀槽,"如果…"无法完整消费 → 无承诺断言
状态短语后否认仍过:已结答"……已经告诉我了是假的。"(尾随否认被忽略) pass=true 判失败:状态小句 fullmatch 到"了"为止,"是假的"为残料 → 整篇失败
未结侧镜像(同一缺口七组镜像输入:体检报告还没有告诉我/还没有告诉我体检情况/体检结果,还没有告诉我/还没有告诉我,但面试结果仍待告知/还没有告诉我吗?/如果……还没有告诉我/还没有告诉我是假的) 七组镜像全部 pass=true 七组镜像全部判失败:已结侧与未结侧同一语法全量解析,不单侧收口

补正口径:affirms_promise_claim/affirms_promise_state 重写为有界语法全量解析(parse_supported_answer)——全篇必须陈述语气;每个小句被且仅被三类结构完整消费(fullmatch,尾随残料即失败):P 承诺小句(主语?→承诺动词→体标记过/了?→周五(晚)?→告知动作→接收者代词?→正确对象面试结果,到此为止)、C 已结状态小句、O 未结状态小句;整篇 ≥1 个 P 才存在被肯定的承诺断言,状态肯定另要求 ≥1 对应极性 C/O 且 0 个反向极性小句。子串拼装判据(clause_affirms_promise/clause_affirms_state/clause_foreign_object/_prefix_negated)删除;不加七句黑名单、不补"报告/吗/假"禁词、不新增模型、不做通用语义引擎;只约束本实验判据,不限制产品表达。

英文同等验证(本轮声明支持即同等结构核验):英文与中文同一小句结构与语气门(_PROMISE_CLAUSE_EN/_CLOSED_STATE_EN/_OPEN_STATE_EN)。如实记录:修前代码英文正例实际不通过("the interview result" 冠词使旧子串判据失配,prefix 期九个英文用例全部判失败);修后 3 个英文正例(已结 already told、未结 haven't told yet、未结 haven't received it yet)通过、6 个英文反例(条件/疑问/外来对象后缀/否定承诺/未结侧疑问/未结侧条件)全部判失败。

不回归证明(同一 postfix 运行内逐项断言 + audit861 全量复跑)

  • 正例保留:正确面试承诺已结/未结(你答应周五晚告诉我面试结果,现在已经告诉我了。/还没有告诉我。)、未结同义"我还没有收到"、audit860/rework 两种形态(含"答应过"与无句号)全部继续通过。
  • HEL-863 三组、HEL-862 四组复核用例与 audit861 全部既有正负例(错误对象/未知/否定/已结侧答未结/两侧不知道/未结侧宣称已收到/同义已拿到/状态未入块)、S2/S3 总判据全部维持预期极性(audit864 用例表内逐项断言)。
  • python -m spike.hel857.audit861 spike/hel857/results/audit861_reuse864.json(修复后代码全量复跑,零嵌入)→ 退出码 0:分享门不退步——8 次装配门调用全 supplied、t1 未分享/t4 未知伴侣原句零进入实际发送上下文、CompanionShareGate fail-closed、S8 重启/S9 备份恢复后出口实际核验、未结对照块自洽、来源锚点互证负例保留。
  • 退出码真实依赖正负例:audit864 对每个用例(七组+镜像 + 英文九例(postfix) + HEL-862/863 七组 + audit861 既有集)做翻转自检,flip 任一用例实际结果则用例总判必翻转(flip_dependence.every_flip_changes_verdict=true,正例与负例都参与退出码)。

本轮验证与资源(零嵌入,权威账只读核对)

  • python -m spike.hel857.audit864 --phase prefix(在 7aa9280 工作树上运行)→ 七组反例与七组未结侧镜像全部复现且其余用例维持预期,退出码 0;python -m spike.hel857.audit864 → 七组+镜像全部判失败、正例保留、英文同等验证通过、翻转自检通过,退出码 0。两者零网络(socket 硬拒绝+HF 离线)、零本地嵌入、真实请求 0;不以新增模型请求调试判据。
  • 唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3 本轮全部脚本运行前后快照完全一致(逐行摘要 SHA256 相同):dense 141 + seed_dense 317 = 458/500、余 42,词面 48 + seed_keyword 112 = 160 另列,行数 181——本轮新增 0,不补种不回退不双扣,旧作者账不写。
  • run1/run2、rework858/859/860、audit859/860/861/862/863 全部既有证据文件 SHA256 运行前后逐一核对未改动(本轮新证据独立命名 audit864_prefix/postfix、audit861_reuse864);原 26/60 真实账与余 34 额度冻结未动,13 次逐笔复测方案保留,未重跑完整嵌入套件。
  • 已知边界(诚实声明,沿 HEL-863 并收紧为全量解析):S6 肯定验证限定为固定合成语料的受支持结构与语气(P/C/O 三类小句 fullmatch + 陈述语气门),真实模型若以其他措辞、其他小句组织或非陈述语气回答将保守判失败(fail-closed),不外推、不冒充通用中英文语义理解;历史真实 run2 的 S6 实答为"不知道。"(本就判失败),无既有过关真实答案被本轮收紧作废。复测时该边界如实生效。
  • 真实复测仍冻结:待总管核对隐私检查后解除停止门,在主卡"同意测试"授权与 60 次额度内执行;正式采用/迁移仍待白栖知决定。

HEL-865 纠错修订记录(本轮,零真实模型请求、零本地嵌入)

总管对 070f4fd 独立复核(附件《HEL-864-独立复核.md》、HEL-864-independent-review.json、证据脚本 review864.py):全量语法、原十四例、分享门、既有正例、远端交付及四项需求检查均属实(这些成果保留),但同一承诺的人物角色仍可串错——完整匹配只产出 promise/closed/open 三种类型,_PROMISE_CLAUSE_ZH 允许"你/我"任意主语和多种接收者、_CLOSED_STATE_ZH/_OPEN_STATE_ZH 允许"我/你"任意接收者、英文状态允许 me/you/us/them,主语/接收者被正则消费后丢弃,全篇拼出的只是"某承诺+某已结/未结状态",不能证明属于本场景同一项承诺。八组新反例经同一真实 s6_result 全部误判成功。本轮为既有用户"同意测试"授权内的零资源纠错:原模型/运行时/认证与固定 Mem0 源 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;真实新增 0、本地嵌入新增 0,不重跑需要 66 条嵌入的完整套件。

逐项:总管复核发现 → 本轮补正(修前可复现 pass=true / 修后同一真实 s6_result 判失败)

同一负例脚本 spike/hel857/audit865.py(零网络、零嵌入:八组反例为总管复核原文逐字、每次仅替换已结/未结一侧且另一侧为原规范正例;同一真实 s6_result 入口纯函数代入;既有判据不回归部分复用 audit861 两组纯函数节、audit862 四组、audit863 三组与 audit864 七组+镜像+英文正负例)在修复前(070f4fd 工作树,results/audit865_prefix.json)与修复后(代码提交 c0cb540,results/audit865_postfix.json)各跑一遍:

总管复核发现(八组反例修前全部 pass=true,另一侧均为原规范正例) 修前复现(prefix@070f4fd) 修后(postfix@c0cb540)
已结侧告知接收者与承诺接收者不同:你答应周五晚告诉我面试结果,现在已经告诉你了。(告诉"你"不证明告诉了"我") pass=true 判失败:C 小句接收者槽绑定场景接收者("我"/me,省略继承);显式"你"=承诺者本人 ≠ 告知接收者 → 不绑定 → 整篇保守失败
未结侧同缺口:你答应周五晚告诉我面试结果,还没有告诉你。(未告诉"你"不证明尚未告诉"我") pass=true 判失败:O 小句接收者槽同规则绑定
承诺指向他人(已结):你答应周五晚告诉她面试结果,现在已经告诉我了。(已告知"我"不证明给"她"的那项承诺已结) pass=true 判失败:P 小句接收者槽必须是场景接收者;"告诉她"属另一项声明,场景锚点不支持 → 不绑定
承诺指向他人(未结):你答应周五晚告诉她面试结果,还没有告诉我。 pass=true 判失败:同上
承诺方反转(已结):我答应周五晚告诉你面试结果,现在已经告诉你了。(承诺者被反转,语料中的承诺是用户作出的) pass=true 判失败:P 小句主语槽绑定场景承诺者("你"/you,省略继承);显式"我"=接收者一方 ≠ 承诺者 → 不绑定
承诺方反转(未结):我答应周五晚告诉你面试结果,还没有告诉你。 pass=true 判失败:同上
英文已结侧接收者不同:You promised to tell me the interview result, and you have already told them. pass=true 判失败:EN C 小句接收者槽绑定 me(省略继承),them=他人 → 不绑定
英文未结侧接收者不同:You promised to tell me the interview result, but you haven't told them yet. pass=true 判失败:EN O 小句同规则

结构变体证明按角色类绑定而非八句/人称黑名单(prefix 复现 / postfix 判失败):中文换代词(告诉他/告诉我们)、换承诺动词(我承诺周五晚告诉你)、英文换格(tell her / told us / We promised / I have already told you)、未结侧显式主语(我还没有告诉你/我还没兑现)、混排多承诺小句(给她一条+给我一条)同缺口全部误判成功→修后全部判失败;还没有告诉她(O 小句接收者槽本就不含她)与 他答应……(主语槽不含他)在 070f4fd 已判失败,作为双期负例保留。省略槽按预声明回指规则继承的规范正例两期均通过:承诺小句省略主语/接收者(你答应周五晚告诉面试结果/答应周五晚告诉我面试结果)、状态小句省略接收者(现在已经告诉了)、未结省略主语(还没有告诉/还没有收到)、裸回指与话题形态(结果已收到/面试结果已经告诉我了)、英文省略主语(haven't received it yet)与 I have received it——证明绑定按槽位+场景角色,"你"在承诺者槽继续必需(规范正例本身含"你答应"),不作字面禁词。

补正口径:parse_supported_answer 每个小句捕获并核准承诺者主语、告知接收者、动作、对象与状态,全部绑定同一项预声明场景声明(p1 用户原话"面试结果出来我周五晚上告诉你":承诺者=用户〔答案框架"你"/"you"〕、告知接收者=伴侣〔"我"/"me"〕、对象=面试结果)。省略槽回指规则预声明:承诺小句省略主语→承诺者、省略接收者→场景接收者;状态小句按动词类别(tell 类主语=承诺者;receive 类受收方=场景接收者,未结 receive 主语兼容"接收者未收到告知/承诺者未收到结果"两读法;fulfill 类主语=承诺者)。明确不同接收者、反转承诺者、多个小句角色冲突一律失败,未知(we/我们/他/她等)也失败;中英文同等核验;不新增自然语言引擎、不重做实验、受支持语法表面不变(EN 已结受收主语槽仍不含承诺者代词)。

不回归证明(同一 postfix 运行内逐项断言 + audit861 全量复跑)

  • 正例保留:正确面试承诺已结/未结(你答应周五晚告诉我面试结果,现在已经告诉我了。/还没有告诉我。)、未结同义"我还没有收到"、audit860/rework 两种形态(含"答应过"与无句号)与全部省略继承正例继续通过。
  • audit864 七组+未结侧镜像、英文 3 正例 6 反例、HEL-863 三组、HEL-862 四组复核用例、总管 review864.py 既有变体与 audit861 全部既有 S6 正负例、S2/S3 总判据全部维持预期极性(audit865 用例表内逐项断言)。
  • python -m spike.hel857.audit861 spike/hel857/results/audit861_reuse865.json(修复后代码全量复跑,零嵌入)→ 退出码 0:分享门不退步——8 次装配门调用全 supplied、t1 未分享/t4 未知伴侣原句零进入实际发送上下文、CompanionShareGate fail-closed、S8 重启/S9 备份恢复后出口实际核验、未结对照块自洽、来源锚点互证负例保留。
  • 退出码真实依赖正负例:audit865 对每个用例(八组+结构变体+省略继承正例+既有全部集)做翻转自检,flip 任一用例实际结果则用例总判必翻转(flip_dependence.every_flip_changes_verdict=true,正例与负例都参与退出码)。

本轮验证与资源(零嵌入,权威账只读核对)

  • python -m spike.hel857.audit865 --phase prefix(在 070f4fd 工作树上运行)→ 八组反例与结构变体全部复现且其余用例维持预期,退出码 0;python -m spike.hel857.audit865 → 八组+结构变体全部判失败、省略继承正例保留、翻转自检通过,退出码 0。两者零网络(socket 硬拒绝+HF 离线)、零本地嵌入、真实请求 0;不以新增模型请求调试判据。
  • 唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3 本轮全部脚本运行前后快照完全一致(逐行摘要 SHA256 相同):dense 141 + seed_dense 317 = 458/500、余 42,词面 48 + seed_keyword 112 = 160 另列,行数 181——本轮新增 0,不补种不回退不双扣,旧作者账不写。
  • run1/run2、rework858/859/860、audit859/860/861/862/863/864 全部既有证据文件 SHA256 运行前后逐一核对未改动(本轮新证据独立命名 audit865_prefix/postfix、audit861_reuse865);原 26/60 真实账与余 34 额度冻结未动,13 次逐笔复测方案保留,未重跑完整嵌入套件。
  • 已知边界(诚实声明,沿 HEL-864 并补角色绑定):S6 肯定验证限定为固定合成语料的受支持结构、语气与场景角色(P/C/O 三类小句 fullmatch + 陈述语气门 + 承诺者/接收者槽绑定同一项场景声明、省略按预声明回指规则继承),真实模型若以其他措辞、其他小句组织、非陈述语气或角色不绑定本场景声明的回答将保守判失败(fail-closed),不外推、不冒充通用中英文语义理解;历史真实 run2 的 S6 实答为"不知道。"(本就判失败),无既有过关真实答案被本轮收紧作废。复测时该边界如实生效。
  • 真实复测仍冻结:待总管核对隐私检查后解除停止门,在主卡"同意测试"授权与 60 次额度内执行;正式采用/迁移仍待白栖知决定。

HEL-866 纠错修订记录(本轮,零真实模型请求、零本地嵌入)

总管对 5ebe407 独立复核(附件《HEL-865-独立复核.md》、HEL-865-independent-review.json、证据脚本 review865.py):原八组角色串绑已修、140 角色组合、规范正例、作者全量判据与分享出口重跑、远端交付及四项需求检查均属实(这些成果保留),但 receive/fulfill 后的直接宾语仍被当成 tell 的接收者——_OPEN_STATE_ZH/_OPEN_STATE_EN 让 tell、receive(中文另有 fulfill)共用同一动词后槽位,_bind_state_clause 按动词类别核准了主语,却把其后的"我/me"一律解释为告知接收者并放行;receive 后的"me"实际是被收到/接待的人,fulfill 后的"我"是被履行事项的槽,均不是接收面试结果的一方;六组"非目标/不合格参数"表达经同一真实 s6_result 全部误判成功。本轮为既有用户"同意测试"授权内的零资源纠错:原模型/运行时/认证与固定 Mem0 源 2c81af3bbe27d9bccb09c772d583df9e9be72ee5 不变,不合并不部署、不加依赖、不触现网/真实资料;真实新增 0、本地嵌入新增 0,不重跑需要 66 条嵌入的完整套件。

逐项:总管复核发现 → 本轮补正(修前可复现 pass=true / 修后同一真实 s6_result 判失败)

同一负例脚本 spike/hel857/audit866.py(零网络、零嵌入:六组反例为总管复核原文逐字、已结侧固定规范正例且仅替换未结一侧;同一真实 s6_result 入口纯函数代入;既有判据不回归部分复用 audit861/862/863/864/865 全部纯函数节并新增按动词类别的主语×动词后槽位矩阵与 140 角色组合)在修复前(5ebe407 工作树,results/audit866_prefix.json)与修复后(代码提交见 handoff,results/audit866_postfix.json)各跑一遍:

总管复核发现(六组反例修前全部 pass=true,已结侧均为规范正例) 修前复现(prefix@5ebe407) 修后(postfix)
英文 receive 人物宾语:You promised to tell me the interview result, but you haven't received me yet.(尚未接待"我",不证明面试结果告知状态) pass=true 判失败:receive 类动词后=被收到对象槽(面试结果,省略继承);"me"=收到"人"→ 不绑定 → 整篇保守失败
英文 got 人物宾语:but you haven't got me yet. pass=true 判失败:同上(got 属 receive 类)
英文多余人物参数:but you haven't received me the interview result yet. pass=true 判失败:人物代词+对象NP并见=多余人物参数,被收到对象只能是对象NP或省略
中文 receive 人物宾语:你答应周五晚告诉我面试结果,还没有收到我。 pass=true 判失败:收到"我"≠收到面试结果;省略继承的是面试结果,不是人
中文 get 人物宾语:……还没拿到我。 pass=true 判失败:同上(拿到属 receive 类)
中文 fulfill 人物宾语:……还没兑现我。 pass=true 判失败:兑现的对象是被履行事项(承诺/约定,省略继承),"我"不是可核验的被履行对象

按动词类别的主语×动词后槽位矩阵一次覆盖各类别的主语、直接对象、接收者与多参数冲突(不只补六句):EN receive 主语{you/i/省略}×动词后槽{me/it}——me 格 prefix 全部误判成功(含接收者主语读法" I haven't received me yet")、postfix 全部判失败,it 格(对象NP)两期通过;ZH receive 主语{我/省略}×槽{我/省略}——人物格复现/判失败,省略格两期通过;ZH fulfill 主语{我/省略}×槽{我/省略}——双省略格两期通过("还没兑现"=承诺者未兑现,省略继承),接收者作兑现方("我还没兑现")双期失败(沿 HEL-865 主语规则),省略主语+人物格(=六组之六)复现/判失败;EN tell 对照主语{you/省略}×槽{me/省略}两期全部通过——证明只按动词类别收紧 receive/fulfill 的动词后槽,未把 tell 一并收紧。结构变体(received you/them/us、got me the result、received me it、省略主语 received me、话题形态"面试结果还没有收到我"、收到你/拿到你/兑现你)中,5ebe407 已被角色绑定拒绝的代词作双期负例保留,其余同缺口变体 prefix 复现/postfix 全部判失败。

补正口径:_bind_state_clause 按动词类别声明并核准动词后参数槽——tell 类(告诉/告知/说;told/informed/notified)动词后=告知接收者槽(须场景接收者"我"/me,省略继承,对象NP可跟);receive 类(收到/拿到;received/got)动词后=被收到对象槽(面试结果,省略按原回指规则继承;显式人物代词、人物+对象NP并见均不绑定→保守失败);fulfill 类(兑现/解决)动词后=被履行事项槽(承诺/约定,省略继承;显式人物代词失败)。主语槽规则沿 HEL-865 不变。中英文同等核验;不加六句/人称禁词黑名单、不新增通用自然语言引擎、不重做实验、不扩大产品表达限制;受支持语法表面不变。

不回归证明(同一 postfix 运行内逐项断言 + audit861 全量复跑)

  • 正例保留:规范正例(中/英)、"我还没有收到"、"还没有收到"、"面试结果还没有收到"(话题形态)、"还没兑现"(省略继承)、英文 haven't received it yet 三读法(省略主语/承诺者主语 you/接收者主语 I)、tell 类带接收者+对象NP("haven't told me the interview result yet")、audit865 全部省略继承正例继续通过。
  • 140 个中英文承诺主语×接收者角色组合(沿 review865 独立矩阵)全部符合预期;audit865 八组+结构变体、audit864 七组+未结侧镜像+英文 3 正例 6 反例、HEL-863 三组、HEL-862 四组、总管 review864.py 既有变体与 audit861 全部既有 S6 正负例、S2/S3 总判据全部维持预期极性(audit866 用例表逐项断言)。
  • python -m spike.hel857.audit861 spike/hel857/results/audit861_reuse866.json(修复后代码全量复跑,零嵌入)→ 退出码 0:8 次装配门调用全 supplied、t1 未分享/t4 未知伴侣原句零进入实际发送上下文、CompanionShareGate fail-closed、S8 重启/S9 备份恢复后出口实际核验、未结对照块自洽、来源锚点互证负例保留。
  • 退出码真实依赖正负例:audit866 对每个用例(六组+结构变体+矩阵+140 组合+正例+audit861–865 既有全部集)做翻转自检,flip 任一用例实际结果则用例总判必翻转(flip_dependence.every_flip_changes_verdict=true,正例与负例都参与退出码)。

本轮验证与资源(零嵌入,权威账只读核对)

  • python -m spike.hel857.audit866 --phase prefix(在 5ebe407 工作树上运行)→ 六组反例、矩阵人物代词格与结构变体全部复现且其余用例维持预期,退出码 0;python -m spike.hel857.audit866 → 六组+矩阵人物格+结构变体全部判失败、正例与既有判据不回归、翻转自检通过,退出码 0。两者零网络(socket 硬拒绝+HF 离线)、零本地嵌入、真实请求 0;不以新增模型请求调试判据。
  • 唯一权威账 hel-859-1f079e50f551/workdir/audit-data/embed_ledger.sqlite3 本轮全部脚本运行前后快照完全一致(逐行摘要 SHA256 相同):dense 141 + seed_dense 317 = 458/500、余 42,词面 48 + seed_keyword 112 = 160 另列,行数 181——本轮新增 0,不补种不回退不双扣,旧作者账不写。
  • run1/run2、rework858/859/860、audit859–865 全部既有证据文件 SHA256 运行前后逐一核对未改动(本轮新证据独立命名 audit866_prefix/postfix、audit861_reuse866);原 26/60 真实账与余 34 额度冻结未动,13 次逐笔复测方案保留,未重跑完整嵌入套件。
  • 已知边界(诚实声明,沿 HEL-865 并补动词类别参数槽):S6 肯定验证限定为固定合成语料的受支持结构、语气、场景角色与动词类别参数槽(P/C/O 三类小句 fullmatch + 陈述语气门 + 承诺者/接收者槽绑定同一项场景声明 + tell/receive/fulfill 动词后槽按类别核准、省略按预声明回指规则继承),真实模型若以其他措辞、其他小句组织、非陈述语气、角色不绑定本场景声明或动词后参数不合格的回答将保守判失败(fail-closed),不外推、不冒充通用中英文语义理解;历史真实 run2 的 S6 实答为"不知道。"(本就判失败),无既有过关真实答案被本轮收紧作废。复测时该边界如实生效。
  • 真实复测仍冻结:待总管核对隐私检查后解除停止门,在主卡"同意测试"授权与 60 次额度内执行;正式采用/迁移仍待白栖知决定。