ISE carries an AI agent's work from current state → ideal state through verifiable iteration — supplying the two faculties a model still can't self-impose, and nothing it can.
What & Why · Philosophy · Three Organs · The ISA Contract · Measurement · Quickstart · Layout
AI agents get more capable every month — but two gaps don't close with scale:
- They don't remember. Each session starts cold. What worked last week, the dead-ends already hit, the standard that got tightened — gone by the next window.
- They narrativize "done." Ask a model whether the task is complete and it will argue yes, persuasively — usually without a test that could have proven it wrong. Generation gets more convincing with scale; ground-truth does not.
ISE supplies exactly those two missing faculties — durable memory and disciplined falsification — plus a third that compounds them, assimilation (take a working part from anywhere and wire it in). It deliberately supplies nothing a model can already do for itself.
ISE is a guest, not a host. Claude Code is the engine — loop, tools, subagents, context, permissions. ISE is the thin discipline layer riding on it: a protocol + validators, not a runtime. Every mechanism maps to a native lever (hooks, skills, MCP), and every part is built to fall away as a smarter model renders it unnecessary — the framework is designed to lose weight, not accrete it.
A statement of "done" is real only if you can name the single probe that would prove it false.
If you can't name the test, you don't have a criterion — you have a wish. Models are fluent at the wish. So ISE makes "done" falsifiable: every criterion carries one binary probe, and work stays not-done until a disprove-it attempt fails. A verifier beats a plausible claim.
Falsification becomes more valuable as models improve, not less. Scale closes the gap between a convincing draw and a real one — so the check, not the drawing, is where the truth still lives.
The convergent archetype is Ansel Adams' Zone System: previsualize the ideal, define the zones (criteria), execute, verify against the previsualization. Borrowed ideas enter as conjectures and earn "fact" only by surviving a probe — and for an assimilated tool, the probe is reading its source, not its README.
The whole core is three organs, each wired to a native Claude Code lever.
| Organ | Mechanism | What it does |
|---|---|---|
| 1 · Memory | append-only ledger (~/.ise/ledger.jsonl) + momento recall |
Every closure records outcome + what-was-learned as cross-session, cross-project memory. The anti-cold-start layer: the DOS memory-management playbook (overlays → load-just-in-time, paging → retrieval) applied to the context window. |
| 2 · Falsification | the ISA contract + a probe-runner hook | "Done" is a document whose every criterion names its refuting probe. A PreToolUse gate refuses to save an ISA with fake/missing probes — the discipline is enforced, not asserted. |
| 3 · Assimilation | /recon-mine → the /assimilate loop |
Mine any source (repo, thread, tool) for a load-bearing part, verify it exists in the code, repurpose it for our flow, wrap it as an organ, record the closure. Low-friction extension is the product. |
Every unit of work is stamped with an ISA (Ideal State Artifact) — one living document that is at once the statement of done, the test harness, the build driver, and the record. See core/isa/ISA.template.md.
Credit: the Ideal State Artifact concept is adapted from Daniel Miessler's LifeOS. ISE's contribution is the falsification-first recast — every criterion carries a single refuting probe, work stays not-done until a disprove-it attempt fails, and closure emits a ledger row.
The laws (v0.1):
- Ends, not methods. Encode the goal + invariant standards, never the principal's habits. Encode process → capped at you; encode goals → free to surpass you.
- One binary probe per criterion, or it isn't a criterion. If you can't name the probe, split it. Enforced by a probe-runner that refuses the unverifiable.
- Beyond "done": feasibility + consequence. Every ISA also carries feasibility probes (can this be reeled in, at what cost?) and blast-radius probes (if achieved, what's the impact?).
- ≥1 Anti-criterion. The failure-twin includes "succeeds and causes damage," not just "compliant but useless."
- Authored adversarially, not solo. Collide candidate ISAs and attack the output with an Anti-ISA auditor — because "done" is often emergent.
- Closure emits a ledger row. The terminal outcome + the conjecture/refuted-by/learned changelog become memory for the next task.
ISE is v0.1 foundation — a walking skeleton, hardened by a two-pass adversarial review (codex + gemini, swapped lanes) and grounded in the real Claude Code lever surface.
What is verified: the mechanisms fire. The ISA validator blocks fake probes (exit 2), the pre-action gate stops irreversible ops, and the ledger appends/aggregates under a concurrency model — each a plain stdin→exit-code program you can test (see the adapter verify block).
What is a hypothesis: that the discipline nets better outcomes than an unaided agent. The ledger is the measurement organ — effectiveness priors move only on real outcomes, harness-failures stay neutral — so the number is accumulated and audited, not asserted. Treat every comparative claim as unproven until a ledger cohort backs it.
ISE is a guest — you wire it into Claude Code (requires node on PATH).
git clone https://github.com/campbellcharlie/ISE.git ~/src/ISE
cd ~/src/ISE
node install.mjs # wires hooks + skills + agent-discipline rules into ~/.claude (idempotent)
# preview first with: node install.mjs --dry-run
# then restart Claude Code — hooks fire automatically, CLAUDE.md orients each sessioninstall.mjs merges the adapter hooks into ~/.claude/settings.json (resolving this clone's absolute path
so they fire in every session), appends two agent-discipline rules to ~/.claude/CLAUDE.md, and symlinks the
skills — all idempotent, with .ise.bak backups. It honors CLAUDE_CONFIG_DIR for a non-default config.
Manual alternative (what install.mjs automates): merge adapters/claude/settings.json's hooks block
into your .claude/settings.json and symlink the skills — see adapters/claude/README.md
for the full wiring, a verify block, and escape hatches (ISE_GATE_OFF=1 disables the pre-action gate + exfil guard for a session).
State home: the ledger, recon records, and research artifacts live in ~/.ise (override with $ISE_HOME), never inside this source repo.
ISE/
README.md ← this file LICENSE ← MIT
CLAUDE.md ← agent orientation (auto-loaded each session)
ise.isa.md ← ISE's own ISA (it dogfoods its contract)
core/
isa/ISA.template.md ← the contract (fillable)
ledger/ledger.mjs ← append/aggregate lib (defaults to ~/.ise)
ledger/schema.md ← row schema + closure taxonomy + concurrency
protocol/protocol.md ← core-is-a-protocol spec (JSON in / JSON out)
module-contract.md ← what a module must provide
adapters/claude/ ← wires ISE into Claude Code (guest, not host)
hooks/{ise-session-start,ise-validate-isa,ise-preaction-gate}.mjs
skills/{isa,recon-mine,anti-isa}/
docs/{assimilate.md,lever-map.md} ← the assimilate loop · mechanism→lever map
modules/ ← pentest / dev / research plug in as modules
MIT © 2026 Charlie Campbell