feat(backthink): 静默期自排 C 的判定侧(C1-1,切片三之一)
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled

- 追加 TriggerSelfWake(不动既有编号)+ SelfWakeRequest(走既有 urgency 声明通道,不新造第二条)
- escalateImport 折算收成唯一 foldDeclared(事件轮与自排轮共用、只上抬取较高档)
- DecisionInput.Heartbeat bool → Kind TriggerKind;心跳仍免检、**自排不享心跳豁免**(要求声明 ≥ warning)
- push 与档位分离:push.go 零改动即自动正确(eventDriven 对 self_wake 为 false ⇒ 照旧过 PushGate)
- 4 个变异自检(折算空操作/删自排分支/常量传心跳/非事件一律豁免)
⚠️ 本片只是判定侧:WakeNow/worker/闸属 C1-2,工具面与提示词属 C1-3 ⇒ **不得写『C 已完成』**
⚠️ 遗留 G-A(建议登记进 design/12 C.4):TriggerKind 零值=TriggerHeartbeat ⇒ 漏填=最宽豁免(fail-open);
   本片已在字段注释与单测里显式化,但规格侧应补一句或引入 TriggerUnknown
This commit is contained in:
AskaEth committed 2026-10-06 18:46:27 +08:00
1 parent ea43f07bce
commit 94da6bcd6d
8 files changed
+353 -26

No files matched your search

+6 -3
View File
@@ -7,14 +7,17 @@ package backthink
// 门(主人要求:"该发就发"——真正的事件照发,只扣下真正的重复)。
//
// 推送进行时它原子地把 tr 记为最新事件键,并在任何非事件推送
// (心跳)时清除该键,以免更早事件的再次重复
// 被中间一次反思错误地抑制。
// (非事件轮:心跳 / 启动轮 / 她自己排起的一轮)时清除该键,以免更早事件的再次
// 重复被中间一次反思错误地抑制。
//
// 自排轮与心跳同分支(清链、不去重):它既不是外部事件、就不该参与事件链,
// 因此真实事件的重复链不会被自排轮错误抑制;自排轮的推送仍由 PushGate 兜。
//
// 调用方把它跑在把推送交给 Pusher 之前;真正的重复
// 会被记为已抑制(RouteNone),而不是投递出去。
func (b *Backthink) eventRedundant(tr Trigger) bool {
if tr.Kind != TriggerEvent {
// 非事件推送(心跳)会打断同一事件链。
// 非事件轮(心跳 / 启动轮 / 自我唤醒轮)会打断同一事件链。
b.eventMu.Lock()
b.lastEventKey = ""
b.eventMu.Unlock()