From acfca5bf8cce116802e3f86cc1b86010b278ed78 Mon Sep 17 00:00:00 2001 From: bboonnee Date: Thu, 6 Aug 2026 15:48:36 +0800 Subject: [PATCH] H: requirements review for the Role Package abstraction proposal --- docs/todo/graph-engineering-open-items.md | 13 +++++++++---- docs/todo/role-package-abstraction-requirements.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 docs/todo/role-package-abstraction-requirements.md diff --git a/docs/todo/graph-engineering-open-items.md b/docs/todo/graph-engineering-open-items.md index ee64f6f..f4c384a 100644 --- a/docs/todo/graph-engineering-open-items.md +++ b/docs/todo/graph-engineering-open-items.md @@ -118,13 +118,18 @@ ## H. 统一 Role Package 抽象层 -**状态**:🟡 需求文档已产出,待评审/排期 +**状态**:✅ 已确认(需求评审通过,2026-08-06)→ 需求文档 `docs/todo/role-package-abstraction-requirements.md`(注:文档正文里自己写的路径少了 `todo/` 一段,实际文件在这个路径下) **来源**:不属于三份 Graph Engineering 对照笔记,是用户对照 Agentic Enterprise 产品目标("role + context + skills + applications + workflows + permissions + acceptance criteria;all essentially are context for intelligent computing")单独提出的差距检查,2026-08-06。 **背景**:逐维度核对代码发现,七个维度里六个都有对应实现(applications 是真空白),但没有被收敛成一个统一的"role package"格式——理解"Validator 这个角色完整定义是什么"现在得同时读 `agent_profile.py` + `skills/qa-task-validation/SKILL.md` + `.claude/agent-memory/validator/` + `docs/sdd/06-验收与测试锚点.md` 四个地方拼出来。更根本的问题:`role` 本身不是数据驱动的——`ORG_NODES = ("planner", "coder", "validator")` 硬编码元组,`schema.py` 四张表的 `CHECK (org_node IN ('planner','coder','validator'))` 约束——新增角色需要改代码和 schema,不是"包一个新角色进来"。 -**待办**:需求文档已产出 → `docs/role-package-abstraction-requirements.md`。核心可验证标准:能不能只靠"写一份新的 Role Package"、不改 `schema.py` 约束、不改 `agent_profile.py` 硬编码字典,就让系统认识一个新角色。已知这条改动面比 B/D/E/F/G 任何一条都大(4 张表的 CHECK 约束、`agent_profile.py` 被多处代码依赖),且 workflows 维度依赖 E 的产出。 +**需求评审结果(2026-08-06)**:方向确认,目标/非目标/FR-1~6 按原文通过,进入设计阶段。逐条核实过文档里对代码现状的描述后,发现两处需要修正/补充: + +1. **风险第 1 条的依赖清单不准确,且遗漏了真正的大头**。文档写"`ORG_NODES`/`FRONTMATTER` 被 `deploy_agent_definitions`、`org_node_trigger`、`work_graph_orchestrate` 等多处代码直接依赖"——实测 `work_graph_orchestrate.py` 根本不 `import agent_profile`,这条是误判;真正 `from src.agent_profile import ORG_NODES`/`from src import agent_profile` 的只有 `org_node_trigger.py`(校验 `org_node` 合法性)和 `project_scaffold.py`(调 `deploy_agent_definitions()` 这一个单一入口)——这部分实际依赖面比文档描述的**更小**,是个好消息。但文档完全没提到两处真正硬编码了三元组的地方:`src/work_graph_run_query.py::_VALID_ORG_NODES`,以及**分量最大的**——`frontend/app.js` 里四处独立硬编码(`ORG_NODE_DETAIL_RE` 路由正则、`ORG_NODE_ORDER` 排序数组、任务创建表单的 `