- Run every
lean,lake, and Lean compiler command throughtools/leanrun. The runner enforcesMemoryHigh=4G,MemoryMax=6G,MemorySwapMax=1G,CPUQuota=100%,nice -n 10, andionice -c 3. - The runner acquires the same machine-wide lock as
../vq/tools/leanrunand setsLEAN_NUM_THREADS=1. Never bypass the runner or run Lean or Lake processes concurrently. - Add a reasonable
timeoutto diagnostic commands whose runtime is not intrinsically bounded. - After a target reaches its timeout without a diagnostic, do not run the unchanged target again. First divide the proof or module, or add a verified reusable lemma that reduces the elaboration boundary.
- Pass
--timeoutfor a command-specific limit and--lock-timeoutwhen the default 900-second lock wait is unsuitable. Keeptools/leanrunas the first command token so one approval covers every Lean target. If the runner cannot create its user scope or enforce the required cgroup properties, stop and ask the user. - Do not wrap
tools/leanrunin another resource scope. Do not substitute an address-space limit such asulimit -vorprlimit --as.
The standard command form is:
tools/leanrun --timeout <duration> <lean-or-lake-command>- Keep the repository tool as the first command token for verification runs:
tools/talos-artifact.js,tools/talos-proof.js,tools/artifact-proof.js,tools/artifact-conformance.js, ortools/artifact-release.js. Request approval for that tool prefix rather than one subcommand, artifact, corpus file, temporary path, or internal child command. - Put repeatable corpus membership and expected results in the tool's checked configuration. Do not place globs, brace expansions, generated file lists, pipes, or shell wrappers around a repository verification command.
- Use direct
tools/leanruncommands only for focused diagnostics that do not belong in an existing repository gate. Keeptools/leanrunas the first token and pass file paths as ordinary arguments without shell expansion.
Treat accepted artifact theorems and independent package verification as gates. Evaluate each iteration across proof-generation time, successful LTG retrieval, agent revisions, proof structure and size, shared abstraction use, compiler-derived evidence use, and applicability beyond the measured program. No single measurement determines retention or promotion. Do not treat raw source bytes, word length, or identifier length as proof complexity. Longer declaration names often record useful shared theorem use. Consider lines, explicit syntax, local scaffolding, repeated derivations, and shared theorem or tactic use. After every proof run, review the journal, accepted proof, and telemetry together. Use that evidence to consider changes to compiler annotations, shared lemmas, tactics, and guidance, as well as the instructions that govern proof generation and journaling.
Keep journals as frequent, natural prose. They should identify supplied help that worked or failed, explain changes of approach, and note missing general abstractions. Test changes on fixed artifacts, preserve failures, and use diverse or held-out demos to avoid problem-specific optimization.
Preserve checked narrow or program-specific LTG material as worked examples by default. Generality and recurring evidence determine importability, automatic selection, and promotion, while specificity alone does not justify deletion. Remove an example only when it is invalid, stale, unsafe to disclose to a measured proof task, or duplicated without a distinct lesson.