Repository navigation
MOTO v1.1.08 enhancements - #63
Merged
Merged
Conversation
## Changes - Increased automatic brainstorm proof checks from one to two rounds when Mathematical Proofs and Paper Writing are both enabled. Proofs-only checks remain capped at four rounds, and completed-paper checks remain single-round. ## Bug Fixes - Fixed mandatory proof discovery, proof solver, and Validator context overflows failing to stop continuous proof loops. Autonomous runs now cancel sibling work, preserve a recoverable checkpoint, and show a route-specific model-context notification; repaired role settings resume without stale overflow state. Authored by Patrick White, Patrick@Intrafere.com
Signed-off-by: Intrafere Research Group <208883623+Intrafere@users.noreply.github.com>
Signed-off-by: Pat <pat@local>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Pin *.sha256 to LF so Windows checkouts keep the detached receipt digest byte-exact. - Regenerate the preflight attestation and bundle manifest from LF verifier source. - Classify the Codex websocket event-loop stall monitor as a non-retry wait. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Translate unavailable OS keyring errors into InstallationIdentityError so proof storage degrades to unqualified records instead of failing outright. - Isolate tests from the real installation-global keyring entry with a per-test in-memory identity store; add keyring-unavailable regressions. - Make the launcher Git reprobe test platform-independent. - Install frontend dependencies in the Python CI job for Vitest selector evidence. - Move RELEASE_ROOT out of job-level env (runner context is not allowed there), which made GitHub reject the release-evidence workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Relocate the credential-free compatibility evidence to syntheticlib-trade/compatibility/ and keep PLANS/ fully private. - Allowlist only the approved evidence members at the new location and guard against re-allowlisting anything under PLANS/. - Point the verifier, both workflows, tests, and rules at the new path; regenerate the verifier-hash-bound evidence members. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Make novelty the only admission gate across proof discovery, follow-up
proof rounds, failed-proof hints, proof framing, novelty ranking, rigor
discovery, the brainstorm submitter and Validators (including Lean-verified
rules and the cleanup keep list), topic selection/validation/exploration,
completion review, and paper continuation. Whole-question attacks stay
first in priority; genuinely novel incremental or indirect progress toward
the user prompt is now accepted, while known, routine, trivial, redundant,
and no-path results stay rejected. Rules updated; guard tests added.
- Number published proof-run activity in a bounded process-local journal and
add GET /api/proofs/runs/{proof_run_id}/activity so reloaded or resumed
tabs replay missed Live Activity once without driving run state
(api_contract_version build6-v120).
- Seal compile receipts over their JSON serialization; receipts sealed by
v1.1.08 over raw datetimes are accepted and re-sealed on store instead of
failing as invalid.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
App-level proof-run activity recovery (e2571d7) lists runs via GET /api/proofs/runs on every WebSocket connect. The Playwright fake backend did not mock that route, so six smoke specs failed their no-unexpected-requests assertion in CI. Return an empty ProofRunCollectionResponse-shaped collection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Formalization, tactic-script, Lean placeholder, and brainstorm proof-gate repair wording now refer to the selected target instead of a "high-impact target", and ask for the precise formal reading that best preserves the source claim rather than permitting a narrowed lemma. The Aggregator Lean route prefers the highest-impact theorem the submitter can completely prove, and relevance rationales say "plausibly helps". Adds a regression test that formalization prompts carry no contradictory narrowing guidance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Failed proof targets are no longer re-run unchanged in a separate retry pass after each completed paper. Discovery now sees unresolved targets (the brainstorm's own, or a completed paper's source brainstorms') as open targets and may link a materially different retry through a validated retry_open_target_id, which resolves or updates the original FailedProofCandidate. Discovery and rigor prompts weigh direct solutions against the 5-attempt Lean budget and fall back to the strongest provable novel piece. Also raises the default Lean proof timeout to 2000s (migrating the old 600/900 shipped defaults), and adds a Codex >15-minute known-issue warning with a safe external link to the 1.1.08 release notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A broken or unusable Lean/Mathlib workspace is now a typed repair stop (LeanWorkspaceRepairRequiredError) rather than proof feedback, a failed open target, or a spent attempt. Autonomous, Aggregator, Compiler, LeanOJ, and manual proof checks stop with a durable lean_workspace_repair_required message and keep their checkpoint; Autonomous saves the round as resumable lean_workspace_blocked. Lean-bound model calls are skipped when setup is known failed, and each proof round, rigor cycle, and final-solver attempt gives a failed setup one fresh retry first. Stored workspace failures from older builds are filtered out of attempt history, failure hints, and Live Activity. On Windows, when <data root>/lean4_workspace is too long for Mathlib's build files, the workspace moves to a per-data-root folder under %LOCALAPPDATA%\MOTO\lean and the launcher removes the unusable in-root MOTO workspace. If no short location exists, the launcher disables Lean with lean_workspace_path_too_long and the path problem is latched before any lake work. Bumps api_contract_version to build6-v121 for the new WebSocket event. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A later status write could reopen a run whose terminal event was already published (for example a repair-required stop followed by a stray "stopping" update), so the source looked busy again. The run manager now ignores status changes once a run is terminal, the frontend merge keeps a terminal snapshot over a stale same-generation one, and the repair guidance also shows when the backend ends a repair run as status "error". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- py/weak-sensitive-data-hashing (high): the OpenRouter validation state was keyed by a SHA-256 of the API key. It now keeps the validated key in memory, like rag_config already does, and compares with hmac.compare_digest, so no credential is hashed. - js/prototype-polluting-assignment (medium) and js/remote-property-injection (high, extended suite): the proof-run activity tracker stored cursors in a plain object keyed by run ID, so a run ID of "__proto__" wrote onto Object.prototype. It now uses a Map and persists the same JSON shape. Verified with CodeQL 2.27.2 locally (actions, python, javascript-typescript; default and security-extended suites): no alerts beyond those already on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Subscription providers - Cloud providers are now registry-driven: subscription_providers/metadata.py lists every provider and derives validation, route labels, locks, and status sets; the frontend oauthProviders.js mirrors it (parity tested). - Sakana Fugu moves onto a shared SubscriptionApiKeyClient, and Kimi Code (membership API key, region detected on save, low|high|max effort, /usages quota reset for 403 usage windows) is added on the same client. Every registered adapter runs the subscription conformance suite. - Settings panels, the OpenRouter/OAuth modal, and reasoning controls render from the registry. Lean/Mathlib setup recovery - A git checkout cut short (for example by a full disk) left Mathlib's package half-updated, so every later setup failed the same way until .lake was deleted by hand. Setup now resets interrupted package checkouts to their recorded commit (wiping .lake if that fails), and that error output also counts as stale Lake state. Because this runs inside setup, the per-round retry and Start recover without a restart. - Mathlib is installed once and kept at its recorded version instead of running `lake update` (newest master) on every backend start. - Downloads go to a MOTO-owned .moto_mathlib_cache (an operator MATHLIB_CACHE_DIR wins) and `lake exe cache clean` prunes archives the installed version no longer uses. The shared ~/.cache/mathlib older builds filled is only pointed out in the log, since other Lean projects may use it. - A missing .olean for a renamed or removed module is proof feedback, not a workspace repair. Proofs and completions - Each attempt's Lean output and goal states are bounded in prompts (durable feedback keeps everything), so one huge diagnostic cannot overflow the context window. - A candidate whose formalization overflows the context is set aside while siblings and later rounds continue; only a round where nothing can reach the model stops. - A reply cut off at the output-token limit before any answer is treated as empty instead of replaying its unfinished thinking. - Proof runtime settings are versioned so unchanged defaults follow new shipped defaults. Tooling - `npm run test:codeql` runs GitHub's CodeQL analyses locally and fails on alerts origin/main lacks; `npm run test:github` runs every ci.yml check, release evidence, and CodeQL before a push. Bumps api_contract_version to build6-v122. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The SyntheticLib release-evidence workflow ran only on pushes to main and installs only pytest. tests/conftest.py (added in v1.1.08) imports MOTO's config, which needs pydantic, so the workflow failed at startup and the break first showed up after a merge. - conftest guards that need MOTO runtime modules stand down when those modules' dependencies are not installed; a missing backend module still fails. - The policy-version cross-check test, which imports pydantic-backed models, skips without pydantic; the full CI job still runs it. - The release workflow also runs on pull requests and dev/** pushes; only main uploads the release evidence. - A test fails if any workflow stops running on pull requests and dev pushes. - `npm run test:github` runs the release workflow's focused tests with every package except pytest and its dependencies hidden, reproducing the runner's environment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI's frontend audit step failed in about a second on 2f5d689. The same audit finds 0 vulnerabilities against the committed lockfile, and no high or critical npm advisory from the past month matches it. `npm audit` exits 1 both for findings and when the registry's advisory request fails, so a registry error fails the build like a vulnerability. scripts/run_npm_audit.py tells npm's three --json outcomes apart: - a finished audit (metadata.vulnerabilities): pass on exit 0, otherwise fail at once and list the high/critical packages; - a failed advisory request (top-level message, per npm's audit-error.js): retry with 15s/45s backoff, fail if all 3 attempts fail; - any other npm error (for example ENOLOCK): fail at once with npm's code and summary. It decodes npm's output as UTF-8 (Windows' cp1252 default broke on advisory text such as curly quotes) and passes --offline=false so an offline npm config cannot skip the request and report a clean audit. CI's frontend job and `npm run test:github` both run it. Also corrects the README, which said the launcher runs `npm audit fix`; it runs a read-only audit and warns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MOTO v1.1.08: Kimi Code, Mathlib recovery, and CI fixes
Bug fixes
Lean / Mathlib
when the disk filled up): every retry and restart failed with "would be
overwritten by checkout". Setup now resets half-written package
checkouts to their recorded commit (wiping .lake if that fails), and
the same repair runs on the mid-run retry, so no restart is needed.
lake update, moving Mathlib to the newestversion and downloading a new cache each time. Mathlib is now installed
once and kept at its recorded version.
MOTO-owned .moto_mathlib_cache, and archives the installed version does
not use are pruned after each setup. The shared ~/.cache/mathlib is
left alone because other Lean projects may use it.
broken workspace, so MOTO wiped Mathlib and stopped the run for repair.
It is now proof feedback for the model.
Proof workflows
used as the answer (in retries and Supercharge). It is now treated as
empty.
attempt's Lean output (30k chars) and goal states (10k) are now bounded
in prompts; stored feedback keeps everything.
Autonomous run, and ended manual pruning loops. That candidate is now
set aside as a failed open target while the others continue; only a
round where no candidate can reach the model stops.
workflow for that stop. They no longer are.
to defaults on every load. Proof settings are now versioned, so chosen
values are kept.
Providers and settings
panels; every panel now shows a banner per provider.
editable during a run in Aggregator/Compiler. It is now normalized per
provider and locked while running.
reported unavailable. It no longer does.
mode.
the wrong message.
provider's name.
MOTO_SAKANA_FUGU_API_KEY. The MOTO_ variable now wins.
It now returns a clean error and keeps the previous key.
did not already know had no context/output limits.
CI
since v1.1.08: it installs only pytest, and tests/conftest.py imported
pydantic at startup. It also ran only after merging, so the failure was
first seen on main. The conftest guards now stand down when MOTO's
dependencies are missing, the workflow also runs on pull requests and
dev/** pushes, a test fails if any workflow loses those triggers, and
npm run test:githubruns these tests with only pytest installed.answer, because npm exits 1 for that just as for a vulnerability. The
audit now retries only a failed advisory request, and still fails at
once on high/critical findings or any other npm error.
npm audit fix. It runs a read-onlyaudit and warns.
New
on save, low/high/max reasoning, usage windows and a quota display.
in the frontend). Sakana Fugu moves onto the shared API-key client,
and "max" reasoning is allowed for any provider that supports it.
MOTO-Autonomous-ASI User-Agent.
npm run test:codeqlandnpm run test:githubrun every GitHub checklocally; a CI job fails dev pushes that add CodeQL alerts main lacks.
/api/featuresadds kimi_code_availableand subscription_providers, plus the subscription_provider_error event.