This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+9 more
Affected surfaces
Summary
AI summarySix production orchestration bugs fixed across validation, iteration state scoping, security regex whitelisting, and reviewer checklist.
Full changelog
Fixes six real orchestration bugs surfaced while using forge to ship memem v0.10.0. Every fix traces to a concrete failure mode observed in a production run.
Validator CWD fixes
- handleValidate accepts optional
cwdto redirect file checks, syntax checks, contract checks, and command execution. Workers in worktrees can now pass theirworktreePathso validation actually sees their changes. Pre-v0.4.0 the validator resolved everything against a fixed server-startup CWD — every worker self-verify was silently checking main, not the worktree. This is the root cause of the worktree-clobber trust problem. - Nonexistent
cwdpaths return acwd_checkfailure withrecommendation: ESCALATEinstead of a confusing ENOENT cascade.
Iteration state per-run scoping
- State now stored at
iterations/<runId>/<moduleId>.jsonwhenrunIdprovided, legacy path as fallback. - Previously attempts accumulated across every run forever — a brand-new
m1would seeattempt: 21and trigger ESCALATE because prior plans had used the same module ID. - Security:
runIdregex-whitelisted to/^[\\w.-]{1,128}$/to prevent path traversal.
Agent prompts
- planner.md: unconditional failure-pattern recall via
"forge workflow failure"query in addition to task keywords. Flag file overlaps. Prefer one file per module. - worker.md: explicitly forbidden from calling
mcp__forge__validate. Bash self-checks from worktree root instead. ReportworktreePathandrunId. - reviewer.md: two-mode — per-module (Phase 2b) and final release (Phase 4.5). Final mode has an 8-item checklist matching the bug categories we missed in memem v0.10.0: field-name consistency, default values, hook stdin double-drain, lazy state races, transient vs permanent errors, subprocess cold-start, ARG_MAX, unbounded injection.
Orchestrator (skills/forge/SKILL.md)
- Phase 0: working-tree cleanliness check with warning
- Phase 0b: unconditional
memory_recallfor framework failure patterns - Phase 1b: "File overlap risk" and "Known risks from memory" sections in plan approval
- Phase 2: MANDATORY auto-WIP-commit between tiers; per-tier validate-in-main before spawning next tier; workers receive
runIdin prompt - Phase 4: all
validate/iteration_statecalls passrunId - Phase 4.5 (NEW, MANDATORY): final release review with full cumulative diff
- Phase 5: save
success_patternmemory with run-shape metadata; squash WIP commits into release commit - Lite mode: ≤4 modules or
--liteflag skips worktree isolation entirely
Meta
This release was reviewed by its own new Phase 4.5 final reviewer, which caught 4 error-severity bugs (2 path traversal, 1 phase ordering, 1 schema drift) before shipping. The review system reviewed itself and found real bugs.
See CHANGELOG.md for the full breakdown.
Security Fixes
- `runId` regex‑whitelisted to `/^[\w.-]{1,128}$/` preventing path traversal
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About TT-Wang/forge
Structured planning, parallel execution in git worktrees, and deep validation for Claude Code. Turns a one-line objective into a validated DAG of modules executed by worker agents, each self-checked and cross-module-reviewed before merge-back. 7 MCP tools: `validate`, `validate_plan`, `memory_recall`, `memory_save`, `iteration_state` (per-run scoped, with stagnation/velocity/oscillation detection)
Related context
Beta — feedback welcome: [email protected]