feat(backthink): 自排 C1-2 本体 + TriggerUnknown 修 fail-open(V1)
- selfwake.go:WakeNow + 待跑槽容量 1(先探槽合并不过闸、槽空才过闸、同锁)+ 闸 4 轮/小时
($DATA_DIR/config/backthink.json,零新 env 键)+ 审计四条 what + 启动日志两键 + 组合根接线
- G-A(主人已批):TriggerUnknown 作零值、既有两值编号后移(语义不动),未知触发走**最紧分支**
- 5 个变异自检(拆闸/≤0 未回落/过闸挪到探槽前=G1 失效形态/槽无界/零值挪走)
⚠️ 服务侧已就绪但**她仍调不到**(自排工具面属 C1-3)⇒ 不得写「C 已完成」
This commit is contained in:
1 parent
301f8b4276
commit
ed5005307a
12 files changed
+1193
-8
No files matched your search
@@ -14,9 +14,21 @@ import (
|
||||
type TriggerKind int
|
||||
|
||||
const (
|
||||
// TriggerUnknown 是 TriggerKind 的**零值**:没有任何触发类别被声明。
|
||||
//
|
||||
// 它存在,是因为零值必须落在**最紧**的一档:此前零值等于 TriggerHeartbeat,
|
||||
// 于是「漏填 Kind」静默变成「拿最宽的豁免」(长期静默段免检)——fail-open
|
||||
// (design/12 §N C.4 的 G-A 修法,主人 2026-10-06 已批)。判定侧对未知触发
|
||||
// **不豁免、不放行**(decide.go 的 activityHeld 让它落在最后那条扣下上),
|
||||
// 推送侧也不把它当事件(照旧过 PushGate)。
|
||||
//
|
||||
// ⚠️ 它不是第四个真实触发:生产路径的每个 Trigger 都必须显式给出 Kind
|
||||
// (heartbeatTrigger / startupTrigger / triggerForSubject / selfWakeTrigger
|
||||
// 四处构造点,backthink.go 的 think 是唯一消费点)。
|
||||
TriggerUnknown TriggerKind = iota
|
||||
// TriggerHeartbeat 是周期性自主反思。它的主动推送受
|
||||
// PushGate 限流,使主人绝不会被空洞的反思刷屏。
|
||||
TriggerHeartbeat TriggerKind = iota
|
||||
TriggerHeartbeat
|
||||
// TriggerEvent 是真实事件(IoT 设备变化、提醒、与主人相关的
|
||||
// 系统事件)。它的推送绕过 PushGate——"该发就发"——只受
|
||||
// 同一事件去重约束。
|
||||
@@ -25,8 +37,10 @@ const (
|
||||
// 事件、也不是周期性心跳:推送既不绕 PushGate,也不享长期静默段的豁免——
|
||||
// 要求只是她说得出理由(见 decide.go 的 activityHeld)。
|
||||
//
|
||||
// 它是**追加**的第三个值:既有两个值的编号与标签逐字不变(改编号会
|
||||
// 静默改写已落库记录与在途请求的含义)。
|
||||
// 它是**追加**的第四个值:既有三个值的**标签与语义逐字不变**。G-A 修法让
|
||||
// TriggerUnknown 占住零值,三个值因此各后移一位 —— 这只影响进程内的比较:
|
||||
// Trigger.Kind 与 PushRequest.TriggerKind 都不落库、不上线(落库的是
|
||||
// Record.Trigger = tr.Source 字符串),所以没有存量含义被改写。
|
||||
TriggerSelfWake
|
||||
)
|
||||
|
||||
@@ -39,6 +53,8 @@ func (k TriggerKind) String() string {
|
||||
return "self_wake"
|
||||
case TriggerHeartbeat:
|
||||
return "heartbeat"
|
||||
case TriggerUnknown:
|
||||
return "unknown"
|
||||
default:
|
||||
return fmt.Sprintf("triggerkind(%d)", int(k))
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user