Z2.09.4Explicit context expiry设计

系统需要主动标记情境为过期而非无限沿用

别名: 过期标记 · 显式失效 · explicit staleness marking

概念解释

情境过期需要显式的状态标记,不能靠默认行为隐式体现。判断携带时间戳与有效期,超期时系统主动把它的状态从「当前」改为「过期」——这个翻转是一个明确的事件,而不是「没有任何事发生、旧值继续躺在那里」。

无标记的失效是危险的默认:数据留在原地、消费者各凭直觉处理(有的沿用、有的丢弃、有的报错),过期这件事在系统里没有统一的表达。有标记的失效把过期变成一等公民:所有消费者面对同一个显式信号,处置策略可以统一声明、统一审计。

机制

为什么必须主动标记、而不能让消费者自己算?因为「是否过期」的判断被下放给每个消费者时必然分裂:

  • 每个消费方各自实现「时间戳比较 + 阈值」,阈值各抄各的(有的用生产建议值、有的拍脑袋),同一份数据在不同规则眼里新鲜度不同——过期这件事失去了单一事实源。
  • 更普遍的结局是根本没人算:消费者拿到值就用,隐式假设「给我的就是新鲜的」。「最后已知值无限沿用」不是谁的设计决定,而是没人负责失效时的默认产物。
  • 显式标记把失效集中执行一次(数据侧翻转状态、发布失效事件),消费者只需声明「遇到过期怎么办」——每家的策略可以不同,但对「过期」的认定必然一致。单一认定 + 分散策略,好过分散认定 + 各自为政。

标记还有第二重作用:过期可见性。状态翻转成「过期」后,这件事进入可观测层——看板上能看到哪些判断正悬在过期态、多久了;用户查询判断时看到的是「未知(上次确认是三小时前的在家)」而非一个语气确凿的「在家」。过期从系统的内部口径变成对内对外一致的诚实表达。

边界

  • 标记不携带新信息。 判断的时间戳早就有了,标记只是把「超期」这个可推导事实变成显式状态——它省的是消费者的重复计算与不计算,不是数据的增长。期望标记解决「判断质量问题」是找错了工具:它只是让烂判断更快地暴露为「未知」,而不是把判断变准。
  • 过期态需要退出路径。 翻成「过期」的判断要么被新感知刷新(回到当前)、要么被明确废弃(删除或归档)——没有退出路径的过期态会堆积成一片永远悬置的「未知」;标记机制要配套生命周期管理,否则只是把「沿用旧值」换成「堆着旧值」。
  • 「未知」与「保守默认」要分开表达。 标记过期输出的语义是「不知道」,至于不知道时自动化该怎么办(不执行、执行保守动作、还是问人),是消费方的策略层——两层混在一起(一过期就自动执行某默认动作)会让标记机制背上它不该有的行为语义。

怎么落地

  • 判断的数据模型加状态字段(current / expired / unknown)与失效事件:超期翻转状态并向订阅者广播;消费者按声明处理,未声明的按最保守默认。
  • 用户可见的判断视图如实显示过期态:「在家(2 分钟前确认)」与「未知(3 小时前最后确认为在家)」是两种必须区分的显示——后者不许伪装成前者。
  • 过期态挂监控:长期停在 expired 的判断按类型统计(哪类传感最容易失联、哪类最常悬置);持续过期的判断说明感知链有结构性缺口,该修的是链路而不是标记。
  • 验证办法:三处一致性审计——数据层的过期翻转是否按时发生(抽查时间戳与状态);消费层是否尊重标记(触发日志里不允许出现依赖 expired 判断的执行);呈现层是否区分显示(过期判断的界面快照里不出现确凿语气)。三处全过,标记机制才算真正贯通。

延伸

  • 同组Z2.09.1 情境判断有有效期,超期后不应继续被采信 · Z2.09.2 环境快速变化时情境失效速度快于判断更新速度 · Z2.09.3 陈旧情境驱动的自动化会做出过时的决策
  • 相邻Z4.02.3 状态过期需明确标示 · Z2.07.1 系统对情境的判断结果应可被用户查看
  • 站内检索explicit staleness · data expiry · event-driven invalidation · state marking

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/Z2.09.4