README.md

September 19, 2026 · View on GitHub

SEAL — No seal, no advance

▶ Start in 30 seconds  ·  See the Board  ·  Why this wins  ·  Beyond Jev  ·  SEAL vs Jev log  ·  Public proof

Python License Invariant Coverage


The product brain is a sealed graph

SEAL (Seal · Evidence · Atomic Lock) is a workflow kernel.
Generation can fill Candidates. Only a Seal advances the product. Effects (CONTEXT, codegen, deploy) stay locked until seals — and coverage — clear.

Fleet harness (v0.3.7+): run scripts/harness/*.sh from Herdr plans — never pane prompts (COVERAGE-POLICY.md).

Jev answers questions.
SEAL answers whether the world may change — and refuses to hide the exception queue.


Kernel (one invariant · five stages)

Gap → Candidate → Strike → Seal → Effect

You seeYou doAffordance
GapOpen a typed holeseal open / seal init
CandidatePropose a fillseal fill
StrikeJudge under locksseal strike or seal seal-code
SealAppend-only acceptstamped on the graph
EffectUnlock side effectsseal effect (blocked if escalations open)

See the Board

SEAL Gap Board UI — Next, Open, Blocked, Sealed, Coverage, Effects

Live Gap Board — SEAL vs Jev compare (ship locked)

Live render: compare.jev — Next=claim escalate, effect.ship locked (for readers who cannot run board.html JS on GitHub)

Live Gap Board — demo-open open/blocked cards

Live render: demo-open — open + blocked gap cards

Affordance map

SurfaceWhat it invites
Next (cyan)Do this gap now — Vein × risk ranked
Open / Blocked / SealedStatus at a glance — no module parade
Coverage pillsAuto · Code · Human · Escalate — nothing hidden
EffectsLocked / Ready / Done — post-seal only
Open gap packPrimary CTA — start a product

Live HTML boards in-repo (open via local server — GitHub’s HTML preview does not run the dashboard JS):
examples/compare-jev/run/board.html · examples/demo-open/board.html · examples/readmaster-habit/board.html · examples/public-repos/langchain/board.html

PYTHONPATH=src python3 src/seal/cli.py board --graph examples/readmaster-habit/graph.json --out /tmp/board.html
open /tmp/board.html   # or xdg-open

Agent parade vs SEAL

Agent parade vs SEAL

Agent / toolkit paradeSEAL
Unit of progressStep ran / tokens streamedSeal recorded
Exception queueHidden in “94% accuracy”Coverage ledger
Deploy unlockHope + PR descriptionEffect gate
LearningPrompt HebbianVein on seals only

Coverage Gate (beyond Jev)

Accuracy-only vs Coverage Ledger

Developers warned: schema-valid ≠ true, accuracy without coverage is dishonest, mint ≠ product brain.
SEAL stamps every seal auto | code | human | escalate and can keep Effects locked while escalations remain open.

seal escalate --graph G --gap gap.… --reason "low confidence"
seal coverage --graph G

docs/BEYOND-JEV.md · docs/COVERAGE-POLICY.md


Worked compare: SEAL vs Jev (2026-09-19 KST)

We ran the same BlogRich-like ship question through Jev mint and through SEAL.

Full log: examples/compare-jev/COMPARE.md · board: examples/compare-jev/run/board.html (open via local python3 -m http.server — GitHub file view does not run the dashboard JS)

Live Gap Board — compare.jev ship locked

Live Gap Board — demo-open

ObservationJev-onlySEAL (real run)
Forbidden copy “명문대 합격 보장”BLOCK noul=0.99 (jev-1.13.0) — stdout endsSame mint via harness → open escalate on gap.compare.claim
Clean copyPASS noul=0.04Documented; not used to unlock ship
Env PATH/HOMENot a mint concernSealed code with env-ready-done.md
Blocked approval / formNo durable queuehuman_form_pending · adopt=defer · never auto-click
Ship / READYPASS mint ≠ permission to change the worldeffect.compare.ship lockedunsealed:['gap.compare.claim']

Coverage ledger: seals=2 · code=1 · escalate=1 · auto_rate=0.5 · escalate_open=claim · human_form_pending=human_approve.

Falsifiable takeaway: Jev judged the claim correctly; SEAL refused to ship while the exception queue was open. If the board ever shows ship ready while claim is still open, this claim is wrong — reopen the graph.

Dashboard check (2026-09-19): Gap Board had a JS bug (const esc shadowed the escape helper) so cards did not paint; fixed in v0.3.9. Live verify on :8877 — compare + demo-open boards render Next/gaps/coverage/locked effect + sticky CTA.


Start in 30 seconds

git clone https://github.com/Reasonofmoon/seal.git && cd seal
bash scripts/demo.sh

What you get: open pack → seal-code on first gap → coverage ledger → Gap Board path printed.

IntentCommand
Scaffold a productPYTHONPATH=src python3 src/seal/cli.py init --dir .seal --id myapp --idea "…"
See next hole… status --graph .seal/graph.json
Deterministic seal… seal-code --graph .seal/graph.json --gap … --ok
Render board… board --graph .seal/graph.json --out board.html
Merge/deploy gatecopy recipes/github-seal-check.md
CI templatecopy recipes/github-actions-seal-ci.yml.github/workflows/

Coding agents: read AGENTS.md first.


Why this wins (falsifiable)

CriterionPipelinesSpec factoriesJev aloneSEAL
Advance gate
Lock localitylate auditn/a✓ on Gaps
Coverage visiblecaller’s job✓ ledger
Durable SSOTweakdriftsnoneSeal Graph
Public counterexamplesscored

Full argument: docs/WHY-SEAL.md

Public proof (other people’s famous repos)

SubjectHardest failOpen
langchain-ai/langchainadvance_gatecase
crewAIInc/crewAIadvance_gatecase
microsoft/autogendurable_ssotcase
vercel/aiadvance_gatecase
typesafe-ai/typesafe-sdk-pythonmint ≠ braincase

Layout

docs/assets/     hero · kernel · board UI · parade · coverage
packs/           edtech · audit.workflow-class · blogrich · publish
src/seal/        kernel · vein · coverage · board · cli
examples/        sealed proofs + Gap Board HTML
scripts/demo.sh  one command
recipes/         CI + merge gate

Python kernel: zero runtime deps. Node optional for TypeSafe mint only.


License

MIT · Reason of Moon