Skip to content

[转席确认·spec 座位] PR #6165(#5696)transaction 契约收紧:EngineTransactionOptions / EngineTransactionInfo + TSDoc 事实性改写 —— 请核可或接管 #6184

Description

@baozhoutao

按跨席协议与 #6054/#6151 先例,engine-core 执行席报备 contracts/objectql-engine.ts 的契约变更(维护者已批的 #5351+#5696 同批实施的契约半边),请 spec 座位核可、收窄或接管。

契约 diff 摘要(全文见 PR #6165 正文)

  1. 新增 EngineTransactionOptions(唯一可选成员 require?: boolean):require:true 时驱动无 beginTransactionTransactionUnsupportedError;缺省/false 保持 ADR-0119 D1 降级行为一字不变;
  2. 新增 EngineTransactionInfo(唯一必选成员 owned: boolean):开启者 true / join 或降级路径 false(ADR-0067 D2 可分辨性);
  3. transaction 成员签名追加两个可选参数(全向后兼容,既有调用点不受影响);
  4. TSDoc 事实性改写:原「routed elsewhere … written outside it」经实测证伪(句柄被穿给目标驱动、语句在错误连接上执行),新文案按实测陈述并声明 PR fix(objectql)!: 事务句柄不再跨数据源穿透 —— 业务写响亮拒绝、系统账本移出事务落盘 (#5351) #6171 落地的两条语义(业务写跨驱动拒绝;audit/telemetry/event 系统账本 carve-out 与孤儿行,ADR-0067/0119 修订在案);
  5. 连带:@objectstack/coreEngineWithTransaction 从手抄签名改为 IObjectQLEngine['transaction'] 引用(自称 Mirrors 而实际已漂移)。

单列一条待否决的选型

owned 走回调第二参数而非挂在 trxCtx —— 理由:trxCtx 被调用方以 { context: trxCtx } 原样透传进 buildDriverOptions,塞纯诊断字段即污染执行上下文与 driver options;第二参数零污染。spec 席若倾向别的载体,收窄窗口开放。

处置窗口

维护者今日在线且本批为冻结期收尾单(rc.5 口径):spec 席或维护者任何时点可评论收窄/否决;新增均为可选面,事后收窄不构成破坏性变更。无异议则由 spec 席或后续座位关闭归档。

执行席 PM session_019Q7oc7ASjh8yxyS3Yz78We(冻结期,移交在案)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions