-
代码修复: - SessionPool 的 scope 参数从未真正从 graph-engine 传到 AgentManager,导致 fan-out 场景下同一 agent 的并发调用会撞会话键;补上生产接线(graph-engine.js/agent-manager.js) - advanceTree 改成 Promise.allSettled 并发推进兄弟子 run(原来只推最深的一个) - graph-real-chain-smoke.test.js 补齐多节点/回退边/双层熔断的真实链路覆盖 真实验证: - 27-P3B 最后一条验收(org 层回退边指向 subgraph 节点)用隔离 worktree 真实 Claude CLI 跑通并记录证据(§六quater) - 27-P3B 正文里 W5/W6/W7/W9 的"仍未验"备注核实后发现均已被此前的真跑验过,只是没回填; W8(重新规划组织按钮)此前确实没验过,本轮用隔离 worktree + 真实浏览器点击补验 文档收口: - 27-P3B、27-P4 两份文档功能与验收均已完整,移入 docs/done/,更新全部交叉引用 - T5(账户欠费门真实计费接口)按用户决定移入 docs/todo/future/,不阻塞收口 - 订正两处过期判断:graph_edge_contracts.role 列早已落库、CONVENTIONS.md 非 spec:extract 生成物 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JnCKUFSGvdz4SY7BvYWdMU
-
system/templates/ 已随 28 号改造整体并入 system/agents/,目录在磁盘和 git 里都已不存在。 但引用还散在各处,其中几处是 agent 运行时真会照着读写的: 本体提示词(读不到就静默降级,不报错) workgraph-planning/agent.md system/templates/base/ ×3、模板库路径 ×1 orggraph-planning/agent.md 同上 ×1 orggraph-planning/tools.md ×1 org-innovator/agent.md 四条产出落点 system/templates/weibo-scraper/train/* skill 代码里的硬编码目标 evolver-youtube-crawler 的 refactor.js / mock_setup.js / evolve.js 共 4 处 innovator-hunt/collect_seed.js —— 这处是真 bug 且已发作过: 写的是裸相对路径 'system/templates/…',相对 cwd 解析,于是在 agent 自己目录下 造出一棵野生嵌套树 system/agents/innovator-hunt/system/templates/… 现在改成由 __dirname 推导,不再依赖 cwd(cwd 已经是深度 3 的任务态目录) 图模板契约(work-graph-templates / org-graph-templates 的 README) CI 防线的三条规则写的还是「在 system/templates/ 下必须有目录」「在 system/templates/_registry.json 里必须有条目」,与实际执行的检查已经对不上 DevLoop PRD(13 份 HTML + 重新生成的 52 份 _spec + build-manifest + search-index) 写的是 system/templates/devloop-pm.md(扁平 .md)。根和形状都错: loop-controller.js:166 实际读的是 system/agents/{agentName}/prompt.md。 按真实形状改,然后跑 spec:extract / extract-manifest / build-search-index 重新生成。 顺带订正两处早于本次改造就已过期的内容: - 「避开 6 个命名冲突 id」这条约束列的 digester / evolver / hunter / innovator 四个 id 根本不存在(早已改名),而它的理由(两个目录下各有一份、内容不同步) 也已随合并消失。约束保留(元 agent 本来就不该进执行流),理由与清单按实际本体重写。 - orggraph-planning/agent.md 里「真相源是 company.json.agents[]」—— 28 号起真相源是 company_agents 表,company.json.agents[] 仅作兼容保留。 刻意不动的三类(改了是净损失): 历史说明 server/ 下解释「原来指向 X、批次 1 并进了 Y」的注释、docs/done/、tasks/ 完成证明 server/tests/ 里断言该目录已不存在的守卫 运行态记录 未跟踪的 workspace/ conversations/ 与 train/ 下的历次训练报告 新增 server/tests/unit/no-stale-templates-path.test.js 守住活定义这一档: 扫 system/ 与 fixtures/ 下被 git 跟踪的文件(跟踪=人工维护的定义, 未跟踪=运行态产物),零例外。带「样本非空」前置断言防 git 失灵时退化成永远通过。 改坏一处实测能精确点名到文件行号。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Before P0 coding begins, the doc set was missing three things that would have stalled implementation on day 3: 1. Day-1 Quick-Start (plan-migration top section) - 8-step "what command do I type first" walkthrough - pnpm install → cp .env.example → extract-manifest verification → P0.0 services → MOCK_CLAUDE=1 phase0-verify → real phase0-verify → P1 - Anyone cloning can reach step 4 (doc verification) immediately 2. P0.0 服务层 7 件套 (plan-migration P0 子任务表) - Previously P0.A "工具实现" depended on docStore/unitRegistry/sseBroker/ bugTracker/timelineLogger/pathResolver/GitVault but none were listed as a task — engineer would hit "docStore.writePRD doesn't exist" - Now P0.0 lists them as a sequenced 4.5-day task: pathResolver first (everyone depends on it), then 5 other services, finally GitVault - GitVault tasks consolidated into P0.0 (removed duplicate P0.I) - Total P0: 13.5 → 17 days (3 → 3.5 weeks) 3. Mock Claude CLI Mode (arch-acp-bridge §⑦, NEW) - MOCK_CLAUDE=1 env toggles ClaudeCliProtocol to read stubs from system/mock-responses/{agent}/{mode}.json instead of real Claude - Mock JSON: array of steps (text emit / tool_use), $pid placeholder - When mock vs real: mock for dev + CI, real for prompt quality + P1+ - Enables zero-token tool dev + phase0-verify - Sections renumbered (⑧ → ⑨ etc) to accommodate insertion Total project: 10 → 10.5 weeks (still honest, still includes everything). No new MVCP defs (54). Search index 195.7KB. _spec/ regenerated by hook. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> -
The 50-page PRD HTML totals ~520KB; loading it all costs Claude ~222K tokens just for context. This adds a token-efficient sibling layer: - scripts/extract-spec.js → npm run spec:extract / spec:check Walks docs/prd/newfunction/*.html and produces stripped MD into _spec/. Strategy varies per page (full-extract for SDD/process/data, shell-strip for agents to keep long system prompts intact). Result: 327.9KB MD (~84K tokens) — 38% of full load, saves ~138K tokens for every Agent invocation that reads the spec. - scripts/git-hooks/pre-commit + scripts/install-hooks.sh Pre-commit guard: when any docs/prd/newfunction/*.html changes, the hook checks the corresponding _spec/*.md is up to date; fails commit if stale, telling user to `npm run spec:extract`. Auto-installed via package.json `prepare` script on `npm install`. - docs/prd/newfunction/_spec/ (51 .md files + CONVENTIONS.md) Machine-readable mirror of HTML. Used by: - Coder/Architect/Tester agents when reading spec at runtime - External Claude Code sessions doing reproducibility - CI checks (npm run spec:check) NOT hand-edited; regenerated from HTML by extract-spec.js. - CLAUDE.md: 1-line note directing future agents to read _spec/*.md preferentially, fall back to *.html only for wireframes/SVG/full human-readable context. This is the user's pre-existing scaffolding that the previous commits hadn't pulled in yet. Now tracked + enforced by hook. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Fills the gap: where does a DevLoop project actually live, and how does a user create one? Previous docs assumed everything goes under data/companies/{cid}/projects/{pid}/ with no user control. Design: - A DevLoop "project" = one directory + project.json + git history; the directory is the project root, the anchor for everything - 3 modes: - sandbox (default, v1): root auto-generated under data/.../projects/{pid}/ - linked-new (v1): user picks any empty path, e.g. ~/code/auto-todo - linked-existing (v2): bind to existing git repo subdirectory - 3 creation entry points: - REST: POST /api/devloop/projects with optional {mode, target_path} - CLI: scripts/devloop-new.js with --path / --name / --requirement / --list - UI: Dashboard "+ NEW PROJECT" modal with mode radio + path picker - New pathResolver service (path-resolver.js): single source of truth for resolveProjectRoot(pid). All paths derive from it; nothing hardcodes data/companies/... anymore - linked projects registered in ~/.devloop/linked-projects.json - memory stays at company level (~/data/companies/{cid}/memory/) even for linked projects — privacy + cross-project knowledge isolation - Strict sandbox: blacklist /, /etc, /System, ~/.ssh, ~/.aws etc. for target_path; writeAllowList relative to root_path Pages changed: - arch-project-root.html (NEW, 15-section comprehensive design) - sdd-model.html (M-1 ProjectMeta + mode + root_path fields) - sdd-control.html (C-1 POST /projects accepts mode + target_path) - assets/shell.js (sidebar adds arch-project-root) - assets/search-index.json + build-manifest.json (rebuilt) Adds ~2 days to P0 (pathResolver + schema migration), ~1.5 days to P1 (CLI + mode params), ~1 day to P4 (UI modal). Total 10 → 10.5 weeks. Key insight: linked-new mode means a user can DevLoop code straight into ~/code/auto-todo, then `git push origin main` to ship — without manually exporting from the sandbox. The sandbox-vs-linked choice is path-transparent to LoopController and all Agents. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> -
Fills a gap pointed out post-v0.3: docs had file-mtime + history/ archival only, no real version control. Now every Agent that completes work triggers LoopController to git commit; project ship/sign-off/abandon tag the repo. Design: - One git repo per project at data/companies/{cid}/projects/{pid}/.git - LoopController-centralized commits (Agents stay sandboxed, no git access) - Commit cadence: each Agent success → commit; Tester red → no commit; shipped/sign-off/abandon → tag - New GitVault service (C-18): spawn-git wrapper, ~150 lines, init/commit/tag/log/diff/status/archive/revert/resetWorkingTree - New process P-10 (Process.GitCommit): commitAfterAgent hook in callAgentWithPersistence; recoverOnBoot extended to detect dirty trees - .gitignore excludes agent-state/ (high-write) + history/ (git is history) + stream.log + runs stdout (too large) - New SSE events: git.committed · git.tagged · recovery_dirty_tree - Defer git push-to-remote to v2 (no network deps in v1) Pages changed: - arch-git-versioning.html (NEW, comprehensive design, 16 sections) - sdd-control.html (+C-18 GitVault spec) - sdd-process.html (+P-10 commitAfterAgent + recoverOnBoot dirty-check) - data-layout.html (.git/ + .gitignore in project tree) - plan-migration.html (P0 +3 days for GitVault, total 10 weeks) - assets/shell.js (sidebar adds arch-git-versioning) - assets/search-index.json (rebuilt, 189.5KB, 50 pages) - build-manifest.json (52 → 54 defs, 100% extraction) Key benefit: Coder 3-retry chain can be `git diff`-ed; L2 fail allows clean revert; project export becomes `git archive HEAD` (tracked files only, not the ~30MB project dir). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> -
Earlier PRD attempt scoped to LemonBoss-only (excludes ArenaSK Skill marketplace / Arena / Master / Innovator / Open API / Evolution). Generated 2026-05-12, exists side-by-side with the later 50-page DevLoop PRD under docs/prd/newfunction/. Structure: - index.html (single-page shell with collapsible sidebar + lunr search) - assets/ (app.css/js, chapter.css, menu.js, search-index.json) - chapters/01-overview ~ 10-reproducibility (10 chapters) - _scan-manifest.json (scope manifest pinning what's in/out) - scripts/build-search-index.js (chapter HTML → lunr index) This commit just brings the existing files under version control; no edits to content. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
DevLoop: a 3-layer Loop (L1 Unit / L2 Integration / L3 Human) auto-development system that takes a one-line human requirement and produces multi-page HTML PRD + SDD + units.json + full backend/frontend code via 6 specialized agents. This commit adds the complete documentation set: 50 HTML pages organized in 8 sections (3-level menu + global search): - 01 Overview · 02 PRD · 03 Design (loops + 6 agents) - 04 SDD (MVCP × 4) · 05 Prototype · 06 Architecture - 07 API · 08 Ops · 09 Plan Key specs: - 6 agent skills (PM/Architect/Coder/Tester/Integrator/BugTriager), each with full system prompt, 13-17 tool signatures, 3 E2E samples, helper source code - 52 MVCP definitions, 100% machine-extractable via data-* anchors - 79 tool signatures with implementation guidance (arch-tool-registry) - ACP bridge spec (arch-acp-bridge): how LoopController calls into LemonBoss agent-manager without breaking existing Master/Innovator flows - 5-phase plan P0→P4 (~9.5 weeks): P0 bootstrap (tool impl + ACP bridge), P1 docs MVP, P2 single unit L1, P3 L1+L2 loop, P4 L3 feedback + UI - Persistence layer: AgentState (M-10), Memory (M-11), Todolist (M-12), Timeline (M-13), Bugs (M-14), Changelog (M-15) + crash recovery (P-8) - Cost & concurrency budgets (plan-cost-concurrency) - Code lifecycle: stay-in-sandbox v1 + export API + future GitHub PR (v2) Plus supporting scripts (zero deps, regex-based): - scripts/extract-manifest.js: extracts MVCP defs to build-manifest.json, used to verify all definitions have path + shape (currently 100%) - scripts/build-search-index.js: builds assets/search-index.json (183KB), enables Ctrl+K global search across all 50 pages The PRD itself is meta-executable: a future Claude Code session reading plan-reproducibility.html can rebuild the entire DevLoop runtime from the docs alone. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>