Skip to content

Releases: Ian-Louw/potion

v1.4.1 β€” the mischief release

Choose a tag to compare

@Ian-Louw Ian-Louw released this 05 Jul 22:05

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_at is 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

Choose a tag to compare

@Ian-Louw Ian-Louw released this 05 Jul 20:22

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 β€”
    files backpointers 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

Choose a tag to compare

@Ian-Louw Ian-Louw released this 05 Jul 20:04

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 an index.md listing
    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 distill work 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

Choose a tag to compare

@Ian-Louw Ian-Louw released this 05 Jul 19:47

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:verify step 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, files backpointers 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

Choose a tag to compare

@Ian-Louw Ian-Louw released this 05 Jul 18:26

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.jsonl plus 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:learn promotes up when the bar clears ("Promoted: {key}"), creates
    the directory on first use; when in doubt, don't

Delivery

  • Planners grep ~/.claude/potion/knowledge.jsonl in plan step 2 and cite
    matches as Prior 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

Choose a tag to compare

@Ian-Louw Ian-Louw released this 05 Jul 15:58

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)

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 || true hack
  • 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