Archived
harness 与工作台同日修:数据工单确认即入库 · 叫了人不再自动推进(两道结构闸)· 审核卡 = 终局验收卡结构 · 验收清单人点达标 · 迟到守卫不丢放行裁决 · 画面跟着这一拍发出去的卡走 · 成果详情只翻页 · 占位居中 · 进度条
human-tool / ledger / loop-engine / release / task / interaction 六模块与 app 层(desk 路由、engines、consumers、 data-order-landing、case-stamp、reset-runs、seed-activities、容器与 server 装配),web 的 desk-task (ViewRegion / chat-bubbles / review-face)与 app.css、ui-kit 图标;契约 card / manifest; 迁移 0034_task_seq 与迁移日志;api-report 快照;CLAUDE.md 快照、debt、活动开发规范、HTML 报告规范同步。 逐条口径见 CLAUDE.md 快照(2026-08-27 下午至晚)。另一会话做的,一直留在工作树没入库;与同批另两条提交互相依赖。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0167qWjeyBwvfdGovd7FWbCu
This commit is contained in:
@@ -13,6 +13,15 @@ export type DraftEntry = {
|
||||
readonly tombstone: boolean;
|
||||
/** 草稿建立时读到的基线值 —— 放行前的数据冲突检查用 */
|
||||
readonly baseline: LedgerRow;
|
||||
/**
|
||||
* **这一行已经落过地了**(2026-08-27,数据工单确认即入库)——
|
||||
* 它仍是「本单写下的行」(任务视图、`mine:`、`_rows` 这些读面照旧认它),
|
||||
* 只是那一笔已经在一道更早的门(数据工单的确认)上并进了正式表:
|
||||
* 放行时不再写它、不再为它抛事件、不拿它做冲突检查。
|
||||
* 再往这一行写一笔(人在件上改、模型 write)就把这个记号擦掉 —— 新的那一笔照旧等放行。
|
||||
* 缺省 = 没落过(老条目与不关心这一维的调用方不必填)。
|
||||
*/
|
||||
readonly landed?: boolean;
|
||||
};
|
||||
|
||||
/** 主键的规范化串:字段名排序后拼接,保证同一行的键恒等 */
|
||||
@@ -90,6 +99,8 @@ export function detectConflicts(
|
||||
): ConflictFinding[] {
|
||||
const findings: ConflictFinding[] = [];
|
||||
for (const draft of drafts) {
|
||||
// 已落地的行放行时不会再写 —— 别单后来改了它,也不是「我这一笔要盖掉别人」
|
||||
if (draft.landed === true) continue;
|
||||
const official = officialByKey.get(keyOf(draft.key));
|
||||
if (official === undefined) continue; // 草稿新增的行,无从冲突
|
||||
for (const field of Object.keys(draft.patch)) {
|
||||
|
||||
Reference in New Issue
Block a user