Releases: Ian-Louw/potion
Release list
v1.4.1 β the mischief release
The verifier survived its own red-team.
Mischief audit β protocol-level 5/5
The verification protocol was red-teamed with five classed, seeded defects behind a sealed answer key: clean-grepping stub, wired-but-wrong, phantom commit, orphaned artifact, missing artifact. The blind verifier + runtime step caught all five (4/5 at the static ladder alone β wired-but-wrong is designed to need runtime evidence, and the protocol is the unit under test). It also flagged the fabricated "verified live" claims unprompted. Receipts: .potion/phases/09-mischief/.
Verify hardening
verified_atis now derived mechanically (date -Iseconds), never hand-typed- New permanent ratchet: every SKILL.md stays under the ~150-line bar (
check-skill-line-bar)
Docs
- README caught up to the 1.x story: new "Knowledge that compounds" section (journal β promotion β pages β lint), brewed-itself claims moved to v1.4.0, mischief receipts cited. Repo About updated to match.
Full changelog: v1.4.0...v1.4.1
v1.4.0 β the self-audit release
Potion is a lean project framework for Claude Code β plans are prompts, disk is memory, evidence or it didn't happen.
1.4.0 completes the knowledge loop: the layer now audits itself β four hunts, automatic cache repair, and a hard human gate on ground truth.
Proven live with a seeded-defect kill and hash-verified untouched journals β receipts in .potion/phases/08-lint/.
1.4.0 β 2026-07-05
The self-audit release: the knowledge layer now lints itself β cache fixes are
automatic, truth changes are human-gated. This completes the Karpathy-pattern
set: journal (append-only truth) β pages (distilled cache) β lint (the
auditor that keeps them honest).
Lint β four hunts over the knowledge tree
- New "Lint" section in the learn skill, run over project scope then user
scope (commit fe6c069): (1) contradictions β semantic judgment of entry
insights and page syntheses, Claude is the linter; (2) stale claims β
filesbackpointers gone from disk, page claims superseded by newer
same-key entries; (3) orphans β page### {key}blocks with no live
journal line; (4) coverage gaps β confidence >= 8 live entries no page
distills - Trigger: runs automatically after every Distill, or on demand via
/potion:learn lint - The safety line β cache-auto, truth-human: cache-side findings (orphans,
stale page claims, coverage gaps) are fixed by rebuilding the affected
page whole from the journal; truth-side findings (contradictions, any
urge to tombstone or reword a journal entry) are NEVER self-resolved - Parked routing: truth-side findings go to STATE.md
## Parked, one line,
both sources cited β the next /potion:discuss tables them - CORE contract: lint safety line under Learnings, core/CORE.md
(commit a8f7973)
Evidence
- Live proof on the real knowledge tree, both scopes: clean baseline lint;
a transparently seeded cache-side orphan detected by hunt 3 and
auto-rebuilt away (rebuilt page byte-identical to HEAD); truth journals
sha1-identical across the entire run β the linter has teeth and a muzzle:
.potion/phases/08-lint/evidence/02-lint-transcript.txt(commit d7b24cb)
v1.3.0 β the distillation release
Potion is a lean project framework for Claude Code β plans are prompts, disk is memory, evidence or it didn't happen.
1.3.0 adds the distillation layer: journals synthesize into topical, source-backed knowledge pages β fragments become compounding understanding.
The repo's own .potion/knowledge/ is the live showcase; receipts in .potion/phases/07-distill/.
1.3.0 β 2026-07-05
The distillation release: journals stay ground truth, pages make them readable.
Distillation pages
- New pages layer in two scopes: project journal distills to
.potion/knowledge/(committed with the repo), user journal to
~/.claude/potion/pages/(outside git) β each with anindex.mdlisting
every page with its one-line scope and entry count - Pages are a regenerable cache, never ground truth: rebuilt whole from the
deduped journal, never hand-edited, safe to delete; when a page and the
journal disagree, the journal wins and the page is due a rebuild - Source-backed claims: every
### {key}block cites the journal entry key
it distills (user scope also cites the source repo) β an uncited claim is
a defect - CORE contract: "Distillation pages" subsection under Learnings,
core/CORE.md (commit 55b4fa7) - Procedure: new "Distill" section in the learn skill β dedup newest-wins,
drop tombstones, cluster 2-6 entries per page, regenerate pages whole,
rewrite index (commit a641ecb) - Planners prefer synthesis: planning reads pages before raw journal
fragments when both exist (commit f509289) - Trigger honesty: automatic distillation fires at compaction (~500 lines),
which no journal has reached β the trigger is dormant until then. On-demand
runs via/potion:learn distillwork today and produced the evidence below.
Evidence
- First real distillation, both scopes: 9 project entries β 3 pages + index
in.potion/knowledge/; 3 user entries β 1 page + index in
~/.claude/potion/pages/; every citation spot-checked to exactly one
journal line:
.potion/phases/07-distill/evidence/02-distill-transcript.txt
(commit 371fc19)
v1.2.0 β the harvest release
Potion is a lean project framework for Claude Code β plans are prompts, disk is memory, evidence or it didn't happen.
1.2.0 closes the loop on knowledge itself: every passing phase is harvested before its verdict is sealed, and the best of it flows to the cross-repo journal from 1.1.0.
Proven retroactively on potion's own 119-agent audit phase β receipts in .potion/phases/06-ingest/.
1.2.0 β 2026-07-05
The harvest release: no closed phase goes cold with its insights unharvested.
Phase-close harvest
/potion:verifystep 4 gains "Harvest before verdict" (pass verdicts only):
sweep the phase's SUMMARY Deviations/Concerns, the verifier's
ladder/panel reasoning in VERIFICATION.md, and any.potion/debug/files
closed during the phase; distill what clears the 5-minute bar into
.potion/learnings.jsonlβ max 5 entries,filesbackpointers to the
source artifact (commit f5e260b)- Duplicate guard: grep existing keys first, harvest only what fell through
during the phase, never re-log; zero new entries is a valid outcome, stated
explicitly - CORE principle: "Phase-close ingest: a pass verdict triggers a harvest of
the phase's SUMMARY/VERIFICATION/debug reasoning into learnings" β
Learnings section, core/CORE.md (commit e3b1438) - Composes with 1.1.0's promote-up bar: harvested entries ride the normal
CORE Cross-repo knowledge bar (confidence >= 8, generalizable, loop-born)
into~/.claude/potion/knowledge.jsonl
Evidence
- The procedure run for real against the cold storage that motivated it β
01-harden's 42-finding audit reasoning: 9 artifacts swept, duplicates
skipped, 3 distilled entries appended, 2 promoted up:
.potion/phases/06-ingest/evidence/02-retro-ingest-transcript.txt
(commit 713dc61)
v1.1.0 β the compounding release
Potion is a lean project framework for Claude Code β plans are prompts, disk is memory, evidence or it didn't happen.
1.1.0 adds the cross-repo knowledge layer: what one repo learns, every repo knows.
Built and verified by potion's own loop β receipts in .potion/phases/05-compound/.
1.1.0 β 2026-07-05
The compounding release: what one repo learns, every repo knows.
Cross-repo knowledge journal
- New user-scope journal
~/.claude/potion/knowledge.jsonlβ same grammar as
.potion/learnings.jsonlplus a mandatory provenance field:
{"source":{"repo":"<repo-name>","key":"<original-key>","ts":"<date>"}} - Promotion bar (CORE): confidence >= 8, generalizable beyond the source repo
(tools, frameworks, protocols β never business logic, secrets, or private
URLs), and born inside potion's verified loop - Memory-poisoning guard: external text is never promoted β only loop-born
entries cross the repo boundary - Append-only, newest-wins by key; interleaved appends from parallel sessions
absorbed by that rule; same ~500-line compaction as the repo journal /potion:learnpromotes up when the bar clears ("Promoted: {key}"), creates
the directory on first use; when in doubt, don't
Delivery
- Planners grep
~/.claude/potion/knowledge.jsonlin plan step 2 and cite
matches asPrior cross-repo learning: {key} (from {repo}) - session-start hook surfaces the newest journal entries under a
"Cross-repo knowledge" header with(from {repo})provenance
Evidence
- Real end-to-end run β genuine promotion, live hook delivery, plan-side
grep + attribution:.potion/phases/05-compound/evidence/03-e2e-transcript.txt
v1.0.0 β the campaign release
Potion is a lean project framework for Claude Code: eleven skills, two agents, one hook.
The filesystem is the memory, plans are prompts, and nothing is "done" without evidence.
This release was built by potion running on itself β the full campaign record is committed at .potion/.
1.0.0 β 2026-07-05
The campaign release: potion brewed itself. .potion/ in this repo is the
live record β design, three phases, two first-cycle pass verdicts so far
(01-harden and 02-empower, both cycle 1, zero gaps). The audits and fixes
below were executed by potion's own loop: workers, blind verifiers, refuter
panels.
01-harden β six-lens audit
- 119 agents over 27 files (10 finders per lens, 3-refuter adversarial
panels, refute-by-default), full coverage, no finders lost - 60 raw findings β 42 unique; 25 confirmed by the panels; 11 refuted
- 20 behavioral defects fixed across 6 plans / 14 commits; 5 style findings
accepted with reasons on record. Highlights:- Verifier never emits VERIFIED β the orchestrator is the single promotion
point - Ratchet checks take their own
check-{source}key, so newest-wins dedup
can no longer shadow a lock - init gained a real new-cycle procedure (and PROJECT.md its
## Phases
section) - Lossless pauseβresume: closed-vocab status captured and restored
- Gap acceptance is user-only
- One law canon
- Install modes that work (skills-dir mode removed)
- Verifier never emits VERIFIED β the orchestrator is the single promotion
02-empower β six mechanisms, every one citing dogfood evidence (Law 10)
evidence/convention β canonical home for runtime proof artifacts,
referenced by path from VERIFICATION.md- Check-runner contract β POSIX sh from repo root, trimmed-stdout vs
exit N
semantics; kills the|| truehack - Build-freshness precondition β verify confirms the running app corresponds
to HEAD before judging behavior - Learnings delivery β planners grep learnings.jsonl into TECHNICAL NOTES;
worker digests carry matching entry keys - ConcernβParked routing β non-gap findings land in STATE.md's Parked list;
nothing evaporates - Continuity freshness β any skill that moves position refreshes the
Session-continuity block
03-polish
- README truth-checked against HEAD and given a stranger-ready
"Quickstart: your first brew" - This release