Skip to content

情感第三维 coping_potential(情境控制感) + 解码器容量旋钮 + 训练脚手架#43

Open
WizardHeHeJun wants to merge 33 commits into
mainfrom
feat/coping-potential-third-dim
Open

情感第三维 coping_potential(情境控制感) + 解码器容量旋钮 + 训练脚手架#43
WizardHeHeJun wants to merge 33 commits into
mainfrom
feat/coping-potential-third-dim

Conversation

@WizardHeHeJun

Copy link
Copy Markdown
Owner

概述

引入情感引擎的第三维 coping_potential(情境控制感),在 (v<0, a>0) 象限分离愤怒 / 恐惧——二者在 2 维 (valence, arousal) 环状模型里落同一象限、无法区分。以 coping potential / 控制感(Smith & Ellsworth 1985 的 control appraisal 维;愤怒=高控制、恐惧=低控制)作判据,替换此前无文献依据的纯 arousal 阈值。

伴随两项工程加法:解码器容量/深度旋钮、训练/标签脚手架

全部 env 门控、默认关 = 与主分支逐字等价(默认行为不变)。

主要改动

① coping_potential 独立标量流(默认 coping_potential_enabled=False

  • Stimulus.control_appraisal(新增独立评价维,正交于 goal_congruence,避免与 valence 共线)→ AppraisalAgentAffectState.coping_potential_state(∈[-1,1],进 Checkpointer 运行态、不入长期图谱,同 cortisol_state 先例)。
  • emotion_lexicon.motivational_systemcoping_potential 参数,在 (v<0,a>0) 象限 >0.3→rage / <-0.3→fear / 中间→rage;经 language._appraisal_summary 消费(与既有 distinguish_fear 同路径)。分离阈值为初值、待真机观测校准。
  • 五处贯通(state → SessionConfig → run/ConversationSession → chat_driver 读 env)逐字复刻既有 cortisol_enabled 模式。内核 VA 二维不动、decode_channels/decoder 协议不变。

② 解码器容量/深度旋钮(默认 = 当前形状)

  • 6 个解码器加 hidden/num_layers;默认值使 state_dict 键集与现状逐字相同,现有发布权重照常加载;训练脚本贯通 --hidden/--num-layers。出更强新权重需重训。

③ 训练/标签脚手架

  • read_emobank_rows(include_d=) 可选读回 EmoBank 的 dominance 列;STTextAffectRegressoroutput_dim/finetune_encoder + forward_texts(端到端微调前向经编码器、梯度可回传,需 GPU);新增 train_text_affect_d.py。RAVDESS/WESAD 无逐样本 dominance 标注(数据采集阻塞,代码内 TODO 标注)。

验证

  • pytest 779 passed / 6 skipped(+76 新测,含各特性「默认关逐字等价」断言)。
  • ruff check / ruff format --check / mypy src(49 文件)干净。
  • 独立代码审查通过(修复两处:coping_potential 图内消费接线、finetune 前向梯度回传)。

文献依据

  • Smith & Ellsworth (1985), Patterns of cognitive appraisal in emotion, JPSP 48(4):813 — 控制/应对潜能维独立于效价,区分愤怒(高控制)与恐惧(低控制)。DOI:10.1037/0022-3514.48.4.813
  • Fontaine et al. (2007), The world of emotions is not two-dimensional, Psychological Science 18(12):1050. DOI:10.1111/j.1467-9280.2007.02024.x
  • Wacker et al. (2003), Separating emotion and motivational direction in fear and anger, Emotion 3(2):167. DOI:10.1037/1528-3542.3.2.167

数据独立性前置核验:EmoBank 全量 dominance 与 valence 的皮尔逊相关 r=0.38(<0.5),支持作独立维。

🤖 Generated with Claude Code

WizardHeHeJun and others added 30 commits July 13, 2026 23:09
引入情境控制感维 coping_potential(科学家议会设计门, 走完整 PRP), 在 (-v,+a)
象限分离愤怒/恐惧——替换失真的纯 arousal 阈值。独立标量流: 内核 VA 二维不动、
进 Checkpointer 不入图谱、来源独立 control_appraisal(不复用 goal_congruence,
防与 valence 共线)、经 language._appraisal_summary 消费。全默认关零回归。

- 批1 coping_potential: Stimulus.control_appraisal + AffectState.coping_potential_state/enabled
  五处贯通(仿 cortisol) + AppraisalAgent 产出 + emotion_lexicon.motivational_system
  分离 rage/fear(阈值 0.3 议会初值, 待 P1 观测校准)
- 批2 容量旋钮: 6 解码器加 num_layers/hidden(默认=当前形状, nn.Sequential 保 state_dict
  键名逐字不变, 现有 Release 权重照常加载, 输入维不动)
- 批3 训练脚手架: EmoBank D 列可选读回(include_d) + ST forward_texts 端到端微调(带梯度,
  需GPU) + output_dim 旋钮 + train_text_affect_d.py; RAVDESS/WESAD 无 D 标注(数据阻塞)

命名/来源/路径经科学家议会五席裁定(coping_potential 非 dominance; 前置实测 EmoBank
r(V,D)=0.38<0.5 独立性成立)。779 passed / 6 skipped 零回归; ruff/format/mypy 干净;
code-reviewer 独立门整改后 PASS(W1 空悬通路 + W4 finetune no-op 已修+新测坐实)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
承接 coping_potential 第三维:内核已分离愤怒/恐惧,但表情通道 FacsDecoder 只有
AU04/06/12/15、缺区分二者的 AU。经聚焦设计门(生物/心理/CS 三席)扩到 11-AU 集合,
据 coping_potential 在 (v<0,a>0) 象限连续区分愤怒(AU23)/恐惧(AU01/02/20)。全默认关零回归。

- 独立 FACS_KEYS_EXT(11键)+env 门控 facs_extended(默认保旧 5-AU;改 expression_decoder
  11维布局会破坏 expression_decoder.pt 权重故被 CS 席 BLOCK、不走)
- decode_channels 加 keyword coping_potential/facs_extended/k_arousal/k_coping;
  _decode_facs_extended 连续映射(relu 软权重非硬阈值)+象限守卫((v<0,a>=0) 才激活区分性 AU);
  旧 AU04/06/12/15/intensity 方向逐字不变
- facs_extended 五处贯通(ZERO_FACS_EXTENDED)+ExpressionAgent 占位路径读 state 透传
  (防空悬:facs_au 在生产图真受 coping 影响,非只单测 decode_channels)
- CompositeChannelDecoder 注入;facs_csv ext loader + train_facs --ext(真权重待 AU 标注数据)

映射方向由三席设计门定(Gentsch et al. 2015 PLoS ONE 肌电直证:高控制→皱眉肌 AU04+AU23、
低控制→额肌 AU01/02+颊区 AU20;心理席连续性+象限守卫;CS 独立路径 9 约束);系数幅度工程可动。
806 passed / 6 skipped 零回归;ruff/format/mypy 干净;code-reviewer 独立门整改后 PASS
(W1 空悬接线已修 + 图内端到端断言坐实)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…数据合成)

