Commit b2a0c1d86543e6561a2b61c55b0249185c336261

Authored by yibo
1 parent 2abb0820

docs(27-P3C): max_parallel_tasks 放 company.json —— 开放问题全部关闭

companyService.get 已经在读这个文件,零新增读路径;建表要多一张表、
一套读写、一次迁移,而目前公司级配置项只有这一个。涨到 3 个以上时
再考虑建表。

这是 P3C 最后一个开放问题,§十一 至此全部关闭。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs/todo/system-design/27-p3c-goal-task-model.md
@@ -444,7 +444,9 @@ for (const t of queuedTasks) { @@ -444,7 +444,9 @@ for (const t of queuedTasks) {
444 444
445 ### 5.2 并发上限与唯一索引 445 ### 5.2 并发上限与唯一索引
446 446
447 -`company.json` 加一个字段(不新建表,`companyService.get` 已经在读这个文件): 447 +**定案(2026-08-18):配置放 `company.json`,不建 `company_settings` 表。** `companyService.get` 已经在读这个文件,零新增读路径;建表要多一张表、一套读写、一次迁移,而目前公司级配置项只有这一个。公司级配置项涨到 3 个以上时再考虑建表(届时连 `company.json` 里已有的那些一起收)。
  448 +
  449 +`company.json` 加一个字段:
448 450
449 ```jsonc 451 ```jsonc
450 { "max_parallel_tasks": 1 } // 缺省 1 = 与今天完全同行为 452 { "max_parallel_tasks": 1 } // 缺省 1 = 与今天完全同行为
@@ -664,7 +666,9 @@ for (const t of queuedTasks) { @@ -664,7 +666,9 @@ for (const t of queuedTasks) {
664 2. ~~goal 级的验收谁做?~~ **已定案(2026-08-18):仍然是 `org-validator`**,在 goal 层再调一次同一个本体,输入是该 goal 全部 task 的产物合集。详见 §四.10。 666 2. ~~goal 级的验收谁做?~~ **已定案(2026-08-18):仍然是 `org-validator`**,在 goal 层再调一次同一个本体,输入是该 goal 全部 task 的产物合集。详见 §四.10。
665 3. ~~失败的 task 挡不挡住依赖它的下游?~~ **已定案(2026-08-18):自动转 `blocked` 并在界面标红**,给「重跑上游」与「强制放行」两个出路;`blocked` 每次 `tick` 重算而不落死,上游恢复后下游自己回 `queued`。详见 §五.1.2。 667 3. ~~失败的 task 挡不挡住依赖它的下游?~~ **已定案(2026-08-18):自动转 `blocked` 并在界面标红**,给「重跑上游」与「强制放行」两个出路;`blocked` 每次 `tick` 重算而不落死,上游恢复后下游自己回 `queued`。详见 §五.1.2。
666 4. ~~跨公司任务总览 / 两套任务树并存~~ **已定案(2026-08-18):统一到 `tasks` 表一套,删掉会话反推那套。** 详见 §十二(批 5)。 668 4. ~~跨公司任务总览 / 两套任务树并存~~ **已定案(2026-08-18):统一到 `tasks` 表一套,删掉会话反推那套。** 详见 §十二(批 5)。
667 -5. **`max_parallel_tasks` 放 `company.json` 还是建 `company_settings` 表?** v1 选前者(`companyService.get` 已经在读那个文件,零新增读路径)。公司级配置项超过 3 个时再考虑建表。 669 +5. ~~`max_parallel_tasks` 放 `company.json` 还是建 `company_settings` 表?~~ **已定案(2026-08-18):放 `company.json`。** 详见 §五.2。
  670 +
  671 +> **本文档的开放问题至此全部关闭。** 后续新增的疑问按惯例继续往这一节追加,不要在正文里留疑问句。
668 6. ~~goal 级总预算怎么定口径?~~ **已定案(2026-08-18):预算先不考虑,不做 goal 级闸门。** `goals.budget_json` 保持砍掉。**但 `planning_tokens` / `validation_tokens` 两个记账字段保留** —— 它们不是闸门,是让 goal 层那两次 agent 调用的花费**可见**;不记就是 `defaultPlanWorkGraph` 注释点名的「隐形的一半」,而且界面上「本次拆分消耗 ~N tokens」这个确认步骤要用它。 672 6. ~~goal 级总预算怎么定口径?~~ **已定案(2026-08-18):预算先不考虑,不做 goal 级闸门。** `goals.budget_json` 保持砍掉。**但 `planning_tokens` / `validation_tokens` 两个记账字段保留** —— 它们不是闸门,是让 goal 层那两次 agent 调用的花费**可见**;不记就是 `defaultPlanWorkGraph` 注释点名的「隐形的一半」,而且界面上「本次拆分消耗 ~N tokens」这个确认步骤要用它。
669 7. ~~排队中的任务能不能改依赖?~~ **已定案(2026-08-18):可以改。** `queued` 状态开放 `depends_on` 的 `PATCH`,见 §六.3。当初担心的「改完位次怎么算」不成立:`queuePosition` 只按 `priority → seq → created_at` 排,`depends_on` 决定的是**够不够格出队**,两者正交,改依赖不动位次。 673 7. ~~排队中的任务能不能改依赖?~~ **已定案(2026-08-18):可以改。** `queued` 状态开放 `depends_on` 的 `PATCH`,见 §六.3。当初担心的「改完位次怎么算」不成立:`queuePosition` 只按 `priority → seq → created_at` 排,`depends_on` 决定的是**够不够格出队**,两者正交,改依赖不动位次。
670 674
docs/todo/system-design/27-requirement.md
@@ -550,6 +550,7 @@ git diff,最后 W13 只能把计数挪去另一个被 ignore 的文件。`file @@ -550,6 +550,7 @@ git diff,最后 W13 只能把计数挪去另一个被 ignore 的文件。`file
550 | 3 | goal 级总预算口径? | **先不考虑**,不做 goal 级闸门 | P3C §十一.6 | 550 | 3 | goal 级总预算口径? | **先不考虑**,不做 goal 级闸门 | P3C §十一.6 |
551 | 4 | 排队中的任务能不能改依赖? | **可以改**,`queued` 开放 `depends_on` 的 PATCH | P3C §六.3 | 551 | 4 | 排队中的任务能不能改依赖? | **可以改**,`queued` 开放 `depends_on` 的 PATCH | P3C §六.3 |
552 | 5 | `/api/tasks` + `TaskTimeline` 那套同名不同源的任务树怎么收? | **统一到 `tasks` 表一套,删掉另一套** | P3C §十二(批 5)| 552 | 5 | `/api/tasks` + `TaskTimeline` 那套同名不同源的任务树怎么收? | **统一到 `tasks` 表一套,删掉另一套** | P3C §十二(批 5)|
  553 +| 6 | `max_parallel_tasks` 放 `company.json` 还是建 `company_settings` 表? | **放 `company.json`**(`companyService.get` 已在读它,零新增读路径)| P3C §五.2 |
553 554
554 **定案 2 的要点是「不新造验收 agent」**:task 级与 goal 级验的是**基数不同的东西**(R-12 / NAMING §四 那张表)——task 级问「这一个 task 的 `task-goal` 达成没有」,goal 级问「N 个 task 合起来,人提的需求达成没有」。5 个 task 全 `completed` 不等于人要的东西做出来了,这个缺口正是 goal 层存在的理由。所以是**同一个本体在 goal 层再调一次**,不是复用 task 级的结论。单 task 的 goal 跳过这次调用(两级验收此时是同一件事)。 555 **定案 2 的要点是「不新造验收 agent」**:task 级与 goal 级验的是**基数不同的东西**(R-12 / NAMING §四 那张表)——task 级问「这一个 task 的 `task-goal` 达成没有」,goal 级问「N 个 task 合起来,人提的需求达成没有」。5 个 task 全 `completed` 不等于人要的东西做出来了,这个缺口正是 goal 层存在的理由。所以是**同一个本体在 goal 层再调一次**,不是复用 task 级的结论。单 task 的 goal 跳过这次调用(两级验收此时是同一件事)。
555 556