-
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> -
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> -
Output of scripts/extract-manifest.js against docs/prd/newfunction/. Captures the current state: - 52 MVCP definitions (model=15, view=11, control=17, process=9) - 100% path + shape extraction coverage - Sized ~52KB This file is regenerable (just run the script), but committing the snapshot lets reviewers and external Claude Code sessions diff the schema surface without rebuilding. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>