打通「个人无挂靠拿数据集 → 训 facs_decoder_ext.pt」的合成这一步:对人脸图跑 OpenFace 得
AUxx_r(0-5),本脚本按图名与每图 (valence,arousal) 拼、归一化,产 load_facs_csv_ext 要的
labels_ext.csv(valence,arousal,AU01..AU23,intensity)。

- 两种 VA 源:--va-csv(原生 VA,如 DiffusionFER/AFEW-VA,--va-scale 归一);
  --category-col(只有情绪类别时按 Russell circumplex 映射,仿项目 ravdess.EMOTION_CODE_TO_VA)
- AU _r/5→[0,1]、VA→[-1,1] clamp、按 success/confidence 过滤、按归一图名内连接、intensity=AU 均值
- --coping-from-category 额外输出 coping 列(愤怒+/恐惧−),为任务 C 的 (v,a,coping)→AU 预备
  (当前 load_facs_csv_ext 忽略多余列,不影响现训练)
- 纯 stdlib、torch-free(数据预处理,装不装 ml extra 都能跑)

⚠ 预期:可训练 FacsDecoder 是 predict_facs(v,a)、不吃 coping,愤怒/恐惧在 (v,a) 同点——
真权重训练改善通用 AU 真实度,愤怒/恐惧的 coping 分野仍由解析占位承担(要从数据学需任务 C)。

新测 tests/test_build_facs_ext_csv.py(7 测:归一/置信度过滤/join/类别映射/无匹配报错/列对齐
FACS_KEYS_EXT 漂移守卫)。全量 pytest 813 passed / 6 skipped;ruff/format/mypy(64 文件) 干净。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…idual 叠加(C2)

真权重训练(任务 B):
- scripts/build_emonet_dataset.py: laion/emonet-face-binary(CC-BY) parquet → 抽均衡子集图
  + 40 类→(v,a) 近似 circumplex 映射 → VA 表(供 build_facs_ext_csv --va-csv)。5 测。
- pyproject: 加 data optional 组(pyarrow/pillow/huggingface-hub),数据预处理专用、运行时不依赖。
- 真权重经 emonet→OpenFace(FaceLandmarkImg -aus)→转换器(1634 行)→train --ext 训出
  (loss 0.032,面部合理:笑 AU06+12/悲 AU04+01/惊 AU01+05);权重 gitignore 走 Release 分发。
- tests/test_facs_ext_pipeline_e2e.py: 转换器→train 一条龙端到端集成测试(2 测)。
- 诚实定语: predict_facs(v,a) 学通用 AU 平滑基准, 愤怒/恐惧 coping 分野由占位/C2 承担。

双通路差异化(任务 C1, 科学家议会设计门):
- voluntary_coping_leak 六处贯通(AffectState/SessionConfig/run/ConversationSession/chat_driver/
  expression), 默认 1.0=两头等值=零回归, 推荐 0.3, env ZERO_VOLUNTARY_COPING_LEAK。
- expression.py: 自发头(push·锥体外路)全量传 coping、随意头(pull·意志调控)传 coping×leak
  (Rinn 1984 意志部分压制不归零)。TestVoluntaryCopingLeak(7 测)。

residual 叠加(任务 C2, 科学家议会设计门):
- composite.py: 注入真 facs_model 时真模型出通用 AU 基准、coping 判别 AU(AU23/01/02/20)=
  base*(1-α)+占位coping*α, 默认 α=1.0 保 coping 分野;协议 predict_facs(v,a) 不变(避两层 breaking)。
  TestC2ResidualBlend(7 测), env ZERO_FACS_RESIDUAL_ALPHA。

其它: main.py 修历史遗留 E501; 任务 A turnkey smoke 测试。
全量 836 passed / 6 skipped; ruff/format/mypy 干净; code-reviewer 各任务独立门 PASS。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 加「定位与边界」节: Zero=情感/认知内核, 感知输入+执行操控封装在配套项目的 MCP
  (并行推进、后续对齐); 内核协议化可注入正为让 MCP 侧接进来不动内核契约。
- main.py 标注为临时验证路径(单跑内核用, 非最终对外接口)。
- 未来通道表: 输入感知/输出操控归为配套 MCP 提供; 表情通道已接真权重。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… coping live-wiring(遗留2)

科学家议会设计门(心理/数学/CS 三席)裁决,两项均纯工程接线、不须 PRP。

遗留 1 · EMONET_VA fidelity 复审(NEEDS-CHANGES):
- 对照 Warriner 2013 VAD 常模改 5 处坐标(各注「议会修正」): Longing v -0.15→-0.35 /
  Emotional Numbness a -0.6→-0.4 / Hopelessness a -0.1→-0.3 / Sexual Lust a 0.75→0.55 /
  Malevolence v -0.6→-0.75。Anger=Fear=Distress=(-0.6,0.6) 同点议会背书保留(分野属 coping 维)。
- 重训验证 loss 0.0318→0.0326(+2.5%,远低于议会 10% 阈值),坐标修正未损可训性。
- build_emonet_dataset docstring 补议会复审注; 决策+引文落 notes(gitignore 本地层)。

遗留 2 · per-turn coping live-wiring(PASS · 方案 b · additive 非 breaking):
- 问题: ExpressionAgent 注入 decoder 时走 predict_channels(v,a) 拿不到 per-turn coping →
  注入真 facs_model 后 C2 residual 用错固定 coping(α>0 无意义)。
- composite.py: 加可选方法 predict_channels_coping(v,a,coping,facs_extended)(residual 用传入值);
  predict_channels(v,a) 委托它(用 self 值),公开签名不变。
- expression.py: _decode 用 getattr 探测——有则传当轮 coping、无则回退 predict_channels(v,a)
  (旧 decoder/mock 零改动)。
- 与 C2 当时 BLOCK 的本质区别: BLOCK 的是改 FacsModel/ChannelDecoder Protocol 签名(所有实现被迫
  跟改·两层 breaking); 方案 b 是 Concrete 类加可选方法,Protocol 全不动。
- TestLiveWiringCopingAware(4 测): per-turn 透传/委托一致/图内注入路径/旧 decoder 回退。

