ForgeClaw is a deployment-focused fork of PicoClaw. The roadmap tracks work that matters for the active ForgeClaw deployment while preserving the ability to merge upstream PicoClaw changes.
- Keep async task delivery deterministic across restarts.
- Continue consolidating tool delivery through the shared delivery coordinator.
- Reduce duplicate final replies after media/file/message tools.
- Keep task-registry records bounded, queryable, and useful for debugging.
- Preserve topic/session routing across Telegram, cron, spawn, and delegate paths.
- Keep Seahorse compaction bounded and observable.
- Prefer asynchronous compaction where it is safe.
- Fail closed when context still exceeds provider limits after compaction.
- Keep prompt assembly predictable by reserving budget for tools, non-history prompt sections, and required routing context.
- Add focused regression tests for long-session and post-compaction behavior.
- Keep
task_statusas the primary user-facing progress/status command. - Retire duplicated status surfaces when they no longer add value.
- Improve deterministic test coverage for tool loops, spawned work, and async completions.
- Extract a shared path-scope validation package only if non-
exectools need the same workspace/symlink/allowed-path rules currently enforced byshellguard.
- Keep OpenAI OAuth/Codex paths reliable and observable.
- Preserve streamed output and streamed tool-call behavior in provider adapters.
- Keep MCP transport failures explicit and fail-fast.
- Maintain deferred MCP/tool discovery behavior so large tool inventories do not pollute ordinary prompts.
- Re-architect channel lifecycle so startup, retry, reload, inbound exposure,
and readiness are supervised through explicit runtime state instead of being
tightly coupled inside
channels.Manager. - Keep shared webhook/HTTP registration tied to active channel runtimes rather than configured channel presence.
- Make startup retry generation-aware and cancelable across reload/shutdown.
- Keep gateway readiness aligned with actual channel delivery capability.
- Keep Telegram forum-topic routing stable.
- Preserve media-group handling and forwardable media captions.
- Keep generated images and files deliverable without duplicate completion messages.
- Keep channel feedback throttling controlled by real edit intervals.
- Move reply / adjacent-followup / media-only interpretation toward an explicit inbound relation model so prompt assembly does not have to guess message boundaries from raw history.
- Keep core workflow primitives deployment-agnostic.
- Support durable queued work without assuming a specific domain or workspace.
- Make spawned/delegated work observable through shared task status surfaces.
- Keep webhook, cron, and manual trigger paths consistent.
- Let deployments layer domain-specific agents and policies outside the core runtime.
- Merge
upstream/mainregularly. - Keep fork-specific behavior documented in the root README fork note.
- Avoid repo-wide renames of binary/config/module paths unless there is a strong reason.
- Prefer small compatibility patches over broad rewrites that increase merge conflict cost.
- Keep
/modelas the conversation-scoped model selector and/switchas the explicit workspace-wide operator path until/switchis deprecated. - Replace ad hoc override-agent cloning with a clearer effective-model resolution path.
- Resolve model-selection state once per routed turn, then pass that binding through command/runtime and execution code instead of repeatedly re-reading per-session override state.
- Keep invalid session overrides self-healing and bounded to the routed conversation key.
- Preserve current provider/model selection semantics while reducing the amount of agent-instance mutation/cloning required to execute a session override.
- After the binding layer is stable, consider moving from "derived AgentInstance" materialization toward per-turn provider/model resolution so session overrides stop carrying copied tool/router/provider bookkeeping.