[H3A-019] Domain readiness gate
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 7m
- Merged PRs (30d)
- 969
Description
## 完成契约原文(docs/proposals/PROP-HARNESS-AGENT-001.checklist.md)
> H3A-019 | P0 | ⬜ 未开始 | Domain readiness gate | 011–015 | Role/Skill/数据源缺失时 Task Assignment 保持 UNKNOWN/blocked
支撑原文(PROP-HARNESS-AGENT-001.md §6.4):
> 当目标 Domain 缺少 active Domain Role、active Domain Skill 或健康数据源时,Root Orchestrator 将 Task Assignment 保持在 `blocked/UNKNOWN` 并请求修复,不能静默退化为 Root 自己实现。
## 依赖
- H3A-010/011(`.harness/scripts/lib/domain-model.ts` + `.harness/domains/registry.yaml`)
- H3A-012/013/014/015(`.harness/scripts/lib/domain-skill-model.ts` + `.harness/scripts/lib/domain-skill-gates.ts`)
- H3A-030/031(`.harness/scripts/lib/task-assignment-model.ts` + `.harness/scripts/lib/task-assignment-root-domain-gate.ts`,跨表 gate 先例)
## 设计
跨表 gate:输入 Domain Registry + Domain Skill 实例 + Task Assignment 实例,输出对每个 Task Assignment 判定「ready」或「not ready(附具体缺失原因)」。
三层判定,逐条复用既有结论而不是重新造轮子:
1. **Role 缺失**:Domain 的 `owner` 必须真实存在于已登记身份集合——同 H3A-022a(`domain-orchestrator-binding.ts` `checkDomainOwnerIdentity`)owner 为 null / owner 是未知身份两种情况的判定条件。
2. **Skill 缺失**:Domain 应绑定至少一个 `status:active` 的 Domain Skill 实例——同 H3A-013(`domain-skill-gates.ts` `findActiveGateViolations`)「缺失 active Skill」WARN 的判定条件。本条目在此基础上往前一步:一个 Task Assignment 若指向这样的 Domain,该 Task Assignment 本身要被标记为未就绪。
3. **数据源缺失**:Domain 的 `contracts`/`verification` 字段均为空数组时视为「没有可执行的验证锚点」。Proposal §6.4 原文只写「健康数据源」,没有给出机器可判定的精确定义——本条目对该词的解释选择会在实现里如实标注,不是逐字定义。
新增文件:`.harness/scripts/lib/domain-readiness-gate.ts`(纯函数)+ 并入 `.harness/scripts/task-assignment-doctor.ts`(IO)。
今天 `.harness/tasks/` 目录 0 个真实 Task Assignment 实例(同 H3A-030/031 落地时的先例)——本 gate 今天不会对任何真实实例产生 finding,如实说明「没有输入数据可判定」,靠 fixture 单测 + 现场反证证明 gate 真的会触发。
## 免责声明
我(coord-architecture)没有合并权限。本 PR 需要独立 reviewer 按 exact SHA review,我不会自己合并。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with PROP-HARNESS-AGENT-001 §6.4 and the existing models and gates in .harness/scripts/lib/domain-model.ts, domain-skill-model.ts, domain-skill-gates.ts, and task-assignment-root-domain-gate.ts. Add fixture unit tests for missing roles, active skills, and verification anchors, then integrate the pure gate into .harness/scripts/task-assignment-doctor.ts. Done means the gate reports concrete readiness failures and honestly reports that no real task assignments are available.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100