code-reviewer PASS(遗留1忠实·遗留2零回归严格·协议不变·C1×C2交互无重复衰减);
整改 W1/W2(调用方契约注释)+ I6(runner/chat_driver 过时 TODO 注释更新)。
全量 840 passed / 6 skipped; ruff/format/mypy 干净。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
训好的 FacsDecoder 真权重此前只在测试构造、生产 --chat 走占位路径(decoder=None)。
本次让它经 env 门控真正进到 ConversationSession。

- chat_driver 加 _build_expression_decoder(facs_extended):ZERO_FACS_MODEL_PATH
  未设/空 → None → 解析占位路径(逐字零回归);设了 → 延迟 import load_facs_decoder
  (torch 只在门控分支拉入·守热路径隔离) → 构造 CompositeChannelDecoder 作
  expression_decoder 注入会话。
- 三系数 ZERO_FACS_K_AROUSAL/K_COPING/RESIDUAL_ALPHA 构造期一次读入
  (默认 1.5/1.2/1.0=零回归·不在 step 热路径重读)。
- facs_extended 单一来源 ZERO_FACS_EXTENDED 同驱模型 extended 与 state 门控
  (守 composite 键集对齐契约·无第二真相源)。
- fail-fast(区别于 perception.py 文本辅助流的 fail-soft):配了权重路径即声明真模型
  为表情主路径——形状不配对(RuntimeError size mismatch 穿透)/文件不可读(翻译成指向
  ZERO_FACS_MODEL_PATH 的 RuntimeError·不裸抛 torch 堆栈)一律不静默降级占位。
- per-turn coping 经遗留 2(predict_channels_coping·方案 b)已可达。

.env.example 加「真表情解码器注入」段(ZERO_FACS_MODEL_PATH + 两 K 系数) + 修 residual
段(占位路径下不读)。tests/test_chat_driver_expression_decoder.py(8 测:默认关零回归/
工厂默认传 None/门控开构造+三系数贯通/系数默认/形状不配对+文件缺失+α 越界三种 fail-fast/
ZERO_FACS_EXTENDED 同源)。

全量 848 passed / 6 skipped;ruff check/format/mypy src main.py 干净。
code-reviewer 独立门首轮 NEEDS-CHANGES(0 BLOCK/4 WARN) → 整改后复验 PASS。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
表情通道补两个通用 AU:AU26(恐惧/惊讶下颌开合)、AU17(厌恶/悲伤颏肌噘嘴)。走完整
流程:科学家议会 3 席设计门(生物/心理/CS PASS)→ 计划敲定 → 落地 → code-reviewer PASS。

议会定死方向(不可工程私改):
- AU26 = arousal 主驱 + 正 valence 轻压制(cap 0.6·东亚惊讶少用保守)、无象限守卫、通用 AU。
- AU17 = −valence 主驱 + arousal 轻调制(联动 AU15~0.5×)、无象限守卫、通用 AU。
- 两者均不进 _COPING_DRIVEN_AUS(惊讶/悲伤/厌恶不在 (-v,+a) coping 分野象限·强行归入=失真)。

落地:
- FACS_KEYS_EXT/FACS_DIM_EXT 11→13(Ekman 编号严格序) + build_facs_ext_csv AU_TARGETS 12 键。
- _decode_facs_extended 两 AU 连续映射占位段(系数 ⚖ 内置默认·不拉 env 全链)。
- composite 键集契约文档 11→13;_COPING_DRIVEN_AUS 不动;predict_facs(v,a) Protocol 不变。
- 漂移守卫强制 AU_TARGETS⊕intensity==FACS_KEYS_EXT 两处同步。
- 重训 13 维真权重 facs_decoder_ext_v2.pt(loss 0.0318·隔离命名不覆盖旧 11 维·gitignore 走 Release)。

测试:TestAU17AU26Directions(8 测:方向单调/valence 压制/cap/不随 coping 符号变/无象限守卫)
+ e2e AU17/AU26 数值抽取断言(防假绿)。全量 856 passed / 6 skipped;ruff/format/mypy 干净。
真运行时实证:v2 13 键含 AU17/AU26、coping 分野(AU23/AU20)未破坏、生产 session 跑通。

code-reviewer 独立门首轮 NEEDS-CHANGES(0 BLOCK/3 WARN·10 红线全 PASS)→ 整改后复验 PASS。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
配套 MCP 项目回传第二阶段 4 接点,Q1 拍板 canonical=normalized [0,1] + 过渡 tag。
prosody 通道量纲双方言:解析占位/整向量通路出倍率 "ratio"、专用 ProsodyDecoder 出归一
"normalized"。三发射点各自诚实标注 + ExpressionAgent hoist expression["prosody_scale"],
供 MCP 情感 TTS mapper 单点读、按 tag 分支收窄校验。

- decode_channels / vector_to_channels → "ratio"(倍率·基线 1.0)
- CompositeChannelDecoder 注入 prosody_model → 覆盖 "normalized"([0,1])
- ExpressionAgent 顶层 hoist(条件挂键:未标注量纲的注入 decoder 不挂 = additive 零回归)
- 标记作 channels 兄弟键,prosody 子 dict 仍纯 3 值(不破既有断言/不污染 MCP ProsodyChannel)
- 顺带 expression_decoder.load_decoder 补 weights_only=True(对齐 load_facs_decoder 安全范式)

测试:test_prosody_scale_tag(8 测·全路径 + 两头量纲不变式)+ ravdess/expression_model 正向断言。
全量 pytest 865 passed / 6 skipped;ruff/format/mypy 干净。code-reviewer 独立门 PASS(W1/W2/W3 整改)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
为配套 MCP 感知侧(视觉/语音/生理各一条独立 (v,a) 低精度先验)开正式对外注入口,
经 state_overrides 每轮注入、append 进 AffectCore 多流竞争融合。走完整 PRP 四阶段
(refine-prd → 科学家议会设计门 → generate-prp → validate-prp → execute-prp)。
默认空 = 逐字节零回归。

议会设计门(5 席+moderator·NEEDS-CHANGES→修订后 PASS)核心裁决:
- M1 契约逐维精度形状 (name,(μv,μa),(Πv,Πa)),与 AffectCore streams 一致、直接 append
- M2 生理流 Πv 强制 MIN_PRECISION(EDA/HRV/瞳孔对效价盲·Kreibig 2010·唯一失真必改)
- 独立流竞争融合守内核价值(不平均);arousal 共源→保守低精度(Julier-Uhlmann 宁宽勿窄)
- 非目标:A3 冲突检测(选项 II 后续增量)/严格 CI/双通路不一致度接口

