Skip to content

Tags: jetomev/mindforge

Tags

v0.1.8

Toggle v0.1.8's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.8 — 2026-10-12

**The 0.1.8 batch: four bugs that bit every session, on one machine or the
other.** v0.1.7 fails **20 of this release's 209 checks**, every one of them on
one of the four.

- 🪟 **The tie alert runs on Windows (#63, W-13).** `python3` on the work laptop
  is the Microsoft Store placeholder: on PATH, found by `command -v`, and it
  prints "Python was not found" when run — so all ten tone checks failed there.
  `tone` now tries `python3`, `python` and `py -3` and keeps the first that
  actually executes; none: silence, never a blocked reply. The test harness
  does the same for its own helper.
- 🔁 **One repo, one spelling (#43 W-11, and #34 with it).** The folder listing
  spells a path `/c/Users/x/repo`, git spells it `C:/Users/x/repo`, and a
  junction (or a symlinked root) adds a third. The repo list deduped by string,
  so the brief counted every queued repo twice (#34) and R11 named every queued
  project as missing (#43) — three false lines at every session start on the
  laptop. Both sides are now compared in git's spelling. Staged on Linux with a
  symlinked root, with a setup assertion that the two spellings really differ.
- 🐍 **`aur-python-<name>` is the AUR twin of `<name>` (#42).** Arch names a
  Python library `python-<name>`, so forgekit's packaging folder tripped R11
  every session and sat on an `@quiet` line. Stripped like `aur-` and
  `-remote`; an `aur-python-other` with no `other` line is still named.
- 📌 **`mindforge active` — the active project's banner (#37, S-10).** The
  banner was a personal hook reading a hand-edited pointer that nothing moved;
  on 2026-09-29 it announced DecadeDrop at the start of a hypeForge session,
  next to a briefing that said hypeForge. Now it is a subcommand: `wrap` moves
  the pointer to the project the focus names (if it has `scripts/status.sh`),
  and when the pointer and the last wrapped session disagree the banner says
  so instead of stating the stale one as fact. The 2026-09-23 pointer file is
  adopted and moved into the state folder on first run.
- 🔍 **A failing check shows what it saw.** The laptop's report on #43 could
  not say why eleven release checks failed, because the checks print nothing
  of their own. Now a FAIL line is followed by the first lines of the output
  the check examined.

Tests: 210 checks, 210 pass (was 180). The 30 new ones cover the four fixes,
each fed a known-bad input as well as a good one.

v0.1.7

Toggle v0.1.7's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.7 — 2026-10-06

- 👔 **`mindforge tone` — the tie alert (#45).** The tone rule lost, every long
  turn, to the assistant's built-in report style; a reminder cannot beat a house
  style. Now a Stop hook reads the last reply from the transcript and flags
  memo-speak (section headers, "Expected result:", status-report openers, local
  patterns from `tone.local`). First hit: the reply goes back for a rewrite and
  the person sees "tie alert"; second pass: alert only, never a loop. Code blocks
  are not read; a tool result does not reset the reply; no transcript, bad input
  or no python: silence.
- 🔔 **`mindforge chime` (#45).** "When you finish and are waiting for me, make a
  chime sound, so if I am away I can hear it." A sound from the Stop hook (after
  a reply goes through) and the Notification hook. Player and file found on the
  machine or set in the config (`MINDFORGE_CHIME`, `MINDFORGE_CHIME_PLAYER`);
  silent, never failing, without them.
- 🔓 **`scripts/release.sh` (#41).** v0.1.6 went public on the wrong commit: the
  scrub hook refused the docs commit, and the tag and push on the next line ran
  anyway. The script refuses, before anything is tagged or pushed, when the
  version is not X.Y.Z, the tree is not clean, `main` is behind `origin`, the
  `VERSION` line or the changelog does not match, the tag already exists, or
  the tests fail. Then it tags (the message is the changelog entry), pushes,
  and prints the human steps that remain. Logged to `logs/`.

Tests: 180 checks, 180 pass (was 146): the tie alert and the chime are 20 of them,
each fed a known-bad input as well as a good one. The release checks were also run
against three planted copies of the script, each missing one guard; each was
caught.

v0.1.6

Toggle v0.1.6's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.6 — the queue is checked for what it leaves out

R11 names any project with recent commits but no queue line, with @quiet as
the visible opt-out (#39). The projects table lines up with long names (#40).
146 checks, all passing; v0.1.5 fails 4.

v0.1.5

Toggle v0.1.5's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.5 — nothing silent

wrap measures and says clean or NOT clean (#27); every check answers yes,
no, or could not look, and the scrub hook proves its tool works (#24); the
rot check runs at every session start (#29); R10 reports missing session
hooks (#16).

134 checks, 134 pass.

v0.1.4

Toggle v0.1.4's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.4 — the release that tests itself

Nine changes since v0.1.3: R8 checks the queue against the tracker (#13),
a missing queue is a first-run state (#14), every root scanned (#33), R9,
shared priority tiers, the first automated suite (#35), --help never runs
a command and wrap can be corrected (#22), CRLF queues read correctly (#36).

71 checks, 71 pass.

v0.1.3

Toggle v0.1.3's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.3 — the handoff release

Eleven fixes, five of them high. Nine came from running v0.1.2 against a
written 115-check test matrix across both surfaces; two came from the act of
publishing that matrix, when the pre-commit scrub was caught printing
"scrub clean" on a file carrying 26 occurrences of a name on its own wordlist.

The handoff itself:
  F-33  standing rules move to always.txt and reach EVERY handoff
  F-16  a truncated in-flight note says so — silent cutting inverted it
  F-25  writes that fail no longer report success (wip, wrap, session_end)
  F-13  the in-flight note reaches the injected briefing
  F-27  and carries its own timestamp, so it cannot read as yesterday's
  F-17  wrap exits 0 when it warns about unpushed commits
  F-18  the scope line validates content, not just readability
  F-19  a project missing from disk reads "absent", not "clean"
  F-32  table padding counts visible characters, not bytes

The guard that is supposed to make it safe:
  F-34  a staged filename containing a space was never scanned at all
  F-35  under pipefail, a wordlist match reported itself as a miss

Testing: 115 checks, both surfaces, 0 deferred — 103 pass, 7 fail, 2 that this
hardware cannot decide, 2 whose expectation was wrong, 1 N/A. Published in
testing/ as they fell. 12 findings remain open, all low, none blocking.

Still no automated test suite. The matrix is a specification run by hand, and
it is the most overdue item on the roadmap.

v0.1.2

Toggle v0.1.2's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.2 — continuity across instances

v0.1.1 made the briefing identical in a terminal and in Claude Desktop.
v0.1.2 makes it survive the thing that actually happens all day: a
conversation gets slugged, you abandon it and open a clean one, and the new
instance has to pick up where the old one was.

Every finding came from doing exactly that, repeatedly and on purpose.

F-7   one mark per session, not one per machine — Desktop spawns ~3 sessions
      per launch and they were consuming each other's
F-8   notify-send over DBus as the visible channel; DBus needs no controlling
      terminal, so it reaches Desktop where /dev/tty never could
F-9   a scope: line in every brief — a scoped persona leaked twice, both
      times in sessions that had the rule loaded
F-10  R7: the memory index can be stale, not merely incomplete
F-11  dirty repos report the shape of the change, not just the fact
F-12  mindforge wip — in-flight work survives a change of conversation

F-7 and F-8 confirmed in the wild: a real Desktop restart produced exactly
one notification and two coexisting session marks.

v0.1.1

Toggle v0.1.1's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.1 — terminal/Desktop parity

KognogOS ships both Claude Code in a terminal and Claude Desktop. A briefing
that behaves differently depending on which one you opened is a defect, not a
quirk. Six findings, all caught by using mindForge from Desktop the day after
v0.1.0 shipped.

Parity does not rest on the /dev/tty copy — Desktop's hook runner has no
controlling terminal, so that copy is silently dropped. It rests on the
directive injected into the assistant's context, which reaches the model
identically on both surfaces.

F-1  Last time rendered empty; one tail -1 answered two questions
F-2  rot.log grew every time it was read
F-3  a dirty repo could hide behind a dependency label
F-4  Desktop session churn wrote 14 empty rows in one afternoon
F-5  one malformed row crashed the entire headline
F-6  the tty comment claimed less than we had proven

Plus mindforge --version, which v0.1.0 did not have.

Filed, not fixed: F-7, the global session mark shared by concurrent sessions.

v0.1.0

Toggle v0.1.0's commit message

Verified

This tag was signed with the committer’s verified signature.
jetomev Javier Tome
mindForge v0.1.0 — the method, and a reference implementation

A working agreement that does not decay: tiered context with a hard budget
at the top, explicit triggers because nothing loads itself, a closeout that
runs whether or not anyone remembers, and silent-failure checks that escalate
after three sessions.

Built and dogfooded in a single day. It caught three real defects while being
built -- two personal-data leaks in commits written by the person who had just
written the anti-leak rule, and a packaging file whose content had diverged
while its version matched.

The limits are stated in the README and in docs/METHOD.md: one machine, one
assistant, days of data, and an empty drift log.