Archived
G2 之后一直不分流,根因三条,逐条修: ① 输出口载荷是空的。`outputPortsOf` 原先从**作用域**里捞字段拼载荷, 而放行那一刻草稿层已合并并清空,捞到的只剩起单入参 —— 下游节点必然缺字段。 改为:载荷取自**落地收敛的事实**,由 `releaseWrite` 回报合并了哪些行, 经 release → task → app 一路带上来。这也正是「落地收敛,输出口才发射」的字面意思: 发射的就该是已经落地的那些事实。 `LandedFacts` 给两种读法:铺平(标量取值)与逐行(数组取值), 输出口声明里 `type: 'array'` 的属性填逐行,标量属性填铺平值(驼峰/下划线两种写法都认)。 ② 一条分支起不来,把整条终态上报连坐掀翻 —— 于是**上游任务的终态也报不上去**, 流停在原地,一行日志都没有。改为:该分支记 `node-start-failed` 事件 + 落一个 blocked 实例,其余分支照走,在治理台「需处置」里现形。 (这条是先修的:正因为它,前面两条才一直查不出来。) ③ 边映射引用了不存在的路径:`G2→A3` 的 pn 取 `intake.records`(那是想象中的 LLM 出参形状)、 `G2J→A4` 的 records 取 `initiation.records`(起单时根本还没有这些行)。 按输出口的真实声明改正。 结果:A1 released → G2 并行分叉 → **A3 渠道寻源落到林佩萱、A2 替代选型落到王梓名**, 两个 loop 活动同时在跑,岗位解析正确。 gates: tsc / eslint / depcruise(317 模块)/ api-report / 393 测试 全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
66 lines
1.4 KiB
TypeScript
66 lines
1.4 KiB
TypeScript
/**
|
|
* module: task —— 唯一出口。只做 re-export,不写逻辑(编码规范 §10.1)。
|
|
*/
|
|
export type {
|
|
BudgetBreach,
|
|
LandedFacts,
|
|
BudgetCaps,
|
|
Consumption,
|
|
ControlOutcome,
|
|
ControlSemantic,
|
|
HarnessVerdict,
|
|
Paradigm,
|
|
ResumeReadiness,
|
|
StartTaskInput,
|
|
Task,
|
|
TaskRuntimeState,
|
|
TaskService,
|
|
TaskSnapshot,
|
|
TerminalCause,
|
|
TerminalState,
|
|
TickOutcome,
|
|
} from './contract.ts';
|
|
export { TaskAlreadyTerminalError, TaskNotFoundError } from './contract.ts';
|
|
|
|
export type {
|
|
ActivityLoader,
|
|
Clock,
|
|
IdGenerator,
|
|
InteractionPhaseSetter,
|
|
ListenerProbe,
|
|
MemoryRecorder,
|
|
ParadigmEngine,
|
|
PersistenceProbe,
|
|
ReassignNotifier,
|
|
SchemaValidator,
|
|
TaskEventPublisher,
|
|
TaskStore,
|
|
} from './port.ts';
|
|
|
|
export type { TaskServiceDeps } from './internal/usecase/task-service.ts';
|
|
export { createTaskService } from './internal/usecase/task-service.ts';
|
|
|
|
export {
|
|
budgetBreaches,
|
|
durationMs,
|
|
isStalled,
|
|
judge,
|
|
terminalOf,
|
|
ZERO_CONSUMPTION,
|
|
} from './internal/domain/harness.ts';
|
|
export {
|
|
applyControl,
|
|
decideTerminal,
|
|
isPassiveOpen,
|
|
isSuccess,
|
|
isTerminalControl,
|
|
landingBlocked,
|
|
RESUME_SOURCES,
|
|
rejectionKeepsRunning,
|
|
resumeReadiness,
|
|
triggersFailureDisposition,
|
|
} from './internal/domain/lifecycle.ts';
|
|
|
|
export { createTaskStore } from './internal/adapter/task-store.ts';
|
|
export { taskTable } from './internal/adapter/task-schema.ts';
|