Skip to content

v2.5.0 — Memory that can be corrected + gates that say what they checked

Latest

Choose a tag to compare

@explosivebit explosivebit released this 10 Sep 17:44
· 29 commits to main since this release
ff8d01c

Catalog 1.178.0 · 23 plugins · 212 commits and ~110 pull requests since v2.4.0 (2026-07-02).

Two themes ran through this release: a memory layer that can be corrected, and gates that say what they checked.


Memory stopped being write-only — fpl-hsmem 2.1 → 3.5

The relay could add facts and read them back, and that was all. There was no way to find a specific stored row, no way to mark one wrong, and no way to see that a save had failed. A memory system that cannot be corrected is not memory, it is sediment.

13 MCP tools → 27. memory_list enumerates by structured filter and is the only tool that can hand you the id of the row that is wrong — memory_recall ranks by meaning and cannot enumerate. memory_invalidate retires a fact with a required stated reason, keeping the text readable and reversible. memory_reconsolidate rebuilds the beliefs that rested on it — the step whose absence is why "I already fixed that" keeps not being true. memory_operations is the only place a failed background job is visible: on the first live run against a real bank it surfaced six failed retains nobody knew about.

The server now explains itself. MCP has a place for what a per-tool description structurally cannot carry — the order — and ours was empty. instructions on the initialize result now states which of the three reads answers which question, the five-step correction sequence, and the two facts that surprise everyone.

Eight security defects fixed, the first three critical: a .. path segment reached the bank base (encodeURIComponent does not encode a dot); document_ingest silently destroyed a session's memories on an id collision; document_ingest_file would upload any absolute path. Plus a redactor on every path that emits stored text — this deployment stores transcripts unmasked, so the formatter is the last place a secret can be caught.

A curator agent and nine skills, each with a bilingual description and the model tier its hardest step needs. /memory-setup inspects a project and proposes the retrieval and memory layers it should have — and says which are not worth it there.


A whole new plugin: forgeplan-map-pack

Builds a navigable map of a project — zones, nodes and verified edges — through an eight-agent pipeline where every stage runs in a fresh isolated context and a deterministic script, not an LLM, decides whether the result can be trusted. An edge is either sourced from the artifact graph or proven by a grep; an unproven one is dropped rather than shipped as noise.

Anti-slop, three plugins

slopocop (text), slopocop-design (design) and slopocop-code — the last with a dependency-free 0-100 scanner across seven languages that finds the AI-authorship fingerprint in source without changing behaviour.

The task cycle stopped being about one product

forgeplan-orchestra 1.x → 3.5: the seven-stage cycle now names canonical operations and canonical field roles, and the project supplies the mapping — so the same cycle drives Orchestra here and Jira, Linear or GitHub Issues elsewhere. The Orchestra MCP reference split out as a skill free of this ecosystem.

Methodology

Product discovery (/discover-product), incident response, tech-debt and A3 loops. /estimate and /wrap — two pipeline stages that existed in the matrix and were never executed. /gate-check — the quality gate between stages that the architecture required and the disk did not have. The nine task tiers written down, and every one of 96 agents now names the tier its work needs rather than only a model.


Gates that say what they checked

The recurring defect of this release, found four times and closed four times: a green that does not say what it checked is indistinguishable from work that never happened.

  • A mirror-sync workflow reported nine green ticks while asserting nothing.
  • Two CI gates printed "passed" without naming a single file scanned. Both now refuse to report a pass when they scanned zero files.
  • New memory-denylist-check — when the memory relay grew from 13 tools to 27, all 27 agents that had declared "I do not write memory" silently gained document_delete (irreversible, cascades to every fact from a document), bank_config_set and memory_invalidate. The gate derives the required set from the plugin that owns the tools rather than duplicating it, so adding a tool is now a decision rather than an omission.
  • New description-shape-check — a release script capped three plugin descriptions with a slice and cut them mid-word; the JSON stayed valid and every existing gate stayed green.
  • New routing-profile-check — the profile letter in the routing map became a checkable assertion instead of a label.

Every one ships with a self-test carrying must-fire and must-NOT-fire cases, several proven by live mutation. A gate that has only ever run on a healthy tree proves nothing about whether it can fail.

Descriptions stopped being changelogs

Every release had appended its notes to the plugin manifest — the field a user reads when browsing. Median 1,305 characters, one at 21,867, and 18 of 23 never said when to reach for the plugin. All 23 now do; the accumulated history moved verbatim into each plugin's CHANGELOG.md, nothing summarised on the way across.


Breaking

  • fpl-hsmem 3.0.0 — retain_mission removed as a tool argument (it steered what the server extracts from every future conversation); bank identity now anchors on the project root rather than the raw working directory; an unknown tool is a protocol error rather than a retryable result.
  • forgeplan-orchestra 3.0.0 — the task-cycle skill renamed and its configuration moved; projects declare their tracker in docs/agents/issue-tracker.md.
  • agents-canvas 1.0.0 — CANVAS generates natively in the project's own framework; the multi-framework path is out of default.

Upgrade

/plugin marketplace update ForgePlan-marketplace