Desktop × 考勤核算 (attendance-tally):React 视图桥接、CAS/只读保护与 userActionOnly 闭环

Desktop × 考勤核算 (attendance-tally):React 视图桥接、CAS/只读保护与 userActionOnly 闭环 由 Archify 生成的时序图。 getTaskContext() + callStateTool(attendance_view_state) origin='ui' 只读调用 attendance_view_state(section) 返回 revision + snapshot;UI 校 mayAct 只读横幅与 dirty 防切页丢稿 用户点确认/计算 → submitAction(toolId, args, expectedRevision) 核对 taskBinding + actionToolIds 白名单 → 持久化交互回执 签发 PluginActionReceipt 并触发对应工具执行 capabilities.begin 注入 userActionReceipt → 调 confirm / calculate 可选发布/拉取客户模型:经 Host 代理连接 attendance-model-registry CAS 校验 revision → 返回新 revision + workflow.nextAction (或准入前 completed 拒绝) PluginCallJournal.settle → 主任务消费 nextAction 打开下一阶段视图 阶段 1: window.aida 宿主桥接、attendance_view_state 拉取与 mayAct / dirty 边界保护 阶段 2: 用户点击门禁按钮 → submitAction 回执签发 → expectedRevision CAS 校验 阶段 3: workflow.nextAction 自动推进视图、准入前确定性拒绝与模型库发布 考勤 React UI · app.tsx · useTask · 时序参与者 考勤 React UI app.tsx · useTask Desktop PluginHost · window.aida · Lease · 时序参与者 Desktop PluginHost window.aida · Lease Python 考勤 Worker · task_provider · Workbench · 时序参与者 Python 考勤 Worker task_provider · Workbench Agent / Local Kernel · ActionReceipt · NextAction · 时序参与者 Agent / Local Kernel ActionReceipt · NextAction 考勤模型库服务 · attendance-model-registry · 时序参与者 考勤模型库服务 attendance-model-registry 图例 请求 返回 安全 异步追踪

前端只读与未保存输入保护 (app.tsx / use-task.ts)

  • • 历史卡片打开旧视图时 mayAct=false,顶部渲染黄色只读提示并禁用所有提交入口
  • • 编辑缓冲区 dirtyCount > 0 时若主任务后台切换 requestedView,UI 暂留原页面防丢稿并提供放弃切换按钮

userActionOnly 回执 × expectedRevision CAS

  • • attendance_task_confirm / calculate / publish 声明 userActionOnly: true,无宿主签发 userActionReceipt 直接拒绝
  • • AttendanceTaskWorkbench 强制比对 expectedRevision === self.revision,并发或过期提交立即拦截

准入前确定性拒绝与模型库连接

  • • calculation_rejection.py 对缺规则基线等准入前零写入拒绝标记 executionState='completed',避免 Host 误判 unknown
  • • attendance-model-registry 声明 suggestedBaseUrl,跨会话复用已确认 RuleModel 与 CalculationModel 快照