维护者 2026-08-06 对 #5613 裁定「契约先行(C 骨架 + A 语义)」的第一阶段,由 spec 车道 PM 拆立(session_018fxLGQdatPbBUvCgiVxg6D)。
任务
为 action body 的 ctx.session 声明契约 schema——按现状声明 ,不在本单改运行时行为:
现状形状(packages/runtime/src/action-execution.ts buildActionSession(),行号需重定位):{ userId?: string, organizationId?: string, roles?: string[] },三键均条件展开(可缺)。
roles 照现状声明,但 .describe() 必须标注:deprecated,值实为 positions(ADR-0090 D3 词汇),更名由 [runtime] action body 的 ctx.session 仍在生产 roles(值是 ec.positions)—— 自称「mirroring hook ctx.session」,而 hook 侧该键已按 ADR-0049 退役 #5613 第二阶段执行 ——声明现状不等于背书拼法。
schema 落点由 dev premise-first 判定(spec 侧 kernel/contracts 面;ScriptContext.session?: unknown 在 runtime/sandbox/script-runner.ts:71 是消费锚点)。runtime 侧把裸 any 接到该类型属第二阶段还是本单,以「本单零行为变更」为界:类型标注可做,行为不动。
pin:schema 与 buildActionSession() 实际产出的一致性事实测试(参照 docs(spec): HookContext.input 契约表改成引擎真正构造的形状 (#5273) #5668 的 hook-input-shape-contract 做法,pin 落在能执行该路径的包)。
背景
#5613 三问题:ADR-0090 D3 禁的 roles 拼法在边界被翻译回来;「mirroring hook ctx.session」注释在 #5050 后已失真;action ctx 完全无 schema(declared-nowhere/produced-anyway)。裸 any 面是漂移根因,故契约先行。
第二阶段(#5613 ,cli 车道,Blocked-by: 本单):roles → positions 更名 + 弃用窗口 + ADR-0087 语义迁移 + 注释修正。
维护者 2026-08-06 对 #5613 裁定「契约先行(C 骨架 + A 语义)」的第一阶段,由 spec 车道 PM 拆立(
session_018fxLGQdatPbBUvCgiVxg6D)。任务
为 action body 的
ctx.session声明契约 schema——按现状声明,不在本单改运行时行为:packages/runtime/src/action-execution.tsbuildActionSession(),行号需重定位):{ userId?: string, organizationId?: string, roles?: string[] },三键均条件展开(可缺)。roles照现状声明,但.describe()必须标注:deprecated,值实为 positions(ADR-0090 D3 词汇),更名由 [runtime] action body 的ctx.session仍在生产roles(值是ec.positions)—— 自称「mirroring hook ctx.session」,而 hook 侧该键已按 ADR-0049 退役 #5613 第二阶段执行——声明现状不等于背书拼法。ScriptContext.session?: unknown在 runtime/sandbox/script-runner.ts:71 是消费锚点)。runtime 侧把裸any接到该类型属第二阶段还是本单,以「本单零行为变更」为界:类型标注可做,行为不动。buildActionSession()实际产出的一致性事实测试(参照 docs(spec): HookContext.input 契约表改成引擎真正构造的形状 (#5273) #5668 的 hook-input-shape-contract 做法,pin 落在能执行该路径的包)。背景
#5613 三问题:ADR-0090 D3 禁的
roles拼法在边界被翻译回来;「mirroring hook ctx.session」注释在 #5050 后已失真;action ctx 完全无 schema(declared-nowhere/produced-anyway)。裸 any 面是漂移根因,故契约先行。第二阶段(#5613,cli 车道,
Blocked-by:本单):roles → positions更名 + 弃用窗口 + ADR-0087 语义迁移 + 注释修正。