落地:
- external_prior.py:ExternalPrior 逐维精度类型 + EXTERNAL_PRIOR_SCHEMA_VERSION(跨仓锚)
- state.py:external_priors(default_factory=list·无图节点写) + precision_cap(0.8) + max_streams(5)
- affect_math.expand_external_priors:M6 流数/形状良构/M3 精度/M2 生理 Πv 强制(纯函数)
- affect_core.py:展开进 streams(不进 occ_prior/survival·受约束方案 c·节点只增量)
- runner/chat_driver:五处贯通 + step() 每轮显式归零 external_priors(防 LastValue 残留)
- .env.example:6 个 EXTERNAL_* MCP 参考默认(Zero 不应用·只校验+M2 强制)

code-reviewer 独立门首轮 NEEDS-CHANGES(2 BLOCK+5 WARN)——B1 LastValue checkpoint 残留、
B2 测试测不出——整改(step 归零 + spy ainvoke input 直接断言 + M2/M3 顺序 + 中性 seeking
回归)后复跑 PASS。

验证:pytest 940 passed / 16 skipped(+test_external_priors 75 测 + 跨仓契约测试);
ruff check/format/mypy 净;全套零回归断言。精度来源=MCP 提供、Zero 不硬编码;MCP 不 import Zero。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会四席(心理·主审/数学/神经/CS)+moderator 结 07-13 悬而未决 #2:
EmoBank D(SAM Dominance) 作「文本→coping_potential」监督信号「有条件可用」——
须 writer perspective 标注 + 社会支配子集筛选 + 方向校验≥80% + 训后独立性
r(V,D_pred)≤0.50;未执行修正=不可用。选独立 D 头(A)、联合 VAD 头(B) 终局 BLOCK。

仅同步 emobank.py 注释(过期「悬而未决」→「有条件可用+修正清单」),不动逻辑。
议会纪要/提案/PRP 草稿属本地 notes/PRP(gitignore),不入仓。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会裁定「文本→coping_potential(EmoBank D 监督)」有条件可用后,主程执行 PRP
相0(数据修正)+相1(训练+独立性 GATE),不触接线(相2 卡 Q3 议会定语义)。

- build_emobank_writer.py: 取 EmoBank 官方 writer.csv 连 id → writer 视角训练集
  (修正2);实测 writer 标注层 r(V,D)=0.22 << 聚合 0.38,更不共线。
- filter_emobank_coping.py: 社会支配子集筛选(修正1);实测剔 4.17% 但被剔/保留
  writer-D 均值差≈0 → writer 视角本就低社会支配污染,修正1 近乎多余(回议会)。
- gate_text_coping.py: 独立性 GATE(修正3+4)——训 output_dim=1 D 头 + 留出集
  r(V_pred,D_pred) 分级 + 方向探针。实测 r=0.18 强通过、方向 80% 擦边(呼应神经席
  构念担忧)。裁决 PASS,停在相2接线边界。

数据/权重本地(data/ artifacts/ gitignore);ruff+mypy 干净。详见本地 PRP/text-coping-prior/。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…·相2)

议会二轮裁 Q3=B3(text 作先验/control 作证据精度更新)后,/engineer 团队全流程落地
相2接线框架(默认全关零回归;PerceptionAgent 生产接线 gate 在方向判据后,本批不含)。

- state.py: Stimulus.control_appraisal float→float|None(区分 absent/genuine-zero,消
  B2 missing-as-neutral 失真);AffectState +text_coping_prior/source/precision/enabled 四字段
- appraisal.py: B3 四分支(两皆None→cp=0;仅text→先验;仅ctrl→旧行为;两皆有→π_t≤0.10
  精度加权MLE内联);enable 门收窄;已知局限注释(SAM 感受量非评价前件,不粉饰)
- emotion_lexicon.py: motivational_system 中间带[-0.15,+0.15] text 来源哑火(guard 在
  RAGE 阈值前);议会暂定值待方向判据后走env
- language.py: _appraisal_summary 透传 text_coping_source
- runner.py/chat_driver.py: SessionConfig+run()+step()归零+env(ZERO_TEXT_COPING_*)贯通
- .env.example: 两旋钮注释关(π_t≤0.10·方向判据过后可升0.15·已知局限)

code-reviewer 独立门首审 BLOCK(enable门空悬)→集成整改→复审 PASS。
1014 passed/16 skipped/0 failed;ruff全仓+mypy 50文件干净;默认全关逐字零回归。
设计见本地 PRP/text-coping-prior/ + notes/2026-07-16-*(gitignore)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会二轮把方向判据从 n=10 探针≥80% 升级为「留出集≥100 已知极性句 Wilson CI 下界≥0.70」。
direction_gate_text_coping.py 用 EmoBank writer-D 极端句(高>阈值→D_pred>0/低<阈值→D_pred<0)
作已知极性锚,算方向正确率 + Wilson 95% CI 下界。

实测(已筛/未筛一致,非伪影):方向 72%、Wilson 下界 0.62 < 0.70 = **FAIL**;
且低支配句数据饥饿(test split writer-D≤2.5 仅~17句,EmoBank 分布偏高)。实证印证
神经席/数学席「SAM D 方向≠趋近-回避底物」担忧。

结论:D 头方向质量不达议会 0.70 bar → **PerceptionAgent 生产接线不启用、维持 control_appraisal
透传(选项 C)**;相2框架(a21cc54)保留但默认关、无害,待更好方向监督的 D 头或更多低-D
数据源再评(科学决策回议会)。整条 text→coping:框架建成✓、生产启用✗(方向判据挡下)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ep/close 三工具

按边界拍板(Zero 建 server / MCP 建 client)把 ConversationSession 包成 MCP 三工具,
供配套 MCP 侧 client 接入。边界适配层(三层之外)、默认不入 core 依赖、对现有图/测试零回归。

- src/mcp_server/{mapping,registry,server,__main__,__init__}.py
  - mapping:纯函数 (v,a,coping)→Stimulus(镜像 chat_driver canonical 口径)+ external_priors array→tuple
  - registry:session_id→ConversationSession 表锁 + per-session step 锁
  - server:build_server 挂 zero.open_session/step/close_session 三点名工具;
    structured_output=False 只发 unstructured content[0].text;错误→ToolError→isError=true
  - __main__:python -m src.mcp_server(stdio 默认 / streamable-http)
- pyproject.toml:加 optional-deps 组 mcp=["mcp>=1.28"](不入 core)
- .env.example:补 ZERO_MCP_* 段
- tests/test_mcp_server.py:映射单测 + FastMCP in-memory client 往返 + 错误路径 + 并发串行化
  (13 测·importorskip 无 mcp 优雅跳过)

契约决策:step 返 expression 子 dict(避完整 step_out 内非 JSON-native 的 Fact);会话默认
workspace/coping 门控开,让 client 传的 external_priors/coping 生效;coping 省略→control_appraisal
=None=absent cue(对齐 client exclude_none + B3 新语义)。code-reviewer 独立门 PASS(0 BLOCK);
整改 W1 persona 预留说明 / W2 解耦私有工厂 / W4 会话级锁 / W5 .env.example。

回执见 D:\Zero_MCP\notes\2026-07-16-zero-answers-client-ready.md(答 client §四 3 问)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会三轮裁「换 anger/fear 符号监督」有条件 PASS 后,主程执行重训实验(含 Tanh 修复:
无末层 Tanh + BCEWithLogitsLoss;软标签 anger0.9/fear0.1;类不平衡 pos_weight)。

实测(GoEmotions Apache-2.0 训 / EmpatheticDialogues 对话域 OOD 验,均本地 gitignore):
- **in-domain(GoE)**:anger 88% / fear 91%,Wilson LB 0.83 —— **决定性击穿旧 SAM-D 幅度回归
  的 72%/LB0.62 FAIL**。签监督学到了 MSE 学不到的方向(数学席估计论 + 神经席额叶不对称背书)。
- **跨源 OOD(ED)**:**fear 稳(93%/LB0.90)**,但 **anger 掉(69%/LB0.63)FAIL**——精确命中
  神经席「叙事体 anger 动机衰减(事后回顾、行动无望)」预言。
- **加 crowd-enVENT 叙事域 anger 混训(主方案M)**:anger OOD 0.63→**0.681**(改善但仍<0.70)。
  74% 撞上心理席「无力型愤怒~20-25%噪声」构念天花板——疑为不可约下限。

结论:签监督 in-domain + fear 跨源已 production-ready;**anger 方向跨域撞构念天花板、过不了
议会 0.70 Wilson-LB bar** → 生产仍落选项 C。anger bar 可达性/是否接受非对称可靠性=科学决策
**回议会**,工程不私拍。scripts 用议会正名 motivational_direction_prior。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ew WARN)

补齐回执 §四两条后续,均本地实证 + 落回归测试:
- HTTP(streamable-http)传输:build_server 从 env 读 ZERO_MCP_HTTP_HOST/PORT/PATH → FastMCP
  (默认 127.0.0.1:8000/mcp);test_http_transport_roundtrip 起真端口 uvicorn +
  streamable_http_client 跑 open→step→close 全绿(uvicorn 缺则跳过)。
- 真 13-AU 权重路径:ZERO_FACS_MODEL_PATH → 经 server 出全 13 键 facs_au、值∈[0,1]、
  python float(JSON-safe·无 numpy 泄漏);test_real_facs_decoder_13au_path(torch/权重缺则跳过)。
- .env.example 补 ZERO_MCP_HTTP_* 段 + 0.0.0.0 鉴权警示;更正 FACS 注释
  (prosody_scale 仍 ratio——FACS 模型只覆盖 facs_au,prosody/physiology 走解析占位)。

code-reviewer 独立门 PASS(0 BLOCK);整改 W1 端口竞态(bind 的 socket 直交 uvicorn)/
W2 tear-down 有界(wait_for 5s)/W3 HTTP_PORT int fail-fast/W4 测试断言键名精确+值域[0,1]/
W5 启动期 fail-fast 文档化。全量 1029 passed / 16 skipped 零回归;ruff/format/mypy(56 源) 干净。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
P0 三路切分独立验证 anger 置信弃权门(选项δ),结果=边界·欠功效→回议会裁决 NEEDS-CHANGES:
anger 不解锁热路径、净落选项α(仅 fear·LB≈0.88 production-ready),anger 方向先验维持默认关。

- scripts/validate_anger_abstain.py(新增):V_cal选阈冻结/V_test单跑/V_reserve存档,堵上轮
  「同集扫多阈值挑过关」选择偏差;1000种子稳健性披露(24%过·中位LB0.675·预注册83分位)+
  全量点估计(n=214 LB=0.7152)。数学席校正:24%=功效不足非噪声,真值≈0.775略超bar、n=83
  独立留出确认不了。只读权重/CSV·只写notes/·不训练·不碰热路径。
- src/mcp_server/server.py:coping_potential_enabled MCP 默认 True→False(CS席 BLOCK 整改)——
  与生产/chat(state.py:88)默认关一致·消「生产关·MCP开」治理旁路;external_priors(workspace)不动。
- src/agents/{appraisal,emotion_lexicon}:补非对称来源/命名边界/弃权局限注释;神经席「情境无关=
  防御行为触发层面」(LeDoux&Brown 2017/Barrett 2017)限定;code-reviewer W1/W3「训练方案已定·
  接线未完成」澄清。纯注释无逻辑改动。

议会落库 notes/2026-07-18-anger-delta-validation-council.md(本地)。code-reviewer PASS(0 BLOCK)·
ruff+mypy净·1029 passed/16 skipped 零回归。B1-B6 待议会(MCP边界终定/STABILITY指标重构/改50-50提功效/精度分设/confrontational语料/Q3归责轴)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
数学席 B3:官方 40/40/20 在 anger n=242 数据饥饿下 V_test 功效偏低。对同一数据/权重跑
40/40/20 vs 50/50 vs 60/40 vs 40/60 × 1000 种子对比:

- 40/40/20(官方) V_test≈97  δPASS 24.0% LB中位0.6749
- 50/50          V_test≈121 δPASS 35.7% LB中位0.6876
- 60/40          V_test≈97  δPASS 24.6% LB中位0.6749(大V_cal 无用·V_test仍97)
- 40/60          V_test≈145 δPASS 38.0% LB中位0.6936

关键:加大 V_test 抬 PASS 率(24%→38%)但**中位 LB 仍卡 0.70 边界**(搬不动 ~0.77 构念天花板);
60/40 几乎无用(V_test 不变)。故单纯换切分≈同一天花板下反复掷骰,真杠杆是 B5 confrontational
语料(抬真值);议会须权衡是否值得 + 是否要求新数据预注册(防同数据反复重切=变相 snooping)。

- scripts/validate_anger_abstain.py: _three_way_split 加 split_cal/split_test 参数(默认不变·
  向后兼容·backward-compatible),使协议可配置、复用一致切分逻辑。
- scripts/anger_abstain_protocol_power.py(新增): 复用切分/度量原语跑功效对比。非新裁决、
  官方预注册仍 40/40/20、anger 解锁属议会定。ruff+mypy 净。落库 notes/(本地)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会 B5 综合裁定 SemEval-2018 作 validation-only 第二 OOD 源(research-only·不训练·同 ED
定位·零代理噪声·四席共同背书)。E-c English test-gold signed 子集 anger 962/fear 346·full
coverage 分侧 Wilson LB。

