P1 PRODUCT TRACK · REFERENCE AGENT v0.1

一条新证据到达后,AI到底应该改什么,又不该改什么?

某虚构低空设施原报告认为最近障碍物距离80米。新地图证据到达后,GeoTask不直接“刷新答案”,而是先更新世界状态、暴露旧评估已经过期的依赖、限定重算范围,再通过Control决定报告是否具备更新条件。

新证据 ≠ 新结论 ≠ 报告已发布。
eligible ≠ refreshed ≠ executed

不是GT43,而是第一次把已有能力串成一个产品闭环

REV 1基线状态障碍物80m;旧评估有效。
OBSERVATION新证据地图给出新的障碍物位置。
REV 2只更新事实障碍物位置变化;旧评估故意不跟着改。
DISCREPANCY发现旧结论当前仍写80m,但确定性重算已不一致。
IMPACT限定影响只影响距离、净空、对应报告章节。
REV 3有限重算更新两项评估;其他评分继续复用。
CONTROL行动门禁满足条件只表示报告更新eligible。

五种情况,同一套失败关闭语义

场景
Evidence
Verification
Report
Fresh / 70m
verified
satisfied
eligible,未发布
Missing
missing
unverifiable
blocked + Evidence Request
Conflict / 70m vs 30m
conflicted
conflicted
blocked,不发明优先级
Stale
stale
unverifiable
blocked + Evidence Request
Fresh / 30m
verified
contradicted
blocked,进入人工处理

真正复用的是现有公共Artifact,而不是另写一套Demo逻辑

Observation + World State

新证据先进入revision 2,只改变障碍物位置。旧评估继续保留,因此系统可以明确知道“什么事实变了、什么结论还没重算”。

Discrepancy + Correction + Impact

注册制品以精确字节绑定表达旧80m评估与新确定性距离之间的差异、允许修改的路径以及有向影响链。

Control Evaluation

证据有效、距离条件满足、人工复核通过后,只把assessment_refreshreport_refresh标记为eligible;现实写入仍由外部系统负责。

为什么不能“整站重新算一遍”

affected:
  mapped-obstacle-01.position_xy
  → obstacle_distance_m
  → obstacle_clearance_pass
  → report-v4.safety.obstacle_clearance

reused:
  accessibility_score = 84
  service_capability_score = 78
  report-v4.operator_summary

automatic_global_recompute = false
边界:Reference Agent没有自动发现全世界的依赖。影响图来自显式、有限、可验证的依赖声明。第三方或行业系统如果拥有更完整的依赖知识,可以提供更丰富的图,但不能绕过验证层自行扩大结论。

在本地重放

python3 examples/reference_agent/facility_assessment_update/replay.py \
  --scenario success \
  --check-expected

# 其他固定场景
--scenario missing_evidence
--scenario conflicting_evidence
--scenario stale_evidence
--scenario contradicted

相同固定输入应产生相同结果与replay_fingerprint。示例全部使用虚构数据,不访问Lowa-GT生产库、不发布报告、不执行现实动作。