Repository navigation
Tags: jetomev/mindforge
Tags
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.
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.
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.
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.
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.
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.
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.