Skip to content

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 05 Oct 13:23
· 65 commits to main since this release

Forgelore stopped seeing a whole class of failure, and the only reason anyone
found out was installing the plugin from the marketplace and watching it work.

Fixed

A build piped through head is a failure again. A Bash command's exit
status reaches Forgelore only through which hook event fires. When the agent
writes

go build ./... 2>&1 | head -40

the pipeline exits with head's status, which is zero. Claude Code correctly
sends PostToolUse rather than PostToolUseFailure, and no field anywhere in
that payload says the build broke. Forgelore called it a success: nothing was
recorded, nothing was recalled, and it looked exactly like a session that met
no errors.

The mapping now carries a fourth failure test, output_has_diagnostic, which
asks the fingerprinter whether the output contains an error it recognises.
Verified in live Claude Code 2.1.289 sessions with the plugin installed from
the marketplace.

Changed

The mapping format moves to 2, and only claude-code.json uses it.
copilot-cli.json and codex-cli.json still say 1, and a Forgelore from
before this release reads them unchanged.

The number moved although the field is an addition. The test is not whether
something was added but whether an older binary can read the file and still
be right: it does not know output_has_diagnostic, drops it, and calls
every piped failure a success. Refusing the file out loud is the only honest
behaviour. A mapping that sets the field while claiming version 1 is refused
for the same reason.

If you override a mapping on disk with forgelore hook --mapping, nothing
breaks — your file keeps working as it did. To use the new test, set
"mapping_version": 2 in it.

What it costs

A command that succeeds while printing error-shaped text — cat build.log,
rg "undefined" — is now read as a failure. Nothing is written to memory
either way: the visible effect is a lookup that probably misses, and no "it
works now" proposal from that one event. ADR-0022
names the rest, including the one ADR-0020 promise this breaks: a failure test
is now answered by Go rather than read out of the payload.

Also in this release

The plugin is listed in the Forgeprint marketplace:

claude plugin marketplace add forgeprint/forgeprint
claude plugin install forgelore@forgeprint

The plugin ships no binary on purpose, so install that too or the hooks do
nothing.

Upgrading

curl -fsSL https://raw.githubusercontent.com/forgeprint/forgelore/main/scripts/install.sh | bash

Nothing to migrate. The record schema is unchanged at 1.

Which agents this release supports

Agent Checked against a running agent
Claude Code 2.1.289 hooks, both MCP protocol eras, usage reader A
Copilot CLI 1.0.91 hooks only — its MCP client has never been connected B
Codex CLI nothing; the mapping is a reading of the documentation unverified
Gemini CLI, Cursor researched, not started —