实测(权重 M·GoEmotions+crowd-enVENT·SemEval 真 OOD):
- anger 87.9%(846/962) Wilson LB=0.857  ✓✓(决定性过 0.70·n=962 高功效)
- fear  75.7%(262/346) Wilson LB=0.709  ✓(勉强过·弱于 ED 的 0.90)

净结论:**anger 的 ~74% 天花板是域特异的(ED 事后回忆/倾诉偏置),非本质下限**——换
confrontational Twitter 语料 anger 方向 74%→88%,心理/神经席「可行动性恢复趋近信号」预言兑现;
且 fear-稳/anger-脆 的非对称本身域依赖(SemEval 上 anger>fear),部分推翻「anger 本质不可靠」。
数据 gitignore(research-only 仅验证·无 license 传染)。**非解锁裁决·anger 解锁仍属议会定**。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会红线:text→方向先验作独立低精度标量流·绝不与内核 VA 共线。解锁 gate 顺序=
方向门(SemEval anger LB=0.857 已过)→独立性门→解锁。实测(权重 M·SemEval 全测试集 3259 条):
r(V_pred,D_logit)=-0.031·r(V_pred,D_tanh)=-0.025·|r|≪0.50 → **PASS(正交)**。
原理:anger/fear 同负价·方向头只分趋近-回避符号·故对 valence 无信息 r≈0。

两个 named 解锁前提现全满足(方向门 SemEval✓ + 独立性门✓);anger 解锁决策仍属议会/用户定。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会收官裁决 notes/2026-07-20-anger-unlock-decision-council.md:**域条件化解锁**(confrontational
域内·取代 δ 全域弃权·非全域无条件)。SemEval OOD 实测 anger 88%/LB0.857(confrontational)vs
ED 74%/0.68(叙事)——**anger 天花板是 ED 域特异非本质下限**;两门均过(方向门 SemEval✓+独立性门
r=-0.031✓)。纯注释/文档订正无逻辑改动:

- appraisal.py:① 改双向域依赖(anger/fear 各有弱域·删「跨源~74%/LB<0.70」)+E-c 宽定义残余不确定性;
  ③ 解锁状态改域条件化(opt-in·调用方注入 control_appraisal·热路径不建判别器·W1 接线前置)。
- emotion_lexicon.py:「跨源 LB≈0.90」加 ED 叙事域限定(Twitter fear 0.709·「fear 全域稳」是幻觉)。
- .env.example: ZERO_TEXT_COPING_ENABLED 补域条件化 opt-in 说明。

工程含义:opt-in 默认仍关(零回归 1029 passed 不变)·真正生效前置=W1 PerceptionAgent 接线(属议会
B 类·须议会认可接线设计后走 /engineer)。ruff+mypy 净。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…opt-in 默认关)

议会 anger 域条件化解锁(notes/2026-07-20-anger-unlock-decision-council.md)的工程落地 W1:让
PerceptionAgent 经 DirectionHead 产出 text_coping_prior,B3 分支2/4 方能真正消费(此前恒 None·
形同虚设)。architect→implementer→test→code-reviewer 全流程;零回归安全默认。

- src/agents/models/direction_head.py(新):DirectionHead 推理封装 + load_direction_head 工厂·
  延迟 import torch(顶层仅 TYPE_CHECKING)。从 scripts/ 平移(训练版保留·加同步注释 WARN-5)。
- src/agents/perception.py:_build_direction_head() 工厂(ZERO_DIRECTION_HEAD_MODEL_PATH 门控·
  未设→None·fail-soft) + __call__ 经 state.text_coping_enabled 产出 text_coping_prior(encode→
  logit→弃权门|logit|<τ(默认0=inert)→tanh);每路径显式写键防 LastValue 残留(含 stim=None·WARN-1)。
- tests/test_perception_direction_head.py(新·32 用例):零回归/opt-in/产出/弃权门/节点契约/B3 集成。
- .env.example:ZERO_DIRECTION_HEAD_MODEL_PATH + ZERO_ANGER_ABSTAIN_LOGIT_THRESHOLD 旋钮。
- appraisal.py/emotion_lexicon.py:「接线未完成」注释订正为「W1 已接线」(WARN-2)。

域条件化=方案a(调用方每轮设 text_coping_enabled·不建节点内域判别器);B1 科学决策(域方案b/弃权门
激活/τ值)未实现·留 env 旋钮默认关·须议会认可后激活。opt-in 默认关(MODEL_PATH 未设+enabled
False→恒 None→分支1/3 零回归)。code-reviewer 0 BLOCK·5 WARN 全整改。ruff+mypy 净·1061 passed。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
数学/神经席点 anger 单源局限:SemEval(Twitter) 单个 OOD 源须再一 confrontational 源交叉排除
Twitter 媒体混淆。EmoryNLP(Friends 口语对话·不同媒介·原生金标 Mad/Scared·Apache·仅验证):

- anger(Mad)   1064/1332=79.9% Wilson LB=0.7764 ✓(跨第二媒介复现·单源局限解决)
- fear(Scared)  469/1645=28.5% Wilson LB=0.2638 ❌❌(崩)

净:**anger 跨两 confrontational 媒介稳健(SemEval 0.857+EmoryNLP 0.776)→强化域条件化解锁依据;
fear 高度域脆弱(ED 0.90→SemEval 0.709→EmoryNLP 0.264)→δ「fear 全域 production-ready」被证伪·
fear 才是真正域脆弱那个**。提请议会重估选项α fear 全域可靠性 + B3 精度分设 fear 数值 + fear 是否
也须域条件化。局限:EmoryNLP 表演式对话不完全排除 performative(真排除需自然对话如 DailyDialog)。
数据 gitignore(Apache·仅验证)。非解锁裁决·解锁属议会定。落库 notes/2026-07-20-emorynlp-*.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会 fear 重估裁决 notes/2026-07-20-fear-domain-fragility-council.md:EmoryNLP 第二源 fear 崩
(0.264) 证伪「fear 全域 production-ready」→**选项 α 重构为「fear 域条件化(生存叙事域·对话域默认
关·与 anger 对称·home 域相反)」**。纯注释无逻辑改动:

- appraisal.py ③→补 ④ fear 对称域条件化:删「fear 不弃权但 Twitter margin 小」→ fear 三源
  ED 0.90(CeA-PAG)/SemEval 0.709(BNST)/EmoryNLP 0.264(崩)·fear 也域依赖 home 域与 anger 相反·
  当前默认关·域条件化激活须独立于 control_appraisal(符号=方向轴非域轴)。
- emotion_lexicon.py:fear 「跨源 LB≈0.90」补 EmoryNLP 0.264·「fear 全域稳」证伪·fear 也须域条件化。

