mise is LeanEvolve's public task interface. uv supplies the exact locked Python
environment behind every Python-backed task, and Lake remains the Lean build and
kernel interface. The commands in mise.toml are deliberately visible and are the
same commands used by scientists, CI, and automated agents.
mise trust
mise install
mise run setup
mise run doctor
mise tasks
mise run demoTrust is a mise safety gate required once per checkout. Setup pins Python and uv,
installs the Git-revision-pinned ShinkaEvolve dependency from uv.lock, and is safe
to repeat. It ends with the next useful commands. doctor --json reports resolved
absolute paths and versions without printing credential values.
mise run checkruns lint, tests, and incremental Lake builds. It is the fast edit-time signal and does not claim a clean forensic replay.mise run auditchecksuv.lock, runs the configured publication scan and documentation link check, cleans and rebuilds each Lake project, runs configured axiom gates, and verifies the offline demo. Add--replay latestor--replay allto include campaign replay.mise run demoevaluates the bundled candidate through the ordinary Lean trust boundary and writes a small hash-verified receipt without a model call.
mise run plan -- shinka --proposal-steps 3
mise run shinka -- --proposal-steps 3
mise run shinka -- --yes --proposal-steps 3
mise run campaigns
mise run replay -- --run-dir runs/<campaign-id>Planning performs the same lock, interpreter, tool, storage, schedule, configuration,
and cost checks as launch, but creates no campaign directory and consumes no model
turn. Interactive launch requests confirmation. --yes is the explicit automation
policy for non-interactive launch and appears in the task receipt.
The current reusable runner accepts sequential --proposal-steps. Ordered
solve/field-expansion chunk schedules belong to campaign adapters that declare a
chunks schedule in leanevolve.toml; the parser preserves each solve and expansion
epoch in order and never uses mise job parallelism to alter that trajectory.
A Spotlight is a short solve schedule focused on one frozen intermediate goal:
leanevolve plan <project-workflow> --spotlight 'intermediate_goal for 3 turns'
leanevolve run <project-workflow> --yes -- \
--spotlight 'intermediate_goal for 3 turns'The project adapter supplies the goal graph and kernel-backed relevance path.
The framework freezes the exact target statement, keeps the full field visible,
records incidental accepted goals, and permits only proved, refuted, or
unresolved as the sprint outcome. Exhausting the turn budget is always
unresolved; it is never evidence of refutation.
The configured GitHub Pages site is generated from this repository, never hand-maintained. Two pages are rendered from Markdown and two are copied from hand-written HTML:
| Page | Source |
|---|---|
index.html |
README.md |
workflows.html |
docs/workflows.md |
architecture.html |
docs/architecture.html |
ledger.html |
docs/ledger.html |
The copied pages carry their own stylesheet so they still render correctly when
read as files in a clone, and architecture.html's <style> block is the one
the rendered pages reuse. A test asserts the copied pages share it verbatim, so
the design system cannot drift page by page.
mise run docs
python -m http.server --directory _site 8000docs writes the site to the ignored _site/ directory and then checks it. Because
Pages serves the site under a repository prefix, a repo-relative link such as
../README.md would break once published; the builder rewrites links that name a
site page to that page, and every other repository path to a commit-pinned GitHub
URL. The check fails on any internal link that would not resolve, on a link that
would publish raw Markdown, and on a site with no index.html. Each page records the
commit it was built from in a leanevolve-source-commit meta tag and its footer.
The Documentation site GitHub Actions workflow runs the same command through the
same locked environment on every pull request, and deploys to Pages only from
master. A pull request therefore proves the site builds before it can publish.
Version-controlled scientific defaults live in leanevolve.toml. Machine-specific
paths, ledger locations, and limits belong in the ignored
leanevolve.local.toml:
mise run configure -- --artifact-root /mounted/evidence/runs
mise run configure -- --cache-root /local/fast-cache
mise run configure -- --ledger-database /mounted/evidence/research.sqlite3 \
--ledger-artifacts /mounted/evidence/ledger-artifacts
mise run configureThe first three commands write overrides; the last prints effective settings. The resolved absolute paths, storage reserve, filesystem location, tool versions, and input hashes are retained in task or campaign receipts.
The ledger paths are an all-or-nothing pair. A project opts into fail-closed
cutover by listing workflow names under ledger.required_workflows in the
version-controlled settings. Those workflows then refuse to start unless the
database and writable content-addressed artifact store are both available.
Append --json to a mise task, for example mise run status -- --json. Receipts use
the versioned leanevolve-task-receipt-v1 format and include the task version, input
and environment details, output paths, scientific status, guarantees, exclusions,
and recommended next action.
Stable exit classes are: 0 success, 2 malformed input, 3 missing tool or
environment, 4 validation rejection, 5 completed scientific non-result, 6
infrastructure failure, and 130 interruption. Detailed subprocess logs are kept
under .cache/leanevolve/logs/; the default output stays short.
src/leanevolve/workflow/ owns the public task experience: environment diagnosis,
portable settings, planning, cost and storage gates, status, and task receipts. The
existing evaluate.py, run.py, and replay.py modules are library/runner adapters
invoked by that layer. Old console scripts remain compatibility surfaces, but the
documented supported entry points are the mise tasks.