• 真 CLI 冒烟(worktree 隔离,PORT 3010)九轮来首次把 work 节点跑起来:
    orggraph-planning 真跑 3 分钟自主裁成单 org node 零边图 → workgraph-planning
    第 1 轮产出合法图 → **自己按 Step 6 把 brd-planning / planner-validator 雇进公司**
    (W5/W6 核心验收成立,且 W7 判据生效、两者都没写进 org_graph_nodes)→
    第一个 work 节点 brd-planning 真起 CLI 子进程,产出 brd.md / contract.json /
    attempt-0.json 全部落在 run 目录内。图内预算仅 2 次调用 / 13998 tokens(上限 15)。
    
    W5/W6 · workgraph-planning 自雇:撤掉「你不招人也不辞人」,Step 6 加招聘环节,
      写死「先雇、再提交图」的顺序,给出失败分级与幂等要求
    W7 · work 层招聘不写 org_graph_nodes:按 type 与 work graph 骨架点名两条判据区分层级,
      P2 「hire org 角色 → org graph 出现该节点」的语义保持不变
    W8 · 控制台「规划组织结构」按钮(抽成 ReplanOrgGraphButton.vue,带过渡态与秒表),
      接 POST /:companyId/org-graph/replan(该端点此前无任何前端调用方);
      新增 fixtures/devloop-mock/orggraph-planning.json
    W12 · 节点失败留痕:node.output 带 output_excerpt、新增 node.error 事件。
      真跑当场救场——守卫误判那条归因正是靠它才查得出来,
      换成之前看到的只有「节点 fail、无原因、无痕迹」
    
    测试 753/753 全绿(71 文件,起点 736/68)。
    
    已知未修(下一轮):子 run 转终态不回写父 node_run 导致任务永久卡死;
    applyBoundaryGuard 用整仓 git diff 判归属会把并行 agent 的写算到当前节点头上;
    W12 的 fail_reason 未落库(概览 tab 仍为空);POST /:cid/tasks 无前端调用方。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »

  • ■ 前端路由遮蔽(既有 bug,被 P2 的 T8 暴露)
    web/src/router/index.js: CompanyAgentChat 的 path 是 /:id/agents/:agentId? ——
    agentId 可选,导致它抢占 /:id/agents,而导航栏「Team」正是指向这个地址。
    结果 CompanyDashboard 的团队 tab(连同 P2 新增的 Org Graph 区块)完全不可达,
    点 Team 打开的一直是 AgentChat。改为 :agentId 必填。
    
    ■ Org Graph 空边时凭空画出流程链(P2 T8 的 bug)
    0 条 forward 边时所有节点入度都是 0,全部落进拓扑序且 degraded=false,
    模板照常在节点间渲染 → 箭头,凭空捏造出一条并不存在的流转顺序。
    P0 迁移进来的存量公司(有节点无边)全部中招。新增 orgGraphNoEdges 判定:
    这种情况只平铺、不画箭头,并明确提示「尚未定义流转顺序」。
    
    ■ create() 仍在建 goals/ 目录(我在 OKR 正名 74ea1ff 里的遗漏)
    company-service.js 的 subdirs 列表没跟着 goals→okr 一起改,新建公司仍然产出
    goals/ 空目录。改为 okr/。
    
    ■ test-company-e2e.js 从「第 4 个断言就崩」修到 114/114 全绿
    该脚本长期整体失效,HEAD 版本同样全断言失败。四类问题:
    1. 路径过期:data/{id}/ → data/companies/{id}/;data/templates/ →
       system/templates/;data/agents/master → system/agents/master
    2. Phase 4 用 ceo 模板测「骨架是否完整复制」——但 system/templates/ceo/ 只有
       plan.md + todo.md,没有 agent.md/soul.md/config.json,测不出东西,且缺
       config.json 就没有 type='cxo',company.ceo 也标不上。改用同为 cxo 且文件
       完整的 coo。(ceo 模板本身的残缺是另一个待补的问题)
    3. 断言停留在 P1 之前:P1 虚拟引用(226489d)之后 agent.md 不再物理拷贝,
       改为 config.json.systemAgentRef + company-context.md。按新模型改写
    4. 断言停留在 T5b 之前:模板不存在时返回 hired_from_base 而非 training
    
    顺带记录一个设计缺口(未改,仅在测试注释里说明):system/templates/base/
    目前只有 agent.md + config.json,所以 base 继承出的骨架不含 soul.md /
    identity.md / tools.md / todo.md,也不含 AgentScaffold 的标准子目录结构
    (memory/short-term、knowledge、workspace 等)。这些依赖 agent-creator 填充。
    
    另删除 OKR 迁移的 *.bak-goals 备份目录及其 .gitignore 规则。
    
    验证:npm run test:unit 676 全绿;test-company-e2e 114/114;web:build 通过;
    Chrome 实机确认 Team tab 可达、空边提示正确。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • 用 9 个并行 agent 按「文件独占」划分实现 P2 的 T1-T9(T0 已于 2255f09 完成)。
    详见 docs/todo/system-design/27-p2-org-graph.md §五。
    
    阶段 A · 数据层
    - graph-db.js: org_graph_nodes 加 status/reports_to_node_id(PRAGMA 探测后 ALTER,
      幂等);全量唯一索引换成 WHERE status='active' 的部分索引,使「fire 后重新 hire
      同角色」可行;org_graph_edges 重建为执行流边(condition/edge_kind/status)
    - graph-service.js: ensureOrgGraphNodeIndex 同步改建部分索引,且 upsertOrgGraphNode
      的 ON CONFLICT 必须写成 ON CONFLICT(company_id, role_name) WHERE status='active'
      —— SQLite 的冲突目标要与部分索引谓词逐字对应,否则整条 INSERT 直接失效
    - org-graph-service.js(新): validateGraph 四项校验 + writeGraph/patchGraph/
      getGraph/removeNode,事务化,节点软删除级联失效相关边
    - routes/company.js: 四个端点 POST/PATCH/GET /org-graph + POST /org-graph/replan;
      /create 接入自动招聘 orggraph-planning + 异步触发(失败降级为空壳公司);
      /fire 接入节点软删除
    
    阶段 B · 自动生成
    - system/org-graph-templates/{dev,content,ops}.json + README:三张三段式骨架
      (规划→执行→验收,验收失败回退到执行节点),角色名遵循 {domain}-{职能}
    - system/templates/orggraph-planning/:新 system agent(type='meta-bootstrap'),
      含 §4.1 八步工作流
    - company-service.js: 模板不存在时从 system/templates/base/ 元 agent 继承骨架
      (自动带 RESEARCH→PLAN→EXECUTE→VERIFY 四段式)+ agent-creator 填充,
      新建 agent scope='company'。这是 27-E2E §八bis 元 agent 继承的落地点
    
    阶段 C · 展示
    - CompanyDashboard.vue: 组织流程拓扑链渲染 + 空态降级 + 环深度保护
    
    并行编排中发现并修复的三处(均不在原任务划分内):
    - AppNav.vue 建公司表单缺 goal 输入框 —— T0 只改了后端,前端表单没同步,
      company-goal 实际传不进来。这是上一轮 T0 的遗漏
    - graph-seed-service.js 会把 type='meta-bootstrap' 的 orggraph-planning 塞回
      org graph,与 hire() 的 guard 不一致
    - graph-agent-p1-acceptance.test.js: hire 未知角色的返回从 needs_training 改为
      hired_from_base(T5b 的行为变更),断言同步
    
    验证(独立复核,非 agent 自述):
    - npm run test:unit 676 passed / 63 files(基线 652,+24 为新增的 org-graph 用例)
    - npm run web:build 通过
    - 三个模板 JSON 实跑 validateGraph 全部通过;四类非法图各自被对应 rule 拒绝;
      writeGraph→getGraph→removeNode 级联验证通过(删中间节点后 3 条边全部失效)
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • 起因:逐条比对 27-REQ 的原话与 P2 v0.4,发现四处偏离,其中两处是设计悄悄
    改变了原意。本次修正并落定。
    
    代码(P2 §五 T0):
    - company.json 新增 goal 字段(company-goal),create({id,name,goal,description})
    - POST /api/company/create 与 update() 同步支持
    - 修的是一个实打实的遗漏:R-6 原话是"写入 company 的目标和描述"(两个字段),
      而 create() 一直只有 description。orggraph-planning 规划流水线的主依据本该是
      company-goal,此前根本拿不到。
    
    文档定案(R-13):
    - R-13.1 goal 三层递归:company-goal / task-goal / subagent-goal,与"验收逐层
      递归"对应。澄清 R-12 说的"唯一的那个 goal"其实是 task-goal;三个验收 agent
      保持通用不按层级拆分。记录一处待定:subagent-goal 按执行者命名,与另两个的
      作用域命名轴不一致(按轴应为 subtask-goal)。
    - R-13.2 公司类型完全由 orggraph-planning 推断 —— 这条**推翻了我自己记的一个
      缺陷**:审计时我把"不加 type 枚举字段"记为擅自偏离原话,实际那正是所需,
      当前设计无需改动。
    - R-13.3 新 agent 从 system/templates/base 元 agent 继承骨架(自动带四段式
      RESEARCH→PLAN→EXECUTE→VERIFY)+ agent-creator 填充,而非直接走 needs_training
      全量培养;新建一律 scope='company';innovator 训练是可选后置步骤。
      这是 R-9.2"所有 node agent 由元 agent 继承生成"在 P2 的落地点(新增 T5b)。
    - R-13.4 org graph 强制单入口,原 open question 关闭。
    
    顺带修掉 P2 的一处内部不一致:§六 承诺"提供手动触发 orggraph-planning 的端点"
    给存量公司补图,但 §四.3 API 表和 §五 任务表都没有。已补 POST …/org-graph/replan。
    
    另更正 R-11 中"代码层未执行"的过期表述——OKR 正名已于 74ea1ff 实施完毕。
    
    回归:npm run test:unit 652 例全绿。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • 四处写 _registry.json 的地方都用 JSON.stringify(registry, null, 2) 直接落盘,
    不带末尾换行。文件在仓库里是带换行的,导致任何一次 hire()/depositTemplate()/
    模板增删改之后,git diff 都会多出一行 "\ No newline at end of file" 的噪音,
    把真实的数据变更淹掉。
    
    写入点:
    - company-service.js:374  depositTemplate()
    - company-service.js:824  _updateTemplateUsedCount()
    - routes/company.js:86    PATCH /templates/:templateId
    - routes/company.js:120   DELETE /templates/:templateId
    
    同时提交一次真实的运行时数据变更:qa-judge usedCount 7 → 8。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • hire() now checks system_agents (source_kind='template') before provisioning a new
    company agent: if the role has a shared template row, skip copying agent.md and
    instead let AgentManager.getAgentConfig()/PromptBuilder.build() resolve the prompt
    from the shared legacy_path at call time, with per-company context assembled from a
    new company-context.md. Roles without a template row (including the 6 ids that exist
    in both system/agents/ and system/templates/, e.g. evolver-youtube-crawler) fall back
    to the existing full-copy behavior unchanged.
    
    - server/services/graph-service.js (new): lookupSharedAgentMd(), upsertOrgGraphNode()
    - server/services/company-service.js: hire() reference-mode branch, _provisionReferenceAgent()
    - server/src/core/agent-manager.js: getAgentConfig() resolves prompt/companyContextPath
    - server/src/core/prompt-builder.js: build() concatenates company-context.md
    - unit + integration tests covering all 6 acceptance criteria from
      docs/todo/system-design/27-p1-virtual-reference.md §6, including a regression test
      against the real idearun:evolver-youtube-crawler naming-collision case
    
    Full regression suite (587 tests) passes; independent adversarial review found 0
    blocking/major issues.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »




  • - System agents: 只保留 master (data/system/agents/master)
    - Templates: 所有可复用 agent 模板 (data/system/templates/)
    - Companies: 公司创建时自动部署 5 个元 Agent (innovator/hunter/digester/evolver/agent-creator)
    
    路径修复:
    - agent-chat.js: /list 扫描路径修正 (system/agents + companies/*/agents)
    - agent-manager.js: 动态 agent 查找路径修正
    - skill-config-loader.js: 修正 agents root
    - pipeline-service.js: pipelines 输出到 companies/{id}/pipelines/
    - billing.log: 移至 companies/{id}/logs/ 下
    
    Skills 标准化:
    - 所有 template agent 建立 .claude/skills/main_skill/SKILL.md
    - company-service._copyTemplate() 新增 .claude/ 目录复制
    - innovator SKILL.md v3.0: 移除旧 l3-hunt/l2-digest 命名
    - 清理重复 agent_creator, 统一为 agent-creator
    
    清理:
    - 移除 data/agents, data/workspace, data/logs, data/goals 旧目录
    - 清除所有未使用的 DATA_DIR 声明
    - 清除 template 中的 conversations/logs/memory 运行态数据
    yibo authored
     
    Browse File »


  • - scaffoldNewAgent: create agent skeleton via AgentScaffold directly
    - depositTemplate: benchmark gating (≥95) + auto-deposit to templates/
    - hireWithTraining: full flow (template lookup → scaffold fallback)
    - Company route: /hire uses hireWithTraining, new /deposit-template endpoint
    - E2E test: 69/69 passed (Phase 1 + Phase 2)
    yibo authored
     
    Browse File »
  • - CompanyService: CRUD (create/get/list/update/shutdown)
    - Agent Hiring Pipeline: template lookup → copy → context injection
    - Template registry (_registry.json) with CEO and qa-judge initial templates
    - resolveAgentDir(companyId, agentId) unified agent directory resolution
    - Company REST API routes (/api/company/*)
    - E2E test: 46/46 passed
    yibo authored
     
    Browse File »