anger/fear 都域依赖·home 域相反(anger=confrontational·fear=生存叙事)。fear 当前默认关(零回归·
无 BLOCK·CS 席确认从无 fear-only 开关)。B 类待议会:π_t(fear) 域数值/fear 域激活形式化/级联误差 ε/
DailyDialog 第三源。ruff+mypy 净·1061 passed 零回归。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会设计门 PASS(四席数学/心理/神经/CS+moderator·NEEDS-CHANGES→PASS·无 BLOCK)。
control_appraisal 符号=方向轴,正交的域轴(confrontational vs 生存叙事)此前无字段承载,
control_appraisal=−1 分不开生存 fear(CeA·稳0.90)与表演社交焦虑 fear(BNST·崩0.264)。

- state.py: Stimulus 加 domain: Literal[confrontational/survival_narrative/neutral]|None
  + model_validator 边界层 (domain,ctrl符号) 一致性 fail-fast(覆盖全构造入口)。
- perception.py: _domain_direction_accepts 谓词 + _compute_text_coping A1 热路径域门
  (枚举+符号比较·LLM-free·域调用方注入·domain=None 整门旁路逐字不变=零回归)。
- mapping.py: stimulus_from_payload A-map domain 提取+类型校验。
- appraisal.py: A-C1 注释(CeA/BNST 保守化为机制假说·补 Grogans 2023 SCAN 反证)。
- tests: test_b2_fear_domain.py 46 用例(四象限+neutral两弃+边界 ValueError+A-W1 旁路+节点契约)。

热路径不建域判别器(域调用方注入);独立标量流不进 fuse_terms/occ_prior/survival;
fear 生产解锁默认关(待 DailyDialog 第三源域稳定性验证·议会定)。
全量 1107 passed(1061 基线+46·零回归)·ruff+format+mypy 净·code-reviewer PASS。
落库 notes/2026-07-20-fear-domain-activation-b2-{council,design}.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
承接 B2 设计门 T-3(fear 生产解锁须 DailyDialog 第三源域稳定性验证)。DailyDialog=人写
自然日常对话(非 Friends 表演·CC BY-NC-SA·仅验证不训练·data gitignore),回答「对话域 fear 崩
是表演偏置还是真实不可靠」+ 量化对话域 π_t(fear)。

结果:anger LB=0.730 过·fear LB=0.582 不过但未崩(n anger=1022/fear=174·与官方计数逐字吻合)。
四源 fear 单调域梯度 ED 0.90 > SemEval 0.709 > DailyDialog 0.582 > EmoryNLP 0.264:
① EmoryNLP 崩(0.264)部分是表演 artifact(自然对话 0.582 高 32pp);
② 但对话域 fear 即便自然对话仍 <bar → 双重确认 fear 域条件化设计正确(对话域默认关忠实);
③ anger 第三对话源再过 → 跨对话媒介 robust。
关键限定:DailyDialog 是对话域·非 survival_narrative 源 → survival 单源(ED)OOD 风险未解,
fear 生产解锁仍属议会定。仅验证·非解锁裁决。落库 notes/2026-07-20-dailydialog-third-source-validation.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会 DailyDialog 第三源后 fear 解锁裁决(notes/2026-07-21-dailydialog-fear-unlock-council.md·
四席+moderator·NEEDS-CHANGES→PASS):fear 维持默认关(机制建成非翻默认)·π_t(fear)=0.08。

A5 MCP 治理旁路修(CS 席 WARN-1·A6 同类):
- server.py _build_session_config: base 补 text_coping_enabled(ZERO_MCP_TEXT_COPING_ENABLED
  默认 False·对称 coping) + _MCP_GOVERNANCE_GATED_FLAGS 禁覆写集,overrides 过滤排除两解锁门
  → text_coping_enabled/coping_potential_enabled 只受 env 治理·client config override 静默忽略
  (堵 A6 只改默认没堵 override 的残洞·防「生产关·MCP 开」旁路)。
- tests/test_mcp_server.py: +6 治理测试(默认两门 False·两门 override 忽略·两门 env 正路·
  非门控字段 override 不误伤·default 测试 delenv 隔离防假绿)。
- .env.example: 补 ZERO_MCP_TEXT_COPING_ENABLED + 订正 A6 后过期注释(两门默认关·env 显式开)。

A 类注释订正(纯注释·零运行时):
- appraisal.py ④段: 对话域 fear sub-bar 两层原因(构念异质 anxiety≠fear 主因 + 体裁放大·
  DailyDialog 0.582 高 EmoryNLP 0.264 +32pp 证两层)+ π_t(fear)=0.08 闭式映射 + R 残余风险
  披露(ED⊂survival·d_HΔH 未量化·单源=工程近似·ε≤p_mis+0.10·须第二生存源 LB≥0.80 才可解锁)。
- regulation.py: suppression 补 Gross 过程模型末端干预注释(压表达侧不改内核体验)。

四源 fear 梯度 ED 0.90>SemEval 0.709>DailyDialog 0.582>EmoryNLP 0.264;anger 三源全过强化 B1。
WARN-3 fear 专属门 ZERO_FEAR_DOMAIN_ENABLED 议会裁随 B1 前置(本轮不落)。
全量 1113 passed(1107+6·零回归)·ruff+format+mypy 净·code-reviewer PASS。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…默认关零回归)

议会 B1 anger 解锁收官裁决(notes/2026-07-21-b1-anger-unlock-final-council.md·四席+moderator·
PASS·唯一 BLOCK=WARN-3 fear 门):anger confrontational 域解锁依据充分(三源 0.857/0.776/0.730
全过·比 fear 单源背书更强)·anger 保持 opt-in 默认关(翻默认=产品定)·fear 维持默认关。

WARN-3 fear 专属门(语义「ZERO_FEAR_DOMAIN_ENABLED=False 时任何路径不得产出 fear 域激活」·
架构师审计确认两泄漏路径·无第三·(c) 组合门覆盖):
- state.py/runner.py/chat_driver.py/server.py: fear_domain_enabled state flag 全链贯通
  (ZERO_FEAR_DOMAIN_ENABLED chat 面 + ZERO_MCP_FEAR_DOMAIN_ENABLED MCP 面·默认 False·
  进 _MCP_GOVERNANCE_GATED_FLAGS 防 client override 旁路·同 A5 治理)。
- perception.py 路径一门:survival_narrative + not fear_domain_enabled → text_coping_prior=None
  (流卫生·anger confrontational 不受)。
- emotion_lexicon.py 路径二门:motivational_system coping<COPING_FEAR_THRESHOLD →
  "fear" if fear_domain_enabled else "rage"(覆盖 control_appraisal 直注·perception 拦不住的路径)。
