Albilich is an auditable multi-agent research system for difficult mathematics. It coordinates proof construction, counterexample search, literature review, computer algebra, strict verification, integration checking, and final writing around one persistent proof graph. A run returns an argument that has passed the configured review gates, a validated counterexample, or an honest partial result that names the remaining obstructions. Informal model review is not a formal proof.
The current trust-boundary assessment, real-versus-simulated test record, and
remaining design weaknesses are documented in
docs/fourth_pass_systems_review.md. The
corresponding finding-to-control plan is
docs/soundness_remediation_blueprint.md.
This is not a single-pass prover. Every mathematical claim, route, inference,
proof obligation, source record, and proof artifact lives in a versioned SQLite proof state.
After initialization or an explicit schema migration, agents and host workflows
can advance that state only through validated patches, and only verifier roles
can issue content-bound review certificates or refutations. A theorem receives
the internal solved status only after
its proof spine passes strict verification and a separate integration check
confirms that it proves the original statement.
This release brings the current Albilich workflow to the standalone public repository. It changes how long runs choose their next mathematical move, retrieve external results, coordinate parallel work, recover verifier evidence, close proof approaches, report live state, and turn a reviewed result into a readable paper.
- Research intelligence is now proof-graph aware. The scheduler computes the smallest active sufficient-route obligation cut, scores the decisive bottleneck, retrieves from eighteen reviewed method cards, and learns local strategy-family outcomes only from later verifier-accepted evidence. Context assembly now builds one revision-local graph-policy index and reuses it for root distance, frontier, route, proof-obligation, and artifact decisions. Evidence-driven proof programs add explicit case coverage, continuation and abandonment criteria, verifier handoffs, threat propagation, and root-leverage accounting.
- Stalled attacks change mathematics, not just wording. Repeated bottlenecks trigger a representation-switch contract, theorem-adaptation packets, proof-interface checks, a creative proof portfolio, or a new research philosophy. Operator steering now forces a fresh approach-alignment wave and carries the selected strategy into its decisive pilot instead of being lost at the next scheduler boundary.
- Literature search has a dedicated high-signal path. Optional Matlas and UW TheoremSearch adapters give the literature reviewer bounded theorem candidates. Provider text is normalized, size-limited, origin-checked, and treated as untrusted discovery data until the reviewer inspects the primary source and records an exact retrieval card.
- Parallel research and verification are substantially more robust. Hard problems use three research branches with shared compact summaries and negative evidence. Fresh source handoffs are prioritized, strict verifier targets and proof evidence survive root cuts and context compaction, locally proved lemmas are recovered for verification, and compatible stale verifier patches are revalidated instead of silently discarded.
- Proof closure is stricter and more accurate. Integration obligations remain authoritative, confirmed counterexamples close only explicitly named obligations with bound validation evidence, quantitative claim strengthenings are preserved, and repaired routes return to verification. Integrated claims and routes leave the active frontier, while a strictly verified root remains visibly integration-pending until the final alignment gate accepts it.
- The live dashboard tells the truth about a large proof tree. It shows claim hierarchy and containment, lifecycle colors, recovered verification, active proof obligations, branch work, verifier capacity, run progress, and cached-versus-new token accounting without presenting retired work as open. Mathematical notation is rendered as LaTeX, steering delivery is visible, and cumulative human-readable papers can be opened in the embedded viewer.
- Long-running sessions recover more safely. Structured-output repair handles malformed JSON, LaTeX commands, and inequality escapes; reconnecting Codex sessions receive bounded grace; monitor refreshes cannot pile up; and abnormal child exits remain visible. Terminal, steering, and branch dispatch priorities are protected so optional writing cannot preempt required work.
- Reviewed mathematics now has a stronger publication path. The writing gate normalizes LaTeX, detects thin or fragmented exposition, preserves location-specific editorial issues, compiles with restricted service paths, and exports the certificate, article source, and PDF as distinct artifacts. A non-blocking writer sidecar also produces a cumulative HMT paper after each ten newly integrated claims without spending research budget or mutating the proof revision.
- The public regression suite grew with the engine. The synchronized release is continuously tested across scheduling, retrieval, research intelligence, proof-state mutation, parallel recovery, verifier gates, dashboard state, CAS contracts, and mathematical writing.
In practice, the new engine spends less time circling around attractive side lemmas and more time attacking the exact statement that would close the best route. It also makes the boundary between “promising,” “strictly verified,” “integrated,” and “solved” explicit at every stage.
The paper-related archives remain in experiments/: the
ten-case RealMath study, Problem 20.2 and its PSL-family studies, the two
one-hour Problem 17.91 runs, and Problem 21.142. Problem 21.149 is an additional
historical archive. The paper data index
records the original paper mappings and identifies the later addition.
Unrelated experiment data is excluded from Git tracking while local copies
and prior Git history are retained. Archived outcomes are internal historical
records, not independently graded general-performance or causal evidence.
The experiment auditor checks the retained archives and separately held data.
An archive may be promoted to protocol_validated only with a complete protocol
manifest, hashed problem and prompt files, environment and seed records, run and
event logs, proof snapshot, independent grade, a predeclared stopping rule, and
matched repeated controls for any ablation. General-performance protocol v5
additionally requires at least two completely matched conditions, archived and
hashed distinct condition specifications, an Ed25519 preregistration receipt
and two grader signatures whose public keys are supplied to the auditor out of
band, and a preregistered deterministic
problem-cluster bootstrap. A signed assignment schedule fixes every
problem/repeat block and the replayable within-block condition order. The
auditor reconstructs the primary contrast and its interval from the registered
independent labels; reported statistics are not trusted as opaque numbers. A
two-sided normal approximation for paired problem means also recomputes the
registered sample-size requirement from alpha, desired power, minimum
detectable effect, and the stated standard-deviation assumption. The assumption
and its basis remain scientific inputs rather than facts proved by the auditor.
Protocol v4 archives remain replayable under their historical, structurally
validated power declarations, but do not satisfy this stronger v5 guarantee. See
docs/experiment_protocol.md.
Scheduler-calibration protocol v6 adds the missing runtime join. Each matched workflow condition is a protocol-v3 randomized block assignment tied to the exact problem bytes, policy semantic digest, candidate sets, dispatched actions, and contiguous exposure sequence. The signed schedule fixes every problem and prompt digest, arm-to-run mapping, budget, and stopping rule before execution. Block seeds are derived from an Ed25519-signed post-registration randomness receipt whose authority key is supplied out of band and must differ from registration and grading keys. The archive carries a complete trace finalization record. Condition-blind graders sign only their condition-free grading-artifact manifest and blinded grading attestation; a separate execution-trace auditor signs the unblinded manifest and completeness statement. This validates an archived design; it does not itself establish proof-solving performance.
npm install -g @openai/codex@0.152.0 # CI-tested execution backend
python3 -m agents.generation.phase2.cli init agents/generation/data/example.md
python3 -m agents.generation.phase2.cli attempt agents/generation/data/example.mdExecution requires Linux, bubblewrap (bwrap), and prlimit (util-linux).
PDF export and the complete test suite also require pdflatex and the house
template packages, including newpxtext/newpxmath. On Debian/Ubuntu install
texlive-latex-base texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra texlive-plain-generic tex-gyre lmodern.
The lmodern package supplies lmodern.sty; fonts-lmodern alone does not.
On macOS, run the worker and dashboard in the same Linux VM. Do not open
one live SQLite WAL database concurrently from the host and guest; their
shared-memory and locking mechanisms are not a cross-OS database service.
Prefer a VM-local disk for proof state and export snapshots for host inspection.
The attested Codex interval is [0.152.0, 0.154.0). For a standalone 0.153.x
installation, install the matching codex-code-mode-host companion beside the
native Codex executable; downloading only the main CLI archive is insufficient.
attempt and run --execute check the backend before changing proof state.
The default is GPT-6 Astra (gpt-6-astra) with xhigh reasoning; explicit
--model and --reasoning-effort overrides remain supported.
Astra sessions receive bounded noninteractive-task guidance: preserve the exact
theorem, return blockers as structured artifacts, and leave parallel dispatch to
the host. The runner rejects Astra's unsupported none/minimal efforts before
starting a child; it does not silently increase effort, budgets, or context size.
Other models keep their existing prompts. These adaptations follow
OpenAI's Astra guidance
and retain all role, sandbox, and verification gates. They are not a measured
proof-solving performance claim.
Even with --no-stop-on-rejection, three consecutive execution waves containing
only rejected patches halt in awaiting_human, without launching a stop writer.
Inspect the recorded patch errors and repair the contract/context before resuming.
The Codex runner can attempt one structural repair in the same session for
patch-only schema and authority errors; proof-verification gates remain unchanged.
Dashboard token budgets include cached input and are not provider billing totals.
A problem file is Markdown. Its full text becomes the immutable root statement,
so a problem-id is fixed once and a re-run resumes the same proof state. Write a
problem file under agents/generation/data/; example.md is a runnable demo.
An attempt run serves a live dashboard at http://127.0.0.1:8765/ showing the
proof graph, route scores, verifier health, the active bottleneck, token and
wall-clock use, and the current work modes. Routes and artifacts use readable
mathematical notation, and cumulative HMT papers are available in the embedded
viewer. Pass --no-dashboard to disable it.
The store holds one problem per database:
problem_state the immutable root statement and run budgets
claims theorems, lemmas, definitions, obstructions, counterexamples
routes proof strategies for a conclusion claim
inferences the proof steps a verifier checks
debts persisted legacy table name for precise proof obligations
artifacts proof drafts, verifier reports, source notes, CAS reports, final proofs
retrieval_cards external sources with exact location and hypotheses
runs, patches, events metrics and the append-only history
Claims carry a validation status (untested, plausible, challenged,
informally_verified, formally_verified, refuted) and a lifecycle status
(active, blocked, abandoned, integrated, superseded). A verified
statement repair supersedes stale wording so the system stops proving a
sentence the verifier already corrected. A retrieval card is source evidence,
not proof: a cited theorem closes a goal only after the verifier checks its
location, hypotheses, definitions, and implication to the target.
| Role | Responsibility | May verify |
|---|---|---|
researcher |
The mathematician: direct proofs, approach repair, examples, source adaptation, CAS, proof drafts. | No |
adversarial_reviewer |
Independent mathematical critic: attacks claims, stress-tests hypotheses, builds candidate counterexamples. | No |
literature_researcher |
Searches sources and writes retrieval cards, theorem-library entries, and adaptation notes. | No |
phd_advisor |
Reads fresh evidence against the original problem, names what remains, steers the next move and the work-mode loops. | No |
strict_informal_verifier |
Checks one bounded proof packet; triages and certifies exact citations. | Yes |
integration_verifier |
Checks that a verified sufficient route proves the target and aligns with the root. | Yes |
counterexample_validator |
Validates candidate counterexamples. | Yes |
writer |
Writes the final proof or partial report from verified material. | No |
scheduler |
Picks the next action from proof state. | No |
The researcher and adversarial reviewer are counterparts of equal strength, one proving and one trying to refute, in the style of the Nagata working seminar. The advisor diagnoses and recommends; the researcher turns recommendations into proof approaches, inferences, proof drafts, or sharper proof obligations. Only a verifying role resolves an obligation, which stops a researcher-submitted repair from reading as closed before a verifier accepts it.
The scheduler is deterministic for a fixed proof state and fixed runtime
configuration. Accepted state changes carry row-exact deltas and linked state
hashes, so missing journal revisions, unjournaled proof-state mutations, and
modified row deltas are detectable by replay. Patch annotations and
configuration events have their own hash chains, and an optional externally
stored Ed25519 checkpoint can bind the state and all chain heads. This is still
not a public transparency log or write-once archive. Action names are part of the contract:
prove with no route is a direct attack on a statement, prove with a route is
strict verification of that route, and reduce is route construction, repair,
source digestion, or a decomposition branch.
Parallel policy v25 admits companion work with a deterministic bounded-width
global subset search rather than a greedy prefix. It maximizes authenticated
overdue service, fixed host admission weights, and useful parallelism under
ownership, class, token, and worker limits. It retains v11's minimum-feasible
grants and deterministic max--min residual allocation, so an early full request
cannot conceal a larger feasible set. Its upper-bound relaxation additionally
retains v12's class capacities and global verification/integration exclusion,
then removes candidates excluded by the primary or their own authorization and
accounts jointly for reserved/shared minimum-token feasibility and the exact
minimum resource decrement. It also intersects class capacity and the global
verification/integration exclusion with safe route and certification-target
clique partitions, including mixed certification/research and
certification/adversarial same-route cliques. The prior v8 result is
recomputed as a lower bound, so pruning cannot make the selected wave worse
under the stated objective. Equality between the replayable upper bound and
selected objective certifies a global optimum; a nonzero gap remains explicitly
a bounded approximation. Policy v17 quotients equal-value partial states that
have the same structural conflict projection. Policy v18 strengthens this to
the exact conflict neighborhood in the unprocessed suffix, represented by
indexed bitsets, and keeps the lexicographically least representative. This
turns payload-label symmetries and structurally different but continuation-
equivalent partial solutions into one state without changing feasibility,
objective value, or canonical tie-breaking within an equivalence class. Policy
v19 additionally retains states whose upper bound equals the incumbent on waves
of at most 128 candidates; this closes a distinct global tie-breaking defect in
which v18 could certify the optimal objective but discard the lexicographically
least optimal candidate-ID tuple. Its trace separately records and certifies
objective optimality and canonical selection. Policy v20 removes the size
restriction without retaining every tied state: for each suffix and remaining
cardinality it precomputes the lexicographically least possible ID subsequence.
An incumbent-equal state is pruned only when this optimistic tuple cannot beat
the incumbent, and the same lower bound is retained for truncated states. The
certificate therefore proves the globally least tied tuple whenever its
objective certificate is exact and the discarded canonical bound is no better.
Policy v21 additionally removes a partial state when another state at the same
layer has used no more total or per-class capacity, retains at least as much of
each token pool, blocks a subset of the remaining candidates, and has a
lexicographically no-worse objective (and candidate-ID tuple on equality).
Every continuation of the removed state is therefore feasible from the retained
state and cannot improve on it. This exact dominance reduction is applied to
small waves and to large-wave layers whose post-quotient frontier has at most
32 states, directly bounding its pairwise comparison cost; other large-wave
layers retain v20 behavior. V21 also caps the suffix-table
cardinality at 32. A cardinality beyond that cap receives the conservative empty
tuple lower bound, which can reduce pruning or leave canonicality unproved but
cannot create a false certificate. The live scheduler's wave capacity is at
most seven, so this cap does not affect production selection.
Policy v22 adds a certificate-triggered best-first completion phase. It runs
only when the beam leaves an objective gap or an unresolved canonical tie,
orders unexplored states by the same admissible upper bound and candidate-ID
lower bound, and stops after a fixed 20,000 expanded states. Exhausting the
queue proves the exact optimum; reaching the state limit records the remaining
frontier bound without overclaiming. A default-width 129-candidate regression
improves from v21's (34, 5200, 6, 0) with upper bound
(36, 3900, 6, 0) to the certified optimum (36, 3900, 6, 0) after 484
completion states.
Policy v23 excludes individually infeasible rows from the optimization state: unauthorized candidates, primary conflicts, classes already at capacity, subminimum positive requests, and requests with no individually available token pool. Every original row remains in the persisted trace with its explicit rejection. Consequently, impossible rows cannot narrow the beam, pollute exact conflict signatures, enlarge suffix tables, or perturb the selected feasible set merely by being present. Policy v24 replaces the completion phase's root restart with continuation from the exact beam states discarded at each truncation layer. Bound-pruned, future-equivalent, and dominated regions remain omitted because their existing proofs are sufficient; every other unexplored branch has one frontier representative. On the default-width 129-candidate regression this reduces completion from 484 expanded states to 91, while the forced one-state-frontier regression falls from 15 states to 6. The same 20,000-state ceiling and fail-closed residual objective/canonical bounds remain in force. Policy v25 also caps the retained completion frontier at 20,000 states. If an adversarial wave exceeds that memory bound, the cached frontier is released and completion safely uses the v23 root search; the trace records the overflow, total discarded-state count, fallback, and residual certificate. Thus both completion expansion and retained completion state now have explicit limits. Exact-neighborhood indexing is bounded to 4,096 candidates to cap worst-case bitset memory; larger waves fall back to v17's cheaper structural quotient. Waves of at most 128 candidates use a 128-state frontier; larger waves retain the 64-state frontier. Historical v10--v24 traces retain their original transitions. The search does not use model self-scores and is a resource optimizer, not evidence of mathematical tree-search performance.
proof spine and current root bottleneck
researcher proof / construction / citation attempt, with CAS when useful
literature and adversarial-review companions add independent evidence in parallel
advisor synthesizes after durable evidence or repeated strategic failure
researcher converts advice into proof approaches, inferences, proof drafts, or precise proof obligations
strict verifier checks a bounded proof packet or an exact citation
integration verifier checks sufficiency and root alignment
writer emits the final proof or an honest partial report
The ordering resists circling. A ready route goes to the verifier before more search or decomposition. A verifier gap returns to repair, then to verification. A repeated broad task, or search and repair alternating without a new mathematical delta, triggers a bottleneck lock or an advisor pass instead of another identical prompt.
Mature runs add a deterministic strategy layer over the same persisted proof state. It does not add roles or verification authority.
- Bidirectional bridge search compares the verified forward frontier with the backward obligations from the root and selects at most two serious bridge candidates.
- The PhD advisor alternates tactical steering with persisted global syntheses that identify one decisive missing statement and supersede stale advice.
- Bottleneck-local conjectures and exceptional auxiliary definitions are capped, stress-tested, and admitted only when they have a precise route back to the root.
- Eighteen reviewed method cards are retrieved by structural signature and domain tags. They include hypotheses, proof moves, diagnostic examples, and failure modes; they guide proof search but never become proof premises.
- The proof graph supplies the smallest active sufficient-route obligation cut; side lemmas cannot outrank its decisive obligation merely through model self-scoring.
- High-leverage branches can receive a coherent deep session, but it is persisted only when it produces a concrete proof-state mathematical delta. Two no-delta sessions force a change of research philosophy.
- Scheduler actions expose ordinal action-priority components and a local verifier-filtered outcome heuristic. These values are not probabilities or expected values. The heuristic learns only from Albilich's later verified or integrated evidence, never from a reference solution or private cross-problem cache.
- Repeated bottlenecks trigger a representation-switch contract; literature work produces exact source-to-local theorem-adaptation packets; strict and integration verification run a selective deterministic proof-interface checklist without requiring Lean.
- Multi-branch waves require different mathematical strategy families as well as disjoint claim/proof-obligation ownership, so parallel slots pursue structurally distinct proof, adversarial, conceptual, or source-adaptation categories. This is a diversity constraint, not a proof of originality.
- Proof compression preserves the full history while shrinking the primary context to the best route's dependency closure and weakest sufficient bridge.
The complete contracts and artifact schemas are documented in
docs/albilich_research_strategy.md.
The strict verifier checks one route packet: the target claim, the route and its inferences, premise claims, active proof obligations, and the bounded proof, source, and CAS artifacts. It does not run CAS, search for a new proof, or add fresh evidence. It can issue a content-bound informal review certificate for
- a local inference when the attached proof artifact proves it;
- an external theorem when the source gives a locatable reference, checked hypotheses, checked definitions, and a checked implication to the target;
- a finite computation only after the host reruns the bounded deterministic program in a networkless sandbox and the mathematical deduction is checked; computational reproduction alone never has proof authority.
It rejects with a precise proof obligation when proof content is missing or truncated, a citation lacks location or hypothesis checks, a decomposition parent lacks an assembly argument, or a blocking proof obligation remains. The path to a solved root:
proof evidence or exact citation
citation triage and certification for an external theorem
strict informal verification of local proof steps
integration verification with root alignment
writer final proof
Each primary researcher session runs in one work mode, after the online/offline loop of the original rethlas proposer plus a computation mode:
| Mode | Session behavior |
|---|---|
online |
Live web search enabled: find exact/stronger/equivalent theorems and methods, read the strongest sources, translate them into local notation. No CAS. |
offline |
No web, no CAS: prove from the manifest, cached cards, and the theorem library; record precise requests for later passes. |
cas |
CAS enabled: run bounded decisive computations and end with a conclusion in a cas_experiment_report. No web. |
The scheduler rotates online → offline → cas by default, dropping online
when live search is off. Bottleneck locks and synthesis passes bias offline;
cas_check_recommended forces cas. The adversarial reviewer runs the same loop with its
own history, computation-first (cas → offline → online), so it can sweep for
counterexamples, construct by hand, and hunt published prior art in turn.
The advisor supervises both loops. Its manifest shows both mode histories, and
its report can set directed_researcher_mode or
directed_adversarial_review_mode (stored under a legacy-compatible internal
field), with a
reason and a step count) to send either agent to search, think, or compute for
the next passes. A run consumes a directive only on a completed pass.
The literature_researcher stays a separate role because it alone writes
retrieval cards, so it holds the auditable source catalog that citation triage
and certification read. Online researcher and adversarial-review passes search for what the
current attack needs; the librarian maintains the catalog and answers precise
literature_search_request proof obligations as a cheap parallel companion.
For retrieve-mode actions, optional informal theorem search can query Matlas
and UW TheoremSearch before the literature-review session starts. Enable it with
RETHLAS_INFORMAL_SEARCH=1. The orchestrator owns the network boundary; child
agents receive only bounded inert candidate data, and no provider result becomes
proof evidence without primary-source review. See
agents/generation/phase2/INFORMAL_RETRIEVAL.md
for the provider and safety contracts.
Run-level research modes set the opening portfolio:
| Mode | Behavior |
|---|---|
hard_problem |
Default. Literature scout, deep researcher attack, route construction, and adversarial review run in parallel when state safety allows. |
balanced |
Cheaper. Literature scout, a fast researcher pass, and adversarial review in parallel. |
proof_first |
Researcher first; live search follows the caller policy. |
independent |
Live search disabled. |
citation_pass |
Reference cleanup after integration. |
Run from the repository root. The default backend is the Codex CLI. With live
search on, an executed session may export repo-derived proof context to external
model and search services; use --web-search disabled for offline attempts.
Codex sessions default to gpt-6-astra (GPT-6 Astra) with xhigh (Extra High) reasoning;
use --model and --reasoning-effort to override either setting for a run.
# initialize, then attempt with defaults
python3 -m agents.generation.phase2.cli init agents/generation/data/example.md
python3 -m agents.generation.phase2.cli attempt agents/generation/data/example.md
# a long hard-problem run with no wall-clock cap, dashboard on a chosen port
ALBILICH_UI_HEARTBEAT_SECONDS=5 \
python3 -m agents.generation.phase2.cli attempt \
agents/generation/data/example.md \
--steps 0 --timeout-sec 7200 \
--research-mode hard_problem --web-search live \
--dashboard-port 8793 --no-open-dashboard
# Claude Code as an alternate execution backend
python3 -m agents.generation.phase2.cli attempt agents/generation/data/example.md \
--backend claude --claude-bin claude --claude-permission-mode dontAsk
# plan without executing; inspect state and outputs
python3 -m agents.generation.phase2.cli attempt agents/generation/data/example.md --dry-run --steps 4
python3 -m agents.generation.phase2.cli status agents/generation/data/example.md
python3 -m agents.generation.phase2.cli report agents/generation/data/example.md --write
python3 -m agents.generation.phase2.cli monitor agents/generation/data/example.md --port 8793 --no-open--steps 0 runs until the token budget, an operator stop, or a terminal
scheduler state stops the attempt. --max-wall-sec remains available as an
explicit operator resource cap. If the backend binary is off PATH, pass it
with --codex-bin or --claude-bin. Default attempt settings:
research_mode = hard_problem steps = 0 web_search = live
timeout_sec = 7200 max_wall_sec = none max_reduction_depth = 4
total_token_budget = 80000000 reserved_verification_budget = 12000000
parallel_branches = 3
Local Codex and bundled Claude execution apply an 8 GiB process-tree RSS limit
per child and a 16 GiB limit to the sum of concurrently supervised child
process trees across primary, companion, periodic HMT, and stop-writer
sessions. Set
ALBILICH_CHILD_MAX_RSS_MB and
ALBILICH_MAX_AGGREGATE_CHILD_RSS_MB to finite positive MiB values to change
them. These are sampled supervisor limits, not kernel memory reservations.
Other custom executors remain serial unless they explicitly declare the
thread-safe/cancellable capability and accept the shared governor; executors
without local supervision are recorded as unverified.
The periodic writer produces one cumulative HMT partial paper after every ten
newly integrated claims. Set ALBILICH_HMT_INTEGRATED_CLAIM_INTERVAL to another
positive integer to change the cadence, or to 0 to disable periodic HMT
snapshots. The deprecated ALBILICH_HMT_REVISION_INTERVAL name remains a
compatibility alias and is interpreted as an integrated-claim interval.
A run writes to agents/generation/results/<problem_id>/phase2/: the SQLite
proof state, albilich_run_console.md and .json, phase2_report.md, and an
artifacts/ directory with proof drafts, verifier reports, and the final proof.
agents/generation/
data/ problem files (example.md is a runnable demo)
phase2/ the Albilich proof-state workflow (scheduler, runners, store, verifiers)
results/ per-problem databases, consoles, reports, artifacts (gitignored)
tests/ the test suite
math-writing-harness/ deterministic paper-quality rules and source corpus
docs/ architecture, research-strategy, and writing-gate documentation
Role prompts are assembled in agents/generation/phase2/codex_runner.py.
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s agents/generation/tests -t .The suite covers the scheduler, patch validator, proof store, parallel
workflow, theorem retrieval, research intelligence, runners, dashboard,
work-mode loops, verification gates, recovery paths, and paper-writing checks.
The latest audited counts and the distinction between live, simulated, and
unavailable backend checks are recorded in the
fourth-pass systems review.
- Python 3.10 or newer; the workflow uses only the standard library and repository modules.
- Node.js and the Codex CLI for the default backend, or the Claude Code CLI for
--backend claude. - CAS backends for
cas-mode passes when available: Sage, GAP, Macaulay2, Singular, or Lean. Point Albilich at an install outsidePATHwithALBILICH_GAP_PATH,ALBILICH_SAGE_PATH, and the matching variables.
Apache License 2.0. See LICENSE.