session-mechanism:主会话只能由用户开(撤掉"排期建主会话"那条路)

用户报障:「技能中没有任何创建主会话的机制,除非是创建接续会话」。

病灶:supervise-persistence.md §〇 早期把「定时任务创建主会话」与「用户手动
创建主会话」并列成两种合法场景,SKILL.md §⑥ 顺着抄了一遍 ⇒ 读到的人会理解成
"这条路是允许的",于是照做。

实测事故(mcn-aigc-ontology 2026-10-14 07:31):init_workspace 装机制后建出
recurring 排期 [主]-super-i卡片采集-主会话(FREQ=DAILY;BYHOUR=09),prompt 里
写着「你是本工作区的主会话……要推进就直接建 [执行] 排期拉起任务会话」——
主会话的口径被套到了一条排期身上。排期开出来的会话恒是任务会话那一档
(is_background_automation=1)⇒ 台账里多一条"主会话",用户那边没多窗口。

改动:
- SKILL.md §⑥:改成「形态只有一种:主会话由用户手动开」,⛔ 排期拉不出主会话
- supervise-persistence.md §〇:表格两列改一列 + 新增事故回放小节
- supervise-persistence.md §八:删掉「B · 定时任务创建主会话」整行
- architecture.md §1:新增《主会话怎么来:只能由用户手动开》段
- session-rules-check.py:新增判据 ⑬ main_sched(扫排期名以 [主] 开头或含
  "主会话" ⇒ ACTIVE 报 fail、非 ACTIVE 报 warn);扫描面 recurring 与 once 全含
- SKILL.md 体检清单:十二项 → 十三项,补 ⑬ 变异对照记录

判据验收(非恒绿):喂 mcn 区真数据三种输入 —— 原样 PAUSED ⇒ warn;
伪造成 ACTIVE ⇒ fail;无此类排期的区 ⇒ ok。

同批带上的既有改动:supervise-launch.py 路径相对化 + 三级取值(禁回落 ~)。
This commit is contained in:
admin committed 2026-10-14 09:48:01 +08:00
1 parent aa89ee0333
commit 053a6a6723
5 files changed
+178 -24

No files matched your search

@@ -108,6 +108,14 @@
**宿主(WorkBuddy 本体)=地基,⛔ 不是第 6 个主体**。它只提供四样:**状态**(三张只读表)/**调度**(自动化排期=**唯一能开新会话的通道**)/**事件**(钩子)/**互斥**(域锁)。
🔴🔴 **主会话怎么来:只能由用户在 WorkBuddy 里手动开**(2026-10-14 重申,用户原话「**技能中没有任何创建主会话的机制**」)。
· **⛔ 排期开不出主会话** —— 排期拉起的会话恒是任务会话那一档(`is_background_automation=1`);
它顶着 `[主]-…` 的名字也**不是主会话**:台账里多一条,**用户那边根本没多窗口** ⇒ 让人误以为"机制自己创建了一个主会话"。
· **排期只用于派活与检查两条线**:`[执行]-[<类别>]-<具体>`(主会话派活)/`[检查]-[结果检查/目标检查]-…-第N棒`(常驻建)。
· **接续会话**是主会话撞阈值时**由它自己建出来的形态**(角色继承被接续那条),⛔ **不是**"机制建主会话"的又一条路。
· 判据:`session-rules-check.py` ⑬(`main_sched`)—— 报本区有没有「顶着主会话名字」的排期。
· 实测事故 ⇒ `supervise-persistence.md §〇`(mcn-aigc-ontology 2026-10-14 07:31)。
🔴 **职责硬边界(2026-09-29 用户定案)**:**「投递(通知主会话)」唯一属于投递** —— 目标检查**只维护队列/台账与投影**,⛔ **不做任何投递**。
· 理由:两条路径各自判重 ⇒ 同一内容**成对重复投递**(实测:同 hash 秒级两次)⇒ 每次投递都往主会话**会话队列里压一条** ⇒ 压满即"卡死假象"(22:53 那次事故的根因)。
· 🔴 **2026-09-30 更新**:常驻程序的投影轮(`--once`)必须传 `mutate=False`,**⛔ 不许消费队列**(否则"消费掉却不投递" ⇒ 通知永远发不出去)。详见 **§4.2**。