- tests: +test_a1_fear_domain_gate.py 36 用例(6-class·含 ctrl 直注路径二)+ 更新 4 既有文件
  survival×fear & coping<-0.3→fear 断言(加门后默认 rage/None=议会裁定正确默认·非破坏)。

A2-A6 注释订正(纯注释): anger 三源 R 披露(d_HΔH 可估·极差 0.127·ED 0.68 不解锁) ·
emotion_lexicon fear 全域稳失真订正(ED 单源幻觉·补 SemEval 0.709/EmoryNLP 0.264) ·
τ 双线注释(数学无增益/心理神经 Kelley 沉思型·保留 inert 待重 calibrate) · Harmon-Jones 2003 双引区分 ·
anger 三源信息论保证。

facs 表情层 fear-AU 守卫=B 类回议会(code-reviewer+集成裁:WARN-3 治 fear 标签/符号已完整·
facs fear-AU 属 coping_potential_enabled+facs_extended 独立门下游·延伸门到表情层=工程私拍算法边界)。
全量 1159 passed(1113+46·零回归)·ruff+format+mypy 净·code-reviewer PASS。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
议会四席(CS/神经/心理/生物+moderator)裁定表情层 fear-AU(AU01/02/20·
coping<0 驱动)与 WARN-3 fear 专属门正交·当前不加门——FACS AU 是情绪判定的
下游运动兑现(Rinn 1984/Gothard 2014 双通路临床解离·LeDoux&Brown 2017
防御行为≠情绪意识·Barrett 2019 fear-AU 一致性全情绪唯一低于偶然),由
facs_extended+coping_potential_enabled 双层门独立治理·anger 解锁不泄漏 fear
表情·非活漏洞。

- affect_math.py: A1 Gentsch 2015 注释降调(gambling task 实测 coping→frontalis
  主效应不显著·仅交互效应·未测 AU20)+ A2 fear-AU 段头正交边界注释
- state.py: A3 fear_domain_enabled docstring 补表情层正交边界 + 解锁时重裁悬置

纯注释订正·1159 passed 零回归·ruff+format+mypy 净。
落库 notes/2026-07-21-facs-fear-au-domain-gate-council.md。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
WizardHeHeJun and others added 3 commits July 21, 2026 22:39
anger confrontational 域解锁在 chat 面生效的前置——chat_driver 原不注入
domain·翻 ZERO_TEXT_COPING_ENABLED 会 domain=None 全域生效违议会「仅
confrontational 域解锁」。议会四席(CS/数学/神经/心理+moderator)裁协议
A(调用方轮次级注入·底座)+D(domain=None 兜底)+B(opt-in 确定性词典桥·
限 confrontational 二值·须留出集验证·BLOCK survival_narrative)·C 列 B 类。

- emotion_lexicon.py: infer_domain(text)->Literal["confrontational"]|None
  复用 _VIOLATION_WEIGHTS·weight>=1.0 强信号且非自指→confrontational·否则 None·
  Literal+assert 双保险(值域 {confrontational,None}·绝不产 survival_narrative)
- chat_driver.py: text_domain_enabled 门控(ZERO_TEXT_DOMAIN_ENABLED 默认关·
  仿 standard_compliance)+ step() 注入 domain(不配 ctrl·validator no-op)
- .env.example: 补 ZERO_TEXT_DOMAIN_ENABLED 节 + anger 启用指南订正(MCP/chat 面差异)
- tests +12(infer_domain 7 含 BLOCK survival 值域断言 + 门控集成 5)

T-1 词典桥合红线(判别器边界=用模型/训练/LLM 非做分类本身·对抗词汇快检有
杏仁核底物 Isenberg 1999·三路体裁分类属 FPN 慢通路)。集成审计三处 Stimulus
构造入口 step() 单点足够(run() 不从文本造·无遗漏)。B 词典桥生产开放须先
B-domain-holdout 留出集 Wilson precision>=0.53(未做·数据依赖)。

全量 1171 passed 零回归(1159+12)·ruff+format+mypy 净·code-reviewer PASS。
落库 notes/2026-07-21-livechat-domain-injection-council.md。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
B-fe fear 生产解锁的第二独立验证源(议会 2026-07-21/22 设计门+B-5 终裁 PASS·
notes 落库)。fear 维持默认关(翻默认=B-fe-unlock 产品定·工程不私翻)。

- isear_direction_ood.py: ISEAR 第一人称情绪前因情境(第二生存源·CC BY-NC-SA·
  仅验证不训练)·全 fear/anger baseline(选项 α·不提纯)·Wilson LB。实测
  fear LB=0.918(1016/1087·>ED 0.90)第二生存源初步成立·anger 0.615 叙事域弱(镜像)。
- emotion_stimulus_direction_ood.py: Emotion-Stimulus(Ghazi 2015·research-only·
  句级混合体裁独立交叉源)·XML tag 解析·fear LB=0.781/anger 0.748·加固跨体裁稳健。

两脚本仅验证不训练·数据 data/raw/ gitignore·注释禁 CeA/BNST 解剖标签改
phasic/sustained 功能语言(Didier/Grogans 2026)。B-5 科学门 PASS·对称 anger·
fear 维持默认关(体裁缺口未闭合·翻默认产品定)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
B-5 议会心理席体裁缺口(ED/ISEAR 均书面回忆叙事单体裁)→找第三个非书面回忆
survival 体裁源提升 diversity。Tales-Emotion(Alm 2008 童话·GPLv3 底本 Gutenberg
公版·仅验证不训练·gitignore)虚构第三人称叙事·视角/时态/来源全正交于 ED/ISEAR。

⭐诚实结果(翻转性):fear LB=0.7015(128/166=77%·仅过 0.70)·anger 0.624 FAIL
(叙事域 anger 弱·同 ED 0.68/ISEAR 0.615)。三生存体裁梯度 ED 0.90 > ISEAR 0.918 >
Tales 0.70 → **fear 可靠性对体裁敏感·书面回忆 0.90+ 部分是体裁产物**。加第三体裁源
后 fear 域内跨体裁散度暴露为 0.217(>anger 三源 0.127)→**未闭合心理席缺口·反印证之**
(两源极差 0.018 小确是体裁同质假象)→翻默认应更谨慎。仍所有威胁/叙事体裁 fear≥0.70
(非崩·对比对话域 EmoryNLP 0.264)。

注释禁解剖标签用 phasic/sustained(Didier/Grogans 2026)·标注虚构补 diversity 维非
真实性维。验证≠解锁·fear 维持默认关(B-fe-unlock 翻默认产品定·工程不私翻)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant