boardx / boardx/workspacex

fix(phase-10): lint-third-artifact 在 main 上常红——五束缺第 ③ 件(API 契约),需人类裁 (a) 建契约 还是 (b) 声明无 HTTP 面

Open
#1,706 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
1h 7m
Merged PRs (30d)
969

Description

## 现象

修好 `lint-ui-material`(#1702 / PR 待合)之后,`verify:harness:raw` 往下走一步,
**第二道 `lint-third-artifact` 在 main 上同样是红的**,同样会掐断整条 `verify:base`。

复现:`node .harness/scripts/lint-third-artifact.mjs`

```
✗ phase-10-live-collaboration-orchestration/group-checkin 第 ③ 件缺失 R12 0 行
✗ phase-10-live-collaboration-orchestration/module-routing 第 ③ 件缺失 R12 0 行
✗ phase-10-live-collaboration-orchestration/segment-engine 第 ③ 件缺失 R12 0 行
✗ phase-10-live-collaboration-orchestration/stage-aggregation 第 ③ 件缺失 R12 0 行
✗ phase-10-live-collaboration-orchestration/viewer-role 第 ③ 件缺失 R12 0 行
❌ lint-third-artifact: 10 处第 ③ 件不成立。
```

phase-00~09 的 30 个束全绿;红的只有 phase-10 这 5 个束。

## 与 #1702 无关(已实测,不是猜)

在同一个 worktree 里对照跑过:`git stash` 回到 main 与切回我的分支,
`lint-third-artifact` 的失败行**逐行 diff 完全一致**(各 5 条)。
#1702 只改 `.md` / `.json` / `.mjs` / `.ts`,不碰契约源码。

## 这是设计动作,不是 lint 修法

按 ADR-023 决策一,第 ③ 件(API 契约)只有两种可接受形态,**必须显式二选一**:

- (a) 建 `packages/contracts/src/<束名>.ts`(zod 单一事实源);
- (b) 本束确实无对外 HTTP 面 ⇒ 在该束 `domain.md` 里**开一节标题**说清楚
(参照 phase-00 的 `api-kernel` / `web-kernel`),并把 `coverage.md`
的「API 操作」列改填可执行的门控命令。

ADR-023 逐字不接受沉默的第三种情况——「忘了写契约」和「本来就没有 HTTP 面」
必须在文件里可区分。所以这五个束该走 (a) 还是 (b),是**要人判断**的事:
phase-10 是现场协作编排,`stage-aggregation` / `segment-engine` 这类大概率有对外面,
`viewer-role` 是否只是前端视角切换则需要看契约束设计。不该由某个 agent 顺手猜一个填上。

⚠ 注意这五个束的 `design-signoff.md` 状态与 #1687(sprint-02 已放行 F05)的关系需要一并核对:
若签核门已放行、而第 ③ 件从来没成立过,那是签核材料本身的缺口,不只是门控红。

## 建议处理

1. 先由 coordinator/人类对五个束逐束裁 (a) 还是 (b)(可打包成一次 A/B 决策,
见 `.harness/instructions/human-decision-packaging.md`)。
2. 再按裁决补契约或补 domain.md 声明 + coverage.md 门控命令。

## 验证
- `node .harness/scripts/lint-third-artifact.mjs` 退出码 0
- 反证:把补上的声明/契约拿掉一个 ⇒ 必须重新变红
- `pnpm run verify:harness` 能越过这一关继续往下跑

Contributor guide

No contributing guide indexed for this repository

Research direction

Run `node .harness/scripts/lint-third-artifact.mjs` and inspect the five phase-10 bundle directories, their `domain.md`, `coverage.md`, and `design-signoff.md`, alongside ADR-023. A coordinator or maintainer must decide whether each bundle needs `packages/contracts/src/.ts` or an explicit no-HTTP declaration. Done means the decision is recorded, the required files are updated, the lint exits 0, and removing one declaration or contract makes it fail again.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
backend-api-design, build-system
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.